На каких языках написаны компилятор Java ( javac
), виртуальная машина (JVM) и java
стартер?
На каких языках написаны компилятор Java ( javac
), виртуальная машина (JVM) и java
стартер?
Ответы:
Точная формулировка вопроса немного вводит в заблуждение: это не «JVM» или «компилятор», поскольку существует несколько поставщиков JVM (один Jrockit, другой IBM) и несколько компиляторов .
Sun JVM будет написано в C
, хотя это не обязательно так - JVM , как она работает на вашем компьютере является платформо-зависимый исполняемый файл и , следовательно , может быть написана на любом языке. Например, оригинальная IBM JVM была написана на Smalltalk
Библиотеки Java ( java.lang
и java.util
т. Д., Часто называемые Java API ) сами написаны на Java, хотя методы, помеченные как native
будут написаны в C
или C++
.
Я считаю, что компилятор Java, предоставляемый Sun, также написан на Java. (Хотя, опять же, есть несколько компиляторов)
Самый первый Java-компилятор был разработан Sun Microsystems и был написан на C с использованием некоторых библиотек из C ++. Сегодня компилятор Java написан на Java, а JRE написан на C.
Мы можем представить, как Java-компилятор был написан на Java следующим образом:
Компилятор Java написан как программа Java, а затем скомпилирован с помощью компилятора Java, написанного на C (первый компилятор Java). Таким образом, мы можем использовать недавно скомпилированный компилятор Java (написанный на Java) для компиляции программ Java.
Компилятор написан на Java, а среда выполнения написана на ANSI C
На самом деле Oracle JVM написана на C ++, а не на C.
Взгляните на код JVM HotSpot здесь: http://openjdk.java.net/groups/hotspot/
Эта ссылка должна ответить на ваш вопрос
Кажется, что компилятор теперь написан на Java, но среда выполнения написана на ANSI C
Jikes RVM , JVM с самостоятельным размещением, широко используемая в исследовательских целях, написана на Java. Это не тот человек, который работает на своих рабочих столах, но в моем списке «теперь давайте покажем общую мощь языка».
Предположим, вы говорите о Hotspot JVM, которая является iirc, предоставляемым Sun, она написана на C ++. Для получения дополнительной информации о различных виртуальных машинах для Java, вы можете проверить эту ссылку . javac , как и большинство компиляторов Java, написан на Java.
(Для получения дополнительной информации вы можете проверить эту ссылку: https://docs.oracle.com/javase/specs/jvms/se7/html/ )