Dalam bahasa apa Java compiler ( javac
), mesin virtual (JVM) dan java
starter ditulis?
Dalam bahasa apa Java compiler ( javac
), mesin virtual (JVM) dan java
starter ditulis?
Jawaban:
Ungkapan yang tepat dari pertanyaan ini sedikit menyesatkan: itu bukan "JVM" atau "kompiler" karena ada beberapa vendor JVM (jrockit adalah satu, IBM yang lain) dan beberapa kompiler di luar sana.
The Sun JVM yang ditulis dalam C
, meskipun ini tidak perlu terjadi - JVM seperti berjalan pada mesin Anda adalah tergantung platform eksekusi dan karenanya bisa telah awalnya ditulis dalam bahasa apapun. Sebagai contoh, IBM JVM asli ditulis dalam Smalltalk
Pustaka Java ( java.lang
, java.util
dll, sering disebut sebagai Java API ) sendiri ditulis dalam Java, meskipun metode yang ditandai native
telah ditulis dalam C
atau C++
.
Saya percaya bahwa kompiler Java yang disediakan oleh Sun juga ditulis dalam Java. (Meskipun sekali lagi, ada beberapa kompiler di luar sana)
Kompiler Java pertama dikembangkan oleh Sun Microsystems dan ditulis dalam C menggunakan beberapa pustaka dari C ++. Hari ini, kompiler Java ditulis dalam Java, sedangkan JRE ditulis dalam C.
Kita dapat membayangkan bagaimana Java compiler ditulis dalam Java seperti ini:
Kompiler Java ditulis sebagai program Java dan kemudian dikompilasi dengan kompiler Java yang ditulis dalam C (kompiler Java pertama). Jadi kita dapat menggunakan kompiler Java yang baru dikompilasi (ditulis dalam Java) untuk mengkompilasi program Java.
Dari Java Docs
Kompiler ditulis dalam Java dan runtime ditulis dalam ANSI C
Sebenarnya Oracle JVM ditulis dalam C ++, bukan C.
Lihatlah kode JVM HotSpot di sini: http://openjdk.java.net/groups/hotspot/
Tautan ini seharusnya menjawab pertanyaan Anda
Tampaknya kompiler sekarang ditulis dalam Java, tetapi runtime ditulis dalam ANSI C
Jikes RVM , hosting mandiri JVM yang digunakan secara luas untuk keperluan penelitian ditulis di Jawa. Bukan orang yang berjalan di desktop mereka, tapi itu jauh di atas sana di daftar saya "sekarang mari kita memamerkan kekuatan umum bahasa."
Misalkan Anda sedang berbicara tentang Hotspot JVM, yang iirc disediakan oleh Sun, ada tertulis dalam C ++. Untuk info lebih lanjut tentang berbagai mesin virtual untuk Java, Anda dapat memeriksa tautan ini . javac , seperti kebanyakan kompiler Java, ditulis dalam Java.
(Untuk Informasi Lebih Lanjut Anda dapat memeriksa tautan ini: https://docs.oracle.com/javase/specs/jvms/se7/html/ )