日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
聊聊什么是JavaEE?

本文轉(zhuǎn)載自微信公眾號「BAT的烏托邦」,作者YourBatman。轉(zhuǎn)載本文請聯(lián)系BAT的烏托邦公眾號。

正文

本專欄第一篇文章就介紹了從Java EE到Jakarta EE的發(fā)展史,對它有了宏觀的認識?,F(xiàn)在就以現(xiàn)在最常用的Java EE 8為例,詳細掰扯掰扯它到底是什么,在開發(fā)中扮演什么角色。

什么是Java EE?

有了對JSR標準規(guī)范的認識,再來看Java EE就簡單得多得多得多得多了。

JSR、JCP的詳解參見:- 阿里巴巴入選的JCP最高執(zhí)行委員會,何方神圣?

Java EE是由一系列抽象的標準規(guī)范所組成,是針對企業(yè)級軟件開發(fā)中普遍面臨問題的一套解決方案。簡而言之:Java EE = N個JSR正式規(guī)范 + 一個運行環(huán)境。Java EE是代碼的形式展現(xiàn)出來,而JSR只是文檔。

下定義從來都不是理工科同學(xué)的長項,但理解性分析是的。這是我根據(jù)自己的理解畫的一張圖,用來嘗試解釋Java EE是什么這個問題,如若對你有用你可保存、分享此圖。

上面的框框就代表著Java EE平臺,開發(fā)人員書寫的所有Java代碼都在此容器內(nèi)運行(Client端除外),所以也經(jīng)常能聽到Java EE容器這樣的術(shù)語。容器是個非常抽象的概念,不要背誦概念而應(yīng)理解其作用。

既然是容器,那么就有能力攔截程序代碼之間的調(diào)用,實現(xiàn)AOP的效果。另外我們還可以隨時的向容器里加入新組件,如安全Security、消息系統(tǒng)JMS、分布式事務(wù)JTA...

值得關(guān)注的是,B/S模式只能通過協(xié)議與Java EE平臺交互,而Java Client(也就是C/S模式)有更強的能力:

  • 可“繞過Web容器”直接調(diào)用Bean
  • 可直接操作DB數(shù)據(jù)庫

怎么理解?舉個例子就明白了:Eclipse/IDEA都是使用Java語言寫的客戶端,它們也基于Java EE平臺構(gòu)建,因為Client和Server同在一個JVM進程內(nèi),所以直接調(diào)用Bean、數(shù)據(jù)庫是完全可以做到的。

Java EE的參考實現(xiàn)

Java EE包含有一組JSR規(guī)范 + 運行環(huán)境,每個JSR是有一個參考實現(xiàn)的,單個的程序并不能跑起來,需要有一個Java EE的實現(xiàn)進行支撐,那么它是否有官方參考實現(xiàn)呢?

答案是:有的!Java EE的參考實現(xiàn)叫做Application Server,翻譯為應(yīng)用服務(wù)器,它是Java EE的完整實現(xiàn)(注意:是完整實現(xiàn)),可以將任意程序部署在此。Java EE的參考實現(xiàn)是:Glassfish Application Server。除此之外,流行的還有TomEE、WebSphere、WebLogic、JBoss等等。

Java EE企業(yè)版供應(yīng)商

所謂的供應(yīng)商,就是自己實現(xiàn)了Java EE規(guī)范,**并且得到官方認證(也就是JCP)**的Application Server。

我在Oracle官網(wǎng)找來一張圖,顯示了支持Java EE 8的供應(yīng)商產(chǎn)品(完整實現(xiàn),并非只有web profile):圖片

  1. GlassFish
  2. WebSphere
  3. Wildfly
  4. JBoss
  5. Weblogic
  6. InforSuite AS(東方通,國產(chǎn))
  7. TongWeb(中創(chuàng)軟件,國產(chǎn))
  8. BES(寶蘭德,國產(chǎn))

共8個,這個數(shù)字在Java EE 7時更多,為10個(國產(chǎn)的只占1個)。

定義為JCP的整個過程好處是:多家公司能夠依賴符合規(guī)范的技術(shù)。這樣就能夠保證如果某個供應(yīng)商開始提供不良服務(wù)或破產(chǎn),公司可以保證轉(zhuǎn)移到其他供應(yīng)商不會造成太多麻煩,比較平滑的遷移。

再回到上面那張Java EE的圖,從圖中可以看到Java EE自己其實就有兩個容器:Web容器和EJB容器。

Web容器

Web容器是Java EE環(huán)境的一部分,專用于運行那些Web組件,如:pages網(wǎng)頁、JSP、Servlet、JSTL及其他Java EE Web組件。Web容器可通過標準Web連接到Java EE應(yīng)用程序的客戶端進行交互協(xié)議,當然更可以使用Http、WebSocket等公開協(xié)議。

在Java EE中,純Web容器一般只有三種:Tomcat、Jetty、Undertow。其它的如Glassfish、Weblogic等屬于應(yīng)用服務(wù)器,包含了Web的功能。

Web容器/服務(wù)器有著比應(yīng)用服務(wù)器更加輕量級的特點,隨著Spring成為主流技術(shù)也讓輕量級的Web容器更加受到青睞,最具代表性的當屬Tomcat。

Tomcat是Apache軟件基金會的Jakarta 項目中的一個核心項目。由Apache、Sun 和其他一些公司及個人共同開發(fā)而成,由于有了Sun的參與(現(xiàn)在Oracle)和支持,Tomcat總是能最及時的支持到最新版的Servlet/JSP技術(shù)規(guī)范。

EJB容器

