En passant au-dessus d'un Java Livre, je suis tombé sur cette phrase:
Différents JVMS peuvent exécuter des threads de manière profonde différentes.
Bien que cela soit complètement compréhensible pour moi, ce code peut se comporter différemment en fonction de la mise en œuvre de la JVM sous-jacente, elle soulève la question.
Pourquoi y a-t-il plusieurs implémentations différentes de JVM en premier lieu?
Pourquoi pourrais-je, en tant que développeur, être insatisfait de la mise en œuvre officielle de la JVM que Oracle fournit et décider de constituer une autre?
Pourquoi pourrais-je, en tant que développeur, être insatisfait de la mise en œuvre officielle de la JVM que Oracle fournit et décider de constituer une autre?
Lequel? Oracle a au moins trois implémentations JVM officielles différentes!
Quelques raisons pourraient développer une mise en œuvre JVM sont:
JVM est une abstraction. C'est une couche logicielle spécialement conçue pour permettre au Java Language d'être plate-forme-agnostique en s'appuyant sur l'existence d'un moteur d'exécution compatible des spécifications "partout".
Mais ... une taille ne correspond pas à tous. Si vous essayez de "caler" Java dans un très petit environnement, tel qu'un téléphone portable de style Android sous-alimenté (mais bon marché), vous pourriez avoir à "code de bum" très considérablement plus que fonctionnaire Oracle ™ a jugé nécessaire de le faire. Vous devrez peut-être développer une implémentation de la JVM qui n'existait pas encore.
Et ainsi, c'est pourquoi il y a beaucoup de JVMS. Ils sont spécifiques à l'architecture et à la situation, de sorte que Java ne doit pas être.