Попробуем Java 9. Модули.

В новой джаве появился новый уровень инкапсуляции — модули. Это состоялось благодаря проекту Jigsaw. Модульность реализуется на разных уровнях:
— языка программирования
— виртуальной машины
— стандартного java API.

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

Проверим установленную версию джава:

$ java --version
java 9
Java(TM) SE Runtime Environment (build 9+181)
Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode)

У меня возникли проблемы с открытием Intellij Idea Community, она ругалась на свой плагин Android и я его отключил.
После этого, Idea позволила создать проект и запустить, простой «Hello World!».

Но не это главное, хочется попробовать «свежие продукты» — модули.

Для начала создадим простое приложение без использования IDE. Выделим для приложения папку:

$ mkdir -p ~/prj/test/SimpleModules

перейдём в неё

$ cd ~/prj/test/SimpleModules

Затем создадим директории для модуля и для его классов:

$ mkdir -p src/org.example/org/example
$ tree
.
└── src
    └── org.example
        └── org
            └── example

4 directories, 0 files

Теперь самое важное — файл описывающий ваш модуль. Переходим в директорию модуля:

$ cd src/org.example

И создаём файл, сразу открывая его для редактирования:

$ nano module-info.java

В теле файла модуля нет списков требующихся модулей и экспортируемых пакетов, поэтому, его содержимое состоит только из названия модуля и пустых фигурных скобок:

module org.example { }

Полезной нагрузкой в модуле будет класс с точкой входа. Основное назначение которого будет вывести на консоль приветствие.
Перейдём вглубь директории пакета:

$ cd org/example/

И создадим здесь основной класс:

$ nano Main.java

Никаких изысков, только вывод на консоль:

package org.example;

public class Main {
    public static void main(String[] args) {
        System.out.println("Привет");
    }
}

Чтобы скомпилировать приложение, вернёмся в его корневую директорию:

$ cd ../../../../
$ tree
.
└── src
    └── org.example
        ├── module-info.java
        └── org
            └── example
                └── Main.java

4 directories, 2 files

Создадим директорию для размещения результатов компиляции:

$ mkdir -p target/org.example
$ tree
.
├── src
│   └── org.example
│       ├── module-info.java
│       └── org
│           └── example
│               └── Main.java
└── target
    └── org.example

6 directories, 2 files

Скомпилируем приложение:

$ javac -d target/org.example \
> src/org.example/module-info.java \
> src/org.example/org/example/Main.java

javac — компилятор в джава байткод;
-d — ключ, после которого указывается директория в которую складывается результат компиляции;
затем, через пробел идут файлы проекта.

$ tree
.
├── src
│   └── org.example
│       ├── module-info.java
│       └── org
│           └── example
│               └── Main.java
└── target
    └── org.example
        ├── module-info.class
        └── org
            └── example
                └── Main.class

8 directories, 4 files

В результате были созданы два файла module-info.class и Main.class.

Для запуска приложения нужно указать путь к директории с собранным модулем (после ключа -p) и через слэш <название модуля>/<точка входа> (после ключа -m):

$ java -p target -m org.example/org.example.Main
Привет

У нас получился модуль который предназначен для вывода на консоль слова «Привет». В следующий раз создадим проект в IDE. Кроме того, попробуем создать модуль и воспользуемся его функциональностью в другом модуле.

Понравилась статья? Посоветуйте другу

Количество коментариев: 0

Добавить комментарий



[ Ctrl + Enter ]