這是來自jaxcenter組織的一個討論,談論了Java在無服務器浪潮沖擊下面臨的機會和挑戰。下面摘錄主要部分:
Spring推動者Pivotal有一個名為 Riff的函數即服務平臺,它是一個開源的、Apache 2許可的、函數即服務平臺,基于Kubernetes和剛剛宣布的KNative技術。
還有Spring Cloud Function,它能讓你編寫與任何一個函數即服務且與平臺無關的代碼,并使用適配器進行部署。Spring是以其注釋和POJO為中心的組件模型,意味著編寫函數就像在Java中一樣簡潔。它可以像一個類一樣簡單,一個方法返回一個`java.util.Function `實例。或者甚至只是一個實現`java.util.Function `的類。
當然,這樣的應用程序與Node.js相比有更多代碼行,并且啟動速度稍慢,它比同等的Go應用程序慢得多,但不是影響成為無服務器平臺的關鍵原因,無服務器是關于提高組織敏捷性; 比如我能以多快的速度發送電子郵件、調整圖像大小或運行報告以及響應觸發事件的作業?有了像Project Riff這樣的平臺,獲得結果會非常快!無服務器已經在重塑Java。
無服務器要求代碼按需立即啟動(冷啟動),因此 啟動時間非常重要,JVM的JIT編譯器針對長時間運行的系統進行了優化 ,隨著時間的推移,JIT將越來越多的代碼編譯為機器語言并引入 其他優化。
隨著更多內存增加成本,無服務器的內存消耗更為重要,Java的一些垃圾收集算法消耗了大量內存。這些問題是如此根本,以至于無法解決。但是,GraalVM會提前編譯代碼,以加工代碼并顯著縮短啟動時間,因此,Java將來似乎更適合無服務器!
為了在無服務器領域競爭,Java將不得不改善其啟動時間和占用空間。該領域正在開展工作,但在與其他語言的足跡和啟動時間競爭時還有很長的路要走。