JAX-WS:用于 XML Web 服务的 Java API
让我们回到 2006 年。Java SE 6 发布时引入了许多新功能。
引用 Java SE 6 规范 (JSR 270),关于 Java SE 6 中引入的特性:
Java SE 6 的功能集在很大程度上是由一组主题驱动的。
主题描述了该版本的主要焦点。有些主题是相当抽象的指导原则;其他的则更具体,因为它们确定了特定的问题领域、重要的新功能集或特定的目标市场细分。
[...]
-
XML 和 Web 服务: Java SE 5 版本,正如最初提议的那样,旨在包括一个完整的 Web 服务客户端堆栈。遗憾的是,这项工作未能在该版本发布之前及时完成,与此同时,XML 和 Web 服务对社区许多成员的重要性只会增加。
[...]
JAX-WS 2.0 规范的目标之一是准备 JAX-WS 以包含在 J2SE 的未来版本中(后来被重命名为 Java SE)。引用JSR 224:
-
包含在 J2SE 中:JAX-WS 2.0 将准备 JAX-WS 以包含在 J2SE 的未来版本中。应用程序可移植性是一项关键要求,JAX-WS 2.0 将定义机制来生成完全可移植的客户端。
Java SE 6 包含 JAX-WS 2.0 组件,引入了在 Java SE 中创建基于 SOAP 的 Web 服务的可能性。引用 Oracle 的 this article:
Java 平台标准版 6 (Java SE 6) 最令人兴奋的新特性之一是支持 Java API for XML Web Services (JAX-WS) 2.0 版。 JAX-WS 2.0 是新重新架构的 Web 服务 API 堆栈的中心 [...]。
尽管 JAX-WS 在 Java 平台企业版 5 (Java EE 5) 的开源世界中找到了它的主要家园,并且旨在取代 Java API for XML-Based RPC (JAX-RPC)在这样的环境中,您甚至可以在不接触企业服务器的情况下重用大部分功能 [...]
您可以使用 JAX-WS 构建 Web 应用程序和 Web 服务,并结合新的基于 XML 的 Web 服务功能。 [...]
当您运行应用程序时,Java SE 6 平台有一个小型 Web 应用程序服务器,它将发布 Web 服务。 [...]
JAX-RS:用于 RESTful Web 服务的 Java API
JAX-RS 于 2008 年出现。它最初由 JSR 311 定义,并包含在 Java EE 6 总括规范 (JSR 316) 中。
JAX-RS 的第二个版本于 2013 年推出,由 JSR 339 定义,并包含在 Java EE 7 总体规范 (JSR 342) 下。
JAX-RS 以 HTTP 为中心,JAX-RS 应用程序经常部署在 servlet 容器上。
Java SE 7 (JSR 336) 和 Java SE 8 (JSR 337) 规范不包含 JAX-RS 组件。但是,JAX-RS 应用程序可以在 Java SE 环境中发布(使用RuntimeDelegate),并且 JAX-RS 实现也可以支持通过 JAX-WS 发布。
在 Java SE 中包含 JAX-RS 也意味着包含该规范的实现。它使 Java SE 环境中的事情变得更加复杂,但在您的容器将为您提供实现的 Java EE 环境中完全可以接受。例如,GlassFish 为您提供 Jersey(参考实现),而 JBoss/WildFly 为您提供 RESTEasy。