暗錘Spring框架:雲原生時代中的Java危機 - JAXenter

banq發表於2019-11-20

Java的現狀也太難了,有些人甚至將其稱為“老式語言”。儘管它很受歡迎,但還是有一些抱怨。在我們這個新的雲原生世界中,為什麼Java還是需要發展?不斷髮展才能適應現代的雲原生,Java需要保持所有使其可靠的功能,同時還必須能夠在新的應用程式環境中執行。
不用擔心,當您聽到Java被描述為一種“老式”程式語言時,您並不是唯一一個感到陳舊的人。儘管Java自1995年問世以來,它肯定還不準備退休(或者說退休),並且繼續躋身TIOBE索引的頂級語言之列。 實際上,到目前為止,沒有其他語言如此流行。
但是,這並非沒有問題,包括有時過於笨拙以至於無法跟上某些新的程式語言,不夠敏捷和靈活到無法在這種新的容器世界中工作,並且與未編碼的應用程式並沒有真正的關係。
本文將討論社群可以做什麼來幫助該語言跟上現代應用程式開發趨勢,以確保該語言在新的雲原生程式設計世界中繼續佔有一席之地。

Java為什麼經受住了時間的考驗?
據說Java具有“文藝復興的時刻”,程式語言在不斷髮展。實際上,對新創新的需求如此之大,以至於釋出週期已縮短到每六個月一次。除了從未跌至TIOBE指數的第二位之外,SlashData預測到2019年底將有760萬名Java開發人員。

為什麼Java需要發展?
現代應用程式開發與Java之間的脫節之處在於,基於較新的程式語言構建的應用程式傾向於更輕量,敏捷和靈活,並且通常在容器中執行,而傳統上Java並沒有這樣的容器。
常見的抱怨包括:

  • Java太胖了,執行時環境通常包含從不使用的庫。這對於微服務體系結構來說並不是一個好兆頭,但是在使用Java應用程式解決更復雜的問題時確實可以使用。
  • 它仍然遵循“一次編寫,隨處執行”的原則,這意味著任何具有Java虛擬機器(JVM)的裝置都應該能夠成功執行Java應用程式(即無需對其進行更改)。儘管這通常是一個很好的功能,但在定位於使用容器時這些卻沒有那麼重要。
  • 與較新的應用程式相比,Java的啟動時間更長,這可以歸因於Java確實非常擅長解決複雜問題所需的一切,但在簡化過程方面仍有一些不足之處。
  • 庫太多,因此程式包太大,這會減慢啟動時間,並使Java應用程式的敏捷性降低。
  • 有人還說Java太冗長,更多現代語言可以用更少的程式碼來完成相同的事情。
  • Java是一種非常動態的語言,它是使它如此高效和敏捷的部分原因,但也會導致某些框架濫用動態功能,從而導致更長的啟動時間和較大的記憶體開銷。
  • 在併發和吞吐量更重要的情況下,它並不是處理事件驅動的體系結構的最佳裝備語言。Java解決此問題的計劃是透過Fibers(banq注:而不是React等庫包)。

為了不斷髮展以適應現代的雲原生應用程式,Java需要保持所有使其可靠的功能,同時還必須能夠在新的應用程式環境中執行。Java復興的部分原因是,開發人員開始意識到這一點,並正在盡其所能使Java現代化,同時又不會偏離該語言的已嘗試和真正的好處。這可以使數百萬當前的Java開發人員能夠擴充套件他們可以做的工作,而不必學習一種全新的語言並改變他們的工作方式。

Java在現代應用程式開發世界中
當我說現代應用程式開發時,我指的是像Kubernetes和Serverless這樣的環境,它們都依賴於將程式碼部署到生產中的容器,直到最近,Java都不相容。
長期以來,像Red Hat這樣的Java領導者都希望透過諸如Quarkus之類的計劃使其成為這些環境中的關鍵角色,Quarkus是為GraalVM和OpenJDK Hostpot量身定製的Kubernetes原生Java框架。透過為開發人員提供在統一的反應式和指令式程式設計模型中使用Java的能力,Quarkus的目標是使開發人員能夠在Kubernetes和無伺服器環境中工作而無需學習新的範例。它可以提供新的執行時效率,以嘗試解決當前使Java陷入困境的某些問題,包括更快的啟動時間,更低的記憶體利用率以及更小的應用程式和容器映像佔用空間。
透過Quarkus之類的框架,我相信Java將能夠更好地適應現代應用程式開發領域的需求,並且不僅會不斷髮展,而且還會不斷創新。因為這是關鍵所在–為雲原生Java創造通往未來的道路,並在此過程中將Java置於企業創新的中心。
 

相關文章