在今年9月發(fā)布的Java 9中,添加了模塊化功能。Java 9的模塊化旨在提高可擴(kuò)展性、讓開發(fā)人員能夠根據(jù)應(yīng)用程序的功能自定義配置。但新的Java Platform Module System某些功能需要一些特定的工具才能發(fā)揮用處,以下主要介紹幾款支持Java 9模塊化的開發(fā)工具。
Apache Ant:支持
Apache Ant是用于構(gòu)建Java應(yīng)用程序的庫和命令工具,可快速用于Java 9模塊化。此外,為了保證Ant與Java 9的可適應(yīng)性,Ant對今年2月份發(fā)布的1.10.1版本進(jìn)行了一些列的優(yōu)化:支持模塊路徑和相關(guān)的javac、java、junit任務(wù)。
Apache Maven:支持
Maven軟件構(gòu)建工具3.7版支持Java 9和模塊化。但是,Maven項(xiàng)目管理委員會(huì)的成員Brian Fox表示:對于軟件開發(fā)庫的程序員來講,模塊化的依賴關(guān)系可能會(huì)成是一個(gè)非常棘手的問題。
Eclipse IDE:支持
自今年6月份Oxygen發(fā)行以來開源Eclipse IDE工具支持Java 9。但使用Java 9的模塊化工作時(shí),開發(fā)人員需要將vmargs(JVM的命令行參數(shù))添加到eclipse.ini:add-modules=ALL-SYSTEM。另外,由于正在使用的類型不是java.base或java.se.ee(例如javafx.base)等,可能會(huì)導(dǎo)致項(xiàng)目無法正常運(yùn)行。在這種情況下,你必須根據(jù)Eclipse文檔得知哪些模塊需要添加到—add-modules中。
Gradle:尚未完全支持
Gradle尚未完全支持Java 9,但相關(guān)人員透露,預(yù)計(jì)在明年開發(fā)人員會(huì)完成Java 9的兼容工作。
與此同時(shí),使用Gradle的開發(fā)人員可以利用解決方案來支持實(shí)驗(yàn)?zāi)K化,Java庫生成的模塊可以將其作為依賴項(xiàng)使用。Java 9中模塊系統(tǒng)的一大特點(diǎn)是開發(fā)人員可以利用自上而下的方式將項(xiàng)目庫轉(zhuǎn)換為Java 9模塊。Gradle使用手冊中也寫道:“由于Java 9模塊jar可以從類路徑或模塊路徑中得到相同的效果,因此我們可以在多項(xiàng)目構(gòu)建中轉(zhuǎn)換一個(gè)單葉節(jié)點(diǎn)來生成Java 9模塊。但在編譯或運(yùn)行消耗該節(jié)點(diǎn)輸出的項(xiàng)目時(shí),會(huì)使用module .jar類路徑。”
Jenkins: 正在準(zhǔn)備工作中
軟件開發(fā)時(shí)用于集成和部署的Jenkins開源自動(dòng)化服務(wù)器尚不支持Java 9模塊化,目前這一部分的工作還尚在進(jìn)行中。
CloudBees的創(chuàng)始人Kohsuke Kawaguchi表示,CloudBees正在領(lǐng)導(dǎo)Jenkins社區(qū)不斷努力Jenkins與Java 9兼容。但他沒有透露新的兼容版本具體得發(fā)布日期。
JetBrains IntelliJ Idea IDE:支持
從今年2月的新版開始JetBrains IntelliJ Idea IDE完全支持Java模塊化功能。開發(fā)人員構(gòu)建Java 9模塊化項(xiàng)目時(shí)就像模塊化路徑(非類路徑)一樣簡單。另外,JetBrains IntelliJ Idea IDE還支持module-info.java文件的開發(fā)以及代碼完成和文件修復(fù)等。IntelliJ Idea除了模塊化還支持的內(nèi)容包括:
·快速修復(fù)使用模塊化的Java代碼
·支持使用模塊路徑運(yùn)行和調(diào)試
·生成模塊圖,幫助JDK可視化以及自定義模塊