Страницы

Поиск по вопросам

четверг, 4 октября 2018 г.

Платформа java - что это

Есть язык Java. Это просто синтаксис.
Есть реализация языка - это компилятор, который понимает синтаксис языка и переводит его в байт-код.
Есть Java Virtual Machine - это интерпретатор, исполняет байт-код. Насколько я понимаю, java поэтому и кроссплатформеная, потому что на каждую операционную систему создается своя JVM, которая умеет транслировать байт-код под данную ОС.
Есть Java Development Kit, которая состоит из: компилятора java, JVM, и стандартных классов и библиотек Java, используемых при разработке. JDK - это для разработчика.
Есть Java Runtime Environment - это среда выполнения Java.
А что означает "платформа Java"? Каким образом другие языки вроде Scala могут выполняться на платформе Java? Разве другие языки не компилируются в машинный код, который должен выполняться уже операционной системой? Что означает "Среда выполнения Java" JRE? Это и есть то что мы называем Java Virtual Machine? Если JVM и JRE это не одно и то же, то в чем различия?


Ответ

Платформа Java - совокупность того, что вы описали. Это довольно абстрактный термин и в разном контексте он может трактоваться по разному. Иногда просто JRE, иногда все вместе даже с сервером приложений Java EE Другие языки на платформе Java могут исполняться многими путями. Как вы верно подметили, виртуальная машина Java исполняет байт код. Таким образом любой язык, компилятор которого сможет сгенерировать валидный байт-код, может быть исполняем на виртуальной машине Java. Насколько я знаю конкретно в случае со Scala все немного проще и используется механизм обобщения (дженериков) и свойство их стирания во время исполнения. В моем понимании, выражаясь терминами языка Java - JRE - это интерфейс, а JVM - это имплементация. JVM - немного шире, т.к. может включать некоторые криптографические возможности, оптимизации, компиляцию в нативный код и т.п., напрямую не обязательные для исполнения кода и его работоспособности, но сильно увеличивающие эффективность работы программы.

Комментариев нет:

Отправить комментарий