JavaEE死了

banq發表於2016-11-11
當java出世時,那些大玩家像IBM、BEA、Oracle等看到了一個非常好的賺錢機會,因為Java是一個偉大的Web程式語言。但在程式語言上怎麼能掙大錢呢?答案是置於其上建立伺服器並使其複雜化,這樣大公司才會花大價錢購買。這就是為什麼我們有JEE的JSR規範,WebLogic,WebSphere和其他伺服器。

大型應用程式包部署在這些伺服器上會跑得太慢了,太多記憶體損耗。在一個容器內進行開發和除錯是一個噩夢。

由於資源使用率太高,你無法用一個合理的價格找到公共主機託管公司來長時間支援java執行。你想用java構建網站,你必須花大價錢租用主機甚至你可能用aServlet容器。

2003,Rod Johnson釋出了Spring框架,無需EJB就可以使用Ioc和POJO開發。由此帶來生產力的增長是巨大的,很多開發者開始使用Sring,並將J2EE EJB丟擲窗外。應用伺服器廠商看到這種趨勢,他們在設計JEE5時就注意提高生產力和減輕使用者的痛。不幸的是,今天的Spring框架還是像JEE容器那樣基於JEE 的servlet容器的設計,這是一個十年前沒有考慮到多核和NIO的設計。

在這段時間內,PHP飛速發展。它使用較少的記憶體和資源,被眾多主機託管公司支援。一些建立在PHP的CMS平臺 如wordpress,Drupal等把很多開源開發者變為PHP程式設計師。儘管php仍然是最流行的語言,它還是有它的缺點。它效能慢且很難使它具有可擴充套件性

2009年Ryan Dahl引入了Node.js支援非同步,非堵塞事件驅動I/O提高響應率,相比JEE叢集有效利用了單個伺服器的吞吐能力。js是一個很好的設計,但也有其侷限性。很難規模化,很難與現有的遺留系統的整合。

2014年一個新的成員Undertow來到城裡,它是基於非阻塞java伺服器。從techempower.com測試看出,它在8000美元的戴爾伺服器中支援每秒幾百萬請求,而使用相同的測試用例,谷歌在叢集下也只能支援一百萬個請求。Undertow有輕量級的核心,1mb大小,簡單的嵌入式伺服器,使用少於4MB的堆空間。

使用新的Undertow為核心,我們已經建立了輕量java框架,以容器化微服務為目標。它支援OpenAPI設計驅動,提供執行期間的安全和驗證。

JEE供應商
幾年前,Oracle和IBM花了數十億美元開發應用伺服器,這些伺服器(WebLogic、WebSphere)以數百萬美金出售給大公司,現在變得很難賣了,隨著微服務發展,應用伺服器更難賣了,這些伺服器主要用於單片整體型應用,難以管理。我工作過的一個應用有數以百計的ejb,每次稍有變化,就會花費45分鐘來構建和部署到WebLogic。

從客戶的角度來看,不值得購買這些伺服器的,你不得不花錢去升級你的應用伺服器舊版本。這些升級成本數百萬美元,加上新的應用伺服器的成本。

一些聰明的人開始疑問:為什麼我們需要部署到應用伺服器?為什麼我們需要包裝我們的應用為ear或war,而不是jar?為什麼我們不能打破大應用變成規模更小的獨立部署。

問題的答案是微服務。維基百科定義:“…一個軟體體系結構風格,複雜的應用程式都是由小而使用語言無關的API互相通訊的獨立過程組成1。這些服務都很小,高度解耦和重點是實現小的任務,便於系統構建模組化。”

而精衛越來越流行,很多廠商都試圖重新構建Web服務到微服務,這樣產品才能賣得出去。

大公司正在分解他們的大應用程式為較小的碎片,能夠單獨部署和更換。這些小的服務部署在雲上的Docker容器。在過去的幾年裡我一直為我的客戶在做這方面的工作。

jee is dead

[該貼被banq於2016-11-11 18:07修改過]

相關文章