【編者按】本文作者為 Carl Dea前酿,主要介紹利用 Jigsaw 項目在大約一分鐘內編寫標準化的“Hello World”消息代碼罢维。本文系國內 ITOM 管理平臺 OneAPM 編譯呈現(xiàn)。
你可能已經聽說了 Jave 9 的新模塊系統(tǒng)丙挽,也就是 Jigsaw 項目肺孵。如果你還不了解 Java 9 的新模塊系統(tǒng)匀借,請閱讀 Mark Reinhold 的模塊系統(tǒng)狀態(tài)報告。另外還可以看看 @nipafx Nicolai Parlog 的優(yōu)秀博客平窘。Nicolai 在博客中詳細介紹了 Java 9 的新模塊系統(tǒng)和眾多場景吓肋。
在本文中,筆者會講解如何利用 Java 9 的模塊系統(tǒng)在 60 秒內創(chuàng)建一個 JavaFX HelloWorld 應用程序瑰艘。
環(huán)境要求
截至本文發(fā)稿時是鬼,Java 9 仍然處于搶鮮體驗階段,請登錄 https://jdk9.java.net/download/ 獲取最新的構建版本紫新。
- JDK 9 EA 構建版本 114 或更高版本 (JDK 9 EA)
操作步驟
假設你已經安裝了 JDK均蜜,也設置了相應的環(huán)境變量。此外,你還可以在命令行或終端并輸入:java -version 來確定所安裝的 JDK 版本。例如
第 1 步:按照以下方式穗泵,在項目主目錄下根據(jù)自己的操作系統(tǒng)( Windows夷磕、Linux 或 Mac)創(chuàng)建一個目錄。此外膘螟,在 helloworld 項目目錄下創(chuàng)建一個 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 步:根據(jù) Java 9 組織源碼和模塊的新方法,使用簡單的命名慣例創(chuàng)建一個目錄。
創(chuàng)建一個目錄并按照模塊命名,例如:com.mycompany.helloworld秀菱。假設你當前的目錄是
mkdir src/com.mycompany.helloworld
第 3 步: 基于 HelloWorld.java 文件的包命名空間創(chuàng)建若干目錄脊串。在本例中,我們會使用以下目錄結構來創(chuàng)建主 HelloWorld.java 文件。
mkdir -p src/com.mycompany.helloworld/com/mycompany/helloworld
目錄應該如下所示:
<User Home dir>/
helloworld/
src/
com.mycompany.helloworld/
com/
mycompany/
helloworld/
第 4 步:創(chuàng)建一個 module-info.java 文件。這樣,編譯器就會知道應用程序需要編譯哪些核心模塊依賴關系,并且運行 javafx 等模塊董栽。在 helloworld/src/com.mycompany.helloworld 目錄下創(chuàng)建一個文件并命名為 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 步:創(chuàng)建 HelloWorld.java 應用程序文件。在 helloworld/src/com.mycompany.helloworld/com/mycompany/helloworld/ 目錄中創(chuàng)建這一文件。復制以下代碼并粘貼到 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 步:按照模塊來執(zhí)行 Hello World 應用程序。把模塊編譯到 mods 目錄里之后,就可以使用 Java 9 的新 -modulepath 選項來指定已編譯的模塊目錄了迫吐。此外,還要指定 -m 選項來執(zhí)行模塊及其主類 HelloWorld。使用以下命令:
java -modulepath mods -m com.mycompany.helloworld/com.mycompany.helloworld.HelloWorld
上一個命令的輸出結果是:
結論
不知道你的用時會不會超過 60 秒,但如果你的環(huán)境已經設置完畢抬纸,JDK 9 也已經安裝好了脖阵,應該可以在幾秒內剪切并粘貼代碼卵史。筆者發(fā)現(xiàn),新版 Java 9 模塊系統(tǒng)相當簡單直接顿锰。盡管還要額外輸入一些內容讓編譯器知道模塊的位置匙隔,但這和 -classpath 選項確實沒有多大區(qū)別曲横。
筆者發(fā)現(xiàn)吠撮,大型項目把各個組份拆分為模塊迈嘹,并從中受益壶笼。這樣一來覆劈,許多工具可以創(chuàng)建多個細小的可執(zhí)行程序,從而縮短加載時間铐拐,這的確是令 Java 社區(qū)激動的時刻遍蟋。雖然前路還很漫長纵穿,但這正是我們亟需的功能何乎,它的到來一定會推動我們編寫邓厕、管理和部署模塊化軟件叽掘。
OneAPM 能為您提供端到端的 Java 應用性能解決方案,我們支持所有常見的 Java 框架及應用服務器玖雁,助您快速發(fā)現(xiàn)系統(tǒng)瓶頸更扁,定位異常根本原因。分鐘級部署赫冬,即刻體驗浓镜,Java 監(jiān)控從來沒有如此簡單。想閱讀更多技術文章劲厌,請訪問 OneAPM 官方技術博客膛薛。
本文轉自 OneAPM 官方博客
原文地址:https://dzone.com/articles/a-javafx-helloworld-using-java-9s-project-jigsaw-i