37 votes

Comment un JVM peut-il être écrit en Java

J'ai été brièvement de lecture à propos de Maxine qui est un open source JVM qui écrit en Java. Cela sonne circulaire pour moi. Si java nécessite une machine virtuelle pour exécuter dans, comment la machine virtuelle elle-même être écrit en Java (ne pas la VM code nécessite une machine virtuelle dans lequel vous souhaitez exécuter, et ainsi de suite?).

Edit: Ok, donc je ne vois j'ai négligé le fait que Java n'a pas à courir dans une machine virtuelle. Comment alors expliquer comment un compilateur LISP peut être écrit en LISP? Ou devrait-il être une nouvelle question tout à fait?

15voto

Ignacio Vazquez-Abrams Points 312628

Votre hypothèse que Java nécessite une machine virtuelle est incorrecte pour commencer.

13voto

Yuval Adam Points 59423

Vous posez des questions sur le poulet et l'œuf.

Lire: http://en.wikipedia.org/wiki/Bootstrapping_%28compilers%29

7voto

Thilo Points 108673

La JVM que vous avez besoin pour démarrer une JVM écrit en Java n'a probablement pas besoin de beaucoup de fonctionnalités (telles que la collecte des ordures et JIT), pourrait être très simple. Toutes les fonctionnalités les plus avancées pourraient alors être mises en œuvre en Java (ce qui semble être exactement le point de Maxine, d'expérimenter avec de nouvelles idées dans la JVM de la technologie).

Aussi, Maxine ne contenir du code C, qui je pense fait un minimum d'environnement d'exécution qui est utilisé pour obtenir le reste de Maxine va. - Je considérer que les bits intéressants (compilateur JIT, la collecte des ordures) sont alors complètement implémenté en Java.

3voto

yawn Points 2823

2voto

macleojw Points 1794

Le code Java peut être compilé directement sur le code machine afin qu'une machine virtuelle ne soit pas nécessaire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X