Java EE幾十種技術,“活著的”還剩幾何(服務/安全/Java SE篇)
前言
你好,我是方同學(YourBatman)
若你還不太清楚Java EE是什么,可先移步這里:什么是Java EE?
Java EE技術規范從個數上算,總共有40(8 + 13 + 5 + 6 + 8)個,我們已完成:
- 8個 【方同學】Java EE幾十種技術,“活著的”還剩幾何(Web應用技術篇)
- 13個 【方同學】Java EE幾十種技術,“活著的”還剩幾何(企業應用技術篇)
本文繼續,將剩下的3個part“一網打盡”。為了便于理解,還是貼上這張分類圖:
所屬專欄
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
正文
Part3: Web Services技術
Web Services Technologies,共5個規范。圖片
1. JAX-RS
推薦學習指數 3
Java API for RESTful Web Services的核心概念是resource,即面向資源。是一個Java編程語言的應用程序接口,支持按照表述性狀態轉移(REST)架構風格創建Web服務。借助標準注解來落地。
和JAX-WS的區別:兩者是 不同風格的SOA架構。前者以動詞為中心,指定的是每次執行函數。而后者以名詞為中心,每次執行的時候指的是資源。JAX-RS更新來自Java EE 6API的GAV:
- <dependency>
- <groupId>jakarta.ws.rs</groupId>
- <artifactId>jakarta.ws.rs-api</artifactId>
- <version>2.1.6</version>
- </dependency>
代表API:
- Client、Request、Response、UriBuilder
- @GET、@POST、@PUT、@DELETE、@Produces、@QueryParam
Jersey就是一個很好的Web-Service框架,實現了jaxrs。這么技術在老外那邊還有用武之地(比如Eureka就用它),國內使用得確實少之又少了。
2. JAX-RPC
推薦學習指數 1
JAX-RPC已經過期,畢竟JAX-WS 2.0可認為是JAX-RPC 1.1的后續版本。
注:JAX-WS技術在????,有需要可提前移步閱讀
我們可以對比下JAX-RPC和JAX-RS:
- 相同點
- JAX-WS仍然支持 SOAP 1.1 over HTTP 1.1,因此互操作性將不會受到影響,仍然可以在網上傳遞相同的消息(SOAP最新版為1.2)
- JAX-WS仍然支持 WSDL 1.1,因此您所學到的有關該規范的知識仍然有用。WSDL 2.0 規范已經接近完成,但在 JAX-WS 2.0 相關工作結束時其工作仍在進行中
- 不同點
- JAX-RPC 和 JAX-WS 都支持 SOAP 1.1。JAX-WS 還支持 SOAP 1.2
- JAX-WS支持不在SOAP下發送消息而基于http即可,而這是JAX-RPC做不到的
- JAX-WS運用到了Java 5很多新特性,代碼更好性能更高
API的GAV:
- <dependency>
- <groupId>jakarta.xml.rpc</groupId>
- <artifactId>jakarta.xml.rpc-api</artifactId>
- <version>1.1.4</version>
- </dependency>
代表API:
- Service、ServiceFactory
- MessageContext、ParameterMode
簡而言之,JAX-RPC已全面被JAX-WS取代(即使后者的生命力也已經很弱)。
3. JAXR
推薦學習指數 1
JAXR(Java API for XML Registries)提供了與多種類型注冊服務進行交互的API。
JAXR使java軟件程序員使用單個的易于使用的抽象API訪問多種XML registries,一個統一的JAXR實現模型描述在XML registries中的內容和元數據。JAXR給開發者寫能使用于多種目標注冊的registry客戶程序的能力, 還給這些客戶程序能跨多種底層registries添加值的能力.
API的GAV:
- <dependency>
- <groupId>jakarta.xml.registry</groupId>
- <artifactId>jakarta.xml.registry-api</artifactId>
- <version>1.0.10</version>
- </dependency>
代表API:
- RegistryService
- JAXRResponse
- QueryManager
4. EWS
推薦學習指數 1
略。
5. WS-MJP
推薦學習指數 1
略。
為了降低閱讀/學習負擔,用一句話總結該Part:又重又老掉牙的技術了,腦子里留個印象就行(比如JAX-RS、SOAP協議、WSDL等),其它......fork筆者的工程源碼里瞧瞧就成!https://github.com/yourbatman/BATutopia-java-ee
Part4: 管理和安全技術
Management and Security Technologies,共6個規范。
推薦學習指數 0
1. jacc
2. jaspic
3. jeead
4. dsol
5. m-j2ee
6. security
這一part離普通開發者就更遠了,大多數人(包括筆者在內)可能就耳聞過jacc還稍微有丁點熟悉,其它的,呃......
說明:這part關于Java安全,不是不重要,而是對我等普通程序員不重要。
Part5: JavaSE中與JavaEE相關的規范
Java EE-related Specs in Java SE,共8個規范。圖片此part比較特殊,表示規范屬于Java EE規范,但API(或者實現)都在Java SE里就有,所以都無需額外導包,并且很多都比較熟悉。
1. JDBC
推薦學習指數 5
這是第三個五星推薦。非常重要,特別是做數據庫中間件的研發,這些理論規范知識是基礎。
Java Database Connectivity:數據庫連接技術。用來規范客戶端程序如何來訪問數據庫的應用程序接口,提供了諸如查詢和更新數據庫中數據的方法。關鍵API回顧一下:
- java.sql.Driver
- java.sql.DriverManager
- java.sql.Connection
- java.sql.Statement / java.sql.PreparedStatement
當然還有javax.sql.DataSource、javax.sql.PooledConnection、javax.sql.XADataSource、javax.sql.XAConnection等等
API的GAV:
- 無,在Java SE內
代表API:如上
該規范的實現由各大數據庫廠商提供,如MySql、Oracle、PostgreSQL
2. JMX
推薦學習指數 4
Java Management Extensions:Java管理擴展。顧名思義,是管理Java的一種擴展。這種機制可以方便的管理正在運行中的Java程序。常用于管理線程,內存,日志Level,服務重啟,系統環境等。
API的GAV:
- 無,在Java SE內
代表API:
- JMX、JMXConnector、PersistentMBean、StandardMBean
- MBeanServer、MBeanServerBuilder、MBeanServerFactory
- @MXBean
Spring Boot的Endpoint常見的是通過Http暴露,同時也可以(更安全的方式)通過JMX方式暴露。
3. JAX-WS
推薦學習指數 1
Java API for XML Web Services:一組XML web services的JAVA API,JAX-WS允許開發者可以選擇RPC-oriented或者message-oriented 來實現自己的web services。
Web服務有兩種類型:
- SOAP Web Services
- Restful Web Services
該框架可以通過注解形式導出一個Web Service服務。如:@WebService、@WebMethod、@SOAPBinding
API的GAV:
- // 說明:此Jar不導入也沒關系,因為已經包含進Java SE內了
- <dependency>
- <groupId>jakarta.xml.ws</groupId>
- <artifactId>jakarta.xml.ws-api</artifactId>
- <version>2.3.3</version>
- </dependency>
代表API:
- WebServiceClient、Endpoint、HTTPBinding
- SOAPHandler、SOAPMessageContext
- @WebEndpoint、@WebServiceRef、@RequestWrapper
4. JAXP
推薦學習指數 1
Java API for XML Processing (JAXP):XML處理的Java API,是Java XML程序設計的應用程序接口之一,它提供解析和驗證XML文檔的能力。代表API:
- DocumentBuilder
- SAXParser
它不提供處理 XML 的新方式,不補充 SAX 或 DOM,也不向 Java 和 XML 處理提供新功能。它只是使通過 DOM 和 SAX 處理一些困難任務更容易,屏蔽廠商們的實現差異。
API的GAV:
- 無,在Java SE內
代表API:
- DocumentBuilder、DocumentBuilderFactory
- SAXParser、SAXParserFactory
5. JAXB
推薦學習指數 1
Java Architecture for XML Binding:實現xml到Java對象,Java對象到XML的轉換。類比一下JSON-P和JSON-B,何其相似。
API的GAV:
- // 說明:此Jar不導入也沒關系,因為已經包含進Java SE內了
- <dependency>
- <groupId>jakarta.xml.ws</groupId>
- <artifactId>jakarta.xml.ws-api</artifactId>
- <version>2.3.3</version>
- </dependency>
代表API:
- @XmlRootElement
- @XmlSchema
- @XmlElement
- @XmlAttribute
6. StAX
推薦學習指數 1
Streaming API for XML (StAX) :和SAX類似也是用于解析xml文件的,StAX采用流模型中的拉模型分析方式。提供基于指針和基于迭代器兩種方式的支持。
API的GAV:
- 無,在Java SE內
代表API:
- XMLOutputFactory:XMLOutputFactory.newInstance().createXMLStreamWriter(out);
- XMLInputFactory:
7. SAAJ
推薦學習指數 1
SOAP with Attachments API for Java (SAAJ) Specification:利用SOAP協議實現的基于XML消息傳遞的API規范。它的相關API都在javax.xml.soap內,已經被集成進Java SE。
API的GAV:
- 無,在Java SE內
代表API:略
8. JAF
推薦學習指數 1
JavaBeans Activation Framework (JAF) :一個專用的數據處理框架。提供用于封裝數據,并為應用程序提供訪問和操作數據的接口。
它應用最廣泛的地方是:處理MIME編碼的郵件附件。將MIME字節流轉換成Java對象,或者對象到字節流。現在知道為啥使用JavaMail時需額外導入activation.jar這個包了吧,現在告訴你:不需要了,因為已經包含在Java SE內。
API的GAV:
- // 說明:此Jar不導入也沒關系,因為已經包含進Java SE內了
- <dependency>
- <groupId>jakarta.activation</groupId>
- <artifactId>jakarta.activation-api</artifactId>
- <version>1.2.2</version>
- </dependency>
代表API:
- javax.activation.DataContentHandler
- javax.activation.MimeType
- javax.activation.FileDataSource
總結
至此,對Java EE規范的40種技術全部介紹完了。有可能它是全網最全的一份講解,希望可以很獨特的幫助到你站在高一點視角,總覽Java EE技術以及JSR規范,甚至包括和Spring技術棧的對比和聯系。