發(fā)布于:2021-01-07 17:22:55
0
189
0
甲骨文公司Java平臺(tái)小組的首席架構(gòu)師Mark Reinhold呼吁進(jìn)行討論,提出一個(gè)新項(xiàng)目,即Leyden項(xiàng)目,該項(xiàng)目將解決Java緩慢的啟動(dòng)時(shí)間,達(dá)到峰值性能的時(shí)間以及大型的長(zhǎng)期難題。腳印。它將通過(guò)向Java平臺(tái)和JDK引入靜態(tài)映像來(lái)實(shí)現(xiàn)此目的。讓我們仔細(xì)看看。
一個(gè)討論調(diào)用Java平臺(tái)組在甲骨文,馬克萊因霍爾德的首席架構(gòu)師發(fā)行,勾畫(huà)出一個(gè)新的項(xiàng)目,項(xiàng)目萊頓,這將解決Java的緩慢啟動(dòng)時(shí)間長(zhǎng)期的痛點(diǎn),慢的時(shí)候峰值的建議通過(guò)向Java平臺(tái)和JDK引入靜態(tài)映像來(lái)提高性能和占用大量資源。
Java中的靜態(tài)圖片
Reinhold將靜態(tài)映像描述為“從應(yīng)用程序派生的獨(dú)立程序,運(yùn)行該應(yīng)用程序,而沒(méi)有其他程序”,并稱(chēng)為“封閉世界:它無(wú)法從映像外部加載類(lèi),也不能在運(yùn)行時(shí)旋轉(zhuǎn)新的字節(jié)碼”時(shí)間?!?靜態(tài)映像并不適合每個(gè)人,但對(duì)于相關(guān)的用例,這些約束條件允許進(jìn)行構(gòu)建時(shí)分析,以刪除未使用的類(lèi)并識(shí)別可在構(gòu)建時(shí)運(yùn)行的類(lèi)初始化程序,從而減少了映像的大小及其啟動(dòng)時(shí)間。這些限制還允許進(jìn)行積極的提前編譯,從而大大減少了圖像達(dá)到峰值性能的時(shí)間。
靜態(tài)映像通常需要手動(dòng)配置以充分利用它們,但是對(duì)于小型嵌入式設(shè)備或基于云的應(yīng)用程序(例如微服務(wù)),這種耐心將通過(guò)大大改善的性能得到回報(bào)。
Leyden計(jì)劃
這個(gè)新項(xiàng)目將從過(guò)去的努力中得到啟發(fā),例如針對(duì)Java的GNU編譯器和GraalVM的本機(jī)映像功能。Reinhold寫(xiě)道:“ Leyden將為Java平臺(tái)規(guī)范添加靜態(tài)圖像,我們希望GraalVM能夠發(fā)展為實(shí)現(xiàn)該規(guī)范。然后,僅使用標(biāo)準(zhǔn)的,指定的靜態(tài)圖像功能的開(kāi)發(fā)人員將能夠在Leyden(在JDK中),Native Image(在GraalVM中)以及可能出現(xiàn)的任何其他兼容實(shí)現(xiàn)方式之間進(jìn)行切換,從而在編譯時(shí)間的權(quán)衡之間進(jìn)行選擇,啟動(dòng)時(shí)間和圖片大小?!?/span>
Reinhold在Twitter上表達(dá)了他對(duì)GraalVM團(tuán)隊(duì)為萊頓計(jì)劃做出貢獻(xiàn)的熱情。
但是,其目的不是通過(guò)將GraalVM的本機(jī)映像代碼合并到JDK中來(lái)實(shí)現(xiàn)Leyden。相反,Leyden將基于現(xiàn)有的JDK組件(例如HotSpot JVM,jaotcAOT編譯器,應(yīng)用程序類(lèi)數(shù)據(jù)共享和jlink鏈接工具)構(gòu)建。
自從該提案于4月27日星期一發(fā)布以來(lái),最初的反饋一直相當(dāng)積極,盡管有些人提出,在Java平臺(tái)規(guī)范中實(shí)現(xiàn)靜態(tài)映像可能會(huì)很困難。
Leyden項(xiàng)目將作為一系列涵蓋多個(gè)Java版本的JEP交付。
作者介紹
熱門(mén)博客推薦