In quale lingua sono scritti il compilatore Java e JVM?
In quali lingue è il compilatore Java (javac
), la macchina virtuale (JVM) e lo starter java
scritti?
9 answers
Il fraseggio preciso della domanda è leggermente fuorviante: non è "la JVM" o "il compilatore"come ci sono più fornitori di JVM (jrockit è uno, IBM un altro) e più compilatori là fuori.
La JVM Sun è scritta in
C
, anche se questo non deve essere il caso - la JVM mentre gira sulla tua macchina è un dipendente dalla piattaforma eseguibile e quindi potrebbe essere stato originariamente scritto in qualsiasi lingua. Ad esempio, la JVM IBM originale è stata scritta in SmalltalkLe librerie Java(
java.lang
,java.util
etc, spesso indicato come l'API Java ) sono essi stessi scritti in Java, anche se i metodi contrassegnati comenative
saranno stati scritti inC
oC++
.-
Credo che anche il compilatore Java fornito da Sun sia scritto in Java. (Anche se di nuovo, ci sono più compilatori là fuori)
Il compilatore è scritto in Java e il runtime è scritto in ANSI C
Il primo compilatore Java è stato sviluppato da Sun Microsystems ed è stato scritto in C utilizzando alcune librerie da C++. Oggi, il compilatore Java è scritto in Java, mentre il JRE è scritto in C.
Possiamo immaginare come il compilatore Java sia stato scritto in Java in questo modo:
Il compilatore Java è scritto come un programma Java e poi compilato con il compilatore Java scritto in C(il primo compilatore Java). Quindi possiamo usare il compilatore Java appena compilato (scritto in Java) per compilare Java programma.
In realtà la JVM Oracle è scritta in C++, non in C.
Dai un'occhiata al codice JVM HotSpot qui: http://openjdk.java.net/groups/hotspot /
Questo link dovrebbe rispondere alla tua domanda
Sembra che il compilatore sia ora scritto in Java, ma il runtime è scritto in ANSI C
In linea di principio quasi tutto, di solito C
Jikes RVM , una JVM self-hosting ampiamente utilizzata per scopi di ricerca è scritta in Java. Non è quello che le persone corrono sui loro desktop, ma è lassù nella mia lista di "ora mostriamo il potere generale della lingua."
Supponendo che tu stia parlando della JVM Hotspot, che è iirc fornito da Sun, è scritto in C++. Per ulteriori informazioni sulle varie macchine virtuali per Java, è possibile controllare questo link . javac , come la maggior parte dei compilatori Java, è scritto in Java.
La maggior parte dei sistemi operativi, JVM sono scritti in ISO C++. Dubito che ANSI C sia usato, un linguaggio completamente diverso che al giorno d'oggi è piuttosto antiquato.