日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

什么是JavaEE,什么是Spring

發布時間:2024/4/24 综合教程 35 生活家
生活随笔 收集整理的這篇文章主要介紹了 什么是JavaEE,什么是Spring 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者:大寬寬
鏈接:https://www.zhihu.com/question/268742981/answer/341770209
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

在回答題主的問題之前,我先要簡單介紹一下什么是JavaEE,什么是Spring。

JavaEE是一組建立在JavaSE之上的標準,解決企業級開發中的一系列問題。請特別留意,它僅僅是個標準,是對一系列接口的約定,眾多廠商圍繞這個標準做實現。如JBoss,WebSphere等。第一個版本的JavaEE 1.2在1999年被發布,到2017年的JavaEE 8,已經經歷了將近20年。

那么JavaEE都有哪些標準,解決了什么問題呢?我這里簡單列舉一下主要的標準:

Servlet:定義了如何處理Web請求,這個相信大家最熟悉
Java Server Faces:定義了如何使編寫Web界面
JAX-RS:定義了如何編寫RESTFul的接口
EJB:定義了如何編寫“企業Bean”
JPA:定義了如何編寫ORM和數據存取
JTA:定義了如何編寫事務相關的代碼
JMS:定義了如何編寫消息隊列程序
CDI:定義了如何編寫依賴注入
JAX:定義了如何編寫XML程序
JAX-WS: 定義了如何編寫基于XML的網絡服務,即SOAP
……

看到這些,你可能機會發現,你平時其實經常使用其中一些標準接口,即便你認為你在用Spring。

什么是Spring呢?Spring最早可以追溯到2002~2004年。在那幾年作者Rod Johnson出版了兩本書:“Expert One-on-One J2EE Design and Development“和“Expert One-on-One J2EE Development without EJB“,和最初幾個版本的Springframework。

早期的Spring定位于解決J2EE在實際使用上的一系列問題,因為JavaEE的API實在是太難用了。Rod估計是趟了不少大坑,于是總結了一套最佳實踐,并總結到了一套框架里。其中最重要的,就是所謂IoC(控制反轉)。

經過多年發展,Spring發布了很多組件:

spring-core:Spring的Bean的管理,控制反轉和程序上下文
spring-mvc: web開發中的model-view-controller
spring-data: 數據層訪問和封裝
spring-boot: spring全家桶自助配置和部署管理工具
spring-batch:一個簡單的批處理框架
spring-cloud:支持與許多云服務接口的整合
spring-security:認證和權限管理
……

spring中其實大量使用或者實現了JavaEE標準。比如spring-mvc是在servlet基礎之上的封裝。spring本身并不提供容器,而是支持使用任何支持servlet標準的容器(如tomcat,jetty等)。spring-data也實現了JPA,通過標準接口對進行CRUD等。

歸根到底Spring只是想更好的解決實際問題。JavaEE的實現做得好的就用,做得不好的用比較恰當的方式獨立實現或者封裝。俗稱“接地氣”。

見過不少人喜歡用“JavaEE vs Spring”來提問引戰。但是,由上面的介紹可以看到JavaEE和Spring并不對立。作為開發工程師,其實還是哪個能解決問題,生態好,支持好,成本低就用哪個。而且混著用也沒有什么大的問題。

隨著時間的發展,JavaEE已經越來越落后,這是由于它的體制造成的。JavaEE的制定是由幾大巨頭定期開會協商通過,發布。然后個大容器實現廠商跟進。但這樣太慢了。互聯網的發展速度已經遠不是這樣一個僵化的體制能夠適應的。反觀Spring相對就快速的多。Spring自己就是一家公司,覺得整個社區什么東西最前沿,最急缺就立刻響應去做了。比如,Restful剛流行,你是愿意等一年半載出JAX-RS標準,然后再出Jersey,才能用;還是選擇直接用Spring MVC直接就把事辦了?結果不言而喻。對解決問題的態度是二者目前境遇不同的主要原因。

最早期JavaEE是領導者,所有的技術廠商要想在這個圈子里混,必須跟著標準走。而Spring逐漸占據領導地位之后,JavaEE的一些標準反而要跟著Spring走。CDI就是一個很好的例子。Spring IoC是整個框架的核心。它解決了在Java中只能import類,卻import不了組件的問題。這個問題在js,python之類的環境中都是小菜一碟。但是Java中,如果沒有IoC,程序員就要花大量的時間寫new和set,組裝整個服務的引用關系(你不覺得這很不人道嗎?)。Spring流行之后,JavaEE在2009年才發布CDI標準。其樣子就是活脫脫的把Spring的Annotation換了個名字而已。

如果說未來的發展,我認為JavaEE早已經沒有了未來。JavaEE里那些做得很好的,或者和其他框架能夠很容易相融的標準繼續存在;那些被罵成翔的,比如JSF;或者一開始就沒有市場的,比如CDI,會成為Wiki上的一段段文字記錄。但,Spring也不一定好過。在Java體系內他也要面臨play,vert.x的沖擊;在體系外,它會受到其他語言環境的巨大壓力,如nodejs,python和go。說Spring靈活是相對于JavaEE而言。

無論標準、框架、服務,都是為了解決問題而存在,而不是如“多么的OO”,“多么的標準”,“多么的概念清晰“。哪個工具解決的好,解決的快,就用哪個。最近2~3年,docker+微服務的發展進一步的強化了這個現實。大量的新技術會隨著業務領域形成自己的生態。

這其實是好事,不是嗎?


https://www.zhihu.com/question/268742981

總結

以上是生活随笔為你收集整理的什么是JavaEE,什么是Spring的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。