Java Virtual Machine

Материал из Википедии — свободной энциклопедии
(перенаправлено с «JVM»)
Текущая версия страницы покане проверялась опытными участниками и может значительно отличаться отверсии, проверенной 14 мая 2021 года; проверки требуют27 правок.
Перейти к навигацииПерейти к поиску
Информация должна бытьпроверяема, иначе она может быть удалена. Вы можетеотредактировать статью, добавив ссылки наавторитетные источники в видесносок.(28 июня 2010)
Информация в этой статье или некоторых её разделахустарела.
Вы можете помочь проекту,обновив её и убрав после этого данный шаблон.(19 января 2014)
В другом языковом разделеесть более полная статьяJava virtual machine  (англ.).
Вы можете помочь проекту, расширив текущую статьюс помощью перевода
JVM
РазработчикSun Microsystems
Разрядность32 (64 с Java 9)
Представлена1996
Версии18.0.1.1[1]
ТипСтековая машина, с выделенным доступом к памяти
Порядок байтовBig-endian
Регистры
Общего назначенияСтек операндов для каждого метода (до 65535 операндов), и локальные переменные метода (до 65535)
Логотип Викисклада Медиафайлы на Викискладе
Обзор архитектуры 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 выпустила первую версию документа «Голубая книга JVM», в котором описанаспецификация виртуальной машины 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. Релизные версии JDK (англ.). Java (2 мая 2022). Дата обращения: 24 мая 2022. Архивировано 4 июня 2022 года.

Литература

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

Ссылки

[править |править код]
Перейти к шаблону «Java Virtual Machine»
Sun,Oracle
Основные реализации
Встраиваемые
Другие
Неподдерживаемые
Перейти к шаблону «Java»
Платформы
ТехнологииSun
Основные сторонние технологии
История
Свойства языка
Скриптовые языки
Конференции Java
Источник —https://ru.wikipedia.org/w/index.php?title=Java_Virtual_Machine&oldid=149642858
Категории:
Скрытые категории: