Предложение по опережающей загрузке классов ускорит запуск Java

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

Предложение JEP (JDK Enhancement Proposal) на сайте openjdk.org, озаглавленное "Ahead-of-Time Class Loading & Linking", позволит увеличить скорость запуска приложений за счет того, что эти классы будут доступны в загруженном и связанном состоянии при запуске HotSpot JVM. Это будет достигнуто путем мониторинга приложения во время одного запуска и сохранения загруженных и связанных форм всех классов в кэше для использования в последующих запусках. Это, в свою очередь, заложит основу для будущих улучшений времени запуска и прогрева, говорится в предложении.

Предложение было создано в начале сентября прошлого года и обновлено 4 августа. В настоящее время в предложении не указано конкретное время появления этой возможности в Java.

В основе предложения лежит желание сохранить динамичность платформы Java и одновременно снизить стоимость этой динамичности, которую приходится платить при каждом запуске приложения, говорится в предложении. Высокодинамичная платформа Java обладает такими возможностями, как динамическая загрузка классов, динамическое связывание и динамическое отражение, которые предоставляют разработчикам выразительные возможности. Разработчики Java могут, например, писать библиотеки, которые динамически загружаются и затем связываются с подключаемыми компонентами во время выполнения, или собирать приложения, составляя библиотеки, которые динамически связываются с другими библиотеками. Однако за весь этот динамизм приходится платить, то есть JVM выполняет много работы во время запуска типичного серверного приложения, например сканирует JAR-файлы на диске и загружает разобранные данные в объекты класса. И делает она эту работу по требованию, лениво, точно в срок. В результате запуск большого серверного приложения может занять несколько секунд или даже минут.

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

  • Не требует изменений в коде приложений, библиотек или фреймворков.
  • Не требует изменений в способе запуска приложений из командной строки с помощью Java launcher, за исключением опций командной строки, связанных непосредственно с этой функцией.
  • Не требует использования инструментов jlink или jpackage.
  • Закладывает основу для дальнейшего улучшения времени запуска, а также времени прогрева, т.е. времени, необходимого HotSpot JVM для оптимизации кода приложения для достижения максимальной производительности.

Предложение по опережающей загрузке и связыванию классов следует за предыдущим предложением по опережающей компиляции для JVM. Это предложение находится в статусе проекта.

Предложение по опережающей загрузке классов ускорит запуск Java
Понравилась новость? Тогда не забудь оставить свой комментарий.
А так же, добавь наш сайт в закладки (нажми Ctrl+D), не теряй нас.
07 августа 2024 г.
41
Теги: Java , OpenJDK

Комментарии

Оставить комментарий:
* отправляя форму, я даю согласие на обработку персональных данных

Читайте еще