java ee技术_Java EE 6与Spring Framework:技术决策过程
java ee技術
在過去的幾個月中,我們經歷了這個決策過程:為Java平臺上的企業開發選擇哪種技術堆棧? 有多種選擇。 但是,我們深入討論的是:純Java EE 6堆棧與帶有Java EE的Spring。以下博客文章總結了當您考慮這些技術堆棧選項之一時發現的有趣的關鍵問題。 我不會試圖說服某人選擇兩者之一。 這對我來說很重要,我想分享的是決策過程和關鍵論點。
什么是“標準”? 在我們的討論中,“標準”一詞非常重要,特別是對于執行管理層而言。 我認為這使決策者對保護投資充滿熱情。 但是什么是標準,在Java生態系統中我們可以認為什么是標準? Codecentric AG的創始人兼董事會成員Mirko Novakovic寫了一篇非常有趣的博客文章,名為:“ Java EE vs Spring。 或者:什么是標準? ” Mirko指出以下內容:- 對他來說,標準是建立,接受和主導的東西
- 遵循此定義,僅將某些Java EE API(例如Servlet規范)視為標準,因為它們已廣泛應用于Java生產技術領域
- 他過去曾說過,某些Java EE標準API幾乎沒有投資保護,例如EJB規范(過去十年中大量API發生了變化)
- 他還聲稱,JPA和JSF的1.0版本不足以滿足大型企業開發項目中的技術要求。
- 他將CDI視為另一個年輕的標準,它需要證明其長期穩定性,然后才能被視為Java企業應用程序中的標準IOC機制。
- 因此,他目前的結論是:Sping和Hibernate仍然是Java企業開發的“實際”標準。
這些階段的經驗教訓進入了后續的API版本,因此,API有時會變得不穩定。 增加了功能,減少了采用,簡化的API等。 如果客戶希望遵循該標準,那么這種動蕩且不確定的風暴階段會導致遷移成本增加。 即使2.0版本向下兼容,使用不錯的新功能代替許多變通辦法也意味著重構工作。 如果該API并非沒有問題,兼容的API更改會強制執行遷移工作,則別無選擇。 過了一會兒,但是API變得成熟,這些重構,成本下降,該API進入stabalization的階段。
一個成熟的 API始終具有較低的遷移和重構成本,因為未應用任何基本更改。 一段時間后,不再使用某種技術,因為它已被其他創新的API所取代。 技術已死了–這些API不再投資,社區 停止了該項目。 圖1顯示了理想的API生命周期。
| 圖1:理想的Java EE API生命周期 |
該包裝器用作構建業務應用程序的API。 包裝器API可以是Spring框架,也可以是您自己的一組自定義框架API。 這樣,當我們分別移動到新的應用程序服務器版本或Java EE版本時,進行所需的更改將更容易,更有效。 包裝器吸收了Java EE API的更改,使我們免去了更改50個應用程序的負擔。 相反,我們只在中央位置進行一次更改。 我們的開發小組不受應用程序服務器升級的影響。 OE供應商和Java Communication Process(JCP)不會影響我們的決定和努力。
基礎架構的生產就緒性(或:現在還是以后?) 您的應用服務器是否有生產就緒版本,可以實現新的Java EE 6標準? 在我們的情況下(IBM WebSphere),Z系列上沒有任何Java EE 6版本。 因此,如果我們還不能在生產環境中運行應用程序,那么思考Java EE 6幾乎沒有任何意義。 您必須決定是現在還是以后使用某種技術。 例如,作為IOC機制的CDI(JSR 299/330)對于大型應用程序還不夠成熟。 因此,你可能要選擇像Spring框架或谷歌吉斯的替代品來完成這項工作,如果你想現在已經送到您的客戶端(效益分析)值。 投資保護(或:兼容性低下) 我已經在前面提到過:直接將Java EE API用于許多生產應用程序(可能是50或100),可能會降低設計和實現決策的靈活性。 在研究投資保護時,同樣的論點也適用。 對我而言,投資保護主要涉及在特定時期內較低的技術(重構)成本。 您想花費金錢來實現業務價值,您想專注于實現業務功能。 你不想花費在生活必需品技術的精力(例如,發布版本升級,平臺遷移,開發自定義的API)。 為了實現這一點,選擇正確的開發API至關重要。 根據我們的生命周期模型,一個不錯的選擇是在生命周期的長期成熟階段開始時選擇API。 這降低了重構成本,從而增加了投資保護。 我們已經解釋了Java EE不僅提供成熟的API。 例如,CDI在其JSR 299/330版本中還不成熟。 解決該難題的一種可能的方法是組合來自不同來源的API,您可以為業務應用程序配置自己的API集。 如果您使用自己的一組 真實的標準API,則可以保護您的投資。我說的是您自己的一套,因為您可能會使用混合技術堆棧 (圖2):一些成熟的Java EE API(例如Servlet,JPA 2.0),一些實際標準(例如Spring IOC)和一些專有的自定義API作為圍繞Newby Java EE API的包裝而開發的。 最重要的是,這些API支持生產應用程序的低兼容性 。 當您要移至新的Java EE 應用程序服務器版本 時,必須找到一組API,這些API可使您免于繁重的遷移工作 。
| 圖2:用于Java企業開發的混合技術堆棧 |
答案是:因為有人有勇氣使用它,而其他人(包括Java EE)則緊隨其后。 “標準”是社區中很大一部分用來在生產中運行大型應用程序的工具。 標準不一定是Java EE標準。 過去,Java EE標準遵循事實上的標準框架(例如Hibernate,Spring)。 在開源框架中,任何新技術很可能首先達到一定的成熟度。 然后它們將成為Java EE標準。 這是因為至少在最近十年中,絕大多數Java技術創新都源于社區。
參考: Java EE 6與Spring Framework:我們JCG合作伙伴 Niklas的技術決策過程。
相關文章 :
- 從Spring到Java EE 6
- Java EE6 CDI,命名組件和限定符
- Java EE6裝飾器:在注入時裝飾類
- Spring Data JPA的持久層
- Spring MVC3 Hibernate CRUD示例應用程序
翻譯自: https://www.javacodegeeks.com/2012/01/java-ee-6-vs-spring-framework.html
java ee技術
總結
以上是生活随笔為你收集整理的java ee技术_Java EE 6与Spring Framework:技术决策过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安卓狂野飙车8闪退怎么办(安卓狂野飙车8
- 下一篇: 如何使用Java,Maven,Jetty