Hotswap e alternativas?


15

Desde os primeiros dias da minha vida universitária, uso Java e o maior problema que temos é absolutamente menos produtivo do que outras linguagens interpretadas. Todas as pessoas têm certeza de que o java é uma das melhores linguagens compiladas.

No entanto, nem a Sun nem a Oracle se esforçaram o suficiente para resolver esse problema. Um dos problemas é, obviamente, o recarregamento de classes.

As últimas tentativas da comunidade para resolver este problema são o projeto DaVinci Hotswap , JRebel , PlayFramework . No entanto, no momento da redação deste texto, eles ainda não eram maduros (imo) e nativos. Alguns deles não estão prontos para a empresa, outros não são compatíveis com todos os IDEs, alguns deles são projetos universais imaturos. O roteiro e até o Java pronto para o desenvolvedor estão prontos, mas a comunidade Java ainda não possui uma solução para o recarregamento imediato da classe.

É tão difícil para a Oracle envidar esforços para resolver esse problema? Por que o recarregamento de classe ainda não foi implementado nativamente?


2
Na verdade, o JRebel está completamente pronto para empresas e possui um bom suporte a IDE, embora não seja gratuito.
CarlosZ

@CarlosZ Really? Eu usei o IntelliJ IDEA com o JRebel da primeira versão beta à série 3.x. Em vez de "isto", você deve usar "aquilo". No fórum de cada versão, você verá muitos problemas relacionados ao plugin intelliJ. Mas a pior experiência foi a depuração de problemas. O depurador pode se conectar muito tarde. E tivemos problemas tremendos. Como usuário do intellJ, tenho uma experiência concreta em relação ao JRebel no IDEA. E, claro, pagar dinheiro também é outra questão.

@CarlosZ É realmente uma pergunta, estou curioso para saber por que é difícil implementar o recarregamento de classe em java nativamente.

Respostas:


4

E o JEE / J2EE? Este foi lançado pela primeira vez há 12 anos. Isso é suportado diretamente pela Sun / Oracle e por muitos outros fornecedores.

Que tal e OSGi? Seu primeiro lançamento foi há quase 11 anos. O Eclipse (um IDE) é construído sobre ele, o Glassfish da Sun / Oracle e o Apache Felix o usam extensivamente. Você pode usá-lo com o Spring-OSGi.

Ele não é suportado nativamente no Java SE porque os aplicativos corporativos foram deliberadamente suportados pelos servidores de aplicativos como produtos separados.


@ Peter Lawrey 1) Lawrey Em relação ao J2EE, existe uma solução concreta? Eu não conseguia entender o seu ponto? 2) Para recarregar as aulas, você acha que o OSGI deve ser usado? E o Jigsaw? Mesmo no nível do JCR, ainda não há um consenso :). O OSGI está abordando uma área muito diferente da recarga de classe. 3) Não consegui entender a parte do JavaSE, você poderia explicar um pouco mais? E observe que o projeto DaVinci HotSwap é patrocinado pela Oracle. Significa que, pelo menos para mim, eles também estão ansiosos por essa solução.

Depende do que você espera que o hot swap faça. Se você deseja troca a quente para depuração, é possível fazer isso há algum tempo. No entanto, para soluções corporativas robustas, a troca a quente dessa natureza não é apropriada e apenas liberações controladas são. Nesse caso, o JEE e o OSGi permitem atualizar os aplicativos em execução que têm praticamente o mesmo benefício, mas com o controle que você esperaria de um ambiente de produção. Por exemplo, no meu contêiner OSGi, posso remover classes e substituí-las por versões mais novas sem interromper o aplicativo. O que você precisa que OSGi não faz?
27411 Peter Lawrey

1) A implementação de referência JEE / J2EE pode ser um ponto de partida, mas existem muitos mais populares e fáceis de usar JEE. Meu argumento é que você pode substituir o código em um sistema em execução. O que mais você precisa em um ambiente controlado / de produção.
Peter Lawrey

1
2) Recarregar classes é a única coisa para a qual uso o OSGi. O que você vê como o principal uso do OSGi?
26511 Peter Lawrey

3) O ponto principal do JEE é que este é o espaço para suporte de aplicativos corporativos. JSE é a plataforma subjacente que pode ser usada para JEE ou outros aplicativos.
26511 Peter Lawrey

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.