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

213
21 января 2018, 04:05

Есть язык 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 это не одно и то же, то в чем различия?
Answer 1
  1. Платформа Java - совокупность того, что вы описали. Это довольно абстрактный термин и в разном контексте он может трактоваться по разному. Иногда просто JRE, иногда все вместе даже с сервером приложений Java EE
  2. Другие языки на платформе Java могут исполняться многими путями. Как вы верно подметили, виртуальная машина Java исполняет байт код. Таким образом любой язык, компилятор которого сможет сгенерировать валидный байт-код, может быть исполняем на виртуальной машине Java. Насколько я знаю конкретно в случае со Scala все немного проще и используется механизм обобщения (дженериков) и свойство их стирания во время исполнения.
  3. В моем понимании, выражаясь терминами языка Java - JRE - это интерфейс, а JVM - это имплементация. JVM - немного шире, т.к. может включать некоторые криптографические возможности, оптимизации, компиляцию в нативный код и т.п., напрямую не обязательные для исполнения кода и его работоспособности, но сильно увеличивающие эффективность работы программы.
READ ALSO
RSA шифрование кириллицы

RSA шифрование кириллицы

Исходная реализация алгоритма взята отсюдаДля простоты есть 2 класса сам алгоритм и Main (psvm):

137
Как правильно инициализировать переменные объекта в Java?

Как правильно инициализировать переменные объекта в Java?

Прошу уточнить какой вариант инициализации является наиболее хорошей практикойЕсли ни один из них не является хорошей, то прошу привести...

167
Изменение цвета линий в ListView

Изменение цвета линий в ListView

Как изменить только цвет линий(полосок) в ListView?

197
Создание файла Java

Создание файла Java

Здравствуйте, как создать файл на диске С? Когда делаю на D, все работаетКогда изменяю D на С ничего не происходит

211