Question

Où Implémentations JVM diffèrent (sauf autorisation)? Est-ce que chaque machine virtuelle Java mise en œuvre de type Erasure pour le traitement générique?

Où sont les différences entre:

  • JRockit
  • JVM IBM
  • SUN JVM
  • Ouvrir JDK
  • Blackdown
  • Kaffe

..... Offres un d'entre eux avec la queue-Call-optimisation?

Était-ce utile?

La solution

implémentations de la JVM peuvent différer de la façon dont ils mettent en œuvre la compilation JIT, optimisations, la collecte des ordures, les plates-formes prises en charge, version de Java pris en charge, etc. Ils doivent répondre à un ensemble de caractéristiques et les comportements afin qu'il exécutera votre Java bytecode correctement.

Comme vous l'avez dit, la principale différence a tendance à être en matière de licences. D'autres différences non techniques ont tendance à être dans les options de support gratuit / payé, l'intégration avec d'autres technologies (généralement des serveurs J2EE), et l'accès au code source.

Remarque:. Même si un serveur J2EE fonctionne sur la machine virtuelle Java, certains serveurs ont des outils intégrés pour la surveillance, l'analyse et les performances JVM peaufinage

En ce qui concerne les différences techniques, celles-ci ont connu une croissance moins importante au fil des ans. Il était une fois, IBM et JVM JRockit avaient des performances bien supérieures à la référence mise en œuvre du Soleil. Cela est dû à des différences significatives dans les types d'optimisations d'exécution, les différences dans la collecte des ordures, et les différences de code natif (et combien code natif utilise différentes classes). Ces différences de performances ne sont pas aussi plus important.

Certains comprennent également de machine virtuelle Java ou avec des diagnostics et intégrer des outils de suivi. JRockit comprend un ensemble d'outils pour surveiller les performances de votre machine virtuelle Java. Sun fournit divers outils JMX avec des fonctions qui se chevauchent pour faire la même chose. IBM Websphere une fois inclus un ensemble d'outils similaires pour l'ensemble de leur serveur d'applications J2EE (ne sais pas s'ils le font encore, mais je suppose que ce toujours vrai) ...

Certains de la machine virtuelle Java open source ont tendance à avoir un peu plus lent performances parce qu'ils ont été réaménagés à partir du sol. À ce titre, ils ont un peu plus de rattrapage à faire. J'ai vérifié il y a dernier environ 2 ans, Blackdown était significativement plus lent (1.5x-2x?) Que la machine virtuelle Java du Soleil. Il était aussi un peu derrière des versions de Java.

Autres conseils

effacement de type est fonction compilateur rel="noreferrer"> et comme comme indépendante JVM.

Des choses comme l'effacement de type sont effectués par le compilateur pour être rétrocompatible avec JVMs plus. La plupart des JVMs devraient soutenir toutes les fonctionnalités dont vous avez besoin, mais certains peuvent être plus optimisés que d'autres. Je devine que la machine virtuelle Java de Sun est probablement le plus rapide.

compilation JIT est une chose que certains JVM. S ne pas

Si la machine virtuelle Java prétend être Java, il doit passer le TCK, fournissant beaucoup de stock funcitonaltiy.

Les différences sont dans des endroits non essentiels, comme la collecte des ordures, le jconsole / visualvm dans la machine virtuelle Java de Sun, etc précompilation.


clarification: TCK est la suite de tests qu'une machine virtuelle doit passer pour être officiellement compatibles Java

.

Une autre différence entre JVMs est un comportement sur l'API non documentée. (Par exemple com.sun.xxx) Par exemple, machine virtuelle Java de Sun et JVM d'IBM ont tous deux un comportement légèrement différent sur le traitement du signal. (JVM d'IBM ne permet pas l'application de piéger le signal "INT" dans certains cas.)

JVM est comme une machine virtuelle qui fonctionne pour charger les varifier de classe et Bytcode, exécutez le code. tandis que Applocaion Interface de programmation est une collection de paquets. et les colis sont collection de classe. programme Java exécuter où JVM installée et fonctionne.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top