作者 | A N M Bazlur Rahman
譯者 | 明知山
策劃 | Tina
JEP 458(啓動多文件源碼程序)已經在(zài) JDK 22 中交付。這(zhè)個(gè) JEP 提議對 Java 啓動器進行增強,可以(yǐ)執行包含一(yī / yì /yí)個(gè)或多個(gè)文件的(de) Java 源碼應用程序。這(zhè)樣就(jiù)可以(yǐ)通過推遲一(yī / yì /yí)個(gè)完整的(de)項目設置來(lái)實現從小型應用程序到(dào)大(dà)型應用程序的(de)漸進式過渡。
JDK 11 引入了(le/liǎo) JEP 330 ,開發者可以(yǐ)直接使用 java 命令執行單個(gè)文件源碼程序,但這(zhè)個(gè)功能僅限于(yú)包含在(zài)單個(gè) .java 文件中的(de)程序。新的(de)增強将此功能擴展到(dào)多文件源代碼程序,通過減少初始設置要(yào / yāo)求并允許更加探索性的(de)編程方法來(lái)促進更無縫的(de)開發過程。
這(zhè)一(yī / yì /yí)動機源于(yú)這(zhè)樣一(yī / yì /yí)個(gè)認識:所有大(dà)型程序都是(shì)從小項目開始的(de)。在(zài)開發的(de)早期階段,重點是(shì)進行調試和(hé / huò)探索,而(ér)不(bù)是(shì)最終的(de)可交付成果。項目結構通常是(shì)流動的(de),在(zài)開發過程中頻繁變更。JEP 458 通過執行多文件源碼程序而(ér)不(bù)需要(yào / yāo)進行顯式編譯來(lái)支持快速叠代和(hé / huò)變更,這(zhè)在(zài)開發的(de)初始階段是(shì)至關重要(yào / yāo)的(de)。這(zhè)種方法通過消除學習和(hé / huò)配置額外工具(如 Java 編譯器(javac)或第三方構建系統)的(de)即時(shí)需求,大(dà)大(dà)降低了(le/liǎo)經驗豐富和(hé / huò)新手開發者的(de)障礙。
這(zhè)個(gè)特性簡單而(ér)強大(dà)。例如,假設一(yī / yì /yí)個(gè)目錄包含兩個(gè)文件,Prog.java 和(hé / huò) Helper.java,每個(gè)文件聲明了(le/liǎo)一(yī / yì /yí)個(gè)類:
// Prog.java
class Prog {
public static void main(String[] args) { Helper.run(); }
}
// Helper.java
class Helper {
static void run() { System.out.println("Hello!"); }
}
運行 java Prog.java 将在(zài)内存中編譯 Prog 類并調用它的(de) main 方法。如果 Prog 類引用了(le/liǎo) Helper 類,則啓動器将自動在(zài)内存中編譯 Helper.java。這(zhè)個(gè)過程由 Java 啓動器動态管理,根據需要(yào / yāo)編譯和(hé / huò)加載類,而(ér)不(bù)強制執行特定順序,從而(ér)促進更靈活的(de)開發工作流程。
爲(wéi / wèi)了(le/liǎo)确保與現有 Java 項目的(de)順利集成,增強功能規定隻編譯程序直接引用的(de) .java 文件。這(zhè)樣可以(yǐ)防止意外編譯位于(yú)同一(yī / yì /yí)目錄中的(de)過時(shí)或實驗性代碼。此外,啓動器遵循 Java 的(de)打包約定,要(yào / yāo)求按照包結構組織源文件。這(zhè)種結構化方法延伸到(dào)了(le/liǎo)模塊化源碼程序的(de)處理,啓動器能夠識别并根據源樹根目錄中是(shì)否存在(zài) module-info.java 文件來(lái)編譯模塊。
該提案明确規定了(le/liǎo)一(yī / yì /yí)些“非”目标。它明确表示,不(bù)支持通過 "shebang" 機制啓動多文件源碼程序,隻支持單文件程序。此外,它的(de)目标不(bù)在(zài)于(yú)簡化源碼程序中外部庫依賴的(de)集成,但在(zài)未來(lái)潛在(zài)的(de)增強中會考慮這(zhè)一(yī / yì /yí)目标。
這(zhè)次對 Java 應用啓動器的(de)更新代表了(le/liǎo) Java 開發生态系統向前邁出(chū)了(le/liǎo)重要(yào / yāo)一(yī / yì /yí)步,滿足了(le/liǎo) Java 社區不(bù)斷發展的(de)需求。
查看英文原文:
https://www.infoq.com/news/2024/02/multi-file-program-launching/
聲明:本文爲(wéi / wèi) InfoQ 翻譯,未經許可禁止轉載。