【编者按】本文作者为 Carl Dea,主要介绍利用 Jigsaw 项目在大约一分钟内编写标准化的“Hello World”消息代码。本文系国内 ITOM 管理平台 OneAPM 编译呈现。
你可能已经听说了 Jave 9 的新模块系统,也就是 Jigsaw 项目。如果你还不了解 Java9 的新模块系统,请阅读 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 版本。例如
第 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
上一个命令的输出结果是:
结论
不知道你的用时会不会超过 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
相关推荐
JavaFX是Java平台上的一个应用程序接口(API),用于构建丰富的用户界面。在早期版本的Java Development Kit (JDK) 中,JavaFX是一个内置组件,包括了`jfxrt.jar`这个重要的库文件,它包含了运行JavaFX应用所需的...
- **工具 API**:Java 9 引入了一系列新的工具 API,如 jpackage 和 jlink,用于创建自包含的应用程序和定制的 JDK 镜像。 #### 七、总结 Java 9 的发布标志着 Java 发展的一个新阶段,它不仅带来了许多新的特性和...
Java 9 作为 Java 平台标准版(Java SE)的一个重要版本,在 2017 年 7 月正式发布。这一版本引入了许多令人兴奋的新特性,这些新特性不仅提高了开发效率,还增强了应用程序的性能和可维护性。下面我们将详细介绍 ...
你好这是一个简单的Hello World应用程序hellofx 该应用程序演示了Jigsaw和JavaFX的结合。 模块关系问题它显示了如何使用打印机和打印机客户端命令字符串以模块化方式运行两个不同的模块。 模块类型Java 9显示了...
例如,你可以通过在命令行输入`javac HelloWorld.java`来编译名为HelloWorld.java的源代码文件。 二、Java虚拟机 Java虚拟机(JVM)是Java平台的核心组件,它是Java“一次编写,到处运行”特性背后的实现者。JVM...
3. ** HelloWorld 示例**:经典的Java入门程序,展示了基本的程序结构: ```java public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } } ``` 4. **...
Yun2101JavaTest这个文件名很可能包含了这些基础知识的实践代码示例,可能是简单的Hello World程序,也可能涉及到更复杂的概念如类的实例化、方法的使用、异常处理等。通过学习和运行这些示例,初学者可以更好地理解...
1. **Java基础知识**:包括Java的历史、安装配置环境、 HelloWorld程序,以及Java的语法特性,如数据类型、变量、运算符和控制流程。 2. **面向对象编程**:深入解析Java的类、对象、封装、继承和多态等面向对象...
2. **实验题目**:这些实验题目可能涉及创建简单的Java应用程序,如“Hello, World!”程序,逐渐过渡到更复杂的任务,比如实现链表、栈、队列等数据结构,或者设计并实现面向对象的类库。实验有助于将理论知识转化为...
javac HelloWorld.java ``` 3. **运行程序**:使用`java`命令运行编译后的程序。 ``` java HelloWorld ``` JDK 11.0.12 for macOS不仅为开发者提供了一套完整的Java开发工具,还确保了在macOS平台上的兼容性...
`public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } }` 是经典的Java入门程序。 2. **Java环境**:首先,你需要安装Java Development Kit (JDK),它...
Java应用程序(Java Application)是基于Java编程语言开发的独立软件,可以运行在各种操作系统上,如Windows、Linux、macOS等。Java应用以其“一次编写,到处运行”的特性著称,这得益于Java虚拟机(JVM)的存在。...
2. ** HelloWorld 程序**:这是每个学习新语言的人都会接触的第一个程序,它演示了如何创建一个简单的Java应用程序,以及如何使用`public static void main(String[] args)`作为程序的入口点。 3. **语法基础**:...
2. ** HelloWorld程序**:每个编程之旅通常都从“Hello, World!”开始。在Java中,你将创建一个简单的类,包含一个main方法,输出这行经典语句。了解如何创建类、主方法以及System.out.println()的作用至关重要。 3...
16. **模块系统(Project Jigsaw)**:Java 9引入了模块系统,以提高大型应用程序的可维护性和安全性。 以上只是Java编程的冰山一角,随着学习深入,你将接触到更多高级主题,如设计模式、并发编程、性能优化、框架...
1. **Java基础**:这包括了解Java的历史、环境设置(JDK和JRE)、编写第一个Hello World程序、理解Java的语法特性,如数据类型(基本类型和引用类型)、变量、常量、运算符以及控制流程(条件语句和循环)。...
除此之外,Java还支持面向切面编程(AOP)和模块化(如Java 9引入的Jigsaw项目)。JDBC(Java Database Connectivity)让开发者可以轻松地连接到各种数据库,进行数据操作。还有JavaFX,一个用于构建桌面和移动应用...
例如,你可能会看到如何创建一个简单的Java应用程序(Hello, World!)来开始,然后逐渐涉及更复杂的主题,如多线程编程,使用Thread类和Runnable接口,或者网络编程,如Socket通信。 随着对Java基础知识的掌握,你...
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } } ``` 2. **面向对象编程**:Java支持封装、继承和多态等面向对象特性。类是对象的蓝图,对象是类...