Java如何面對無伺服器的挑戰?

banq發表於2018-09-12
這是來自jaxcenter組織的一個討論,談論了Java在無伺服器浪潮衝擊下面臨的機會和挑戰。下面摘錄主要部分:

Spring推動者Pivotal有一個名為 Riff的函式即服務平臺,它是一個開源的、Apache 2許可的、函式即服務平臺,基於Kubernetes和剛剛宣佈的KNative技術。

還有Spring Cloud Function,它能讓你編寫與任何一個函式即服務且與平臺無關的程式碼,並使用介面卡進行部署。Spring是以其註釋和POJO為中心的元件模型,意味著編寫函式就像在Java中一樣簡潔。它可以像一個類一樣簡單,一個方法返回一個`java.util.Function <I,O>`例項。或者甚至只是一個實現`java.util.Function <I,O>`的類。

當然,這樣的應用程式與Node.js相比有更多程式碼行,並且啟動速度稍慢,它比同等的Go應用程式慢得多,但不是影響成為無伺服器平臺的關鍵原因,無伺服器是關於提高組織敏捷性; 比如我能以多快的速度傳送電子郵件、調整影像大小或執行報告以及響應觸發事件的作業?有了像Project Riff這樣的平臺,獲得結果會非常快!無伺服器已經在重塑Java。

無伺服器要求程式碼按需立即啟動(冷啟動),因此 啟動時間非常重要,JVM的JIT編譯器針對長時間執行的系統進行了最佳化 ,隨著時間的推移,JIT將越來越多的程式碼編譯為機器語言並引入 其他最佳化。

隨著更多記憶體增加成本,無伺服器的記憶體消耗更為重要,Java的一些垃圾收集演算法消耗了大量記憶體。這些問題是如此根本,以至於無法解決。但是,GraalVM會提前編譯程式碼,以加工程式碼並顯著縮短啟動時間,因此,Java將來似乎更適合無伺服器!

為了在無伺服器領域競爭,Java將不得不改善其啟動時間和佔用空間。該領域正在開展工作,但在與其他語言的足跡和啟動時間競爭時還有很長的路要走。

What does it take for Java to compete in the serve

相關文章