Как было объявлено здесь, сейчас я работаю над этой серией, где будут рассмотрены основные функции каждого выпуска 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”