концепция абстрактной машины jvm

Я пытаюсь понять реальное преимущество реализации Java как абстрактной или виртуальной машины или, другими словами, преимущество компиляции языка в язык для абстрактной машины. Что касается независимости от платформы, я думал о следующих двух альтернативных реализациях:

  • просто иметь интерпретатор, который переводит java непосредственно в машинный код машины, на которой он работает, и иметь несколько реализаций такого интерпретатора для разных типов. машины.

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

Если не принимать во внимание производительность, как соотносится наличие абстрактной машины с этими вариантами. Другими словами, что, если байт-код java — это не язык для виртуальной машины, а просто некий промежуточный язык. Какие функции и преимущества будут потеряны (кроме производительности)?

7
задан Seki 13 June 2015 в 11:54
поделиться