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