写点什么

JEE 6:可扩展性、使用偏好以及修剪

  • 2008-01-20
  • 本文字数:3049 字

    阅读完需:约 10 分钟

尽管目前公布的细节仍然有点简略,Java EE 6 的大致方向已经变得更明朗了,并且反映出 Java EE 标准的角色正在转变。一些开源项目,例如 Struts,Hibernate 和 Seam,最初被视为一个完整的企业计算栈,被越来越广泛的企业采用来弥补目前版本 Java EE 的不足。在某些情况下,这些开源项目轮流影响了下一版规范的修订。同样,对于提供一个完整的解决方案,Java EE 的角色变得更轻了,而对于提供一个鲁棒的基础代码集合,使软件提供商和开源开发者能够依托其上构建自己的应用,Java EE 的角色变得更重了。 JSR 316 ——做为下一个 Java EE 版本修订的庞大(umbrella)JSR,通过使可拓展性成为专家组的一个核心目标,看起来把这个新的关系放到了一个更加正式的根基上。另外这个规范承认,Java EE 已经变得庞大而且复杂,建议既要对规范中特定元素进行修剪,还要引入使用偏好(profile)以针对特定开发组织提供其关注的 EE 功能子集。它还要建立在先前的版本所做的简化工作的基础上,这些简化工作包括使用注解来进一步削减对外部配置文件的依赖。

修剪采用的方式与 Java SE6 采用的方式相同,有一个 Blog 对此做了描述。这是作为一个多阶段过程来进行的,一个待修剪候选可能在一个发布中被声明出来,但在下一个发布中就可能被降级为可选组件,而所有这一切完全取决于社区的反应。JSR 建议了两个最初的修剪候选——一是 JAX-RPC [JSR 101,基于 XML 的 RPC 的 Java API ],它已经被 JAX-WS [ JSR 224,基于 XML 的 Web Services 的 Java API ] 有效的取代了,二是 EJB CMP,目前已经被 Java 持久化 API (JPA)[起初是作为 JSR 220,Enterprise JavaBeans 3.0 的一部分来定义的] 替代了。在对 Artima 采访的过程中,EE6 规范的领导者 Roberto Chinnici 和 Bill Shannon 暗示目前没有被广泛采用的 JAXR API [ JSR 93, 用于 XML Registries 1.0 的 Java API] ,一个访问 web service 注册表的 API,可能被添加到修剪的候选名单中。

尽管大部分修剪是无可置疑的,Sun 对 profile(使用偏好)的使用还是引发了一些争议。SpringSource 的 CEO Rod Johnson 理所当然的喜欢它们:
“最终,用户将会有权力货比三家,决定什么才是他们真正想要的,而不是由一个规范委员会在用户开始构建应用两年之前去决定他们的意志。”Johnson 说,“现在到了用一些健康的竞争取代一个苏联式的命令经济的时候了。”

但是 OSGi 的布道者 Peter Kriens 对此不以为然
“要解决众口难调的问题,Sun 提议多创建一些尺寸,叫做 profile。肯定能适合所有的情况吗?好吧,profile 在 J2ME[Java 2 Micro Edition] 中尝试过了,我认为它们失败了。”

EE6 计划中的第一个 profile 是 Web profile,关注于 web 应用开发人员。在引入这个新的 profile 的同时,这个规范还会定义一些规则,用来为其它的细分市场创建额外的 profile,例如电信业或者金融业的应用。

可拓展性的技术细节不是那么清楚,即便 JSR 制定了一些野心勃勃的目标:“我们相信使更多这样的技术在 Java EE 应用服务器上清楚的分层或者接插到 Java EE 应用服务器是令人向往的,”JSR 316 这样提到。通过增加更多的可扩展点和更多的服务提供者接口,这些额外的技术可以清楚高效的接插到这个平台的实现中,并且用户使用起来就如同将它们构建到系统中一样便利。

这种方式的一个例子是 JSR 196:Java 容器的认证服务提供者接口,J2EE 1.4 最初计划中 API 的三重奏之一。它提供了一个标准服务提供者接口来使认证机制提供者能够被集成到容器中。使用这个接口的提供者会被用来建立容器访问决策的身份认证,包括那些在容器中调用其他容器组件时所使用的身份认证。2007 年 10 月这个规范最终发布并且可以下载了。

