按計(jì)劃,JDK 11 將于 9 月發(fā)布。隨著時(shí)間的臨近,越來越多的 JEP 正被不斷被添加至 JDK 11 的開發(fā)列表中。2017 年 12 月 1 日,來自 Oracle 的開發(fā)者 Jonathan Gibbons 創(chuàng)建了 JEP 330 草案,名為 “Launch Single-File Source-Code Programs”,主要是改進(jìn) Java Launcher 以支持一個(gè)命令執(zhí)行單個(gè) Java 源代碼文件。
換句話說,在條件滿足的情況下,可以簡(jiǎn)單地直接編譯并運(yùn)行單文件程序,而不再需要調(diào)用 javac ,也不需要打包 jar 文件。
比如說,可直接運(yùn)行:
java HelloWorld.java
而不再需要:
javac -d HelloWorld.javajava -cp hello.World
此外,JEP 330 還引入了通常在 Unix 系統(tǒng)腳本中使用的 Shebang 和相關(guān)技術(shù),將支持使用該機(jī)制來執(zhí)行 Java 程序,例如:
#!/path/to/java --source version
在描述中,Jonathan Gibbons 表示該 JEP 的目標(biāo)不是為了改變 Java 語言規(guī)范(JLS)或 javac 來接納 shebang,也不是為了將 Java 語言演變?yōu)橥ㄓ媚_本語言。而是為了更純粹的編譯小型程序,降低開銷。
2018 年 5 月 17 日-24 日,JEP 330 草案在郵件列表中發(fā)起評(píng)審,由于觀點(diǎn)存在分歧,討論較為激烈,只能增加一周的評(píng)審時(shí)間一直到 5 月 31 日。6 月 1 日,Java 首席架構(gòu)師 Mark Reinhold 表示雖然不是每個(gè)提交者都對(duì)這個(gè) JEP 完全滿意,但大家基本已達(dá)成共識(shí),JEP 330 將被正式添加至 JDK 11 中。
At this point not every Committer is completely happy with this JEP, but it appears to me that Jon has satisfactorily addressed the issues raised thus far and updated the JEP accordingly. I’ve therefore targeted this JEP to JDK 11.
- Mark