W jakich językach jest napisany kompilator Java ( javac
), maszyna wirtualna (JVM) i java
starter?
W jakich językach jest napisany kompilator Java ( javac
), maszyna wirtualna (JVM) i java
starter?
Odpowiedzi:
Precyzyjne sformułowanie pytania jest nieco mylące: nie jest „JVM” ani „kompilator”, ponieważ istnieje wielu dostawców JVM (jrockit to jeden, IBM inny) i wiele kompilatorów .
Sun JVM jest napisany C
, chociaż nie musi tak być - JVM działający na twoim komputerze jest wykonywalnym programem zależnym od platformy i dlatego mógł być pierwotnie napisany w dowolnym języku. Na przykład oryginalny IBM JVM został napisany w języku Smalltalk
Biblioteki Java (java.lang
, java.util
etc, często określane jako Java API ) sami są napisane w Javie, chociaż metody oznaczone jako native
będą zostały napisane w C
lub C++
.
Wierzę, że kompilator Java dostarczony przez Sun jest również napisany w Javie. (Chociaż znowu istnieje wiele kompilatorów)
Pierwszy kompilator Java został opracowany przez Sun Microsystems i został napisany w C przy użyciu niektórych bibliotek z C ++. Obecnie kompilator Java jest napisany w Javie, a środowisko JRE w C.
Możemy sobie wyobrazić, jak kompilator Java został napisany w Javie w następujący sposób:
Kompilator Java jest zapisywany jako program Java, a następnie kompilowany za pomocą kompilatora Java napisanego w C (pierwszy kompilator Java). W ten sposób możemy użyć nowo skompilowanego kompilatora Java (napisanego w Javie) do kompilacji programów Java.
Kompilator napisany jest w Javie, a środowisko wykonawcze w ANSI C.
W rzeczywistości Oracle JVM jest napisany w C ++, a nie w C.
Spójrz na kod JVM HotSpot tutaj: http://openjdk.java.net/groups/hotspot/
Jikes RVM , samodzielna JVM, szeroko wykorzystywana do celów badawczych, jest napisana w Javie. To nie jest jedna osoba, która działa na swoich komputerach, ale jest tam na mojej liście „teraz pokażmy ogólną moc języka”.
Załóżmy, że mówisz o JVM Hotspot, który jest dostarczany przez Sun, napisany jest w C ++. Aby uzyskać więcej informacji na temat różnych maszyn wirtualnych dla Java, możesz sprawdzić ten link . javac , podobnie jak większość kompilatorów Java, jest napisany w Javie.
(Aby uzyskać więcej informacji, możesz sprawdzić ten link: https://docs.oracle.com/javase/specs/jvms/se7/html/ )