Alternativa gratuita ao JRebel

  • 5

Alternativa gratuita ao JRebel

Category : Eclipse , Java

36 Flares Twitter 1 Facebook 35 Filament.io Made with Flare More Info'> 36 Flares ×

É na hora do stop / start dos servidores Java que bate aquela inveja do PHP, que consegue fazer um refresh geral apenas com um F5 no browser.

A empresa que resolveu esse problema (ZeroTurnaround) está ganhando uma boa grana com isso, vendendo licenças a um dólar por dia com o software JRebel

jrebel_logo-RGB

Entretanto, um excelente projeto semelhante não tem ganhado o foco que merece, talvez pela falta de usuários ou de documentação.

Conheça a alternativa gratuita e livre: Dynamic Code Evolution Virtual Machine ou simplesmente DCE-VM, criada pelo desenvolvedor Thomas Würthinger que colocou sua tese em prática.

Ao contrário do JRebel, que encapsula a JVM para fazer o hotswap das classes, o DCE-VM altera o seu JRE, substituindo o hotswap limitado da JVM tradicional.

Atualmente o projeto está no github, e o link para download as versões recentes é esse: https://dcevm.github.io/

Se você usa o IntelliJ, tem um plugin pronto pra ele.

Se você usa Eclipse ou outro editor, vou explicar aqui como é simples o seu uso.

Os passos são esses para usar a sua aplicação com o Apache Tomcat 7 :

  1. baixar uma JDK compatível 1.7 ou 1.8 se necessário;
  2. instalar o DCE-VM na JDK;
  3. configurar o seu ambiente para usar essa JDK;
  4. adicionar CMSClassUnloadingEnabled nos parâmetros da JVM;
  5. conectar em modo Debug à JVM do Apache Tomcat 7;
  6. codificar, gravar e testar no browser \o/

Eu fiz o teste com a JDK 7 update 51 – 64 bits instalada em um diretório alternativo: /home/fb/jdk/jdk1.7.0_51 baixando o
instalador para essa mesma versão.

Depois iniciei o instalador:

O instalador identifica as instalações de JDK existentes:

dce-vm1

Clicando na opção “Add installation directory…“, adiciono o diretório /home/fb/jdk/jdk1.7.0_51 :

dce-vm2

Depois escolhendo a opção “Replace by DCEVM” o instalador faz a troca:

dce-vm3

Ao exibir a versão do Java verificamos que foi instalado com sucesso:

Nos meus projetos eu uso o plugin do Maven para subir o Tomcat 7 localmente:

Usei um projeto bem simples com Spring, com um controller assim:

Que chama uma página JSP extremamente simples:

Subi o servidor com o script abaixo, note os parâmetros da JVM de debug junto com o CMSClassUnloadingEnabled:

Acessando a página de teste, temos:

dce-vm4

Agora, pelo Eclipse conectamos ao servidor em modo debug:

dce-vm5

E vamos fazer uma alteração no sistema, criando uma nova classe:

E alterar a classe existente para chamar a classe nova:

E fazendo o reload, percebemos a página atualizada:

dce-vm6

Uau! Atualizou sem stop / start!

happy-cuteness-overload-l

Uma lágrima caiu do seu olho e finalmente você pode comparar PHP ao Java… =)

Mas calma lá, nem tudo são flores… hoje em dia sempre usamos frameworks, e as vezes nem esse hotdeploy adianta, pois, por exemplo, o Spring MVC possui um contexto que é registrado no início da aplicação, se você, pode exemplo, adicionar uma classe nova e usar @RequestMapping(value = “/outro-teste”) não vai funcionar, pois a classe nova está lá, mas o contexto do Spring continua o mesmo.

Nesse sentido o JRebel é bem mais maduro, mas com certeza o DCE-VM te salvará alguns minutos ou horas de sua vida, aproveite! . =)

Fernando Boaglio, para a comunidade


About Author

Fernando Boaglio

???

5 Comments

Bruno P. Kinoshita

24/janeiro/2015 at 9:32 am

Já coloquei uma estrelinha no projeto lá no GitHub 😀

Você usou em produção já?

Fernando Boaglio

24/janeiro/2015 at 10:18 am

Já, sem problemas até o momento =)

Quem ainda não deu uma estrela no projeto faz favor hein https://github.com/dcevm/dcevm

Leandro Pincini

28/janeiro/2015 at 5:01 pm

E vamos fazer uma alteração no sistema, começando inicialmente com criando uma classe nova:

E vamos fazer uma alteração no sistema, começando inicialmente com a criação de uma classe ou inicialmente criando uma nova classe?

Fernando Boaglio

28/janeiro/2015 at 6:07 pm

Ops… corrigido!

Wagner

28/junho/2015 at 11:17 am

Muito bom mesmo, até hoje estava insistindo com diretoria para comprar a licença do JRebel para os desenvolvedores, mas depois do que eu vi aqui… Muito bom mesmo.

Leave a Reply

Quero saber mais sobre…

Inscreva-se para receber as novidades!

Arquivos

36 Flares Twitter 1 Facebook 35 Filament.io 36 Flares ×