幾天前,我在聽Java Spotlight Podcast的插曲85 。 在這次演講中, Bert Ertman和Paul Bakker討論了從Spring遷移到Java EE。 基本上,在他們的介紹中,他們說,如今,選擇Spring而不是Java EE是沒有意義的。 我們可以在他們的文章中閱讀:
花費了一段時間,但Java EE終于邁出了一步,成為了一種標準,輕量級,合適的解決方案,以應對主流企業應用程序空間中的絕大多數實際開發挑戰。 除了選擇標準外,您沒有任何其他理由。
在過去的幾個月中,我看到了很多想法相似的博客文章。 有些人贊揚Java EE,這是一件好事,而另一些人則只是貶低Spring。 Arun Gupta 的文章就是這種情況。 我對本文的第一個想法是“ Oracle可能真的很想寫這樣的巨魔……”。
我根本不是Spring傳播者,也不是Java EE討厭者。 相反,我已經大量使用Java EE 5兩年了,很高興看到Java EE最終成為Spring的優秀競爭對手。 我的目標不是在這里贊美Spring,而只是為了平衡“ Spring的仇恨者”的用語。
標準VS單一供應商解決方案
有標準好嗎?
您是否知道這句話“響應按照計劃進行的轉換”? 是的,這是敏捷規則之一。 有標準當然是好事,有多有余,是根本! 但是它有缺點。 如果有一天您對標準有疑問,而標準卻沒有涵蓋,那么您唯一的解決方案就是解決問題,動動手指,等待3年……
Spring和標準不兼容嗎?
一點也不! 這就是我不理解“這是標準”論點的原因之一。 Spring盡其所能提供標準的使用。 您可以自由使用JPA,CDI注釋等。我認為Spring更像是一個集成平臺,可以讓您使用所有Java EE技術以及Spring本身提供的一些其他功能。
我依賴SpringSource嗎? 并不是的…
如果明天SpringSource停止開發Spring,會發生什么? 我將繼續使用它……Spring Framework已獲得Apache 2.0許可,毫無疑問,社區將接替人們,并且一些新公司將為Spring提供支持。 即使沒有人這樣做,我也對Spring Framework的當前狀態感到滿意,為什么還要更改? 也許我會在3年后重新考慮它,屆時將發布新版本的Java EE…
如果明天我對Spring框架不滿意怎么辦? 如果我對Java EE不滿意,那將是一回事……我不再使用它了……
如果明天我對應用程序服務器不滿意怎么辦? 如果我對Java EE不滿意,那是同樣的事情……我改變了……除了使用Spring,我將有更多選擇(因為Spring適用于所有Java EE應用程序服務器以及其他諸如tomcat,jetty等服務器)。
春天一直是創新的,并將永遠是
我永遠不會忘記,Spring使Java Web開發的CDI變得容易和容易。 Java EE緊隨其后(三年后…)發布了JSR-299 。
Spring當前還提供了一些JavaEE根本無法提供的出色解決方案:
- Spring Data(對NoSQL世界特別好)
- Spring Social(糟糕…… JSR-357最近被拒絕…)
- Spring手機
- …
其中一些計劃在Java EE的下一版本的計劃中(是的,我們將在3年后推出!),而另一些仍未被考慮或被拒絕。
整合測試
Java的常見論點之一是,您不必使用模擬程序,由于Arquillian ,您可以進行容器內測試。 我絕對支持容器內測試,而不是模擬測試,并且Arquillian是一個很棒的工具。 無論如何,Arquillian非常適合Java EE,但不是Java EE! 沒有標準,因此您只能依靠單一供應商JBoss(redhat),這使得“這是標準”的論點毫無意義。 然后, 用Arquillian測試spring是不是不可能的……至少,即使它不是完美的,Spring的優點還是可以自己提供一些東西……
結論
我沒有將我的文章集中在Java EE平臺提供的增強上,也沒有集中在每種實現的不同功能上,這不是我的目標。 我仍然相信Java EE是一個非常好的產品,并且它最終已經成為一個重要的競爭對手。 但是當我讀到“ Spring在當時是革命性的……時,它的確是上一代的框架,甚至有人稱其為舊版 ”確實使我感到惱火。 我們怎么說呢? 也許只是發出嗡嗡聲……而且有效!
參考: Java EE 6 VS Spring 3:Java EE已經殺死了Spring? 沒門! 從我們的JCG合作伙伴 Tibo Delor在InvalidCodeException博客中獲得。
翻譯自: https://www.javacodegeeks.com/2012/07/java-ee-6-vs-spring-3-java-ee-has.html