Dans quelles langues le Java compilateur (javac
), la machine virtuelle (JVM) et le démarreur Java
sont-ils écrits??
La formulation précise de la question est légèrement trompeuse: ce n'est pas "la machine virtuelle" ou "le compilateur" car il y a plusieurs vendeurs de JVM (jrockit en est un, IBM un autre) et plusieurs compilateurs.
La machine virtuelle Java de Sun est écrite en C
, bien que ce ne soit pas nécessairement le cas - la machine virtuelle Java telle qu'elle s'exécute sur votre ordinateur est un dépendante de la plate-forme et donc pourrait avoir été écrite à l’origine dans n’importe quel langage. Par exemple, la machine virtuelle IBM JVM d’origine a été écrite en Smalltalk
Les bibliothèques Java (Java.lang
, Java.util
etc, souvent appelés les Java API ) sont eux-mêmes écrits en Java, bien que les méthodes marquées native
aura été écrit 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).
Le tout premier Java compilateur a été développé par Sun Microsystems et a été écrit en C avec certaines bibliothèques de C++. Aujourd'hui, le compilateur Java est écrit en Java, alors que le JRE est écrit en C.
Nous pouvons imaginer comment le compilateur Java a été écrit dans Java comme ceci:
Le compilateur Java est écrit sous la forme d'un programme Java puis compilé avec le compilateur Java écrit en C (le premier = Java). Ainsi, nous pouvons utiliser le compilateur nouvellement compilé Java (écrit en Java) = 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.
Jetez un coup d’œil au code de la machine virtuelle HotSpot ici: http://openjdk.Java.net/groups/hotspot/
Ce lien devrait répondre à votre question
Il semble que le compilateur est 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 leurs ordinateurs de bureau, mais c'est bien en haut de ma liste de "maintenant, montrons le pouvoir général du langage."
Supposons que vous parlez de la machine virtuelle Hotspot, qui est fournie par Sun par iirc, elle est écrite en C++. Pour plus d'informations sur les différentes machines virtuelles pour Java, vous pouvez vérifier ceci lien . javac , comme la plupart des compilateurs Java), est écrit en Java.