W jakim języku napisany jest kompilator Java i JVM?

W jakich językach jest kompilator Java (javac), maszyna wirtualna (JVM) i starter java napisane?

 174
Author: user2418306, 2009-08-03

9 answers

Dokładne sformułowanie pytania jest nieco mylące: nie jest to "JVM" lub "kompilator" , ponieważ istnieje wielu dostawców JVM (jrockit jest jednym, IBM innym) i wielu kompilatorów.

  • Sun JVM jest napisany w C, chociaż nie musi tak być - JVM, ponieważ działa na twoim komputerze, jest plikiem wykonywalnym zależnym od platformy, a zatem może być pierwotnie napisany w dowolnym języku język. Na przykład oryginalny IBM JVM został napisany w Smalltalk

  • Biblioteki Java (java.lang, java.util etc, często określane jako Java API ) są same w sobie napisane w Javie, chociaż metody oznaczone jako native będą napisane w C lub C++.

  • Uważam, że kompilator Javy dostarczony przez Sun jest również napisany w Javie. (Chociaż znowu, istnieje wiele kompilatorów)

 149
Author: oxbow_lakes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-03 12:26:32

From Java Docs

Kompilator jest napisany w Javie, a runtime w ANSI C

 58
Author: Sev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-06 22:26:12

Pierwszy kompilator Javy został opracowany przez Sun Microsystems i został napisany w języku C przy użyciu niektórych bibliotek z C++. Obecnie kompilator Javy jest napisany w Javie, a JRE w C.

Możemy sobie wyobrazić, jak kompilator Javy został napisany w Javie w taki sposób:

Kompilator Javy jest napisany jako program Java, a następnie skompilowany z kompilatorem Javy napisanym w języku C (pierwszy kompilator Javy). W ten sposób możemy użyć nowo skompilowanego kompilatora Javy(napisanego w Javie) do kompilacji Javy programy.

 54
Author: shrinath,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-06 02:34:19

W rzeczywistości Oracle JVM jest napisany w C++, a nie w C.

Spójrz na kod HotSpot JVM tutaj: http://openjdk.java.net/groups/hotspot/

 14
Author: UrbenLegend,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-29 22:36:40

Ten link powinien odpowiedzieć na twoje pytanie

Wydaje się, że kompilator jest teraz napisany w Javie, ale runtime jest napisany w ANSI C

 9
Author: micmoo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-03 10:34:39

W zasadzie prawie wszystko, Zwykle C

 8
Author: djna,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-03 06:44:57

Jikes RVM , własny hosting JVM używany szeroko do celów badawczych jest napisany w Javie. To nie jest ten, który ludzie uruchamiają na swoich pulpitach, ale jest tam na mojej liście "teraz pokażmy ogólną moc języka."

 3
Author: Sam Harwell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-03 06:46:57

Przypuśćmy, że mówisz o hotspocie JVM, który jest iirc dostarczanym przez Sun, jest napisany 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 Javy, jest napisany w Javie.

 3
Author: Michael Foukarakis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-03 06:51:38

Większość systemów operacyjnych, JVMs jest napisana w ISO C++. Wątpię, aby używany był ANSI C, zupełnie inny język, który jest obecnie dość przestarzały.

 -2
Author: Mickey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-10-08 13:14:36