如同1.4 的最初计划那样,Java EE 6 也应该最终看到以下两组API 的正式发布:适合用于管理环境的定时器API;一个容器可管理的编程模型,提供给那些使用容器管理的线程池并发执行的工作。这两组API 是由IBM 和BEA 联合开发的,并得到了BEA WebLogic 和IBM WebSphere 的支持,具体的描述在这里(PDF 文档)。

EE 6 中还计划包含两组新的 API。其一是深受 JBoss 的 Seam 和 Google 的 Guice 影响的 WebBeans,它的目标是通过统一 web 层与事务层的组件模型,简化基于 web 的应用程序的 Java EE 编程模型。另外,WebBeans 规范提供了一个会话模型和持久化上下文,其提供了细粒度的状态管理,并允许一系列的 web 事务(一个会话)被当作一个工作单元来对待。 Jacob Orshalick 详细描述了 Seam会话模型超时处理的细枝末节。通过一个声明和四部分()的详尽描述,Gavin King 为 WebBeans 模型做了全面广泛的说明。

尽管 WebBeans JSR 得到了广泛积极的反响,IBM 在 JSR 316 的表决中还是持有一些异议:
“我们对 JSR 299 似乎要选择的方向很关心,这个方向超越了其提到的集成 JSF 和 EJB 组件的许可。并且我们相信,如果它在这个方向上继续努力,最终会使它从 Java EE 6 中被去除。我们不相信我们的客户会觉得采用需要添加一个别的组件模型定义的 Java EE 6 是一件容易的事。”

第二组新的 API 是 JSR 311,一组 RESTful Web Services 的 Java API 。它已经产生了一些毁誉参半的反响。一篇 InfoQ 早些时候的文章对社区反应做了一个不错的概述。Brian Leonard 的 blog 和相关的链接提供了这个提议的更多细节,Bill Burke 提供了一些反馈

在 Java EE 6 中会看到对很多核心 API 的修订。主要的更改计划有:

  1. Java 持久化 API(JPA):2.0 版的 JPA 会将 API 的能力进行扩展,主要包括
  • 扩充对象 / 关系映射功能,包括在整合已有映射选项时具有更大的灵活性,支持嵌入对象的集合,可排序的列表,访问类型的组合,以额外的元数据支持 DDL 生成等等。
  • 扩充 Java 持久化查询语言的查询能力
  • 标准化实体拆分与融合的附加约定以及持久化上下文管理。
  • 标准化查询配置和实体管理配置的“提示”集合
  • 扩充 Java EE 环境中可插拔性的协定
  1. Servlets : 尽管 Servlet 在持续流行,可自 J2EE 1.4 以来 Servlet 的 API 就没有进行过一次大的修订。3.0 版本的 Servlet API 的目标是:
  • 提高 Web 框架的可插拔能力
  • 通过注解(Annotation)和泛型来提高易用性,这包括可以通过注解来决定是否使用 web.xml。
  • 增加异步支持(Comet)来提供非阻塞的输入 / 输出,请求处理延后处理以及响应关闭延后处理。
  • 改善安全能力,包括登入 / 登出支持和 servlet 自注册。
  1. JavaServer Faces 2.0 :这是这个规范第二个主要的发布,其目标为
  • 通过去除对配置文件的依赖以及引入 JSP 标记处理函数的自动化生成来改善易用性,
  • 增加对声明式渲染器(renderers)的支持
  • 通过改变请求处理生命周期和允许视图的部分更新来增强对 AJAX 的支持。
  • 使开发者开发定制组件更容易。

最后,还有更多的较小的修改:

  1. 以简化 EJB 组件模型为目标的 Enterprise JavaBeans 。EJB3.1 中会看到可选的本地业务接口的引入,使只使用一个 bean 类来开发本地 EJB 组件成为可能。它也将允许不需要 ejb-jar 部署描述文件就能把 EJB 组件打包 / 部署到一个.war 文件。
  2. Java EE 连接器体系结构,关注于使开发更加便捷,并对规范做综合的改善。
  3. JAX-WS: 细节尚未公布。

