quinta-feira, 25 de setembro de 2008

Uso de JRuby em Java

Tecnologias de Integração Java-JRuby

A integração com Java 6 pode ser feita pelo uso:
  1. da API JSR223 (https://scripting.dev.java.net/)
  2. 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:
  1. Baixar o jruby-engine-1.1.5.zip (última versão da máquina)
  2. Descompactar em algum diretório (ex.: ~/lib/jsr223/jruby-engine-1.1.5)
  3. Incluir o ~/lib/jsr223/jruby-engine-1.1.5/lib/jruby-engine.jar na rota de busca do ambiente Java
  4. Copiar o jruby.jar para o diretório ~/lib/jsr223/jruby-engine-1.1.5/lib
  5. 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 scriptFactories = mgr.getEngineFactories();
        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

terça-feira, 9 de setembro de 2008

BlueJ e Netbeans 6.5-beta

O ambiente BlueJ pode ser integrado com o Netbeans 6.5-beta da seguinte forma:
  • Download and install the NetBeans Bluej plugin from the NetBeans  Update Center, using the Available Plugins tab of the Tools/Plugins dialog.

Fonte:
  • http://bluej.org/netbeans/

Partida do Netbeans 6.5-beta

No arquivo netbeans-6.5beta/etc/netbeans.conf, pode-se editar a chave "netbeans_default_options" da seguinte forma:

netbeans_default_options="-J-Dorg.glassfish.v3.installRoot=\"/home/italo/bin/app-server/glassfish-v3-prelude-b15b\" -J-Dcom.sun.aas.installRoot=\"/home/italo/bin/app-server/glassfish-v2ur2\" -J-client -J-Xverify:none -J-Xss2m -J-Xms32m -J-Xmx256m -J-XX:PermSize=32m -J-XX:MaxPermSize=200m -J-Dnetbeans.logger.console=true -J-ea -J-Dapple.laf.useScreenMenuBar=true -J-Dsun.java2d.noddraw=true -J-Xverify:none -J-Dfile.encoding=iso-8859-1"

Essencialmente:
  1. Adição da opção "-J-Xmx256m" para aumentar a memória utilizada pela ferramenta.
  2. Adição da opção "-J-Xverify:none" para evitar a verificação de bytecode.
  3. Adição da opção "-J-Dfile.encoding=iso-8859-1" para habilitar a codificação para português.

Fonte:
  • http://performance.netbeans.org/howto/jvmswitches/index.html