Java EE的未來

http://www.infoq.com/cn/articles/enterprise-java-opinion

作爲InfoQ下一年編輯關注點審覈工作的一部分,我們挑選了Java作爲深入探討的主題。我們借用了Geoffrey Moore在他的經典書籍《跨越鴻溝》裏的所描述的模型,這個模型貼切地概括了技術的生命週期,它包含五個階段:創新者(Innovators)、早期採用者(Early Adopters)、早期大衆(Early Majority)、後期大衆(Late Majority)和落後者(Laggards)。Moore的模型在早期採用者和早期大衆兩個階段之間引入了一個大缺口,早期採用者是真正願意冒着風險使用新技術的人,而早期大衆在確認新技術能夠提升生產效率之前是不會採取行動的。

從下圖可以看出Java技術的整體趨勢:

我們可以看到,Java SE仍然保持着它的健康度,它仍然是一個被廣泛使用的企業計算編程語言。Java 9有望在今年夏天發佈,屆時將帶來Jigsaw和JShell REPL。而Java 10的開發工作已經在進行當中。我們相信Java仍然是構建大規模企業應用的一個很好的選擇,最起碼現在人們不希望Java走出生產環境。

說到基於JVM的編程語言,不得不提到Scala和Clojure。不過從Scala的受歡迎程度來看,它的採用率或許已經達到了最頂峯。而在Java 8推出Lambda功能時,Scala的受歡迎程度有輕微的下降。我們認爲Scala還未能跨越Moore模型裏的“鴻溝”,所以它仍然處在早期採用者階段。我們不認爲它會達到大衆階段。

Clojure一如既往的好,作爲Python的有力競爭者,面向數據的特性讓它處在一個很有利的位置上,不過它不像是一門會被廣泛採用的語言。

作爲Java之外的選擇,Groovy仍然是很受歡迎的腳本語言,同時,JetBrain的Kotlin似乎在Android開發方面爲自己找到了一個穩固的位置,不過這兩門語言都無法動搖Java的統治地位。

可以說,Java SE形勢一片大好,但對於Java EE來說卻不是如此。我們在考慮要不要把Java EE放入“落後者”這一類,不過最近的一些跡象表明,它應該可以被放在後期大衆裏,這要歸功於Java EE底層的那些技術。jClarity的聯合創始人Ben Evans,同時也是InfoQ的編輯,他說:

我不得不說,Java EE是一個正在消褪的品牌,不過它的底層核心技術讓情況看上去沒有那麼糟糕。

另一位編輯Chris Swan,同時也是CSC的CTO,他說:

Java EE有一些重要的規範,它們很有用。EJB作爲Java EE的心臟,它把Java應用服務器推向了企業。Spring去掉了EJB的複雜性,“EE”變成了“在Java應用服務器上運行Spring”的代名詞。傳統的應用服務器市場(由幾個大廠商所統治)正在被PaaS所代替(因爲你不需要整套臃腫的應用服務器就能運行Spring應用),而企業對服務器廠商的“綁架”行爲深感厭惡,同時PaaS提供商提供了更具競爭力的運營能力,從而加劇了這種情況的發生。

InfoQ之前報道過Gartner對技術走勢的研究,Gartner在這方面比我們做得更爲深入,而最近Gartner再次發表其觀點,認爲“Java EE和其它三層架構的框架,比如ASP.NET”正在走向衰退:

數字信息業務要求應用平臺提供新的特性和能力,而Java EE沒能趕上這趟班車。
負責應用基礎設施現代化的領導者們應該想辦法應對Java EE的衰退問題。
到2019年,只有不到35%的新應用會被部署在Java EE應用服務器上。

不到35%,也就是差不多三分之一,不過我們認爲儘管Java EE應用服務器還會存在,但只會被用於運行遺留的系統。

不過對於Java來說,還是有一些好消息的。一些強有力的框架爲構建微服務提供了更多的選擇,Pivotal在這方面一路領先,它爲微服務提供了一整個技術棧。Spring Boot內嵌了Tomcat、Jetty或Undertow,可以方便快速地用它來構建獨立運行的Spring應用。Spring Cloud由美國的Netflix和中國的阿里巴巴共同支持,爲Spring Boot加入了很多強大的雲組件,比如服務發現、外部配置、迴路斷路器和負載均衡。Pivotal Cloud Foundry、IBM的Bluemix和SAP的HANA爲此提供了商業支持。

除此之外,還有很多其他的可選方案。其中有三個值得關注,它們分別是Lightbend的Lagom、Eclipse Vert.xRatpack,其中Lagom是基於Play和Akka的。而Akka所使用的actor模型也非常有意思。

我們注意到,Oracle曾經聲稱要在今年的Java EE 8裏將Java EE帶入雲端,並具備基本的微服務能力,不過Oracle並未透露更多相關細節。Java EE 9有望在2019發佈,不知道在未來的這一兩年,Java世界能否發生一些不一樣的變化。

MicroProfile.io最近加入了Eclipse Foundation,廣大的Java EE社區把工作轉向了MicroProfile.io。

以上觀點並不代表我們將對Java EE開發失去興趣,或者說它將會消失。我們只是認爲,對於構建現代化的系統,我們總是會有更好的選擇。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章