Описание тега java-module
Модуль является именованной, самоописываемой совокупностью коды и данных. Его код организован как набор пакетов, содержащих типы, т. Е. Классы и интерфейсы Java; его данные включают ресурсы и другую статическую информацию. В любом случае единственным модулем, который известен именно модульной системе, является базовый модуль, который называетсяjava.base
.
Модуль описывается с помощью информации о модуле, которая сама по себе является новой конструкцией, добавленной в java-9 для предоставления определения модуля.
Имена модулей, как и имена пакетов, не должны конфликтовать. Рекомендуемый способ называть модуль - использовать шаблон обратного имени домена, который давно рекомендуется для именования пакетов. Поэтому имя модуля часто является префиксом имен его экспортируемых пакетов, но это отношение не является обязательным.
Объявления модулей являются частью языка программирования Java, а не собственным языком или обозначениями, по нескольким причинам. Одним из наиболее важных является то, что информация о модуле должна быть доступна как во время компиляции, так и во время выполнения, чтобы обеспечить точность между фазами, то есть гарантировать, что система модулей работает одинаково как во время компиляции, так и во время выполнения. Это, в свою очередь, позволяет предотвратить многие виды ошибок или, по крайней мере, сообщить о них раньше - во время компиляции - когда их легче диагностировать и исправить.
Спецификация платформы Java SE 9 будет использовать модульную систему для разделения платформы на набор модулей. Реализация платформы Java SE 9 может содержать все модули платформы или, возможно, только некоторые из них.
А java.lang.Module
представляет модуль времени выполнения, именованный или безымянный.
Именованные модули имеют имя и создаются виртуальной машиной Java, когда граф модулей задается виртуальной машине Java для создания уровня модулей.
Безымянный модуль не имеет имени. Для каждого есть безымянный модульClassLoader
, полученный с помощью его getUnnamedModule
метод. Все типы, не входящие в именованный модуль, являются членами безымянного модуля загрузчика их определяющих классов.
Имена пакетов, которые являются параметрами или возвращаются методами, определенными в этом классе, являются полностью определенными именами пакетов, как определено в разделе 6.5.3 Спецификации языка Java™, например, java.lang
.