藉助 Java 9 Jigsaw,如何在 60 秒內建立 JavaFX HelloWorld 程式?

OneAPM官方技術部落格發表於2016-05-26

【編者按】本文作者為 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 能為您提供端到端的 Java 應用效能解決方案,我們支援所有常見的 Java 框架及應用伺服器,助您快速發現系統瓶頸,定位異常根本原因。分鐘級部署,即刻體驗,Java 監控從來沒有如此簡單。想閱讀更多技術文章,請訪問 OneAPM 官方技術部落格

本文轉自 OneAPM 官方部落格

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

相關文章