Jump to content

OpenJ9

Затмение OpenJ9
Оригинальный автор(ы) ИБМ
Разработчик(и) Фонд Затмения
Стабильная версия
0.45.0 [1]  Отредактируйте это в Викиданных / 21 мая 2024 г .; 2 месяца назад ( 21 мая 2024 г. )
Репозиторий
Написано в C , C++ , Java , ассемблер
Операционная система Linux , AIX , Windows , macOS , z/OS , IBM i
Тип виртуальная машина Java
Лицензия Лицензия Апач 2.0

Публичная лицензия Eclipse 2.0

Стандартная общественная лицензия GNU, версия 2 с исключением GNU Classpath

Стандартная общественная лицензия GNU, версия 2 с исключением сборки OpenJDK [2]
Веб-сайт www .затмение .org /openj9 /  Edit this on Wikidata

Eclipse OpenJ9 (ранее известный как IBM J9 ) — это высокопроизводительная масштабируемая реализация виртуальной машины Java (JVM), полностью совместимая со спецификацией виртуальной машины Java. [3]

OpenJ9 можно собрать из исходного кода или использовать с готовыми двоичными файлами, доступными в проекте IBM Semeru Runtimes для ряда платформ, включая Linux , Windows. [4] и macOS . OpenJ9 также является основным компонентом пакета разработчика IBM, который встроен во многие продукты промежуточного программного обеспечения IBM, включая WebSphere Application Server и Websphere Liberty . OpenJ9 также является компонентом Open Liberty. [5]

Широкие возможности конфигурации гарантируют, что JVM можно настроить для удовлетворения требований широкого спектра приложений Java: от сложных корпоративных приложений, работающих на аппаратном обеспечении мэйнфреймов, до недолговечных приложений, работающих в облачных службах на основе контейнеров.

OpenJ9 уходит своими корнями в продукт ENVY/Smalltalk, разработанный Object Technology International (OTI). IBM приобрела OTI в 1996 году из-за ее опыта и продуктов Smalltalk . Однако, когда язык Java стал ведущим языком на корпоративном рынке, существующая виртуальная машина Smalltalk была адаптирована для обработки байт-кодов Java. Название J9 произошло от соглашения об именах исходного кода Smalltalk, K8 . K→J (шаг назад), потому что разработчики считали, что Smalltalk лучше Java, а 8→9 (шаг вперед), потому что новая виртуальная машина будет лучше, чем раньше. [6]

J9 JVM стала средой выполнения для многих корпоративных продуктов промежуточного программного обеспечения IBM, благодаря чему она завоевала репутацию благодаря высокой производительности, масштабируемости и надежности.

В 2017 году J9 стал проектом Eclipse Foundation под названием Eclipse OpenJ9 . IBM продолжает активно участвовать в этом проекте и продолжает использовать виртуальную машину Java в основе многих программных предложений. В Eclipse Foundation OpenJ9 классифицируется как проект-инкубатор: первый выпуск v0.8.0 был выпущен в 2018 году.

JVM Eclipse OpenJ9 полностью соответствует спецификации Java JVM. Одну и ту же версию JVM можно использовать в OpenJDK 8 и более поздних выпусках, а это означает, что многие функции и улучшения могут использоваться приложениями, работающими на разных версиях Java. По сравнению с Oracle виртуальной машиной HotSpot OpenJ9 обеспечивает более высокую начальную производительность и более низкое потребление памяти при аналогичной общей пропускной способности. [7]

Eclipse OpenJ9 включает Eclipse OMR , который предоставляет основные компоненты среды выполнения, которые можно использовать для создания сред выполнения для различных языков программирования. В проекте OpenJ9 дополнительный уровень кода добавляет семантику языка, обеспечивая среду выполнения для приложений Java. [8]

Компоненты, составляющие Eclipse OpenJ9, описаны в следующих разделах:

JIT-компилятор

[ редактировать ]

