Как создать пользовательскую 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 Они прошли долгий путь, поэтому их история проектов может дать вам хорошую идею о необходимых усилиях. Я сам не стал бы ставить на то, что это возможно для одного парня