【编者按】本文做者为 Carl Dea,主要介绍利用 Jigsaw 项目在大约一分钟内编写标准化的“Hello World”消息代码。本文系国内 ITOM 管理平台 OneAPM 编译呈现。html
你可能已经据说了 Jave 9 的新模块系统,也就是 Jigsaw 项目。若是你还不了解 Java 9 的新模块系统,请阅读 Mark Reinhold 的模块系统状态报告。另外还能够看看 @nipafx Nicolai Parlog 的优秀博客。Nicolai 在博客中详细介绍了 Java 9 的新模块系统和众多场景。java
在本文中,笔者会讲解如何利用 Java 9 的模块系统在 60 秒内建立一个 JavaFX HelloWorld 应用程序。服务器
##环境要求 截至本文发稿时,Java 9 仍然处于抢鲜体验阶段,请登陆 https://jdk9.java.net/download/ 获取最新的构建版本。app
##操做步骤 假设你已经安装了 JDK,也设置了相应的环境变量。此外,你还能够在命令行或终端并输入:java -version 来肯定所安装的 JDK 版本。例如框架
**第 1 步:**按照如下方式,在项目主目录下根据本身的操做系统( Windows、Linux 或 Mac)建立一个目录。此外,在 helloworld 项目目录下建立一个 src 目录。编辑器
# 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 组织源码和模块的新方法,使用简单的命名惯例建立一个目录。ide
建立一个目录并按照模块命名,例如:com.mycompany.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 或 notepad 编辑器。
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); } @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(); } }
**第 6 步:**使用 -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
**第 7 步:**按照模块来执行 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 社区激动的时刻。虽然前路还很漫长,但这正是咱们亟需的功能,它的到来必定会推进咱们编写、管理和部署模块化软件。
OneAPM 能为您提供端到端的 Java 应用性能解决方案,咱们支持全部常见的 Java 框架及应用服务器,助您快速发现系统瓶颈,定位异常根本缘由。分钟级部署,即刻体验,Java 监控历来没有如此简单。想阅读更多技术文章,请访问 OneAPM 官方技术博客。
本文转自 OneAPM 官方博客
原文地址:https://dzone.com/articles/a-javafx-helloworld-using-java-9s-project-jigsaw-i