Статьи

JavaFX HelloWorld с использованием Jigsaw Project 9 в течение 60 секунд

К настоящему времени вы, вероятно, слышали о новой модульной системе Java 9, известной как проект Jigsaw. Если вы не знаете о новой модульной системе Java 9, вам следует посетить статью Марка Рейнхольда о состоянии модульной системы. Кроме того, вы должны проверить превосходный блог Николая Парлога @nipafx по адресу http://blog.codefx.org. Там он подробно расскажет о новой модульной системе Java 9 и многих сценариях.

В этой статье я попытаюсь показать вам, как создать приложение JavaFX Helloworld с использованием модульной системы Java 9 за 60 секунд.

Требования

На момент написания этой статьи Java 9 все еще находится на ранней стадии доступа, что означает, что вам нужно будет загрузить последние сборки по адресу https://jdk9.java.net/download/.

инструкции

Предполагая, что вы установили свой JDK и установили соответствующие переменные окружения. Также вам нужно перейти в командную строку или терминал и ввести: java -version, чтобы проверить установленный JDK. Например.

скрин-шот-2016-04-25-в-12-09-37-ам

Шаг 1: Создайте каталог в вашем домашнем каталоге для вашего проекта, например, следующий для Windows OS, Linux и MacOS соответственно. Кроме того, создайте каталог src в вашем каталоге проекта helloworld.

01
02
03
04
05
06
07
08
09
10
11
12
# Windows
  c:\Users\myusername>md helloworld
  c:\Users\myusername>md helloworld/src
   
  # Linux
  /user/home/myusername $ mkdir -p helloworld/src
 
  # Mac
  /Users/myusername$ mkdir -p helloworld/src
 
 
cd helloworld

Шаг 2. Создайте каталог, используя простое соглашение об именах, основанное на новом способе организации исходного кода и модулей в Java 9.

Создайте каталог с именем вашего модуля, например: com.mycompany.helloworld . Предполагая, что текущим каталогом является <User’s Home dir> / helloworld /

1
mkdir src/com.mycompany.helloworld

Шаг 3. Создайте каталоги на основе пространства имен вашего пакета в файле HelloWorld.java. В этом простом примере основной Helloworld.java будет создан с использованием следующей структуры каталогов:

1
mkdir -p src/com.mycompany.helloworld/com/mycompany/helloworld

Каталоги должны выглядеть следующим образом:

1
2
3
4
5
6
7
<User Home dir>/
              helloworld/
                 src/
                    com.mycompany.helloworld/
                       com/
                          mycompany/
                             helloworld/

Шаг 4:   Создайте файл module-info.java . Это позволяет компилятору знать, какие зависимости базовых модулей необходимо приложению для компиляции и запуска, например, модули javafx. Создайте файл с именем module-info.java в каталоге helloworld / src / com.mycompany.helloworld. Скопируйте и вставьте приведенный ниже код в файл module-info.java. Используйте vi, nano или блокнот.

1
2
3
4
5
6
module com.mycompany.helloworld {
   requires javafx.base;
   requires javafx.graphics;
   requires javafx.controls;
   exports com.mycompany.helloworld;
}

Шаг 5:   Создайте файл приложения HelloWorld.java. Файл будет создан в каталоге helloworld / src / com.mycompany.helloworld / com / mycompany / helloworld /. Скопируйте и вставьте приведенный ниже код в приложение HelloWorld.java.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package com.mycompany.helloworld;
 
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.stage.Stage;
 
/**
 * A JavaFX Hello World
 */
public class HelloWorld extends Application {
 
   /**
    * @param args the command line arguments
    */
    public static void main(String[] args) {
       Application.launch(args);
    }
 
    @Override
    public void start(Stage stage) {
       stage.setTitle("Hello World");
       Group root = new Group();
       Scene scene = new Scene(root, 300, 250);
       Button btn = new Button();
       btn.setLayoutX(100);
       btn.setLayoutY(80);
       btn.setText("Hello World");
       btn.setOnAction( actionEvent ->
                 System.out.println("Hello World"));
       root.getChildren().add(btn);
       stage.setScene(scene);
       stage.show();
    }
}

Шаг 5:   Скомпилируйте исходный код с опцией -d с указанием расположения скомпилированного модуля. Каталог для нового модуля helloworld: mods / com.mycompany.helloworld .

1
javac -d mods/com.mycompany.helloworld src/com.mycompany.helloworld/module-info.java src/com.mycompany.helloworld/com/mycompany/helloworld/HelloWorld.java

Шаг 6:   Запустите приложение Hello World как модуль. После компиляции модуля в каталог mods вы теперь будете использовать новую опцию -modulepath в Java 9, чтобы указать каталог скомпилированного модуля. Также вы укажете опцию -m для запуска модуля и его основного класса HelloWorld. Используйте следующую команду:

1
java -modulepath mods -m com.mycompany.helloworld/com.mycompany.helloworld.HelloWorld

Вывод предыдущей команды:

скрин-шот-2016-04-26-на-1-42-13-ам

Вывод

Не уверен, что вы потратили более 60 секунд, но при условии, что ваша среда настроена и JDK 9 установлен, вы сможете вырезать и вставить код за считанные секунды. Я нахожу новую модульную систему Java 9 довольно простой. Хотя для того, чтобы компилятор знал, где находятся модули, требуется немного больше ввода, но на самом деле он не слишком отличается от опции -classpath .

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