Just -In-Time (JIT) повышает производительность приложений Java за счет компиляции нейтрального к платформе байт-кода Java в собственный машинный код во время выполнения. Не каждый метод, вызываемый приложением, компилируется. Вместо этого OpenJ9 записывает количество вызовов метода и запускает JIT-компиляцию при заранее определенном пороге. JIT-компилятор компилирует методы на разных уровнях оптимизации: cold , Warm , Hot , Very Hot (с профилированием) или Scorching . Чем выше уровень оптимизации, тем выше ожидаемая производительность, но тем выше стоимость процессора и памяти.На более высоких уровнях оптимизации используются специальные методы, такие как escape-анализ и частичное устранение избыточности, или повторяются определенные последовательности оптимизации несколько раз. Хотя эти методы используют больше ресурсов ЦП и памяти, улучшенная производительность, обеспечиваемая оптимизацией, может оправдать компромисс.

AOT-компилятор

[ редактировать ]

Компиляция с опережением времени (AOT) — это механизм повышения производительности при запуске. Методы динамически компилируются в код AOT во время выполнения, что позволяет JVM быстрее запускать приложение. AOT включается автоматически при использовании совместного использования данных классов ( -Xshareclasses ) и не требует какой-либо специальной настройки. OpenJ9 автоматически выбирает методы для компиляции на основе эвристики, определяющей этап запуска больших приложений. Для небольших или кратковременных приложений следует добавить параметр -Xtune:virtualized, чтобы максимально эффективно использовать код, скомпилированный с помощью AOT.

Обмен данными класса

[ редактировать ]

Совместное использование данных классов между JVM имеет два основных преимущества:

  1. Производительность запуска повышается за счет помещения классов, которые нужны приложению при инициализации, в общий кэш классов.
  2. Объем памяти сокращается за счет совместного использования общих классов между приложениями, работающими на отдельных виртуальных машинах Java.

В отличие от других реализаций совместного использования данных классов (CDS), для включения этой функции в OpenJ9 требуется всего один шаг: установка -Xshareclasses в командной строке при запуске приложения. Если указано, OpenJ9 создает файл с отображением в памяти для хранения и совместного использования классов в памяти. По умолчанию OpenJ9 всегда совместно использует классы начальной загрузки и приложения, которые загружаются загрузчиком системных классов по умолчанию. Еще одним преимуществом реализации OpenJ9 CDS является то, что кэш обновляется динамически. Поэтому, когда приложение загружает новые классы, JVM автоматически сохраняет их в кеше без какого-либо вмешательства пользователя. [9]

OpenJ9 также предоставляет общедоступный вспомогательный API для интеграции поддержки совместного использования классов в пользовательские загрузчики классов, а также несколько утилит для управления активными кэшами.

Сборщик мусора

[ редактировать ]

Чтобы предотвратить нехватку памяти приложениям, объекты в куче Java, которые больше не требуются, должны быть освобождены. Этот процесс известен как сборка мусора (GC). OpenJ9 предоставляет ряд политик сбора мусора, разработанных для различных типов приложений и рабочих нагрузок. Выбор правильной политики зависит от целей использования и производительности. По умолчанию OpenJ9 использует параллелизм поколений ( -Xgcpolicy:gencon) политика, которая лучше всего подходит для транзакционных приложений, имеющих множество недолговечных объектов. Доступны альтернативные политики, в том числе те, которые предназначены для приложений с большими кучами Java ( -Xgcpolicy:balanced), приложения, чувствительные к времени отклика ( -Xgcpolicy:metronome) или приложения, которым требуется высокая пропускная способность приложений ( -Xgcpolicy:optthruput).

Опция "настройка холостого хода" ( -XX:+IdleTuningGcOnIdle) запускает сборку мусора в OpenJ9, когда приложение простаивает. Это уменьшает объем памяти, что имеет значение для некоторых виртуального хостинга . планов выставления счетов [7]

JIT-сервер

[ редактировать ]

В январе 2020 года OpenJ9 предоставил экспериментальную функцию JIT-компиляции кода вне JVM и удаленно на сервере.

Диагностический компонент

[ редактировать ]

OpenJ9 содержит обширные утилиты трассировки и отладки, помогающие выявлять, изолировать и решать проблемы во время выполнения. Различные типы диагностических данных автоматически создаются по умолчанию при возникновении определенных событий, но их также можно вызвать из командной строки. Типы данных включают в себя:

