一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java EE幾十種技術,“活著的”還剩幾何(Web應用技術篇)

Java EE幾十種技術,“活著的”還剩幾何(Web應用技術篇)

2021-08-26 22:08BAT的烏托邦YourBatman Java教程

作為一枚Javaer,不可能沒有聽過Java EE。比如至少聽過這句廣為流傳的話“Java EE的13種核心技術”,而其實Java EE遠不止13種技術。

Java EE幾十種技術,“活著的”還剩幾何(Web應用技術篇)

前言

你好,我是方同學(YourBatman)

若你還不太清楚Java EE是什么,可先移步這里:什么是Java EE?

技術的發展日新月異,滄海桑田,一不留神的掉隊,可能就是永遠。就連穩得一批的Spring技術棧也受到了基于GraalVM的QUARKUS等框架的挑戰,好在Spring社區迅速推出了Spring Native予以回應。

作為一枚Javaer,不可能沒有聽過Java EE。比如至少聽過這句廣為流傳的話“Java EE的13種核心技術”,而其實Java EE遠不止13種技術。

Java EE幾十種技術,“活著的”還剩幾何(Web應用技術篇)

通過此圖你領略到了Java EE的“大而全”。從1999年出現到已有20余年,風云變幻,現在早已不是Java EE的天下,Spring技術棧已接管成為實際標準。本文就盤點盤點Java EE這幾十種技術規范,依舊堅挺的還要哪些?

Tips:推薦學習指數獲得3顆??的可認為依舊堅挺,4顆??認為知識點還比較重要,5顆??認為依舊是主流技術

所屬專欄

BATutopia-Java EE

相關下載

  • 工程源代碼:https://github.com/yourbatman/BATutopia-java-ee
  • 【女媧Knife-Initializr工程】訪問地址:http://152.136.106.14:8761
  • Java開發軟件包(Mac):https://wangpan.yourbatman.cn/s/rEH0 提取碼:javakit
  • 程序員專用網盤上線啦,開放注冊送1G超小容量,幫你實踐做減法:https://wangpan.yourbatman.cn

版本約定

  • Java EE:6、7、8
  • Jakarta EE:8、9、9.1

另外說明:下面所有API的GAV坐標均使用Jakarta EE的方式給出,原因是它的GAV命名、歸類相較于舊的Java EE更加規范,對開發者而言規律性更強、理解起來更方便些。版本號方面全部采用javax.*命名空間對于的版本,若想升級到jakarta.*命名空間的話僅需大版本號 + 1即可(GAV不變),非常方便。

另外還有一個小約定:同是javax.*命名空間的話,Jakarta EE的GAV大版本號與Java EE 8的保持一致,若發現大版本號比后者大了,那么說明命名空間已是新的jakarta.*。

從Java EE 8(及以后)版本推薦使用Jakarta EE的GAV,因為摒棄掉Java EE元素已是大勢所趨

正文

Java EE幾十種技術,“活著的”還剩幾何(Web應用技術篇)

Java EE技術總覽

以Java EE 8/Jakarta EE 8為例,主要包含這些技術:

Java EE幾十種技術,“活著的”還剩幾何(Web應用技術篇)

劃分為五大類:

Java EE幾十種技術,“活著的”還剩幾何(Web應用技術篇)

其中,Web應用技術是現在Java最最最重要的使用場景。因此本文就聚焦在這塊,來聊聊它有哪些技術,有哪些技術現今依舊堅挺。

Part1: Web應用技術

Web Application Technologies,共8個規范。

Java EE幾十種技術,“活著的”還剩幾何(Web應用技術篇)

把該part放在首位,因為它對開發者是最重要、使用得最多的,也是開發者最熟悉的部分。這“一切”可能權由Servlet承擔著...

1. Servlet

推薦學習指數5

Servlet規范絕對是作為一枚Javaer必知必會的技術。

Java Servlet是運行在 Web 服務器或應用服務器上的程序,它是作為來自 Web 瀏覽器或其他 HTTP 客戶端的請求和 HTTP 服務器上的數據庫或應用程序之間的中間層。

Java Servlet 是運行在帶有支持 Java Servlet 規范的解釋器的 web 服務器上的 Java 類。

Java EE幾十種技術,“活著的”還剩幾何(Web應用技術篇)

