Java 9 будет иметь модули в дополнение к пакетам. Обычно языки имеют один или другой. И большинство программистов воспринимают два термина как синонимы. Модули строятся поверх пакетов, рассматривая их как примитивы. Композитный шаблон предлагает обращаться с примитивами и композитами равномерно. Иначе произойдут плохие вещи. Например, посмотрите на проект Valhalla, где они пытаются модифицировать общий супертип для примитивного (значения) и ссылочного типов.
Являются ли модули и пакеты семантически отдельными понятиями? То есть разумно иметь и то и другое для любого языка (разделение интересов). Или Java должна иметь и то, и другое как дань обратной совместимости?
Зачем вводить новую концепцию, а не дополнять существующую?
JSR 376 : «модульная система платформы Java», реализованная в рамках проекта Jigsaw .
По данным СОТМС
Модуль представляет собой именованную, самоописывающую коллекцию кода и данных. Его код организован как набор пакетов, содержащих типы, то есть классы и интерфейсы Java; его данные включают ресурсы и другие виды статической информации.
JLS тщательно избегает определения того, что представляет собой пакет . Из Википедии :
Пакет Java - это методика организации классов Java в пространства имен, аналогичные модулям Modula, обеспечивающая модульное программирование на Java.
Я знаю, что цитирование Википедии - плохая практика, но она отражает общее понимание. Из записи о модульном программировании:
Термин пакет иногда используется вместо модуля (как в Dart, Go или Java). В других реализациях это отдельная концепция; в Python пакет представляет собой набор модулей, в то время как в следующей версии Java 9 планируется введение новой концепции модуля (набор пакетов с расширенным контролем доступа).
package
означает / делает / означает, и при этом они не собираются переходить (давайте посмотрим правде в глаза, довольно ужасно) в систему (ы) classpath в JRE. Вопрос № 2 Я чувствую это , прежде всего , мнение-ориентированный (это не отвечает , но мой ответ , и кто - то другой может отличаться , и ни один из нас обязательно будет неправильно).
jigsaw
модули -style техническим улучшением по сравнению с пакетами? 3) (если не 1, а если 2), является ли Java просто (или, казалось бы) сохранением обеих концепций для обратной совместимости. Некоторые из этих вопросов отвечают, некоторые в первую очередь ориентированы на мнение. Я думаю, что редактирование, упрощающее разъяснение (я), здесь в порядке.