很多 API 没有为 Java EE 6 作出最后的修剪。有两件事值得注意,其一是 JSR 168,Java Portlet 规范,其被几个主要的门户运营者所拥护;另一个是 JSR 208, Java 业务集成 (JBI) ,一个服务仲裁规范,目前已经被除 BEA 和 IBM 之外的所有厂商支持。

EE 6 规范有一个相当有竞争力的时间表,最终的发布瞄准了 2008 年第四季度。

查看英文原文: JEE 6: Extensibility, Profiles and Pruning

2008-01-20 19:521630
用户头像

发布了 29 篇内容, 共 47138 次阅读, 收获喜欢 2 次。

关注

评论

发布
暂无评论
发现更多内容

满满干货!手把手教你实现基于eTS的HarmonyOS分布式计算器

HarmonyOS开发者

HarmonyOS ETS

关于加密通道规范,你真正用的是TLS,而非SSL

华为云开发者联盟

TLS 加密 ssl 加密通道 CA系统

手绘图解java类加载原理

华为云开发者联盟

Java 类加载 元数据 类静态

微擎同步粉丝不显示头像和昵称?

智伍应用

微擎 php开源

成本节省 50%,10 人团队使用函数计算开发 wolai 在线文档应用

阿里巴巴中间件

阿里云 中间件 函数计算

KunlunBase 查询优化(二)Project 和 Filter 下推

KunlunBase昆仑数据库

国产数据库

MySQL-8.0 Group Replication 研究与改造汇总

KunlunBase昆仑数据库

国产数据库 MySQL 数据库

文档管理:企业进步的重要因素

小炮

文档管理

2022第八届华为软件精英挑战赛全球总决赛圆满落幕,冠军奖金20万!

科技热闻

《阿里云代码安全白皮书》5个维度应对3类代码安全问题

阿里云云效

云计算 阿里云 代码管理 代码托管 代码安全

KunlunBase 查询优化(一)

KunlunBase昆仑数据库

MySQL 数据库 国产数据库

昆仑数据库可定制的数据分片方案

KunlunBase昆仑数据库

国产数据库

什么是显卡?GPU服务器到底有什么作用?

Finovy Cloud

gpu GPU服务器

netty系列之:epoll传输协议详解

程序那些事

Java Netty 程序那些事 5月月更

2022年中国消费金融数字化发展分析

易观分析

消费金融

昆仑分布式数据库系统简介 之 SQL 标准兼容性和日常维护工作

KunlunBase昆仑数据库

国产数据库

烧录OpenHarmony 3.2(尝鲜版)步骤

离北况归

OpenHarmony OpenHarmony3.2

谈谈技术能力

阿里巴巴中间件

阿里云 程序员 中间件 技术思考

直播预告丨Hello HarmonyOS进阶课程第四课——ArkUI动画开发

HarmonyOS开发者

HarmonyOS arkui

EMQX+阿里云Tablestore多场景一站式IoT数据解决方案正式发布

EMQ映云科技

阿里云 物联网 一站式平台 emqx 5月月更

火山引擎A/B测试私有化实践

字节跳动数据平台

实验 火山引擎 私有化部署 ab测试

数据库系统最佳实践系列 --- 使用 prepared statement

KunlunBase昆仑数据库

国产数据库

三分钟让你了解 vue 中的父子通讯

CRMEB

昆仑分布式数据库Sequence功能及其实现机制

KunlunBase昆仑数据库

国产数据库

干货复盘 | 易观分析“出海非洲战略”专题分享

易观分析

非洲战略

热烈庆祝“海泰密码技术融合创新中心&数据中心重启安全工程”双中心智能重启用

电子信息发烧客

网络安全 科技 科技企业

【LeetCode】调整数组顺序使奇数位于偶数前面Java题解

Albert

LeetCode 5月月更

KunlunBase 查询优化(三)排序下推

KunlunBase昆仑数据库

国产数据库

SaaS应用:企业数字化转型性价比最高的方式

小炮

多款顶级好用的 Vue 表单设计器测评推荐,可拖拽生成表单

蒋川

Vue Element 组件 表单设计 Ant Design

深入解读SQL的聚集函数

华为云开发者联盟

sql GaussDB(DWS) 聚集操作 主键列

JEE 6:可扩展性、使用偏好以及修剪_Java_Charles Humble_InfoQ精选文章