成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

聊聊什么是Java EE?

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

[[412897]]

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

正文

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

什么是Java EE?

有了對JSR標(biāo)準(zhǔn)規(guī)范的認(rèn)識,再來看Java EE就簡單得多得多得多得多了。

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

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

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

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

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

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

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

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

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

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

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

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

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

我在Oracle官網(wǎng)找來一張圖,顯示了支持Java EE 8的供應(yīng)商產(chǎn)品(完整實(shí)現(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個(gè),這個(gè)數(shù)字在Java EE 7時(shí)更多,為10個(gè)(國產(chǎn)的只占1個(gè))。

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

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

Web容器

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

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

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

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

EJB容器

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

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

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

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

[[412898]]

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

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

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

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

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

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

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

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

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

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

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

1、表示層

Java EE表示層使用的JSP技術(shù),通過Html + JavaScript + Java腳本方式展示頁面。相關(guān)的組件還有EL表達(dá)式、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ù)庫進(jìn)行訪問。其中JDBC屬于傳統(tǒng)的數(shù)據(jù)庫連接方式,也是最為底層的技術(shù)。而JNDI、JPA等只是基于它做了擴(kuò)展、API對使用者更加友好。

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

附:Java EE 8新特性

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

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

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

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

總結(jié)

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

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

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

 

責(zé)任編輯:武曉燕 來源: BAT的烏托邦
相關(guān)推薦

2021-02-05 08:42:21

云原生系統(tǒng)方式

2022-03-18 10:43:12

WebSocketHTML5TCP 連接

2020-06-17 07:40:26

監(jiān)控系統(tǒng)zabbix

2021-07-20 08:03:43

微服務(wù)應(yīng)用程序

2022-02-15 19:50:18

加載器JAVAJDK

2020-07-02 14:30:12

SDNSDON交換機(jī)

2022-03-17 21:30:31

BRAS寬帶服務(wù)器

2023-05-14 19:18:07

2022-10-28 08:46:57

變革型領(lǐng)導(dǎo)IT

2020-06-19 08:04:23

監(jiān)控系統(tǒng)

2023-09-13 07:02:23

2021-11-26 00:06:04

Go函數(shù)代碼

2021-03-08 23:45:33

數(shù)字化轉(zhuǎn)型5G

2015-05-12 11:04:42

Java EE學(xué)習(xí)Java EE

2022-02-26 19:05:01

AI人工智能機(jī)器學(xué)習(xí)

2021-11-11 09:27:02

技術(shù)RedisMySQL

2020-11-03 07:09:31

5GCPEWi-Fi

2022-05-31 09:17:08

通信網(wǎng)絡(luò)技術(shù)

2020-08-07 14:28:04

裸金屬服務(wù)器云服務(wù)

2024-05-30 08:19:52

微服務(wù)架構(gòu)大型應(yīng)用
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 欧美日韩最新 | 国产精品一区二区在线 | 91免费在线看 | 国产视频二区 | 亚洲日韩中文字幕一区 | 中文字幕1区2区3区 日韩在线视频免费观看 | 国产亚洲精品美女久久久久久久久久 | 日韩一区二区三区在线 | av在线一区二区三区 | 亚洲精品电影在线观看 | 一级黄色生活视频 | a看片 | а天堂中文最新一区二区三区 | 亚洲视频在线播放 | 亚洲视频免费在线观看 | 一级片免费视频 | 国产亚洲精品久久久优势 | 精品久久久久久亚洲精品 | 亚洲码欧美码一区二区三区 | 91精品国产欧美一区二区成人 | 91亚洲欧美 | 男人的天堂中文字幕 | 欧美日韩国产一区二区 | 免费网站在线 | 亚洲 欧美 另类 综合 偷拍 | 免费午夜视频在线观看 | 国产精品美女久久久久久免费 | 国产欧美在线播放 | 亚洲一区不卡在线 | 久久久久久成人 | 亚洲视频免费观看 | 久久成人国产精品 | 久久99精品久久久久久青青日本 | 91免费看片 | 色嗨嗨 | 免费观看一级视频 | 九色av| 成人在线视频一区 | 午夜影视在线观看 | 成人在线播放网站 | 一级一级一级毛片 |