Есть ли разница между модульной системой Java и Kotlin? - PullRequest
2 голосов
/ 07 апреля 2019

Будучи новичком в Java и Kotlin, я совершенно запутался в модульной системе и хотел узнать, есть ли разница между Java и Kotlin.

Что такое модуль? Оракул говорит следующее:

Модульность добавляет более высокий уровень агрегации над пакетами. Ключ Новым языковым элементом является модуль - уникально названная, многократно используемая группа связанные пакеты, а также ресурсы (такие как изображения и файлы XML) и дескриптор модуля, указывающий

  • название модуля
  • зависимости модуля (то есть от других модулей, от которых зависит этот модуль)
  • пакеты, которые он явно делает доступными для других модулей (все другие пакеты в модуле неявно недоступны для других модулей)
  • предлагаемые услуги
  • услуг, которые он потребляет
  • к каким другим модулям он допускает отражение

Источник: https://www.oracle.com/corporate/features/understanding-java-9-modules.html

А в книге Котлина модуль:

модуль представляет собой набор файлов Kotlin, скомпилированных вместе:

  • модуль IntelliJ IDEA;
  • проект Maven;
  • набор источников Gradle (за исключением того, что тестовый набор источников может обращаться к внутренним объявлениям main);
  • набор файлов, скомпилированных за один вызов задачи <kotlinc> Ant.

Источник: https://kotlinlang.org/docs/reference/visibility-modifiers.html#modules

Мои вопросы:

  • Есть ли разница между модульной системой Java и Kotlin? Если да, то как именно?
  • Существуют ли "лучшие практики", когда использовать / не использовать модули?
  • Как ключевое слово Kotlin internal ведет себя в проекте с кодом Java и Kotlin?

1 Ответ

1 голос
/ 07 апреля 2019

Кажется, что команда kotlin, к сожалению, решила использовать один и тот же термин для организации набора вещей, которые собираются вместе.

«Настоящий» Java-модуль скорее определяет концепцию, которая определяет группирование классов во время выполнения внутри jvm! Это гораздо больший метод в архитектуре. Он предназначен для разбиения больших (r) приложений на компоненты со сложной системой для обработки зависимостей между этими компонентами.

Другими словами: одно и то же слово, но два разных значения, которые на самом деле не связаны друг с другом. С этой точки зрения, вы должны глубоко изучить обе концепции, чтобы понять, где каждая из них применима.

С этой точки зрения: если вы программист Kotlin и планируете развернуть большое приложение, которое будет работать на Java9 (или более новой) JVM, то вы определенно хотите убедиться, что ваши результаты сгруппированы в разумные «модули Java». В противном случае, если вы занимаетесь простой разработкой Kotlin, без особых требований к среде исполнения, вы, вероятно, в основном (только) беспокоитесь о «модулях Kotlin».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...