借助 Java 9 Jigsaw,如何在 60 秒内创建 JavaFX HelloWorld 程序?

简介: 在本文中,笔者会讲解如何利用 Java 9 的模块系统在 60 秒内创建一个 JavaFX HelloWorld 应用程序。

【编者按】本文作者为 Carl Dea,主要介绍利用 Jigsaw 项目在大约一分钟内编写标准化的“Hello World”消息代码。本文系国内 ITOM 管理平台 OneAPM 编译呈现。

你可能已经听说了 Jave 9 的新模块系统,也就是 Jigsaw 项目。如果你还不了解 Java 9 的新模块系统,请阅读 Mark Reinhold 的模块系统状态报告。另外还可以看看 @nipafx Nicolai Parlog 的优秀博客。Nicolai 在博客中详细介绍了 Java 9 的新模块系统和众多场景。

在本文中,笔者会讲解如何利用 Java 9 的模块系统在 60 秒内创建一个 JavaFX HelloWorld 应用程序。

环境要求

截至本文发稿时,Java 9 仍然处于抢鲜体验阶段,请登录 https://jdk9.java.net/download/ 获取最新的构建版本。

  • JDK 9 EA 构建版本 114 或更高版本 (JDK 9 EA)

操作步骤

假设你已经安装了 JDK,也设置了相应的环境变量。此外,你还可以在命令行或终端并输入:java -version 来确定所安装的 JDK 版本。例如

借助 Java 9 Jigsaw,如何在 60 秒内创建 JavaFX HelloWorld 程序?

第 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 组织源码和模块的新方法,使用简单的命名惯例创建一个目录。

创建一个目录并按照模块命名,例如: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

上一个命令的输出结果是:

借助 Java 9 Jigsaw,如何在 60 秒内创建 JavaFX HelloWorld 程序?

结论

不知道你的用时会不会超过 60 秒,但如果你的环境已经设置完毕,JDK 9 也已经安装好了,应该可以在几秒内剪切并粘贴代码。笔者发现,新版 Java 9 模块系统相当简单直接。尽管还要额外输入一些内容让编译器知道模块的位置,但这和 -classpath 选项确实没有多大区别。

笔者发现,大型项目把各个组份拆分为模块,并从中受益。这样一来,许多工具可以创建多个细小的可执行程序,从而缩短加载时间,这的确是令 Java 社区激动的时刻。虽然前路还很漫长,但这正是我们亟需的功能,它的到来一定会推动我们编写、管理和部署模块化软件。

本文转自 OneAPM 官方博客

原文地址:https://dzone.com/articles/a-javafx-helloworld-using-java-9s-project-jigsaw-i

相关文章
|
1月前
|
Java
java程序导出堆文件
java程序导出堆文件
|
1月前
|
SQL Oracle Java
sql文件批处理程序-java桌面应用
sql文件批处理程序-java桌面应用
25 0
|
1月前
|
存储 Java
Java:编写程序,计算两个数的和、差、积、商和余数。docx
Java:编写程序,计算两个数的和、差、积、商和余数。docx
|
1月前
|
安全 Java 数据库连接
【Java每日一题】——第四十一题:编写程序描述影视歌三栖艺人。
【Java每日一题】——第四十一题:编写程序描述影视歌三栖艺人。
31 0
|
12天前
|
Java Maven
【Java报错】显示错误“Error:java: 程序包org.springframework.boot不存在“
【Java报错】显示错误“Error:java: 程序包org.springframework.boot不存在“
33 3
|
27天前
|
Java
elasticsearch使用java程序添加删除修改
elasticsearch使用java程序添加删除修改
9 0
|
1月前
|
Java
java程序
re是java运行时的环境,包含jvm和运行时所需要的类库 jdk是java开的程序包,包含jre和开发人员使用的工具 jvm就是我们常说的java虚拟机,他是整个java实现跨平台的最核心 的部分,所有的java程序会首先被编译为.class的类文件,这种类文 件可以在虚拟机上执行。也就是说class并不直接与机器的操作系统 相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释 给本地系统执行。 只有jvm还不能成class的执行,因为再解释class的时候jvm需要调用 解释所需要的类库lib,而jre包含lib类库。jvm屏蔽了与具体操作系 统平台相关的信息,使得java程
17 0
|
1月前
|
存储 Java Shell
Java程序结构
Java程序结构
12 3
|
1月前
|
安全 Java 数据库连接
【Java每日一题】——第四十二题:编写程序实现乐手弹奏乐器。乐手可以弹奏不同的乐器从而发出不同的声音。可以弹奏的乐器包括二胡、钢琴和琵琶。
【Java每日一题】——第四十二题:编写程序实现乐手弹奏乐器。乐手可以弹奏不同的乐器从而发出不同的声音。可以弹奏的乐器包括二胡、钢琴和琵琶。
68 0
|
1月前
|
Java 知识图谱
【Java每日一题】— —第九题:编写Java程序:通过使用if-else多分支语句,实现从键盘录入一个人的身高和体重后,输出该人的BMI健康体重指数
【Java每日一题】— —第九题:编写Java程序:通过使用if-else多分支语句,实现从键盘录入一个人的身高和体重后,输出该人的BMI健康体重指数
48 0

热门文章

最新文章