Servlet現今依舊是Java Web應用開發的主流技術,即使以Spring WebFlux為代表的響應式編程技術出現了且很多,但基于Servlet的Spring MVC依舊熱度不減,是業務開發的首選。

API的GAV:

  1. @lt;dependency@gt;
  2. @lt;groupId@gt;jakarta.servlet@lt;/groupId@gt;
  3. @lt;artifactId@gt;jakarta.servlet-api@lt;/artifactId@gt;
  4. @lt;version@gt;4.0.4@lt;/version@gt;
  5. @lt;scope@gt;provided@lt;/scope@gt;
  6. @lt;/dependency@gt;

代表API:

  • ServletContext
  • HttpServlet
  • HttpFilter
  • RequestDispatcher

Servlet由Web容器(如Tomcat)提供實現,因此只有你的工程在編譯期強依賴于Servlet的API參與編譯時才需導入此庫(scope=provided,表示參與編譯但并不會打包進去)。

2. JSP

推薦學習指數2

雖說JSP技術早已out,但由于其濃厚的歷史原因,所以我認為每一個Java Web開發人員對此門技術都應該有一定了解。不為使用,只為談資。

JSP用全稱Java Server Pages,是一種動態網頁開發技術。之所以說動態是因為它使用JSP標簽在HTML網頁中插入Java代碼,Java代碼放在標簽@lt;% %@gt;里。

JSP本質是一種Servlet(編譯后均變為Servlet),主要用于實現Java web應用程序的用戶界面部分。那么為何有了Servlet還需要JSP呢?與純Servlet相比:JSP可以很方便的編寫或者修改HTML網頁而不用去面對大量的println()/writer.write()語句,可讀性可維護性更高。

Java EE幾十種技術,“活著的”還剩幾何(Web應用技術篇)

API的GAV:

  1. @lt;dependency@gt;
  2. @lt;groupId@gt;jakarta.servlet@lt;/groupId@gt;
  3. @lt;artifactId@gt;jakarta.servlet-api@lt;/artifactId@gt;
  4. @lt;version@gt;4.0.4@lt;/version@gt;
  5. @lt;scope@gt;provided@lt;/scope@gt;
  6. @lt;/dependency@gt;

代表API:

  • JspContext、PageContext
  • JspPage、HttpJspPage(public interface JspPage extends Servlet { ... })
  • JspTag

顯然,JSP規范的具體實現亦由Web容器提供,并且99.99%的情況下開發者并不需要它的API,所以該GAV了解下即可。

3. EL表達式

推薦學習指數3

EL因JSP而生,但又獨立于JSP。雖說JSP已死,但EL作為一門獨立的表達式語言,是可以單獨存在的。

Expression Language表達式語言,一種在JSP頁面獲取數據的簡單方式(只能獲取數據,不能設置數據),目的是簡化開發且提高可維護性,替代開發者在JSP頁面上寫的Java代碼。

EL表達式是在JSP2.0開始新引入概念,所以有時候也叫它JSP表達式語言。它由JSP提出而出現,但并不必須依托于它而存在,而是可作為一門獨立的表達式語言技術提供使用,生命周期并不與JSP對等。

著名的校驗框架Hibernate Validator強依賴了EL表達式語言技術,所以這就是為何我認為它的學習指數比其“父親”JSP要高的原因。

API的GAV:

  1. @lt;dependency@gt;
  2. @lt;groupId@gt;jakarta.el@lt;/groupId@gt;
  3. @lt;artifactId@gt;jakarta.el-api@lt;/artifactId@gt;
  4. @lt;version@gt;3.0.3@lt;/version@gt;
  5. @lt;scope@gt;provided@lt;/scope@gt;
  6. @lt;/dependency@gt;

代表API:

  • ELContext
  • ELManager
  • ExpressionFactory
  • Expression、ValueExpression、MethodExpression

EL一般也由Web容器提供實現。當然嘍,Web容器也將其實現拆開來了可單獨使用,如嵌入式tomcat的實現模塊為:org.apache.tomcat.embed:tomcat-embed-el

4. JSTL標準標簽庫

推薦學習指數1

強依托于JSP的存在而存在。

JavaServer Pages Standard Tag Library,JSP標準標簽庫。他是一個JSP標簽集合,封裝了JSP應用的通用核心功能。目的同EL有點類似:簡化開發且提高可維護性,替代開發者在JSP頁面上寫的Java代碼。

