Рубрики
Без рубрики

Java Train #1 – JDK9 – Модульность

Как было объявлено здесь, сейчас я работаю над этой серией, где будут рассмотрены основные функции ea… С тегом java, релиз, блог, java train.

Как было объявлено здесь, сейчас я работаю над этой серией, где будут рассмотрены основные функции каждого выпуска JDK. Так… давайте сделаем это! Это первый этап нашего путешествия.

Некоторые выпуски Java являются особенными. Я почти уверен, что вы согласитесь, что JDK 9 – один из них. И если я спрошу вас “почему”, вы, вероятно, дадите такие ответы:

  • Модульная система, или Проектная головоломка
  • Потребовалось 3,5 года, чтобы стать доступным (начиная с версии 8)

И вы (в основном) правы! Но… и это все? Почти 4 года для модульности на Java?

Конечно нет. Этот релиз огромен! На странице выпуска OpenJDK 9 упоминается ровно 91 функция.

Так… давайте углубимся в эту версию. Конечно, я не буду подробно описывать все эти 91 особенность. Моя цель здесь – помочь вам улучшить свой код, проект и карьеру. Итак, я расскажу/упомяну функции, которые непосредственно влияют на одну из (или все) этих трех областей.

В этом посте я расскажу о модульности платформы Java.

Хорошо, я не могу говорить о JDK 9, не упомянув Project Jigsaw. Но поскольку это было так широко изучено там, я расскажу вам о некоторых конкретных моментах по этому поводу.

Проект Jigsaw – это набор из множества JEPS:

200: Модульный JDK 201: Модульный исходный код 220: Модульные образы во время выполнения 253: Подготовка элементов управления пользовательского интерфейса JavaFX и API CSS для модульности 261: Модульная система 275: Модульная упаковка приложений Java И одна вещь, которую вы замечаете, просто взглянув на эти JEPS, заключается в том, что сам JDK теперь модульный. Это не просто вопрос организации кода/упаковки. Это важное замечание, так как оно должно побудить вас изменить свое представление о платформе Java.

Система модульности была определена в соответствии с JSR 376 и затронула:

  • Спецификация языка Java
  • Спецификация виртуальной машины Java
  • Спецификация API

Итак, давайте проверим простой пример того, как вы можете создать свой первый модуль.

Пути очень важны при работе с модулями. Итак, прежде чем мы начнем, создайте эту структуру:

Это сэкономит вам много времени и предотвратит проблемы.

Теперь давайте отредактируем src/coffee.module/coffe/module/Coffee.java файл:

Затем отредактируйте src/coffee.module/module-info.java вот так:

Теперь мы кодируем нашу Кофейню. Редактировать src/coffee.shop/coffee/shop/CoffeeShop.java:

И, наконец, module-info.java для этого модуля (в разделе src/coffee.shop/module-info.java ):

Теперь на том же уровне, что и папка src, вы создаете эту структуру папок:

Ваше последнее дерево должно быть таким:

Если это не так, вернитесь и исправьте это! 😉

Теперь вы готовы скомпилировать и запустить свое приложение Coffee. Выполните приведенные ниже команды в точном порядке.

Сначала мы скомпилируем наш кофейный модуль:

javac -d mods/coffee.module src/coffee.module/module-info.java src/coffee.module/coffee/module/Coffee.java

Затем мы компилируем наш модуль кофейни, обращая внимание на ссылку, сделанную на Кофейный модуль:

javac --module-path mods -d mods/coffee.shop src/coffee.shop/module-info.java src/coffee.shop/coffee/shop/CoffeeShop.java

Моды –module-path сообщают компилятору, где найти модули, необходимые для компиляции этого модуля.

Теперь пришло время заказать кофе!

java --module-path mods -m coffee.shop/coffee.shop.CoffeeShop

Если вы получили сообщение “Наслаждайтесь [CoffeeType]”, значит, ваш модуль успешно работает!

Вы можете ознакомиться с полным исходным кодом этого примера здесь: https://github.com/eldermoraes/javatrain/tree/master/01

Не забудьте оставить свои вопросы и/или другие комментарии, которые у вас могут возникнуть. Увидимся в следующий раз!

Оригинал: “https://dev.to/elderjava/java-train-1-jdk9-modularization-29e9”