借助 Java 9 Jigsaw链方,如何在 60 秒內創(chuàng)建 JavaFX HelloWorld 程序祟蚀?

【編者按】本文作者為 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 版本。例如

借助 Java 9 Jigsaw化焕,如何在 60 秒內創(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秀菱。假設你當前的目錄是

 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

上一個命令的輸出結果是:

借助 Java 9 Jigsaw荆几,如何在 60 秒內創(chuàng)建 JavaFX 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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市补鼻,隨后出現(xiàn)的幾起案子哄啄,更是在濱河造成了極大的恐慌,老刑警劉巖风范,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件咨跌,死亡現(xiàn)場離奇詭異,居然都是意外死亡硼婿,警方通過查閱死者的電腦和手機虑润,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來加酵,“玉大人拳喻,你說我怎么就攤上這事≈硗螅” “怎么了冗澈?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長陋葡。 經常有香客問我亚亲,道長,這世上最難降的妖魔是什么腐缤? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任捌归,我火速辦了婚禮,結果婚禮上岭粤,老公的妹妹穿的比我還像新娘惜索。我一直安慰自己,他們只是感情好剃浇,可當我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布巾兆。 她就那樣靜靜地躺著,像睡著了一般虎囚。 火紅的嫁衣襯著肌膚如雪角塑。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天淘讥,我揣著相機與錄音圃伶,去河邊找鬼。 笑死蒲列,一個胖子當著我的面吹牛窒朋,可吹牛的內容都是我干的。 我是一名探鬼主播嫉嘀,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼炼邀,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了剪侮?” 一聲冷哼從身側響起拭宁,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎瓣俯,沒想到半個月后杰标,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡彩匕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年腔剂,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片驼仪。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡掸犬,死狀恐怖袜漩,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情湾碎,我是刑警寧澤宙攻,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站介褥,受9級特大地震影響座掘,放射性物質發(fā)生泄漏。R本人自食惡果不足惜柔滔,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一溢陪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧睛廊,春花似錦枷踏、人聲如沸原茅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽凿叠。三九已至棉安,卻和暖如春气破,著一層夾襖步出監(jiān)牢的瞬間请垛,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工见咒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留偿衰,地道東北人。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓改览,卻偏偏與公主長得像下翎,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子宝当,可洞房花燭夜當晚...
    茶點故事閱讀 43,440評論 2 348

推薦閱讀更多精彩內容

  • 君莫思歸视事,妾常相隨。 玉帶吳鉤庆揩,無功不回俐东。 咫尺天涯,青鬢云衰订晌。 孤寒時節(jié)虏辫,獨守余歲。 兒不識爺锈拨,雁驚南飛砌庄。 人生...
    nalane閱讀 562評論 0 1
  • 實了因之所了 非生因之所生 思想觀念的生生滅滅,乃至身體的新陳代謝這中間已經是很多生死了
    青葵hl閱讀 498評論 0 6
  • 下午不知道該干什么,于是跑去教室自習娄昆。之前自習都是去圖書館自習室的佩微,但可能我這種人不適合自習室,它總是會給我一種無...
    王一玉閱讀 427評論 0 0