Dans quelles langues le compilateur Java ( javac
), la machine virtuelle (JVM) et le java
démarreur sont-ils écrits?
Dans quelles langues le compilateur Java ( javac
), la machine virtuelle (JVM) et le java
démarreur sont-ils écrits?
Réponses:
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 JVM (jrockit est l'un, IBM un autre) et plusieurs compilateurs .
La JVM Sun est écrite C
, bien que cela ne soit pas nécessairement le cas - la JVM telle qu'elle s'exécute sur votre machine est un exécutable dépendant de la plate-forme et aurait donc pu être écrit à l'origine dans n'importe quelle langue. Par exemple, l'IBM JVM d'origine a été écrite en Smalltalk
Les bibliothèques Java ( java.lang
, java.util
etc., souvent appelées API Java ) sont elles-mêmes écrites en Java, bien que les méthodes marquées comme native
aient été écrites en C
ou C++
.
Je crois que le compilateur Java fourni par Sun est également écrit en Java. (Bien que là encore, il existe plusieurs compilateurs)
Le tout premier compilateur Java a été développé par Sun Microsystems et a été écrit en C à l'aide de certaines bibliothèques de 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 ceci:
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.
Depuis Java Docs
Le compilateur est écrit en Java et le runtime est écrit en ANSI C
En fait, la JVM Oracle est écrite en C ++, pas en C.
Jetez un œil au code JVM HotSpot ici: http://openjdk.java.net/groups/hotspot/
Jikes RVM , une machine virtuelle Java auto-hébergée largement utilisée à des fins de recherche est écrite en Java. Ce n'est pas celui que les gens exécutent sur leur bureau, mais c'est bien là-haut sur ma liste de "maintenant, montrons la puissance générale de la langue".
Supposons que vous parliez de la JVM 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 consulter ce lien . javac , comme la plupart des compilateurs Java, est écrit en Java.
(Pour plus d'informations, vous pouvez consulter ce lien: https://docs.oracle.com/javase/specs/jvms/se7/html/ )