Java EE 7目前正在紧锣密鼓地制订当中。前不久,JSR 339与JSR 349经由公开投票而获得采纳,这样他们就成为了首批获得批准的两个JSR。
Oracle的JCP Program Office列出了完整的Java EE 7 JSR特性列表:
- JSR 107:JCACHE——Java Temporary Caching API
- JSR 236:Concurrency Utilities for Java EE
- JSR 338:Java Persistence 2
- JSR 346:Contexts and Dependency Injection 1.1 for Java EE
- JSR 352:Batch Applications for the Java Platform
- JSR 349:Bean Validation 1.1
- JSR 339:JAX-RS 2.0:The Java API for RESTful Web Services
InfoQ有幸采访到了JSR 339联合规范领导者Marek Potociar以了解关于最新版RESTful Java API的更多信息。
你好,Marek。JSR 339已经快要完成了,并且公开审查也已经被接受。能否介绍一下目前的状态呢?
主要特性(比如说客户端API、异步的服务端、过滤器与拦截器等)已经相当稳定了。我们仍在打磨API的一些细节信息,比如说常见配置、链接与超媒体支持 以及常见处理异常体系等。最近,我们决定协调我们的发布计划与BeanValidation 1.1规范的发布,这样就可以将BeanValidation集成支持作为JAX-RS 2.0发布的一部分了。由于修改了计划,我们现在还在考虑加入对JSON Processing API(JSR 353)的支持,因为JSON与XML已经成为众多现有RESTful服务所广泛支持的媒体类型了。这两者是目前仅有的尚未完全确定下来的新特性。
作为JSR 311的后继,最初的RESTful Java Spec JSR 339还有很多地方需要完善。你认为目前的状态如何?
总的来说,我们对在发布中所取得的成就感到满意,这包括新特性与对现有API和特性的澄清。我们期盼着将最终发布的JAX-RS 2.0作为Java EE 7的一部分。
对于Restful Web Service Java开发者来说,JSR 339会增加哪些内容呢?
之前,很多新的标准化特性以私有扩展的形式提供给了JAX-RS框架(客户端API与请求/响应过滤就是很好的例子)。虽然这些扩展仍然被RESTful Java开发者大量使用,但结果代码的可移植性就会出现问题。开发者可以通过对JAX-RS API新的补充使用标准API编写移植性更好的代码。
能否谈谈有哪些内容的计划调整了呢?
这包含所有重要的特性。此外,虽然我们在开发JAX-RS 2.0,但我们也对最初计划的特性集进行了增强。对于那些尚未涉及的特性来说,随着时间的流逝,我们决定放弃或是推迟,直到可以达成一致为止,在能够提出 标准解决方案前,我们需要花不少时间尝试私有API。对于主要特性来说,我们决定推迟如下特性:与JSR 330(依赖注入)的紧密集成、高层次客户端API与MVC View模板框架集成。
其他语言或平台能否使用这个富框架呢?
平台方面,JAX-RS规范是Java EE的一部分,但与Java EE应用服务器之间的耦合度并不是那么紧密,这一点与EJB等规范不同。很多JAX-RS实现(包括Jersey提供的参考实现)都可以直接运行在Java SE轻量级HTTP服务器上或是其他HTTP容器,如Grizzly。与之类似,大多数JAX-RS框架都可以集成并运行在Servlet容器中。这样一来,JAX-RS应用的部署就变得非常灵活了。
当然了,使用RESTful服务——无论是使用JAX-RS抑或其他框架编写的——是语言独立的。目前还没有将JAX-RS移植到其他语言的计划,因此现在其名字还是没什么问题的,严格来说它是Java API。
接下来有什么计划,会有下一代JSR么,如果有,那么都会包含哪些特性呢?
当JAX-RS 2.0发布后,我们会收集社区反馈,可能会在一年左右时间内发布2.0的维护版本2.1。我们已经开始收集下一个主JAX-RS发布的想法了。这是中期计划。
其余所有的Java EE 7 JSR要么处于“Public Review”状态,要么很快就将完成“Early Draft Review”阶段。要想了解所有Java EE 7 JSR的最新状态,请参考JCP Java EE 7 JSR博客。