A integração com Java 6 pode ser feita pelo uso:
- da API JSR223 (https://scripting.dev.java.net/)
- do Bean Scripting Framework (BSF) -- não tratado neste artigo
Integração pela API JSR223
As versões 1.1rc3 e 1.1.x do JRuby sobre Java 6 devem utilizar alguma máquina JRuby. A instalação envolve:
- Baixar o jruby-engine-1.1.5.zip (última versão da máquina)
- Descompactar em algum diretório (ex.: ~/lib/jsr223/jruby-engine-1.1.5)
- Incluir o ~/lib/jsr223/jruby-engine-1.1.5/lib/jruby-engine.jar na rota de busca do ambiente Java
- Copiar o jruby.jar para o diretório ~/lib/jsr223/jruby-engine-1.1.5/lib
- Incluir este jruby.jar na rota de busca do ambiente Java
Lista de Máquinas Instaladas
static ScriptEngine obter() {
// http://java.sun.com/developer/technicalArticles/J2SE/Desktop/scripting/
String nome = "ECMAScript";
nome = "ruby";
ScriptEngine engine = null;
ScriptEngineManager mgr = new ScriptEngineManager();
List
for (ScriptEngineFactory factory : scriptFactories) {
String langName = factory.getLanguageName();
String langVersion = factory.getLanguageVersion();
if (langName.equals(nome) && langVersion.equals("1.8.6")) {
engine = factory.getScriptEngine();
break;
}
}
return engine;
}
Execução de Código Ruby
static void executarCodigoRuby(ScriptEngine rubyEngine) {
try {
rubyEngine.eval("puts 2 + 3");
} catch (ScriptException e) {
e.printStackTrace();
}
}
Troca de Dados entre Java e JRuby
static void acessarContexto(ScriptEngine rubyEngine) {
ScriptContext context = rubyEngine.getContext();
context.setAttribute("label", new Integer(4), ScriptContext.ENGINE_SCOPE);
try {
rubyEngine.eval("puts 2 + $label", context);
} catch (ScriptException e) {
e.printStackTrace();
}
}
Referências
- https://scripting.dev.java.net/
- http://wiki.jruby.org/wiki/Java_Integration
Nenhum comentário:
Postar um comentário