java jigsaw
到目前为止,您可能已经听说过Java 9的新模块系统,即项目Jigsaw。 如果您不了解Java 9的新模块系统,则应该访问Mark Reinhold的论文“模块系统的状态” 。 另外,您应该在@nipafx上查看 Nicolai Parlog的优秀博客, 网址为http://blog.codefx.org。在那里,他详细介绍了Java 9的新模块系统和许多场景。
在本文中,我将尝试向您展示如何在60秒内使用Java 9的模块系统创建JavaFX Helloworld应用程序。
要求
在撰写本文时,Java 9仍处于早期访问阶段,这意味着您需要在https://jdk9.java.net/download/上获取最新版本。
- JDK 9 EA build 114或更高版本( JDK 9 EA )
使用说明
假设您已经安装了JDK并设置了适当的环境变量。 另外,您将需要进入命令提示符或终端并键入:java -version来验证已安装的JDK。 例如。
步骤1:在主目录中为项目创建目录,例如分别用于Windows OS,Linux和MacOS的目录。 另外,在helloworld项目目录下创建一个src目录。
# Windowsc:\Users\myusername>md helloworldc:\Users\myusername>md helloworld/src# Linux/user/home/myusername $ mkdir -p helloworld/src# Mac/Users/myusername$ mkdir -p helloworld/srccd helloworld
步骤2:根据Java 9的新方法来组织源代码和模块,使用简单的命名约定创建目录。
创建一个名为模块的目录,例如: com.mycompany.helloworld 。 假设您的当前目录为<用户的主目录> / helloworld /
mkdir src/com.mycompany.helloworld
步骤3:根据HelloWorld.java文件的程序包名称空间创建目录。 在此简单示例中,将使用以下目录结构创建主Helloworld.java :
mkdir -p src/com.mycompany.helloworld/com/mycompany/helloworld
目录应如下所示:
<User Home dir>/helloworld/src/com.mycompany.helloworld/com/mycompany/helloworld/
步骤 4: 创建一个module-info.java文件。 这使编译器知道应用程序需要编译和运行哪些核心模块依赖性,例如javafx模块。 在helloworld / src / com.mycompany.helloworld目录下创建一个名为module-info.java的文件。 将下面的代码复制并粘贴到module-info.java文件中。 使用vi,nano或记事本。
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应用程序中。
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);}@Overridepublic 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 。
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目录中之后,您现在将使用Java 9的新-modulepath选项来指定编译后的模块目录。 另外,您将指定-m选项以执行该模块及其主类HelloWorld。 使用以下命令:
java -modulepath mods -m com.mycompany.helloworld/com.mycompany.helloworld.HelloWorld
上一条命令的输出:
结论
不知道您是否花费了60秒以上的时间,但是假设您的环境已设置并且JDK 9已安装,您应该能够在几秒钟内剪切和粘贴代码。 我发现新的Java 9模块系统非常简单。 尽管为了使编译器知道模块在哪里有一些额外的输入,但实际上它与-classpath选项没有什么不同。
我可以看到大型项目可以将组件分解为模块并从中受益。 我相信在Java世界中,这确实是令人兴奋的时刻,因为工具将能够构建精简的可执行文件,从而缩短加载时间。 我觉得这已经很长时间了,但是它是一个非常需要的功能,它将鼓励我们编写,管理和部署模块化软件。
翻译自: https://www.javacodegeeks.com/2016/04/javafx-helloworld-using-java-9s-project-jigsaw-60-seconds.html
java jigsaw