web-dev-qa-db-fra.com

Dans quelle langue le compilateur et la JVM Java sont-ils écrits?)

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

184
Rahul Garg

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).

160
oxbow_lakes

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.

68
shrinath

De Java Docs

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

62
Sev

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/

16
UrbenLegend

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.

9
micmoo

En principe presque tout, généralement C

8
djna

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."

3
Sam Harwell

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.

3
Michael Foukarakis