Java EE几十种技术,“活着的”还剩几何(服务/安全/Java SE篇)

开发 后端
Java API for RESTful Web Services的核心概念是resource,即面向资源。是一个Java编程语言的应用程序接口,支持按照表述性状态转移(REST)架构风格创建Web服务。借助标准注解来落地。

[[420735]]

前言

你好,我是方同学(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:

  1. <dependency> 
  2.     <groupId>jakarta.ws.rs</groupId> 
  3.     <artifactId>jakarta.ws.rs-api</artifactId> 
  4.     <version>2.1.6</version> 
  5. </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:

  1. <dependency> 
  2.     <groupId>jakarta.xml.rpc</groupId> 
  3.     <artifactId>jakarta.xml.rpc-api</artifactId> 
  4.     <version>1.1.4</version> 
  5. </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:

  1. <dependency> 
  2.     <groupId>jakarta.xml.registry</groupId> 
  3.     <artifactId>jakarta.xml.registry-api</artifactId> 
  4.     <version>1.0.10</version> 
  5. </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:

  1. 无,在Java SE内 

代表API:如上

该规范的实现由各大数据库厂商提供,如MySql、Oracle、PostgreSQL

2. JMX

推荐学习指数 4

Java Management Extensions:Java管理扩展。顾名思义,是管理Java的一种扩展。这种机制可以方便的管理正在运行中的Java程序。常用于管理线程,内存,日志Level,服务重启,系统环境等。

API的GAV:

  1. 无,在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:

  1. // 说明:此Jar不导入也没关系,因为已经包含进Java SE内了 
  2. <dependency> 
  3.     <groupId>jakarta.xml.ws</groupId> 
  4.     <artifactId>jakarta.xml.ws-api</artifactId> 
  5.     <version>2.3.3</version> 
  6. </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:

  1. 无,在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:

  1. // 说明:此Jar不导入也没关系,因为已经包含进Java SE内了 
  2. <dependency> 
  3.     <groupId>jakarta.xml.ws</groupId> 
  4.     <artifactId>jakarta.xml.ws-api</artifactId> 
  5.     <version>2.3.3</version> 
  6. </dependency> 

代表API:

  • @XmlRootElement
  • @XmlSchema
  • @XmlElement
  • @XmlAttribute

6. StAX

推荐学习指数 1

Streaming API for XML (StAX) :和SAX类似也是用于解析xml文件的,StAX采用流模型中的拉模型分析方式。提供基于指针和基于迭代器两种方式的支持。

API的GAV:

  1. 无,在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:

  1. 无,在Java SE内 

代表API:略

8. JAF

推荐学习指数 1

JavaBeans Activation Framework (JAF) :一个专用的数据处理框架。提供用于封装数据,并为应用程序提供访问和操作数据的接口。

它应用最广泛的地方是:处理MIME编码的邮件附件。将MIME字节流转换成Java对象,或者对象到字节流。现在知道为啥使用JavaMail时需额外导入activation.jar这个包了吧,现在告诉你:不需要了,因为已经包含在Java SE内。

API的GAV:

  1. // 说明:此Jar不导入也没关系,因为已经包含进Java SE内了 
  2. <dependency> 
  3.     <groupId>jakarta.activation</groupId> 
  4.     <artifactId>jakarta.activation-api</artifactId> 
  5.     <version>1.2.2</version> 
  6. </dependency> 

代表API:

  • javax.activation.DataContentHandler
  • javax.activation.MimeType
  • javax.activation.FileDataSource

总结

至此,对Java EE规范的40种技术全部介绍完了。有可能它是全网最全的一份讲解,希望可以很独特的帮助到你站在高一点视角,总览Java EE技术以及JSR规范,甚至包括和Spring技术栈的对比和联系。

 

责任编辑:武晓燕 来源: BAT的乌托邦
相关推荐

2021-08-27 11:57:33

Java企业应用

2021-08-26 00:22:57

Java EE技术Web

2023-07-25 13:07:59

2024-03-14 11:12:28

2024-01-22 08:15:42

API协议设计

2022-07-04 07:41:53

接口数据安全

2016-05-30 10:45:17

2022-10-25 15:55:13

2010-09-07 13:12:17

2013-10-12 15:36:54

2022-04-24 12:46:59

网络安全威胁事件安全运营

2010-09-30 16:10:30

2020-11-26 20:54:23

AI人工智能建筑

2009-06-18 15:27:42

Java SEJava EEJava ME

2020-06-18 09:22:13

人工智能技术网络

2013-08-23 09:13:44

2018-01-15 11:41:33

代码网络运维研发

2023-07-12 12:54:28

2013-08-23 09:34:37

2023-09-05 15:00:04

微服务架构
点赞
收藏

51CTO技术栈公众号