和EL一起它哥倆的出現目的都是為了讓開發者不要再在JSP上寫Java代碼啦,不同的是JSTL必須依托于JSP的存在而存在。

Java EE幾十種技術,“活著的”還剩幾何(Web應用技術篇)

API的GAV:

  1. @lt;dependency@gt;
  2. @lt;groupId@gt;jakarta.servlet.jsp.jstl@lt;/groupId@gt;
  3. @lt;artifactId@gt;jakarta.servlet.jsp.jstl-api@lt;/artifactId@gt;
  4. @lt;version@gt;1.2.7@lt;/version@gt;
  5. @lt;scope@gt;provided@lt;/scope@gt;
  6. @lt;/dependency@gt;

代表API:

  • LoopTag(public interface LoopTag extends Tag { ... })
  • SQLExecutionTag
  • LocaleSupport(fmt標簽)

用過JSTL的同學可能對standard.jar和jstl.jar這兩個Jar印象最深,這里做下簡單說明:

  • GAV只是api,一般不包含實現(符合Java EE只做規范的理念)
  • standard.jar和jstl.jar屬于具體實現(web容器一般自己有提供)。如還有Apache的標準實現:org.apache.taglibs:taglibs-standard-impl

5. WebScoket

推薦學習指數4

一門2011年才出現的“新”技術,Java亦提供了實現。

WebSocket是HTML5開始提供的一種在單個TCP 連接上進行全雙工通訊的協議。而這里聊的WebSocket是Java對其的支持,制定的編碼規范。

WebSocket大大改進了服務器/瀏覽器的交互方式,作為一門新新技術,生命力還是很強的,推薦學習。

Java EE幾十種技術,“活著的”還剩幾何(Web應用技術篇)

API的GAV:

  1. @lt;dependency@gt;
  2. @lt;groupId@gt;jakarta.websocket@lt;/groupId@gt;
  3. @lt;artifactId@gt;jakarta.websocket-api@lt;/artifactId@gt;
  4. @lt;version@gt;1.1.2@lt;/version@gt;
  5. @lt;scope@gt;provided@lt;/scope@gt;
  6. @lt;/dependency@gt;

代表API:

  • @ServerEndpoint、ServerApplicationConfig、HandshakeRequest
  • @OnOpen、@OnMessage、@OnError、@OnClose

它是構建在http協議之上的全雙工通信協議,相較于TCP更加方面,是和Html頁面搭建長鏈接通訊的首選。

6. JSF

推薦學習指數1

JavaServer Faces,一種用于構建 Web 應用程序的標準Java框架。它提供了一種以組件為中心來開發 Java Web 用戶界面的方法,從而簡化了開發。

MVC設計模式 (Model-View-Controller)出自于它,使用Facelets聲明語言構建視圖,并且模型由CDI托管bean表示,控制器由JSF引擎本身負責。

Java EE幾十種技術,“活著的”還剩幾何(Web應用技術篇)

API的GAV:

  1. @lt;dependency@gt;
  2. @lt;groupId@gt;jakarta.faces@lt;/groupId@gt;
  3. @lt;artifactId@gt;jakarta.faces-api@lt;/artifactId@gt;
  4. @lt;version@gt;2.3.2@lt;/version@gt;
  5. @lt;/dependency@gt;

代表API:

  • Facelet、FaceletContext(public abstract class FaceletContext extends ELContext { ... })
  • FacesWrapper
  • FacesRenderer
  • @RequestMap、@ApplicationMap、@ApplicationMap、@RequestCookieMap、RequestParameterMap

總而言之,JSF算是被Struts、Spring MVC這類框架吊打。

7. JSON-P

推薦學習指數2

Java API for JSON Processing,專門用于處理JSON數據的API被納入JavaEE規范體系。用于使用生成和解析JSON數據中描述的對象模型或流模型來解析,轉換和查詢JSON數據。看看它的API:

  • Json:所有JSON對象的工廠類(如創建JsonParser、JsonGenerator),提供大量靜態方法
  • JsonParser:從流或對象模型中讀取JSON數據的基于事件的解析器,如getInt()、getLong()
  • JsonGenerator:一次將JSON數據寫入流中一個元素,如write(xxx)、writeNull()

看過我寫的Jackson專欄的同學能發現,這和Jackson簡直一毛一樣,甚至API很大一部分相同或相似。這便就是Java EE提供的用于處理Json的底層API。

