日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

Shebang来Java了吗?

發(fā)布時(shí)間:2023/12/3 java 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Shebang来Java了吗? 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

盡管添加對(duì)Unix風(fēng)格的shebang ( #! )的支持從來(lái)不是 JEP 330 [“啟動(dòng)單文件源代碼程序”] 的中心目標(biāo) ,但圍繞JEP 330“單個(gè)文件源程序”的潛在功能存在一些問(wèn)題。為了支持Unix風(fēng)格的shebang ,在OpenJDK jdk-dev郵件列表上引起了廣泛的討論。 這場(chǎng)“激烈的討論”導(dǎo)致Mark Reinhold對(duì)JEP 330 的審查期增加了一周 (現(xiàn)已于5月31日結(jié)束),以允許就針對(duì)JDK 330的JEP 330進(jìn)行進(jìn)一步的討論。

盡管對(duì)于是否應(yīng)該添加shebang支持仍存在一些分歧 ,但似乎共識(shí)已轉(zhuǎn)移到一項(xiàng)提案,以明確區(qū)分常規(guī)的獨(dú)立于平臺(tái)的Java源代碼文件(以擴(kuò)展名.java結(jié)尾的文件)和新的。 JEP 330“可執(zhí)行”平臺(tái)特定的“單文件源代碼程序”。 明顯的區(qū)別是值得注意的,因?yàn)樗试S將Shebang表示在后者中(JEP 330可執(zhí)行平臺(tái)特定的單文件源代碼程序),而不能在前者中使用(我們所使用的傳統(tǒng)Java平臺(tái)無(wú)關(guān)的源代碼)。都習(xí)慣了)。

在此討論中, 喬納森·吉爾斯 ( Jonathan Giles)的一條消息指出“不想更改JLS或javac的各種原因”,并指出“ shebang腳本是在某些(但不是全部)平臺(tái)上定義的可執(zhí)行格式,”指出“創(chuàng)建shebang腳本通常不只是在文件中添加第一行”,還闡明了明確區(qū)分傳統(tǒng)Java源代碼和JEP 330可執(zhí)行Java腳本的概念:

雖然將文件重命名為命令友好名稱是可選的,但也希望將其重命名。 例如,名為“ HelloWorld.java”的源文件可能被安裝為“ helloworld”。 而且,盡管JEP描述了使用`java HelloWorld.java'執(zhí)行小型單文件程序或僅使用`helloworld`作為平臺(tái)特定的shebang腳本執(zhí)行的用例,但似乎并沒(méi)有常見(jiàn)的用例執(zhí)行`HelloWorld.java`。 因此,如果通常將shebang腳本重命名為命令友好的名稱,則將無(wú)法使用“ javac helloworld”直接對(duì)其進(jìn)行編譯,因?yàn)檫@對(duì)于Javac而言不是有效的命令行。 這降低了使javac忽略shebang行的任何潛在便利。

由于Java源文件與特定于平臺(tái)的可執(zhí)行腳本是不同的工件,因此有區(qū)別地對(duì)待它們是有道理的,并且由于我們不想更改Java語(yǔ)言以支持shebang行,因此建議修改JEP和實(shí)現(xiàn),以便shebang絕不會(huì)從Java源文件(即以`.java`結(jié)尾的文件)中刪除行。 這就避免了處理Java源文件的工具生態(tài)系統(tǒng)必須處理諸如shebang行之類的任意工件的問(wèn)題。 所做的更改仍將允許直接執(zhí)行Java源文件(如java HelloWorld.java),以及執(zhí)行shebang腳本(如helloworld)。

下表總結(jié)了與每種“ Java”文件樣式相關(guān)的特征和優(yōu)點(diǎn)。

項(xiàng)目 傳統(tǒng)Java源文件 JEP 330可執(zhí)行單文件源代碼程序
內(nèi)容描述
/名稱
“ Java源文件(以.java擴(kuò)展名結(jié)尾) ” “ 可執(zhí)行腳本(不使用[ .java ]擴(kuò)展名。) “
“ Java源文件 ” “ shebang腳本 “
“ Java源文件 ” “ 包含Java代碼的腳本 ”或“ 特定于平臺(tái)的可執(zhí)行腳本 ”
“ Java源文件,由以'.java'結(jié)尾的文件名標(biāo)識(shí) ”
舍邦 不支持 支持的
平臺(tái) 獨(dú)立 依附
顯式編譯 沒(méi)有

喬納森·吉本斯(Jonathan Gibbons)總結(jié)了JEP 330的意圖 :“這里的總主題不是將Java演變?yōu)槟_本語(yǔ)言,而是使諸如Java啟動(dòng)器之類的工具更友好地支持在可執(zhí)行文本文件中使用Java源代碼,以便減少運(yùn)行簡(jiǎn)單程序的儀式。”

討論還涵蓋了其他方法,例如binfmt_misc (另請(qǐng)參見(jiàn)此處 ),Unix風(fēng)格的“ here文檔 ”( 此處定義文檔 ),“ 在Java啟動(dòng)器中支持'-'STDIN源 ”以及將Linux更改為支持“ la”。 -la-bang: //! 。

討論中另一個(gè)有趣的旁注是Brian Goetz 對(duì)JEP 330如何達(dá)到其當(dāng)前狀態(tài)的“回顧” 。 他談到了導(dǎo)致人們認(rèn)識(shí)到的“無(wú)數(shù)小時(shí)聆聽(tīng)人們對(duì)Java的關(guān)注”,“人們表達(dá)關(guān)注的一個(gè)普遍主題是'激活能量'; 在Java中做簡(jiǎn)單的事情需要太多的固定工作。” Goetz指出,JShell和JEP 330是解決此問(wèn)題的許多可能方法中的兩種,并且這兩種方法是在考慮“成本(在多個(gè)維度上)”后做出“關(guān)于哪種方法影響最大的主觀選擇”之后從眾多方法中選擇的。做出這些選擇時(shí)的收益和利益(或我們對(duì)收益的主觀估計(jì))。”

因此,“常規(guī)Java”源代碼文件將不會(huì)得到shebang的支持,但這并不是什么大問(wèn)題,因?yàn)樗鼈兇_實(shí)不需要它們。 但是,用Java編寫的基于JEP 330的基于平臺(tái)的依賴于可執(zhí)行文件的單文件腳本似乎將在第一行中支持可選的shebang。 我們可能會(huì)在本周四之前知道JEP 330是否將針對(duì)JDK 11。

翻譯自: https://www.javacodegeeks.com/2018/05/shebang-coming-java.html

總結(jié)

以上是生活随笔為你收集整理的Shebang来Java了吗?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。