O JRebel permite que o código compilado recentemente seja reimplementado sem reiniciar o aplicativo. Gostaria de saber se existe alguma alternativa (gratuita?). A página de perguntas frequentes responde a essa pergunta, mas tenho certeza de que é tendenciosa em relação ao JRebel. Esta pergunta foi feita há um ano neste site, mas estou trazendo-a de volta para verificar se alguém tem alguma informação nova.
Em uma nota lateral, eu realmente gosto do JRebel, mas se houver uma alternativa gratuita, estou disposto a tentar.
Uma observação adicional: estou trabalhando em um projeto de código aberto, e eles oferecem licenças gratuitas de um ano para pessoas que podem provar que estão em um projeto de código aberto. O que funciona muito bem para mim (www.kuali.org), mas não vou participar desse projeto para sempre.
Respostas:
Dê uma olhada no DCEVM , é uma modificação da VM HotSpot que permite redefinições ilimitadas de classe em tempo de execução. Você pode adicionar / remover campos e métodos e alterar os super tipos de uma classe em tempo de execução. Os recursos do DCEVM podem ser integrados em uma atualização futura do Java como parte do JEP 159 .
Os binários disponíveis no site original estão limitados ao Java 6u25 e às versões anteriores do Java 7. O projeto foi bifurcado no Github e suporta versões recentes do Java 7 e 8. O mantenedor fornece binários para VMs de 32/64 bits no Windows / Linux. A partir do Java 11, o projeto foi transferido para um novo repositório GitHub e agora também fornece binários para o OS X.
O DCEVM é fornecido com o Debian e Ubuntu, é convenientemente integrado ao OpenJDK e pode ser chamado com ele
java -dcevm
. O nome do pacote depende da versão do JDK padrão:fonte
O Hotswap Agent é uma extensão do DCEVM que suporta muitas estruturas Java (recarregar a definição do bean Spring, mapeamento de entidade do Hibernate, configuração no nível do criador de logs, ...).
Também há muita documentação sobre como configurar o DCEVM e os binários compilados para Java 1.7.
fonte
O DCEVM suporta redefinições de classe aprimoradas e está disponível para os JDK7 e JDK8 atuais.
https://github.com/dcevm/dcevm/releases
O HotswapAgent é uma alternativa gratuita do JRebel e suporta o DCEVM em várias estruturas.
http://hotswapagent.org/
fonte
Pelo pessoal do Spring, usado para recarregar o Grails, mas também funciona com Java:
https://github.com/SpringSource/spring-loaded
fonte
Eu escrevi um artigo sobre DCEVM : Spring-mvc + Velocity + DCEVM
Eu acho que vale a pena, pois meu ambiente está funcionando sem problemas.
fonte
Eu tenho trabalhado em um projeto de código aberto que permite substituir classes a mais do que o hot swap permite: https://github.com/fakereplace/fakereplace
Pode ou não funcionar para você, mas qualquer feedback é apreciado
fonte
Você pode dar uma olhada no seguinte:
No momento, isso permite apenas que o corpo do método recém-compilado seja reimplementado sem reiniciar o aplicativo. Tudo que você precisa fazer é executá-lo com um depurador. Eu tentei no Eclipse e funciona esplendidamente.
Além disso, como Emmanuel Bourg mencionou em sua resposta ( JEP 159 ), há esperança de ter suporte para a adição de supertipos e a adição e remoção de métodos e campos.
Referência: White paper Java 135217: Confiabilidade, disponibilidade e facilidade de manutenção
fonte
JRebel é gratuito. Não compre. Selecione a opção "grátis" (botão de opção) na página "comprar". Depois selecione "Social". Depois de se inscrever, você receberá uma chave de licença JRebel totalmente funcional. É possível fazer o download do JRebel ou usar a chave na versão incorporada dos IDEs. A captura (sim, existe uma captura), você deve permitir que eles publiquem em seu nome (anunciar) uma vez por mês na sua linha do tempo do FB ou na conta do Twitter. Eu dei a eles minha conta no twitter, nada demais, nunca a uso e ninguém que conheço realmente a usa. Então economize $ 260.
fonte