Система модулей платформы Java

редактировать
Формат распространения для кода Java и ресурсов

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

Система модулей Java изначально разрабатывалась в рамках Процесса сообщества Java как JSR 277 и должна была быть выпущена вместе с Java 7.

JSR 277 позже был включен hold, а Project Jigsaw был создан для модульного построения JDK. Этот JSR был заменен JSR 376 (Система модулей платформы Java).

Project Jigsaw изначально предназначался для Java 7 (2011 г.), но был перенесен на Java 8 (2014 г.) как часть Плана B, и снова перенесен на Выпуск Java 9 в 2017 г. Java 9, включая систему модулей Java, была выпущена 21 сентября 2017 г.

Содержание
  • 1 Архитектура
  • 2 Связи с OSGi
  • 3 См. Также
  • 4 Ссылки
  • 5 Внешние ссылки
Архитектура

Система модулей Java, реализованная для Java 9, включает следующие JEP и JSR (запрос спецификации Java) :

  • JEP 200: модульный JDK: определение модульной структуры для JDK
  • JEP 201: модульный исходный код: реорганизация исходного кода JDK в модули, улучшение системы сборки для компиляции модулей и соблюдение границ модулей во время сборки
  • JEP 220: модульные образы времени выполнения: реструктуризация образов JDK и JRE времени выполнения для размещения модулей и повышения производительности, безопасности и удобства обслуживания
  • JEP 260: инкапсулировать большинство внутренних API
  • JEP 261: Модульная система: навесное оборудование • Система модулей платформы Java
  • JEP 282: Java Linker: создайте инструмент, который может собрать и оптимизировать набор модулей и их зависимости в пользовательский образ времени выполнения
  • JSR 376: Модульная система платформы Java

Кроме того, для облегчения перехода к модульной системе было добавлено несколько других функций JDK 9:

  • JEP 238: файлы JAR с несколькими выпусками: расширение формата файла JAR, позволяющее использовать несколько версий Java- определенные версии файлов классов для сосуществования в одном архиве.
  • JEP 253: Подготовка JavaFX UI Controls и CSS API для модуляции: определение общедоступных API для функций JavaFX, которые в настоящее время доступны только через внутренние API-интерфейсы и станут недоступными из-за модульности.
  • JEP 260: инкапсулировать большинство внутренних API-интерфейсов: сделать большинство внутренних API-интерфейсов JDK недоступными по умолчанию, но оставить доступными несколько важных, широко используемых внутренних API-интерфейсов до тех пор, пока не будут поддерживаться замены существуют для всех или большей части их функциональности.
  • JEP 275: Modular Jav Пакетирование приложений: Java packager будет развиваться для JDK 9, сообщая ему о модулях, позволяя, например, упаковать модуль и все модули, от которых он зависит.

Модули - это новый способ группировки код и данные. В отличие от файлов Jar, модули явно объявляют, от каких модулей они зависят и какие пакеты они экспортируют.

Например, следующее объявление модуля объявляет, что модуль com.foo.bar зависит от другой модуль com.foo.baz и экспортирует следующие пакеты: com.foo.bar.alpha и com.foo.bar.beta:

модуль com.foo.bar {требуется com.foo.baz; экспортирует com.foo.bar.alpha; экспортирует com.foo.bar.beta; }

В отличие от формата файла Jar, модуль будет описывать эти зависимости в объявлении модуля, которое будет помещено в файл с именем module-info.java в корне иерархии исходных файлов модуля. JDK сможет проверить их как во время компиляции, так и во время выполнения. Сам JDK будет разбит на модули для Java 9.

Links с OSGi

. Система модулей Java не намеревается поддерживать все функции, которые платформа OSGi в настоящее время поддерживает (для пример модели жизненного цикла и реестра служб). Однако система модулей Java будет поддерживать функции, которые не поддерживаются OSGi, такие как модульность во время компиляции и встроенная поддержка собственных библиотек. В 2016 году было опубликовано несколько статей, в которых изучается, как система модулей Java и OSGi могут взаимодействовать друг с другом. Их можно найти в InfoQ, а также в блоге OSGi Alliance.

См. Также
Ссылки
Внешние ссылки
Последняя правка сделана 2021-05-24 03:57:22
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте