На каком языке написаны компилятор Java и JVM? - PullRequest
184 голосов
/ 03 августа 2009

На каких языках написаны компилятор Java (javac), виртуальная машина (JVM) и java стартер?

Ответы [ 9 ]

160 голосов
/ 03 августа 2009

Точная формулировка вопроса немного вводит в заблуждение: это не "JVM" или "компилятор" , поскольку существует несколько поставщиков JVM ( jrockit - один, IBM - другой) и несколько компиляторов .

  • Sun JVM написана на и записана в C, хотя это не обязательно так - JVM, работающая на вашем компьютере, является исполняемым на платформе исполняемым файлом. и, следовательно, мог изначально быть написан на любом языке. Например, оригинальная IBM JVM была написана в Smalltalk

  • Библиотеки Java (java.lang, java.util и т. Д., Часто называемые API Java ) сами написаны на Java, хотя методы, отмеченные как native, будут написаны в C или C++.

  • Я считаю, что предоставленный Sun компилятор Java также написан на Java. (Хотя, опять же, есть несколько компиляторов)

65 голосов
/ 21 июля 2013

Самый первый компилятор Java был разработан Sun Microsystems и был написан на C с использованием некоторых библиотек из C ++. Сегодня компилятор Java написан на Java, а JRE написан на C.

Мы можем представить, как компилятор Java был написан на Java следующим образом:

Компилятор Java написан как программа Java, а затем скомпилирован с помощью компилятора Java, написанного на C (первый компилятор Java). Таким образом, мы можем использовать недавно скомпилированный Java-компилятор (написанный на Java) для компиляции Java-программ.

62 голосов
/ 03 августа 2009

С Документы Java

Компилятор написан на Java, а среда выполнения написана на ANSI C

15 голосов
/ 01 марта 2012

На самом деле Oracle JVM написана на C ++, а не на C.

Посмотрите код JSM HotSpot здесь: http://openjdk.java.net/groups/hotspot/

9 голосов
/ 03 августа 2009

Эта ссылка должна ответить на ваш вопрос

Кажется, компилятор теперь написан на Java, но среда выполнения написана на ANSI C

8 голосов
/ 03 августа 2009

В принципе почти все что угодно, обычно С

3 голосов
/ 03 августа 2009

Предположим, вы говорите о Hotspot JVM, которая является iirc от Sun, написана на C ++. Для получения дополнительной информации о различных виртуальных машинах для Java вы можете проверить эту ссылку . javac , как и большинство компиляторов Java, написан на Java.

3 голосов
/ 03 августа 2009

Jikes RVM , самостоятельная JVM, широко используемая в исследовательских целях, написана на Java. Это не тот, кто работает на своих рабочих столах, но в моем списке «теперь давайте покажем общую мощь языка».

0 голосов
/ 08 октября 2010

В большинстве операционных систем JVM написаны на ISO C ++. Я сомневаюсь, что используется ANSI C, поскольку это совершенно другой язык, который в настоящее время устарел.

...