Дампы Java
Они создаются, когда JVM неожиданно завершает работу из-за сигнала операционной системы, исключения OutOfMemoryError или комбинации клавиш, инициированной пользователем. Дампы Java суммируют состояние JVM при возникновении события, при этом большая часть информации относится к компонентам JVM.
Дампы кучи
Дампы кучи показывают все активные объекты в куче Java, когда JVM завершает работу из-за исключения OutOfMemoryError или по запросу пользователя. Информация включает адрес объекта, имя типа или класса, размер и ссылки на другие объекты. Анализ дампов кучи может помочь вам узнать, какие объекты используют большие объемы памяти в куче Java и почему они не подлежат сборке мусора.
Системные дампы
Часто называемые дампами ядра , они зависят от платформы и содержат необработанный двоичный дамп памяти процесса. Этот дамп содержит полную копию кучи Java, включая содержимое всех объектов Java в приложении. Доступны инструменты OpenJ9 для обработки дампа системы в читаемом формате для анализа.
Данные о сборе мусора
Для анализа проблем со сборкой мусора вы можете включить подробное ведение журнала, которое предоставляет данные обо всех операциях по сборке мусора, включая инициализацию, обработку остановки мира, финализацию, обработку ссылок и ошибки выделения. Для еще более детального анализа можно включить трассировку сборки мусора.
Отслеживание данных
Средство трассировки OpenJ9 можно использовать для отслеживания приложений, методов Java или внутренних операций JVM с минимальным влиянием на производительность.
JIT-данные
Если происходит общий сбой защиты или событие прерывания, JIT создает небольшой двоичный дамп, который может быть проанализирован разработчиками OpenJ9, чтобы помочь определить основную причину.
Данные общих классов
Компонент данных общих классов предоставляет некоторые подробные параметры, которые можно использовать во время выполнения для отображения активности кэша. Утилиты printStats printAllStats и . позволяют анализировать содержимое общего кэша классов

Диагностический компонент также включает интерфейс прикладного программирования DTFJ, который можно использовать для создания диагностических инструментов. DTFJ работает с данными из дампа системы или дампа Java.

Принятие

[ редактировать ]

См. также

[ редактировать ]
  1. ^ «Eclipse OpenJ9 v0.45.0» . 21 мая 2024 г. Проверено 22 мая 2024 г.
  2. ^ «openj9/LICENSE at openj9-0.24.0 · eclipse/openj9» . Гитхаб . Проверено 6 марта 2021 г.
  3. ^ Леонардо Заниван (7 февраля 2018 г.). «Новая JVM с открытым исходным кодом, оптимизированная для облака и микросервисов» . середина .
  4. ^ Хольгер Воорманн (14 марта 2018 г.). «Привет, OpenJ9 для Windows, я не ожидал тебя так скоро!» . ДЗона .
  5. ^ Дэвид Рубинштейн (20 сентября 2017 г.). «IBM выпускает код WebSphere Liberty с открытым исходным кодом» . СД Таймс .
  6. ^ Рональд Слуга (18 сентября 2017 г.). «Как J9 в OpenJ9 получил свое название» . середина .
  7. ^ Перейти обратно: а б Дэн Хейдинга (6 июня 2018 г.). «Eclipse OpenJ9; не просто виртуальная машина Java» . JAXenter .
  8. ^ Моника Беквит (1 марта 2018 г.). «Eclipse OpenJ9 — виртуальная машина Java с открытым исходным кодом, основанная на проекте Eclipse OMR» . ИнфоQ .
  9. ^ Корри, Бен; Шао, Ханг (6 июня 2018 г.). «Совместное использование классов в Eclipse OpenJ9» . IBM DeveloperWorks .
  10. ^ IBM (18 августа 2023 г.). «Представляем бесплатную IBM Semeru Runtimes для разработки и запуска Java-приложений» . Разработчик IBM .
  11. ^ Парамесваран Сельвам (9 марта 2018 г.). «Действия Apache OpenWhisk Java в среде выполнения Eclipse OpenJ9» . середина .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: ec1d688adc776b868399d170c343e6f9__1720186200
URL1:https://arc.ask3.ru/arc/aa/ec/f9/ec1d688adc776b868399d170c343e6f9.html
Заголовок, (Title) документа по адресу, URL1:
OpenJ9 - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)