借助 Java 9 Jigsaw,如何在 60 秒內(nèi)創(chuàng)建 JavaFX HelloWorld 程序?

【編者按】本文作者為 Carl Dea,主要介紹利用 Jigsaw 項目在大約一分鐘內(nèi)編寫標(biāo)準(zhǔn)化的“Hello World”消息代碼。本文系國內(nèi) ITOM 管理平臺 OneAPM 編譯呈現(xiàn)。

你可能已經(jīng)聽說了 Jave 9 的新模塊系統(tǒng),也就是 Jigsaw 項目。如果你還不了解 Java 9 的新模塊系統(tǒng),請閱讀 Mark Reinhold 的模塊系統(tǒng)狀態(tài)報告。另外還可以看看 @nipafx Nicolai Parlog 的優(yōu)秀博客。Nicolai 在博客中詳細(xì)介紹了 Java 9 的新模塊系統(tǒng)和眾多場景。

在本文中,筆者會講解如何利用 Java 9 的模塊系統(tǒng)在 60 秒內(nèi)創(chuàng)建一個 JavaFX HelloWorld 應(yīng)用程序。

環(huán)境要求

截至本文發(fā)稿時,Java 9 仍然處于搶鮮體驗(yàn)階段,請登錄 https://jdk9.java.net/download/ 獲取最新的構(gòu)建版本。

  • JDK 9 EA 構(gòu)建版本 114 或更高版本 (JDK 9 EA)

操作步驟

假設(shè)你已經(jīng)安裝了 JDK,也設(shè)置了相應(yīng)的環(huán)境變量。此外,你還可以在命令行或終端并輸入:java -version 來確定所安裝的 JDK 版本。例如

借助 Java 9 Jigsaw,如何在 60 秒內(nèi)創(chuàng)建 JavaFX HelloWorld 程序?

第 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。假設(shè)你當(dāng)前的目錄是

 mkdir src/com.mycompany.helloworld

第 3 步: 基于 HelloWorld.java 文件的包命名空間創(chuàng)建若干目錄。在本例中,我們會使用以下目錄結(jié)構(gòu)來創(chuàng)建主 HelloWorld.java 文件。

mkdir -p  src/com.mycompany.helloworld/com/mycompany/helloworld

目錄應(yīng)該如下所示:

 <User Home dir>/ 

   helloworld/ 

   src/ 

   com.mycompany.helloworld/ 

   com/ 

   mycompany/ 

   helloworld/

第 4 步:創(chuàng)建一個 module-info.java 文件。這樣,編譯器就會知道應(yīng)用程序需要編譯哪些核心模塊依賴關(guān)系,并且運(yùn)行 javafx 等模塊。在 helloworld/src/com.mycompany.helloworld 目錄下創(chuàng)建一個文件并命名為 module-info.java。復(fù)制以下代碼并粘貼到 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 應(yīng)用程序文件。在 helloworld/src/com.mycompany.helloworld/com/mycompany/helloworld/ 目錄中創(chuàng)建這一文件。復(fù)制以下代碼并粘貼到 HelloWorld.java 應(yīng)用程序文件中。

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 應(yīng)用程序。把模塊編譯到 mods 目錄里之后,就可以使用 Java 9 的新 -modulepath 選項來指定已編譯的模塊目錄了。此外,還要指定 -m 選項來執(zhí)行模塊及其主類 HelloWorld。使用以下命令:

java -modulepath mods -m com.mycompany.helloworld/com.mycompany.helloworld.HelloWorld

上一個命令的輸出結(jié)果是:

借助 Java 9 Jigsaw,如何在 60 秒內(nèi)創(chuàng)建 JavaFX HelloWorld 程序?

結(jié)論

不知道你的用時會不會超過 60 秒,但如果你的環(huán)境已經(jīng)設(shè)置完畢,JDK 9 也已經(jīng)安裝好了,應(yīng)該可以在幾秒內(nèi)剪切并粘貼代碼。筆者發(fā)現(xiàn),新版 Java 9 模塊系統(tǒng)相當(dāng)簡單直接。盡管還要額外輸入一些內(nèi)容讓編譯器知道模塊的位置,但這和 -classpath 選項確實(shí)沒有多大區(qū)別。

筆者發(fā)現(xiàn),大型項目把各個組份拆分為模塊,并從中受益。這樣一來,許多工具可以創(chuàng)建多個細(xì)小的可執(zhí)行程序,從而縮短加載時間,這的確是令 Java 社區(qū)激動的時刻。雖然前路還很漫長,但這正是我們亟需的功能,它的到來一定會推動我們編寫、管理和部署模塊化軟件。

OneAPM 能為您提供端到端的 Java 應(yīng)用性能解決方案,我們支持所有常見的 Java 框架及應(yīng)用服務(wù)器,助您快速發(fā)現(xiàn)系統(tǒng)瓶頸,定位異常根本原因。分鐘級部署,即刻體驗(yàn),Java 監(jiān)控從來沒有如此簡單。想閱讀更多技術(shù)文章,請訪問 OneAPM 官方技術(shù)博客。

本文轉(zhuǎn)自 OneAPM 官方博客

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 君莫思?xì)w,妾常相隨。 玉帶吳鉤,無功不回。 咫尺天涯,青鬢云衰。 孤寒時節(jié),獨(dú)守余歲。 兒不識爺,雁驚南飛。 人生...
    nalane閱讀 703評論 0 1
  • 實(shí)了因之所了 非生因之所生 思想觀念的生生滅滅,乃至身體的新陳代謝這中間已經(jīng)是很多生死了
    青葵hl閱讀 627評論 0 6
  • 下午不知道該干什么,于是跑去教室自習(xí)。之前自習(xí)都是去圖書館自習(xí)室的,但可能我這種人不適合自習(xí)室,它總是會給我一種無...
    王一玉閱讀 493評論 0 0

友情鏈接更多精彩內(nèi)容