Bom, o que pouca gente sabe é que existem outras SDK e JVM pra java, alem da fornecida pela SUN… Gostaria de saber qual vocês acham as melhores para cada caso na plataforma Windows e Linux
JVM existentes:
Sun SDK/JVM
padrão, usado pela maioria das pessoas em Windows e Linux
IBM SDK/JVM
até bem pouco tempo, era considerado bem mais rapido que o JVM da Sun, ainda é???
HP JVM (Alpha)
ainda nao testei, alguem ja usou?
blackdown
Umas das primeiras implementações pra linux, nunca me passou confiança… ! alguem usa?
Acho que isso é meio questão de gosto - geralmente quem não usa a VM da Sun é meio fanático pela VM que usa, mas tb nao chega ao fanatismo dos usuarios das diversas distribuicoes de Linux que tem por ai
Já usei a VM da IBM, e pra falar a verdade não senti diferenças grandes de performance. Então, sinceramente, pra mim tanto faz - eu não sou da área operacional, eu sou só desenvolvedor
PS: Faltou aí um monte de VM, ainda… BEA JRockit, Oracle OJVM, Apple JVM…
a JVM da Apple eh animal, da 1 show nas demais.
Eh a unica que usa shm pra compartilhar a versao jitted do runtime. Ou seja, basta manter 1 JVM que usa as classes mais comuns (collections, lang, io, net, ui) em background que o startup de outra aplicacao eh muito mais rapido
A idéia de usar memoria compartilhada pro JIT foi muito boa, mesmo… será que isso vai entrar na Tiger?
Lembro de ter lido e escutado muito sobre isso, mas, de repente, todo mundo soh tava interessado nas novas features da linguagem e acho que esse assunto “morreu” :?
Nao, o MacOS X usa Objective C como “linguagem padrão”, assim como a maioria dos Unices usa C, o Windows e o BeOS usam C++.
Mas, no caso do MacOS, devido à otima integração que a Swing da Apple JVM tem, dá a impressão de que as apps Java são praticamente nativas. De fato, já ouvi alguns comentários que desinstalar a VM no MacOS X dá tanto problema quanto tentar desinstalar o IE no Windows
eu vi que a sun tava cogitando 1 JVM com shm pra 1.4.2, mas devido a algumas deadlines isso nao vai acontecer.
Porem se tudo der certo, provavelmente na Tiger vai acontecer.
Já ouvi falar dessa linguagem. Quais são suas caracteristicas? É Orientada a Objetos? No que difere de C++ e de Java?[/quote]
Objective C é uma mistura, um pouco estranha, no início, de K&R C com Smalltalk. As declarações e chamadas de métodos são feitos de uma maneira ‘smalltalkenta’, e todo o resto é C. Aqui vai um exemplo, pra dar uma idéia:
[code]+(Foo *)MakeFoo:(int)aValue;
initFoo:(int)aValue;
free;
(int)callFoo:(int)aValue;
(int)value;
int callFoo:(int)foo {
int count;
int result = 0;
HelperObject *anObject = [[HelperObject alloc] init];
for (count = 0; count < foo; count++)
result += [anObject value:count];
[anObject free];
return result;
}[/code]
[quote=“maxguzenski”]
blackdown
Umas das primeiras implementações pra linux, nunca me passou confiança… ! alguem usa?[/quote]
A vantagem de utilizar essa versão é que ela é compilada com a GCC
mais recente. As distros mais novas já vem com o gcc 3.2 , mas essa
última versão da Sun foi compilada com a gcc 2.92, o que ocasiona
alguns pequenos inconvenientes nos novos ambientes.
[quote=“cv”]A idéia de usar memoria compartilhada pro JIT foi muito boa, mesmo… será que isso vai entrar na Tiger?
[/quote]
ja era previsto para a 1.4.2, e nao entrou/entrara
dizem que estao conversando bastante com a apple para resolver isso, mas algumas pessoas falam q deve ter algo meio nao standard na jogada que vai dar trabalho para implementar
pois é… ia ser maneiro se chegassem num acordo quanto às estruturas de dados dos JITs para as diversas arquiteturas… assim, mesmo tendo VMs diferentes rodando, seria possivel aproveitar o q ja foi JITado, ou ainda fazer um monte de coisa doida - profiling, ou re-otimizar algum codigo, por exemplo
Posso estar viajando na batatinha, mas que tal isso:
o .so teria o código compilado das classes e tb 1 IR pra ser utilisado com o JITer. Ai sim seria possivel ter 1 warmup legal com java, quase compativel com o de 1 binario nativo.
Viajando ainda mais, poderiamos ter 1 modo --no-dynamic-class-loading
quando todas classes que a aplicação utliza podem ser determinadas estaticamente, permitindo o compilador fazer WPO, Whole Program Optimization.
BTW, alguem sabe de algum projeto ou plano de implementar offline compilation numa JVM?
não precisa ter 1 class nele
basta ter 1 IR voltado a JITIng, por sinal essa é outra coisa que seria muito legal, um format de arquivo class voltado a JITers e não interpretadores.
Isso foi 1 coisa que o .NET fez de muito estúpido.