Dans quel langage le compilateur Java et la machine virtuelle Java sont-ils écrits?

StackOverflow https://stackoverflow.com/questions/1220914

  •  10-07-2019
  •  | 
  •  

Question

Dans quelles langues le compilateur Java ( javac ), la machine virtuelle (JVM) et le démarreur java sont-ils écrits?

Était-ce utile?

La solution

La formulation précise de la question est légèrement trompeuse: ce n'est pas "la JVM" ou "le compilateur" car il existe plusieurs fournisseurs de JVM. (jrockit est l’un, IBM l’autre) et plusieurs compilateurs .

  • La machine virtuelle Java Sun est écrite en C , bien que cela ne soit pas nécessairement le cas: la machine virtuelle Java s'exécutant sur votre ordinateur est une plate-forme -dependent exécutable et par conséquent pourrait avoir été écrit à l'origine dans n'importe quel langage. Par exemple, la machine virtuelle IBM JVM d'origine a été écrite dans Smalltalk

  • Les bibliothèques Java ( java.lang , java.util , etc., souvent appelées l'API Java ) sont elles-mêmes écrit en Java, bien que les méthodes marquées comme natif aient été écrites en C ou C ++ .

  • Je pense que le compilateur Java fourni par Sun est également écrit en Java. (Encore une fois, il existe plusieurs compilateurs)

Autres conseils

Le tout premier compilateur Java a été développé par Sun Microsystems et a été écrit en C en utilisant certaines bibliothèques C ++. Aujourd'hui, le compilateur Java est écrit en Java, tandis que le JRE est écrit en C.

Nous pouvons imaginer comment le compilateur Java a été écrit en Java comme suit:

Le compilateur Java est écrit en tant que programme Java puis compilé avec le compilateur Java écrit en C (le premier compilateur Java). Ainsi, nous pouvons utiliser le compilateur Java nouvellement compilé (écrit en Java) pour compiler des programmes Java.

De Java Docs

  

Le compilateur est écrit en Java et le runtime est écrit en ANSI C

En réalité, la machine virtuelle Java Oracle est écrite en C ++ et non en C

.

Consultez le code de la machine virtuelle HotSpot ici: http://openjdk.java.net/groups/hotspot/ a>

Ce lien devrait répondre à votre question

Il semble que le compilateur soit maintenant écrit en Java, mais le runtime est écrit en ANSI C

En principe, presque tout, généralement C

Jikes RVM , une JVM auto-hébergée largement utilisée à des fins de recherche est écrite en Java. Ce n’est pas celui que les gens utilisent sur leur ordinateur de bureau, mais c’est tout en haut de ma liste de "maintenant, montrons le pouvoir général de la langue".

Si vous parlez de la machine virtuelle Hotspot, qui est fournie par Sun, iirc est écrite en C ++. Pour plus d'informations sur les différentes machines virtuelles pour Java, vous pouvez consulter ce lien . javac , comme la plupart des compilateurs Java, est écrit en Java.

Sur la plupart des systèmes d'exploitation, les machines virtuelles sont écrites en ISO C ++. Je doute que l’ANSI C soit utilisé, car c’est un langage totalement différent qui est assez désuet de nos jours.

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