藉助 Java 9 Jigsaw,如何在 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 版本。例如
第 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
相關文章
- 如何在 60 秒內去分析和定位問題?
- OSGI並不足夠,Java 9將整合JigsawJava
- 藉助 Project Zero 建立 RESTful IBM Lotus DominoProjectRESTIBM
- 如何在CentOS/RHEL 7上藉助ssm管理LVM卷?CentOSSSMLVM
- 藉助ai來分析程式碼,理解程式碼AI
- JavaScript 倒數計時60秒程式碼JavaScript
- 藉助 Project Zero 在 Web 2.0 領域建立 RESTful IBM Lotus Domino 應用程式ProjectWebRESTIBM
- 如何在 Android 上藉助 Wine 來執行 Windows AppsAndroidWindowsAPP
- 在JavaFX程式中嵌入Swing內容Java
- javafx內嵌為Swing程式淺析Java
- 藉助 PrivateLink 與 EMQX Cloud 建立安全可靠的連線MQCloud
- 如何在終端介面藉助圖形化工具進行資料分析
- Java 藉助ImageMagic實現圖片編輯服務Java
- 藉助babel理解jsxBabelJS
- 視野數科藉助 SAE + Jenkins 打造雲原生 DevOps,運維效率提升 60%!Jenkinsdev運維
- JavaScript倒數計時60秒程式碼詳解JavaScript
- 藉助 AOP 為 Java Web 應用記錄效能資料JavaWeb
- 藉助Python 函式進行模組化程式碼Python函式
- ModRun: 無需Jigsaw的Java模組化Java
- 藉助dockerSwarm搭建叢集部署DockerSwarm
- 藉助node,搭建vue環境Vue
- 藉助 VMware 虛擬化 OracleOracle
- 藉助公有云伺服器內網穿牆ssh訪問內網伺服器伺服器內網
- Java開發桌面程式學習(九)——JavaFxTemplate JavaFx模版 更簡單進行JavaFx程式開發Java
- 邁進Java:HelloWorldJava
- 如何藉助Linux充分利用舊PC建立伺服器環境Linux伺服器
- 雲端計算之路-阿里雲上:藉助IIS Log Parser Studio分析“黑色30秒”問題阿里
- 研發團隊如何藉助Gitlab來做程式碼reviewGitlabView
- 藉助SpotBugs將程式錯誤扼殺在搖籃中
- 譯文|藉助 Pulsar Functions 遷移到無服務應用程式Function
- 藉助 SublimeLinter 編寫高質量的 JS & CSS 程式碼JSCSS
- 藉助SublimeLinter編寫高質量的JavaScript & CSS程式碼JavaScriptCSS
- Linux 效能分析的前 60 秒Linux
- java程式通過swing呼叫javaFx更新 資料Java
- 9、Tunnel:論如何在內網中自由滲透內網
- 深入理解Java HelloWorldJava
- Java RMI之HelloWorld篇Java
- 藉助小程式雲開發實現小程式的登陸註冊功能