In quali lingue sono scritti il compilatore Java ( javac
), la macchina virtuale (JVM) e lo java
starter?
In quali lingue sono scritti il compilatore Java ( javac
), la macchina virtuale (JVM) e lo java
starter?
Risposte:
La formulazione precisa della domanda è leggermente fuorviante: non è "la JVM" o "il compilatore" in quanto vi sono più fornitori JVM (jrockit è uno, IBM un altro) e più compilatori là fuori.
Sun JVM è scritto C
, sebbene ciò non sia necessario: la JVM mentre gira sulla macchina è un eseguibile dipendente dalla piattaforma e quindi avrebbe potuto essere originariamente scritta in qualsiasi lingua. Ad esempio, l'IBM JVM originale è stata scritta in Smalltalk
Le librerie Java ( java.lang
, java.util
ecc., Spesso indicate come API Java ) sono esse stesse scritte in Java, sebbene i metodi contrassegnati come native
saranno stati scritti in C
o C++
.
Credo che anche il compilatore Java fornito da Sun sia scritto in Java. (Anche se di nuovo, ci sono più compilatori là fuori)
Il primissimo compilatore Java è stato sviluppato da Sun Microsystems ed è stato scritto in C usando alcune librerie di C ++. Oggi, il compilatore Java è scritto in Java, mentre JRE è scritto in C.
Possiamo immaginare come il compilatore Java sia stato scritto in Java in questo modo:
Il compilatore Java viene scritto come un programma Java e quindi 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 programmi Java.
Da Java Docs
Il compilatore è scritto in Java e il runtime è scritto in ANSI C.
In realtà Oracle JVM è scritto in C ++, non in C.
Dai un'occhiata al codice JVM di 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
Jikes RVM , una JVM self-hosting ampiamente utilizzata a fini 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".
Supponiamo che tu stia parlando dell'Hotspot JVM, che è fornito da iirc da Sun, è scritto in C ++. Per ulteriori informazioni sulle varie macchine virtuali per Java, è possibile controllare questo collegamento . javac , come la maggior parte dei compilatori Java, è scritto in Java.
(Per ulteriori informazioni È possibile controllare questo link: https://docs.oracle.com/javase/specs/jvms/se7/html/ )