A ZeroTurnaround lançou uma nova versão do seu plugin para a JVM (máquina virtual Java), que permite ver em ação alterações no código de aplicações de forma instantânea, sem a exigência do redeployment completo.
O JRebel tem como objetivo liberar o desenvolvedor Java dos longos redeployments de aplicações, oferecendo uma solução similar ao HotSwap, mas sem tantas limitações. O plugin permite também o recarregamento de recursos diferentes de arquivos Java que compõem um aplicação web moderna. Em uma conversa com o InfoQ, o Diretor de Tecnologia (CTO) da ZeroTurnaround, Jevgeni Kabanov, falou sobre algumas ideias desta nova versão.
InfoQ: O mecanismo básico de recarregamento é o mesmo da versão 3.0 do JRebel ou o plugin foi modificado significativamente?
Internamente, o produto sofreu mudanças importantes, que beneficiam o desempenho e a facilidade de uso. Por exemplo, a flag "-noverify" deixa de ser necessária; há também melhorias no mecanismo de depuração e no suporte a outros recursos a serem implementados no futuro.
Diferentemente do JRebel 3, a versão 4 foi completamente implementada utilizando os serviços de instrumentação disponíveis a partir do Java 5. Esta é uma solução conhecida e utilizada em várias outras ferramentas e produtos desta categoria.
InfoQ: Como o JRebel 4 utiliza esta API de instrumentação? Seu uso significa que agora funciona apenas com o Java 5 em diante?
O JRebel foi e ainda é compatível com Java 1.4, portanto não é estritamente dependente da presença da API de instrumentação. Entretanto, no JRebel 4 fazemos uso da API de instrumentação, quando disponível, para reduzir perdas de desempenho e simplificar várias operações.
Um aspecto completamente novo na versão 4 é a capacidade de recarregar componentes EJB em tempo de execução e realizar a injeção de novos beans usando a anotação @EJB. Além disso, há melhor suporte a classes anônimas e o número de plugins no JRebel aumentou de modo a cobrir vários frameworks populares, incluindo o Seam 2.x. Existe ainda um plugin para o Eclipse oferecendo integração dentro do IDE.