Interested Article - Java Virtual Machine

Обзор архитектуры JVM на базе версии Java SE 7

Java Virtual Machine (сокращенно Java VM , JVM ) — виртуальная машина Java — основная часть исполняющей системы Java , так называемой Java Runtime Environment ( JRE ). Виртуальная машина Java исполняет байт-код Java , предварительно созданный из исходного текста Java-программы компилятором Java ( javac ). JVM может также использоваться для выполнения программ , написанных на других языках программирования . Например, исходный код на языке Ada может быть скомпилирован в байт-код Java, который затем может выполниться с помощью JVM.

JVM является ключевым компонентом платформы Java. Так как виртуальные машины Java доступны для многих аппаратных и программных платформ, Java может рассматриваться и как связующее программное обеспечение , и как самостоятельная платформа. Использование одного байт-кода для многих платформ позволяет описать Java как «скомпилируй единожды, запускай везде» (compile once, run anywhere).

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

Спецификация JVM

В 1996 году компания Sun выпустила первую версию документа « », в котором описана спецификация виртуальной машины Java, ставшего де-факто отраслевым стандартом платформы Java. Благодаря этому документу появились альтернативные реализации JVM, являющиеся « разработками с чистого листа » ( англ. clean room design ). В качестве примера можно привести Kaffe .

Начиная с версии J2SE 5.0, изменения в спецификации JVM вырабатываются в соответствии с формализованными пожеланиями заинтересованных сторон. Процесс внесения изменений в спецификации JVM называется Java Community Process .

JVM, доступная в исходных текстах на Си от фирмы Sun, называется KVM (Kilo Virtual Machine) и доступна на их сайте.

Конкуренция между Sun и Microsoft

В начале развития платформы «Java» существовали две конкурирующие реализации Java VM:

  • От фирмы Sun Microsystems (создателя языка Java) — для различных платформ: Windows , Mac OS , UNIX ;
  • От фирмы Microsoft — «Microsoft Java VM» — ориентированная только на платформу «Windows» и, по утверждениям Microsoft, «специально оптимизированная для быстрого выполнения Java-кода на платформе «Windows».

Однако «Microsoft Java VM» не была полностью совместима со спецификацией, описанной Sun в «голубой книге JVM», и имела существенные проблемы с производительностью при работе под большими нагрузками (при большом числе одновременно выполняемых потоков) и с безопасностью.

Компания «Sun» посчитала такую ситуацию недопустимой и решила, что Microsoft занимается намеренной дискредитацией и профанацией платформы «Java» путём распространения своей версии виртуальной машины Java, обладающей вышеперечисленными недостатками. На этом основании Sun неоднократно подавала в суд на Microsoft — и Microsoft была лишена следующих прав на реализацию:

  1. Называть её «Java VM» (новое название — «Microsoft VM»);
  2. Встраивать её в поставки браузеров и операционных систем (в том числе Internet Explorer и Windows) — но с сохранением права предлагать для скачивания на сайте;
  3. Разрабатывать её новые версии и обновления;
  4. Предоставлять её для скачивания на сайте.

Некоторые обозреватели компьютерных изданий полагают, что жёсткая позиция, занятая Sun по вопросу Java, могла послужить дополнительным стимулом для разработки компанией «Microsoft» собственного Windows-решения: « .NET Framework ».

Разногласия между Sun и IBM

В 2001 году с целью разработки стандарта кросс-платформенных настольных приложений IBM запустила открытый проект: «Eclipse» .

Фреймворк «Eclipse» был основан на предыдущей закрытой разработке: IBM «VisualAge» . IBM удалось сбалансировать интересы свободного сообщества и интересы бизнеса (свои интересы) в лицензии «Eclipse Public License» , признанной организацией «Free Software Foundation» .

Проект успешно развивается, используется в отрасли, в значительной степени отделился от IBM в самостоятельный (см. «Eclipse Foundation» ).

Sun остаётся в оппозиции к Eclipse Foundation , так же, как и к Microsoft. Формально основной причиной противоречий остаётся библиотека «Standard Widget Toolkit» (SWT), которая противоречит Sun-концепции виртуальной машины и переносимости Java-приложений.

Среда исполнения

Программы, предназначенные для запуска на JVM, должны быть скомпилированы в стандартизированном переносимом двоичном формате, который обычно представляется в виде файлов «.class». Программа может состоять из множества классов, размещённых в различных файлах. Для облегчения размещения больших программ часть файлов вида «.class» может быть упакована вместе в так называемом «.jar»-файле (сокращение от «Java Archive»).

Виртуальная машина JVM исполняет файлы «.class» и «.jar», эмулируя данные в них инструкции следующими путями:

В наши дни JIT-компиляция используется в большинстве JVM для достижения большей скорости. Существуют также ahead-of-time компиляторы, позволяющие разработчикам приложений перекомпилировать файлы классов в родной для конкретной платформы код.

Как и большинство виртуальных машин, Java Virtual Machine имеет stack-ориентированную архитектуру, свойственную микроконтроллерам и микропроцессорам .

JVM — экземпляр JRE (Java Runtime Environment), вступающий в действие при исполнении программ Java; по завершении исполнения этот экземпляр удаляется сборщиком мусора. JIT — та часть виртуальной машины Java, которая используется для ускорения выполнения приложений; JIT одновременно компилирует те части байт-кода, функциональность которых аналогична, — что сокращает время, необходимое для проведения компиляции.

См. также

Примечания

  1. (англ.) . Java (2 мая 2022). Дата обращения: 24 мая 2022. 4 июня 2022 года.

Литература

  • Бенджамин Дж. Эванс, Джеймс Гоф, Крис Ньюленд. Java: оптимизация программ. Практические методы повышения производительности приложений в JVM. — М. : , 2019. — 448 с. — ISBN 978-5-907114-84-5 .

Ссылки

  • , 2015
Источник —

Same as Java Virtual Machine