Как создать пользовательскую JVM?

Я читал статью # 6.10 на http://www.cafeaulait.org/javafaq.html, и я начал задаваться вопросом, как крупные игроки начинают создавать свою собственную реализацию JVM. Будет ли эксперимент каким-то другим возможным (и возможным) для одного парня?

Ответы

Ответ 1

технически все информационные люди, которые должны создать новую JVM, находятся в общедоступных спецификациях для языка и целевой платформы. JVM нужно будет вести себя по-разному в зависимости от того, предназначено ли оно для работы на настольном компьютере или мобильном телефоне, даже если интерпретация байт-кода будет в значительной степени идентичной.

Несколько мест, чтобы начать поиск информации:

http://en.wikipedia.org/wiki/List_of_Java_virtual_machines
Чтение "Спецификация виртуальной машины Java" Тима Линдхольма
http://www.jcp.org/en/jsr/detail?id=30

Из того, что я видел в реализациях JVM Sun, IBM или небольших компаниях, таких как Esmertec, написание простой JVM - это проект на несколько человеко-месяцев, но добавление JSR после JSR для поддержки большей функциональности может занять годы.

Теперь, если все, что вам нужно, это простой интерпретатор байт-кода, это не так уж плохо, но это все еще довольно немного кода для записи.

Ответ 2

Я понимаю, что в настоящее время крупные игроки лицензируют библиотеку Java от Sun. Затем они добавляют свои собственные уточнения. Основное различие между реализациями - это компилятор байт-кода- > машинный код.

Ответ 3

Handmade JVM - отличный способ узнать о виртуальных машинах в целом, о проблемах разработки языка программирования (через спецификацию JVM) и о деталях синтаксического анализа и т.д.

Если вы решите взять его в этом направлении, вы также можете изучить оптимизацию, где он может стать интересным, и вы можете взять исследовательские работы и реализовать свои алгоритмы.

Если вы менее заинтересованы в долгой и трудной задаче создания виртуальной машины с нуля, вы можете захотеть изменить существующую VM с открытым исходным кодом, например Kaffe. Он покажет вам, что делает виртуальная машина, но не обязательно, как работает Java-код в Sun JVM:

Kaffe - это чистая реализация виртуальной машины Java, а также связанные библиотеки классов, необходимые для обеспечения среды выполнения Java.

Таким образом, вы могли бы изучить детали, но погрузитесь в реализацию более интересных функций.

Ответ 4

Во-первых, вы можете взглянуть на Apache Harmony Они прошли долгий путь, поэтому их история проектов может дать вам хорошую идею о необходимых усилиях. Я сам не стал бы ставить на то, что это возможно для одного парня