Il y a un bon aperçu de ce qui est impliqué dans une machine virtuelle Java ici:
http://www.artima.com/insidejvm/ed2/jvm.html
Je suppose que la langue de choix pour la mise en œuvre d'une machine virtuelle Java serait C++, avec les choses de bas niveau comme la gestion de la mémoire, la gestion des threads, io, etc., il interagirait avec l'API fournie par un système d'exploitation particulier. Des fonctionnalités plus élevées, telles que l'interprétation bytecode, pourraient théoriquement être communes entre plates-formes.
En termes de mise en œuvre d'une machine virtuelle Java, la réponse à votre question (et la difficulté de la tâche) dépend de l'ensemble de fonctionnalités dont vous avez besoin. Cependant, gardez à l'esprit que les machines virtuelles (Java et autres) sont en partie des abstractions du système d'exploitation et reflètent généralement les fonctionnalités fournies par le système d'exploitation.
Qu'est-ce qu'un "changement de niveau du système"? Et à quel morceau de code voudriez-vous faire un tel changement? Et s'il vous plaît définir "embed". Puisqu'une JVM existe pour Windows et Linux, je dirais que vous n'avez pas besoin de les changer du tout pour pouvoir écrire une JVM pour eux. –
@Sauer, Oui vous avez raison que JVM existe pour Windows et Linux. Ma question est de savoir quelles sont les modifications que SUN a déjà apportées dans JVM pour le porter sur Windows ainsi que sur Linux. Je veux dire, quelles sont les différences architecturales dans JVM par rapport à Windows & Linux? – Naveen