EJB容器是Java EE環(huán)境的一部分,專用于運行Java EE應(yīng)用程序的應(yīng)用程序邏輯部分。EJB是包含和操縱Java EE應(yīng)用程序的核心數(shù)據(jù)結(jié)構(gòu)的Java類。

發(fā)現(xiàn)沒,Spring容器的功能跟它很類似。然后EJB容易由于它過重的設(shè)計,現(xiàn)在已經(jīng)敗下陣來,成為了Spring的天下。

值得強調(diào)的是:Tomcat是不包含EJB容器的(無Java EE運行環(huán)境),不過他“哥哥”Tom EE有,是個完整的應(yīng)用服務(wù)器。

小插曲:TomEE和Tomcat的區(qū)別

它倆是兄弟,技術(shù)上同宗。

Tomcat有且僅是一個Web服務(wù)器,并且也沒有對Java EE中web技術(shù)全部實現(xiàn),而是只有Servlet、JSP等實現(xiàn),所以非常的輕量級,對標Jetty、Undertow等。因為現(xiàn)在是Spring技術(shù)棧大行其道,所以采用Tomcat + Spring的開發(fā)、部署方式成為了現(xiàn)在的主流。

TomEE擴展了Apache Tomcat,經(jīng)過Apache Jakartaee9.1認證的應(yīng)用服務(wù)器。不過值得注意的是:它不是一個Full全功能的應(yīng)用服務(wù)器,而是個Web Profile的

TomEE官網(wǎng):https://openejb.apache.org

Tomcat官網(wǎng):https://tomcat.apache.org

曾經(jīng)以為Tomcat不包含EJB運行環(huán)境是不足走不遠,沒想反倒輕便成了最大發(fā)展優(yōu)勢。

Java EE三層技術(shù)結(jié)構(gòu)

首先,我們知道Java EE應(yīng)用程序是由組件構(gòu)成的,它是基于組件開發(fā)的。每個組件都代表著一個獨立的功能單元,它們通過相關(guān)類、容器組織在一起,和其它組件進行交互。組件與組件之間是相互獨立的、可插拔的,互不影響。它們分工協(xié)作,在各自的JSR規(guī)范指導(dǎo)下并行開發(fā),這就很容易實施分層結(jié)構(gòu)。

我們一般在設(shè)計一個系統(tǒng)時會將其設(shè)計為三層:

  1. 表示層(Web層):用戶界面
  2. 中間層(Service層):業(yè)務(wù)邏輯
  3. 數(shù)據(jù)層(Dao層):數(shù)據(jù)存儲、訪問獲取

Java EE包含一系列組件(規(guī)范),在不同的層級中均有一個/多個組件應(yīng)用于此。

1、表示層

Java EE表示層使用的JSP技術(shù),通過Html + JavaScript + Java腳本方式展示頁面。相關(guān)的組件還有EL表達式、JSTL等。

2、中間層

Java EE中間層主要是Servlet技術(shù),用于接收客戶端(比如頁面)請求并且給與響應(yīng)。相關(guān)的組件還有EJB、JSF框架等。

3、數(shù)據(jù)層

Java EE數(shù)據(jù)層有JDBC、JNDI、JPA,用于對關(guān)系型數(shù)據(jù)庫進行訪問。其中JDBC屬于傳統(tǒng)的數(shù)據(jù)庫連接方式,也是最為底層的技術(shù)。而JNDI、JPA等只是基于它做了擴展、API對使用者更加友好。

除了三層涉及到的技術(shù)組件外,還有服務(wù)相關(guān)、系統(tǒng)集成、遠程通信相關(guān)的,如:Web Service、JAX-WS技術(shù)等等。

附:Java EE 8新特性

Java EE 8在Java EE 7的基礎(chǔ)上繼續(xù)改進應(yīng)用程序所需的API和編程模型,并添加了社區(qū)中反饋很多的特性。此版本持續(xù)簡化API,新增的功能主要有:

  • 支持HTTP/2的Java Servlet 4.0:與時俱進支持到了http/2協(xié)議
  • API增強的JSON支持:增加了類似Jackson那樣的自動綁定功能
  • 新的REST反應(yīng)式客戶端API:jersey-rx-client-rxjava2提供實現(xiàn)
  • SSE事件支持
  • 支持Java 8的新特性:函數(shù)式編程、Stream流式編程、JSR 310日期時間等

you know,Java EE 8之后就沒有以后了,交給Eclipse基金會打理,改名為Jakarta EE。參考文章:從Java EE到Jakarta EE,企業(yè)版Java的發(fā)展歷程

接手過來的Jakarta EE發(fā)了三個版本(Jakarta EE 8、9、9.1),不過一直在炒冷飯,可認為沒有增加任何新功能。

總結(jié)

Java EE作為“曾經(jīng)”的王者,設(shè)計上有非常多的可取之處,畢竟是那么多大師的智慧所得。

本文我嘗試為你介紹什么是Java EE這個原始問題,通過圖示展示出Java EE所處的位置。Web容器和EJB容器均屬于Java EE技術(shù)體系,但是是有區(qū)別和側(cè)重點的。

Java EE作為一套技術(shù)規(guī)范,其商業(yè)實現(xiàn)產(chǎn)品有多種,單單咱們國產(chǎn)的Java EE應(yīng)用服務(wù)器實現(xiàn)就有3個,豈乃國貨之光?這種一種規(guī)范 + 多種實現(xiàn)是咱們程序員的老套路了,該方式對企業(yè)非常友好,當遇到某供應(yīng)商產(chǎn)品服務(wù)不靠譜的話遷移起來就不用太費勁了。


新聞名稱:聊聊什么是JavaEE?
網(wǎng)址分享:http://www.dlmjj.cn/article/cdpiddd.html