Qual é a melhor JMV

11 respostas
A

E aí galera.
Tenho algumas dúvidas a respeito das diversas JVM’s existentes.

Sempre usei os compiladores da Sun mas agora bateu uma curiosidade.
Eu sempre considerei o Java da Sun referencia de Java no Mundo pelo fato da sun ser a criadora da linguagem.

Mas isso é verdade?

Atualmente qual JRE e JDK é considerado o melhor?
Alguém sabe me dizer quais são as diferenças existentes entre o java da Sun e o de outros fabricantes?

Existe algum java atualmente considerado o melhor e que está sendo usado pela maioria dos desenvolvedores.

É claro que de acordo com o projeto e as necessidades do cliente eu devo escolher JVM’s diferentes que atendam melhor as necessidades. Existem regras básicas para essa tomada de decissão?

Desde já agradeço a força.

11 Respostas

Paulo_Silveira

Dizem por ai que a mais eficiente em geral eh a JRockit da BEA. Pode ser soh marketing, nao sei.

Eu nem sei se tem tanta VM assim para voce escolher… E pelo que sei, todas essas grandes sao a VM da Sun modificada, porque eles pagam pra Sun pra ter isso ou algo assim.

T

Acho que é mais problema de suporte que de desempenho.
Por exemplo, se você está usando WebSphere no Linux ou Windows você provavelmente vai ter de usar a JVM da IBM.
Se você usa WebLogic você provavelmente vai ter de usar a JVM da BEA.
Em ambiente HP você vai ter de usar a que a HP disponibiliza para você.
Se você quer usar os novos recursos da versão Java 5.0 você vai ter de usar a JVM da Sun mesmo.
É um pouco difícil você ter uma situação em que realmente você vai ter uma escolha.
E se você por acaso tiver possibilidade de escolher, provavelmente você vai acabar usando a da Sun (ou se você for um Websphere-man, a da IBM, ou para os Weblogic-men a da BEA), mais por familiaridade e facilidade de você suportá-la que propriamente de desempenho (afinal de contas, você já decorou todos aqueles switches -XX:+PrintCompilation -XX:+UseParallelGC -Xmx512m e outros, e sabe o que funciona bem… Se você mudar de JVM vai ter de aprender mais outros switches…)
Quanto ao compilador (e não a JVM): as JVMs atuais normalmente querem que o seu .class seja compilado o mais “ingenuamente” possível, para que elas possam efetuar a otimização no Just-in-time compiler da JVM de maneira mais simples. Por isso é que no javac da Sun aquele switch “-O” (para otimização dos bytecodes) é aceito mas não faz nada hoje em dia.
As JVM internamente não são tão parecidas assim: a parte de garbage collection e de Just-in-time compilation é que ditam a diferença entre cada uma delas.

louds

Ate onde eu sei as JVMs da BEA e a IBM são modificações da implementação de referência da Sun, com uns hacks pra melhorar a performance dos respectivos AS.

A escolha da JVM não é muito significativa ao meu ver, para uso no dia-a-dia todas dão na mesma. A não ser que o seu dia-a-dia seja com um high-end com 30 cpus e 20 giga de memoria.

A

E enquanto a compatibilidade entre elas?
É de se supor que programas desenvolvidos na JVM da Sun rodem em JVM de qualquer fabricante já que essa JVM é a base para JVM’s de outros fabricantes.
Mas pelo visto desenvolver um projeto inteiro em JVM’s diferentes da VM da Sun não dá pinta que rota em Qualquer JVM. Pelo menos não sem uma recompilação.

é Isso Mesmo?

Rubem_Azenha

no caso de compatibilidade, ai seria questão de qual compilador usar e não quem JVM, não é verdade?

no caso, eu usaria a da Sun mesmo… eu bebo agua de fonte

T

afura:
E enquanto a compatibilidade entre elas?
É de se supor que programas desenvolvidos na JVM da Sun rodem em JVM de qualquer fabricante já que essa JVM é a base para JVM’s de outros fabricantes.
Mas pelo visto desenvolver um projeto inteiro em JVM’s diferentes da VM da Sun não dá pinta que rota em Qualquer JVM. Pelo menos não sem uma recompilação.

é Isso Mesmo?

Você não precisa recompilar (a menos que você tenha desenvolvido o programa em Java 5.0 e queira rodar em JDK 1.4 ou anterior), mas tem de ver se você não usou, por engano, alguma classe que não está disponível na outra JVM.
Por exemplo, se você vai escrever um programa contendo classes do pacote com.sun.*, pode ser que esse programa não rode na JVM da IBM.

louds

Para trocar de JVM você não vai precisar recompilar nada do teu sistema.
No máximo vai precisar resolver problemas relacionado a bugs que existem em uma JVM e não na outra.

Guilherme_Silveira

Que eh dificil de acontecer… mas as vezes aparece…

louds

Que é muito mais comum de acontecer que desejamos. A maioria dos bugs são sutilezas do comportamento correto.

D

O JCP(Java Community Process) que é o orgão que cria as especificações, disponibiliza em seu site uma lista de várias implementações Java, conseqüentemente, diferentes JVMs.

Meus dois cents :lol: :lol:

A

OK!!!
Já deu para compreender como funciona!

Valeu Galera

Criado 8 de novembro de 2004
Ultima resposta 11 de nov. de 2004
Respostas 11
Participantes 7