解決Java啟動慢等長期痛點的Leyden專案已經啟動

banq發表於2022-05-21

本專案的最終目標是為了解決Java啟動時間慢、效能達到峰值的時間慢以及佔用空間大等長期痛點。

在討論徵集中,我建議我們通過在Java平臺和JDK中引入靜態執行時映象(static run-time images )的概念來解決這些痛點。
  • 靜態映象是一個獨立的程式,由一個應用程式和一個JDK衍生而來,執行該應用程式,而不是其他程式。
  • 靜態映象在它可以載入的類方面是一個封閉的世界。在執行時,它不能從映象之外載入類,也不能動態地建立類。

這個封閉世界的約束對Java的自然動態性施加了嚴格的限制,特別是對許多現有的Java庫和框架所依賴的執行時反射和類載入功能。不是所有的應用程式都適合這種約束,也不是所有的開發者都願意接受這種約束。

因此,我建議我們不要一開始就採用封閉世界的約束,而是採用一種漸進的、漸進的方法。

我們將探索一系列比封閉世界約束更弱的約束,並發現它們能帶來哪些優化。由此產生的優化幾乎肯定會比封閉世界的約束所帶來的優化要弱。然而,由於約束較弱,優化可能會適用於更廣泛的現有程式碼--因此它們對更多的開發者更有用。

我們將沿著這個約束譜系逐步開展工作,從小的和簡單的開始,以便我們能夠對Java平臺規範所需的變化有一個堅定的理解。當然,在這個過程中,我們將努力保持Java的核心價值,即可讀性、相容性和通用性。

我們將在很大程度上依靠JDK的現有元件,包括HotSpot JVM、C2編譯器、應用類-資料共享(CDS)和jlink連結工具。

從長遠來看,我們可能會接受完全的封閉世界的約束,以產生完全靜態的影像。然而,從現在到那時,我們將開發並提供漸進式的改進,開發人員可以儘早使用。

讓我們開始吧!

相關文章