【編者按】本文做者爲 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