Jump to content

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

(Перенаправлено из системы модулей Java )

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

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

Позже выпуск JSR 277 был приостановлен, а проект Jigsaw [2] был создан для модульности JDK. Этот JSR был заменен JSR 376 (система модулей платформы Java).

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

Архитектура

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

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

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

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

  • JEP 238: Файлы JAR с несколькими выпусками: Расширьте формат файла JAR, чтобы позволить нескольким версиям файлов классов, специфичным для версии Java, сосуществовать в одном архиве. [8]
  • JEP 253: Подготовка элементов управления пользовательского интерфейса JavaFX и API-интерфейсов CSS для модульности: Определите общедоступные API для функций JavaFX, которые в настоящее время доступны только через внутренние API и станут недоступными из-за модульности. [9]
  • JEP 260: Инкапсулируйте большинство внутренних API: сделайте большинство внутренних API JDK недоступными по умолчанию, но оставьте доступными несколько критически важных, широко используемых внутренних API, пока не появятся поддерживаемые замены для всех или большей части их функций. [10]
  • JEP 275: Модульная упаковка приложений Java. Упаковщик Java будет развиваться для JDK 9, информируя его о модулях, позволяя, например, упаковывать модуль и все модули, от которых он зависит. [11]

Свойства модулей

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

Модули — это новый способ группировки кода. В отличие от файлов Jar , модули явно указывают, от каких модулей они зависят и какие пакеты они экспортируют. [12] Явные объявления зависимостей улучшают целостность кода, упрощая понимание больших приложений и зависимостей между программными компонентами.

Объявление модуля помещается в файл с именем Module-info.java в корне иерархии исходных файлов модуля. JDK будет проверять зависимости и взаимодействия между модулями как во время компиляции, так и во время выполнения.

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

module com.foo.bar {
    requires com.foo.baz;
    exports com.foo.bar.alpha;
    exports com.foo.bar.beta;
}

Открытые члены пакетов com.foo.bar.alpha и com.foo.bar.beta будут доступны зависимым модулям. Частные члены недоступны даже с помощью таких средств, как отражение . Обратите внимание, что в версиях Java разрешение такого «незаконного доступа» с 9 по 16 фактическое зависит от настройки командной строки. [13]

был модульным Сам JDK в Java 9 . [14]

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

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

См. также

[ редактировать ]
  1. ^ «Система модулей платформы Java (JSR 376)» . Корпорация Оракл . Проверено 2 июля 2018 г.
  2. ^ Перейти обратно: а б «Проект Головоломка» . Корпорация Оракл . Проверено 29 ноября 2015 г.
  3. ^ Марк Рейнхольд (20 сентября 2009 г.). «Пришло время… плана Б» . Корпорация Оракл . Проверено 21 июня 2017 г.
  4. ^ «ДжДК 9» . Корпорация Оракл . Проверено 24 февраля 2016 г.
  5. ^ «Java 9: ​​дата выпуска и новые возможности» . techworld.com. 21 июля 2017 г. Проверено 18 ноября 2017 г.
  6. ^ «jlink: Java Linker (JSR 282)» . Корпорация Оракл . Проверено 12 марта 2016 г.
  7. ^ «Система модулей платформы Java (JSR 376)» . Корпорация Оракл . Проверено 29 ноября 2015 г.
  8. ^ «JEP 238: Файлы JAR с несколькими выпусками» . Корпорация Оракл . Проверено 31 июля 2017 г.
  9. ^ «JEP 253: Подготовка элементов управления пользовательского интерфейса JavaFX и API-интерфейсов CSS для модуляризации» . Корпорация Оракл . Проверено 31 июля 2017 г.
  10. ^ «JEP 260: инкапсулировать большинство внутренних API» . Корпорация Оракл . Проверено 31 июля 2017 г.
  11. ^ «JEP 275: Модульная упаковка приложений Java» . Корпорация Оракл . Проверено 31 июля 2017 г.
  12. ^ Марк Рейнхольд (08 марта 2016 г.). «Состояние модульной системы» . Корпорация Оракл . Проверено 18 февраля 2017 г.
  13. ^ «JEP 396: строгая инкапсуляция внутренних компонентов JDK по умолчанию» . Проверено 6 февраля 2021 г.
  14. ^ «Сводка модуля JDK» . Корпорация Оракл . 24 июня 2016 г. Архивировано из оригинала 8 декабря 2015 г. Проверено 18 февраля 2017 г.
  15. ^ Марк Рейнхольд (24 августа 2012 г.). «Проект Пазл: Опоздание на поезд: Вопросы и ответы» . Корпорация Оракл . Проверено 29 ноября 2015 г.
  16. ^ «Java 9, OSGi и будущее модульности» . ИнфоQ . Проверено 26 сентября 2016 г.
  17. ^ «Слои модулей Java и пакеты OSGi» . OSGi Альянс . Проверено 1 августа 2016 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 875dc0f56e50ae83122c876191cf67f5__1687673160
URL1:https://arc.ask3.ru/arc/aa/87/f5/875dc0f56e50ae83122c876191cf67f5.html
Заголовок, (Title) документа по адресу, URL1:
Java Platform Module System - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)