Jvm

9 respostas
S

Olá pessoal,

Tava lendo que alguns fabricantes possuem sua própria máquina virtual java como IBM e que essas JVM são implementadas com algumas tecnologias diferentes como JIT, HotSpot … alguém poderia me explicar isso n entendi…é como se a JVM fosse diferente dependendo da empresa é isso? tem algum ganho de uma em relação a outra?

Obrigado antecipadamente.

9 Respostas

rdgms

Aew cara… é isso msm
eles fazem isso para ganhar alguma coisa em troca (geralmente performace).
por exemplo o HotSpot por exemplo ao inves de ultilizar o Garbage Collection ele ultiliza o
Generational Garbage Collection que divide o processo de limpeza da memória em fatias de tempo.

S

Amigo,

Onde eu posso encontrar mais sobre isso, em livros para certificação ou em material mesmo na net?

Pesquisei algumas coisas sobre Jikes, Javac, JIT mas ainda estou com dúvidas…

Agradeço pela força…

zinho

A JVM é uma especificação da Sun.
Apesar de a própria Sun possuir sua implementação, qualquer um pode construir sua próvia VM.
Até vc mesmo (se for pirado), basta seguir a especificação.
Vendors como a IBM, BEA, etc possuem sua própria implementação.
http://java.sun.com/docs/books/jvms/

Essas tecnologias que vc citou como JIT e Hotspot não são exclusivas das implementações desses vendors.
A VM da Sun tb as possui.

R

Depois que uma empresa termina sua JVM ela precisa pagar para a sun certificar sua JVM.

Como existe uma especificação a ser seguida, se vc quer que a JVM seja certificada precisa entregar os a JVM a sun para ela certificar e pagar por isso.
Algumas JVM implementadas não seguem alguns padrões.

como Todos sabem que a classe String é uma classe e não um tipo primitivo, mas todos sabem que tentam ao máximo aproximar a classe String de um tipo primitivo.

E com tudo isso existe algumas JVM que se vc fizer isso aqui.

String a = a;

String b = b;

a = b;

algumas jvm atribuem a referencia da variavel b a variavel a.

e outras copiam o objeto de “b” a “a”.
ai quando fizer isso

a = “c”

algumas vão modificar o valor da variavel a e b e outras só vão mudar o valor da váriavel a.
Se eu não estou enganado é isso ai.

zinho

Acho que o que vc quis dizer é que, dada a especificação, como será a implementação não importa, desde que esta siga as especificações.
Agora, no caso do seu exemplo:

a = "a" b = "b" a = b

Sempre ocorrerá de ambas as referencias “apontarem” para o mesmo objeto.
Seja String ou qualquer outro objeto.
O objeto nunca será duplicado, como vc falou. Independente da JVM.

R

sim esta é a especificação mas ja encontrei JVM que não implementava isso…

e sim duplicava o meu objeto.

zinho

Qual?

R

Sei la…
Faz tempo.
que vi isso.

Era para linux, Testei e não dava certo ai debuguei e cheguei a essa conclusão.

zinho

Não querendo duvidar de você.
Mas acho praticamente impossível o operador de atribuição (=) se comportar de formas diferentes.
Antes de falarmos em implementações da JVM, isso faz parte da linguagem Java. É como se i++ pudesse significar coisas diferentes.
Imagina o que aconteceria.

Criado 30 de agosto de 2008
Ultima resposta 1 de set. de 2008
Respostas 9
Participantes 4