JDK Livre x JDK Sun

Olá, boa tarde!
Andei meio sumido, mas estou de volta.

Bem, será que alguém sabe me informar como andam as JDK’s Livres (estou desatualizado no assunto)?
Elas implementam os mesmos recursos (API’s) da JDK da Sun? E a performance (nesse caso, me refiro a JVM)?
Alguém aqui no fórum tem ou conhece algum sistema implementado totalmente em Java “Free”?

Obrigado a todos!

Diria que as últimas novidades no assunto é que não precisa mais do Xzinho aí no meio.
A Sun já tem uma JDK GPL.
http://openjdk.java.net/

Que não é 100% compatível, o ReceitaNet (que envia o imposto de Renda pela internet) não funcionou comigo com a OpenJDK, só com a da Sun.
Já o programa do IRPF funcionou nas duas JVMs.

Tudo isso no Ubuntu 7.10.

[]'s

Rodrigo Auler

[quote=Rodrigo Carvalho Auler]Que não é 100% compatível, o ReceitaNet (que envia o imposto de Renda pela internet) não funcionou comigo com a OpenJDK, só com a da Sun.
Já o programa do IRPF funcionou nas duas JVMs.

Tudo isso no Ubuntu 7.10.

[]'s

Rodrigo Auler
[/quote]

Mas nesse caso, como é uma especificação, não deveria funcionar com 100% de compatibilidade nas duas JVM’s?

Ora, um programa em Java pode funcionar na JVM da Sun e não da IBM, por exemplo. A mesma coisa com o ReceitaNet, que não deve ter sido testado no OpenJDK.

Uma dúvida…
Porque usar um jdk livre pelo simples fato de ser livre?

[quote=renatocustodio]Uma dúvida…
Porque usar um jdk livre pelo simples fato de ser livre?[/quote]

A diferença entre a JDK livre (exemplo: IcedTea no Linux) e um da Sun não está simplesmente de um ser livre e o outro não.

O problema é o seguinte (e talvez alguns vão chiar por eu ter disso isso): o JDK da Sun só é excelente no Windows, ele é inferior no Linux e no Solaris. Exemplo: quando uso Compiz, existem falhas de renderização em um aplicativo Swing. A performance no Linux é menor do que no Windows, isso num ambiente onde aplicativos como Apache e MySQL são superiores no SO do pingüim.

Sendo livre, o JDK pode ser melhorado pela comunidade.

Além disso, outros Sistemas Operacionais mais obscuros poderiam se beneficiar com um JDK implementado pela comunidade que os suporta, uma vez que a Sun não está nem aí pra eles.

Eu acho que deveria, mas…

As JVMs nunca são 100% compatíveis, cada uma sempre tem alguma “coisinha a mais” que só funciona nela. Nada que já não aconteça entre as implementações de Containers JEE, JPA, JSF e etc…

[]'s

Rodrigo Auler

[quote=Leonardo3001][quote=renatocustodio]Uma dúvida…
Porque usar um jdk livre pelo simples fato de ser livre?[/quote]

A diferença entre a JDK livre (exemplo: IcedTea no Linux) e um da Sun não está simplesmente de um ser livre e o outro não.

O problema é o seguinte (e talvez alguns vão chiar por eu ter disso isso): o JDK da Sun só é excelente no Windows, ele é inferior no Linux e no Solaris. Exemplo: quando uso Compiz, existem falhas de renderização em um aplicativo Swing. A performance no Linux é menor do que no Windows, isso num ambiente onde aplicativos como Apache e MySQL são superiores no SO do pingüim.

Sendo livre, o JDK pode ser melhorado pela comunidade.

Além disso, outros Sistemas Operacionais mais obscuros poderiam se beneficiar com um JDK implementado pela comunidade que os suporta, uma vez que a Sun não está nem aí pra eles.[/quote]

Leonardo,

Como a JVM da Sun tem um desempenho inferior no próprio sistema operacional desenvolvido e mantido por eles e superior no do concorrente (leia-se Microsoft)? Acho que é o inverso não?

Existe algum benchamark sobre o desempenho das JVM’s em algum lugar?

Obrigado.

[quote=renatocustodio]Uma dúvida…
Porque usar um jdk livre pelo simples fato de ser livre?[/quote]

A distribuição é facilitada, ela pode ser melhor suportada por mais empresas e comunidades além a própria Sun, melhor otimizada, ela pode ser auditada em relação à segurança, conflitos de interesses, etc.

São inúmeras as vantagens do modelo aberto em relação ao fechado.

[quote=renrutal][quote=renatocustodio]Uma dúvida…
Porque usar um jdk livre pelo simples fato de ser livre?[/quote]

A distribuição é facilitada, ela pode ser melhor suportada por mais empresas e comunidades além a própria Sun, melhor otimizada, ela pode ser auditada em relação à segurança, conflitos de interesses, etc.

São inúmeras as vantagens do modelo aberto em relação ao fechado.[/quote]

Concordo com o renrutal,

Imagine que sua empresa utilize a tecnologia (no caso Java) para suportar uma série aplicativos desenvolvidos e comercializados para um bom número de clientes. Agora imagine que, por algum motivo, a Sun mate o Java. O que você vai fazer, nessa situação? É um cenário complicado.

Agora com a tecnologia aberta, é diferente.
Você mesmo pode montar uma equipe e continuar a tecnologia para atender seus interesses.
A questão de software livre não é apenas ideologia. Vejo muito mais por esse lado. Essa segurança que ela dá.

[quote=thingol]Ora, um programa em Java pode funcionar na JVM da Sun e não da IBM, por exemplo
[/quote]
E como fica a tão exaltada e festejada portabilidade do Java?

[quote=pinto][quote=thingol]Ora, um programa em Java pode funcionar na JVM da Sun e não da IBM, por exemplo
[/quote]
E como fica a tão exaltada e festejada portabilidade do Java?
[/quote]

Fica comprometida. É difícil de acontecer, mas não impossível.

Por isso que existe uma bateria de testes que uma JVM precisa passar para ela ser certificada. Se duas VMs certificadas não funcionam em certos aspectos, hora de escrever mais uns testes.

Entretanto, a especificação também não é perfeita, se há diferenças, é por que há ambigüidade na especificação que dá margem de erro na implementação.

Atualmente o openjdk passou em todos os testes de compatibilidade com o jdk da sun? :?:

E é também por isso que a aplicação tem que ter uma bateria de testes quando for precisar rodar em duas VMs de vendors diferentes 8)

[quote=Rubem Azenha][quote=Bruno Laturner]
Por isso que existe uma bateria de testes que uma JVM precisa passar para ela ser certificada. Se duas VMs certificadas não funcionam em certos aspectos, hora de escrever mais uns testes.
[/quote]

E é também por isso que a aplicação tem que ter uma bateria de testes quando for precisar rodar em duas VMs de vendors diferentes 8) [/quote]

Write once, test anywhere

[quote=Alessandro Lazarotti][quote=Rubem Azenha][quote=Bruno Laturner]
Por isso que existe uma bateria de testes que uma JVM precisa passar para ela ser certificada. Se duas VMs certificadas não funcionam em certos aspectos, hora de escrever mais uns testes.
[/quote]

E é também por isso que a aplicação tem que ter uma bateria de testes quando for precisar rodar em duas VMs de vendors diferentes 8) [/quote]

Write once, test anywhere [/quote]

Write once, debug everywhere.