Java 9 Module System: модули, link-time и кастомные runtime-образы
В Java 9 появился новый компонент — модуль. Модуль — это именованный, самодокументируемый набор кода и данных.
Возможности модульной системы
- Link-time — новый опциональный этап между compile-time и run-time. Инструмент
jlinkсобирает набор модулей в оптимизированный кастомный runtime-образ. javac,jlink,javaполучили опции для указания module path (пути к модулям).- JAR-формат обновлён: modular JAR содержит
module-info.classв корне. - Введён формат JMOD — упаковка, похожая на JAR, но поддерживающая нативный код и конфигурационные файлы.
Создание модуля: пошаговый пример
Создадим модуль com.tutorialspoint.greetings.
Шаг 1: структура папок
C:\JAVA\src\com.tutorialspoint.greetings\
Шаг 2: module-info.java
module com.tutorialspoint.greetings { }
Файл module-info.java лежит в папке с именем модуля.
Шаг 3: исходный код
C:\JAVA\src\com.tutorialspoint.greetings\com\tutorialspoint\greetings\Java9Tester.java
package com.tutorialspoint.greetings;
public class Java9Tester {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
Шаг 4: компиляция в mods
C:\JAVA> javac -d mods/com.tutorialspoint.greetings ^
src/com.tutorialspoint.greetings/module-info.java ^
src/com.tutorialspoint.greetings/com/tutorialspoint/greetings/Java9Tester.java
Шаг 5: запуск модуля
C:\JAVA> java --module-path mods -m com.tutorialspoint.greetings/com.tutorialspoint.greetings.Java9Tester
--module-path указывает расположение модулей, -m — главный модуль/класс.
Результат
Hello World!
java
- Освоение операторов using в C#: импорт, псевдонимы и статические директивы
- Освоение операторов Java: типы, синтаксис и практические примеры
- Ввод и вывод в Java: печать, чтение и форматирование данных
- Комментарии в Java: типы, использование и лучшие практики
- Освоение улучшенного цикла for в Java: синтаксис, примеры и лучшие практики
- Освоение строк в Java: создание, методы и лучшие практики
- Интерфейсы в Java: концепции, реализация и лучшие практики
- Try-with-resources в Java: автоматическое управление ресурсами
- Аннотации в Java: типы, размещение и практические примеры
- Assertions в Java: практическое руководство по обнаружению багов и обеспечению надежности кода