API的GAV:

  1. @lt;dependency@gt;
  2. @lt;groupId@gt;jakarta.json@lt;/groupId@gt;
  3. @lt;artifactId@gt;jakarta.json-api@lt;/artifactId@gt;
  4. @lt;version@gt;1.1.6@lt;/version@gt;
  5. @lt;/dependency@gt;

代表API:

  • JsonReader、JsonWriter、JsonReaderFactory、JsonWriterFactory
  • JsonValue、JsonString、JsonNumber、JsonArray

他是Java EE抽象出來處理JSON的底層 API,對標Jackson-core。

8. JSON-B

推薦學習指數2

Java EE 7提供了JSON-P讓Java具有了處理Json的能力,但是這么底層的API誰會用?就像Jackson一樣如果沒有提供ObjectMapper這種自動綁定能力的API的話估計也很少人會用。直到Java EE 8官方貌似才恍然大悟意識到了這一點。

Java API for JSON Binding,實現JSON數據與Java對象之間的綁定。常見的Java primitive types和String類都能夠自動綁定,很明顯它底層走的JSON-P。

給幾個JSON-B的注解你瞧瞧:

  • @JsonbDateFormat
  • @JsonbNumberFormat
  • @JsonbProperty
  • @JsonbVisibility

這套路面熟吧(閱讀過我Jackson專欄的同學會覺得很面熟)。

API的GAV:

  1. @lt;dependency@gt;
  2. @lt;groupId@gt;jakarta.json.bind@lt;/groupId@gt;
  3. @lt;artifactId@gt;jakarta.json.bind-api@lt;/artifactId@gt;
  4. @lt;version@gt;1.0.2@lt;/version@gt;
  5. @lt;/dependency@gt;

代表API:

  • Jsonb、JsonbBuilder
  • JsonbSerializer、JsonbDeserializer
  • JsonbProvider

Java EE新增的JSON技術,只能說起晚了也趕晚了。想要“奪回市場”基本沒戲。

總結

Web應用技術作為Java EE最最最重要的部分,共包含8項具體技術,其中:

  • 1個仍為主流:Servlet
  • 1個還比較重要:WebScoket
  • 1個還在堅挺:EL表達式
  • 其它的5個存在感已非常之弱,連學習的必要性也沒有了。相信隨著時間的推移,被遺忘就是它們的歸宿

本文介紹完了最為重要的Web技術的情況,下文繼續為你介紹“非Web相關的技術”情況,那才真叫一個一片狼藉,“哀鴻遍野”。

原文鏈接:https://mp.weixin.qq.com/s/Qt3xIQMmdjv5iBBEjfkPxA

延伸 · 閱讀

精彩推薦
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩中求8032021-07-12
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7472021-02-04
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
主站蜘蛛池模板: 特色特色大片在线 | 免费在线观看日本 | 福利片成人午夜在线 | tobu8在线观看免费高清 | 九九在线精品视频 | 日本精品久久久久久久久免费 | 丝瓜黄瓜茄子西红柿秋葵榴莲 | 国产精品久久久久久爽爽爽 | 免费欧美一级片 | 91天堂一区二区 | 2018天天拍拍拍免费视频 | 好大~好爽~再进去一点 | 男同gay玩奴男同玩奴 | 久久久久免费视频 | 色婷婷久久综合中文久久一本` | 亚洲国产综合网 | 五月婷婷在线免费观看 | 天天摸天天碰色综合网 | 蛮荒的童话未删减在线观看 | 青青青手机视频在线观看 | 国产欧美一区视频在线观看 | blacked最大的吊 | 狠狠色96视频 | 免费的伦理片 | 久久电影院久久国产 | 猛男深夜狂cao小男生 | 91麻豆制片厂 | 男人的j伸到女人的屁股眼 男人吃奶动态图 | 亚洲国产精品无码中文在线 | 玩高中女同桌肉色短丝袜脚文 | 婷婷综合在线 | 亚洲va欧美va国产va天堂影 | 国产一区二区视频在线播放 | 日韩欧美国产在线 | 99久久精品国产免看国产一区 | 国产区综合另类亚洲欧美 | 成人欧美一区二区三区白人 | 亚洲国产精品久久网午夜 | 欧美视频黑鬼大战白妞 | 国产伦精品一区二区三区免 | 美女被的在线网站91 |