WikiSort.ru - Программирование

ПОИСК ПО САЙТУ | о проекте
JVM
Разработчик Sun Microsystems
Разрядность 32
Представлена 1994
Тип Стековая машина, с выделенным доступом к памяти
Порядок байтов 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 одновременно компилирует те части байт-кода, функциональность которых аналогична, — что сокращает время, необходимое для проведения компиляции.

См. также

Примечания

    Ссылки

    Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

    Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

    Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




    Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

    Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

    2019-2024
    WikiSort.ru - проект по пересортировке и дополнению контента Википедии