Глоссарий модуля Java - PullRequest
       37

Глоссарий модуля Java

0 голосов
/ 02 декабря 2018

В чем разница между всеми этими терминами, используемыми в спецификации модуля Java?Я не могу найти определение этих терминов, которое само по себе не является круговой ссылкой.

  • Видимый
  • Наблюдаемый
  • Доступный

Спецификация делает такие заявления, как это, но я еще не понял, что на самом деле означают эти слова означает :

В частности, хост-система должна ограничивать обычные единицы компиляции, которые быв противном случае можно наблюдать только те, которые видны М

( JLS 11 раздел 7.3 с.183)

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018

Во-первых, в JLS такие термины, как видимость, могут иметь различное значение при применении к модулю компиляции, или к пакету, или к типу.

Некоторые ссылки, где термины определены в JLS:

  • Наблюдаемый :

    • Единица компиляции: §7.3 , предложение начинается "Хост-система определяет, какая компиляцияединицы измерения ".

    • Пакет: §7.4.3 , первый абзац.

    • Интуиция : элементы, участвующие в компиляции.

  • Visible :

    • Единица компиляции: §7.3 , предложение начинается с "Обычные единицы компиляции, видимые для M" - обратите внимание, что видимость определяется относительно модуля

    • Пакет: §7.4.3 , предложение начинается с "Пакет видим для модуля M" - снова относительно модуля.

    • Интуиция : элементы, которые можно наблюдать с точки зрения данного модуля с учетом requires и exports.

  • Доступно :

    • Общее определение: §6.6

Кроме того, центральным новым понятием, поскольку JLS 9 является " уникально видимый"( §7.4.3 ), плюс термины" потенциально доступный "," читает "/" прочитано "," связано с ".Исторически в JLS 9 проводилось дополнительное различие между «технически наблюдаемым» и «действительно наблюдаемым», которое было исключено с JLS 11.

Кроме того, исторически (вплоть до JLS 8) использовалось «видимое»в определении теневого копирования ( §6.4.1 ), но это использование было отменено в JLS 9.

Наконец, обратите внимание, что некоторые из этих понятий (явным или неявным образом) включают определениеиз API в java.lang.module.

Я предлагаю рассматривать эти термины как технические термины, не предназначенные для обращения к интуиции более широкой аудитории, отчасти потому, что многие определения в JLS приводят к «единицам компиляции»,которые не нужны для интуитивного понимания.Для сравнения возможного интуитивного понимания с пониманием на основе JLS см. Слайд № 20 из . JDT охватывает Java ™ 9 - взгляд изнутри .

0 голосов
/ 05 декабря 2018

java.util.Observable не связан с модульной системой.

В JLS иерархия идет снизу вверх, как показано ниже: 1. Observable: совокупность единиц компиляции, о которых знает компилятор.2. Видимый: все модули компиляции в тех модулях, которые читаются модулем, код которого в настоящее время компилируется.То, что читает каждый модуль, определяется директивами requires.Видимость определяет, какие пакеты и типы находятся в области действия, и влияет на доступность.3. Доступно: открытые типы в тех пакетах, которые экспортируются одним модулем в другой модуль, при условии, что пакеты в первом модуле видны другому модулю.

...