Java 7新特性 (三)

原创|其它|编辑:郝浩|2009-04-20 09:22:47.000|阅读 574 次

概述:与Swing相关的JSR正在上演三重唱。JSR 296:Swing应用程序框架,提供了个框架和多数Swing应用所需的功能,尤其是它提供了

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

简化Swing

与Swing相关的JSR正在上演三重唱。JSR 296:Swing应用程序框架,提供了个框架和多数Swing应用所需的功能,尤其是它提供了:

◆定义良好的应用程序生命周期

◆引入了更丰富的资源素材(诸如标签、字体和颜色等)

◆行为管理(包括后退任务的支持)

◆诸如Windows位置之类的持久性会话信息

进入2008年以后,JSR 296一直处于巨大的生存危机中。尽管目前有复苏的迹象,但是许多人依然在怀疑它是否能在Java SE 7推出的时候证明自己。

JSR 295:Beans绑定(Beans Binding)和JSR 303:Bean验证(Bean Validation),这两个JSR的目的是解决Swing应用程序中普遍存在的问题,不过它们也可以用于非Swing应用。JSR 303是一个可以为字段和类创建验证器的框架。这个JSR定义了一系列元注释,同时还定义了一些常见的约束性注释。

Java管理扩展(JMX)更新

JSR 255:JMX 2.0是JMX规范的一个全面升级,充分利用了J2SE 5.0中引入的语言特点,而且增加了一些重要的新功能,诸如命名空间、远程JMX服务器联盟、一个新事件服务和查询语言等。

JSR 262:JMX的Web服务连接器(Web Services Connector for JMX),允许客户端通过Web服务连接到一个JMX MBean,它也支持非Java的Web服务客户端。

语言变化或许较小

鉴于目前距离Java SE 7推出的时间有限,增加重大新语言功能的可能性已经不大,在Java SE 7平台规范中只能包含一些细微的调整。Joseph Darcy将负责领导一个OpenJDK项目来收集和评价这些语言改变之处。

闭包(Closure)是Java SE 7中最大的语言功能变化。闭包肯定将给这个语言带来重大的影响,本文中我所讨论的其它JSR也是如此。众多提议已经被提交,其中最重要的三个已经具有工作 原型。尤其值得指出的是,Neal Gafter关于BGGA闭包的提议还包含了完整的规范和工作实现,它在现有提议中是最详细最完整的。

鉴于Sun紧缩的资源和人力,以及重大JSR的数量,加上发布时间的压力,闭包被包含在Java SE 7中的可能性已经不大。在我看来,这是一件非常遗憾的事情,因为闭包可以大大简化NIO 2、fork/join和其它类库中的API。缺少了闭包功能的Java SE 7将丧失解决这些问题的机会。

一些其它可能的小型语言改进包括:
◆Strings可以用于switch中的case子句。
◆比较运算符(<、>等)可以直接用于枚举常量。
◆Chained invocation—空方法隐式返回这个信息
◆扩展方法
◆可一次捕获多种异常类型,以及并发形式rethrow特定类型异常。

动态语言支持

JSR 292:Java平台动态语言支持(Supporting Dynamically Typed Languages on the Java Platform),开始引入一个名为invokedynamic的新JVM指令,以更好的支持动态语言。John Rose已经使用这个JSR作为一个公式来进行了大量的JVM改进,可以大大提高JVM上所有语言的功能。

这方面的工作研究在2008年9月举行的第一届JVM语言峰会上达到顶点,在这次峰会上讨论了诸如尾部调用优化(tail call optimization )和接口注入(interface injection)等功能。对于大量使用递归的函数语言来说,尾部调用优化非常重要,可以避免堆栈空间溢出,Scala在编译器上解决了这个问题。 Clojure则增加了模仿尾部调用的语言支持,而且最近增加了跳跃语言支持功能,以支持多重递归。如果尾部调用优化可以被增加到JVM中,Scala和 Clojure可以简化或移除这些功能。

Mark Reinhold在JVM语言峰会上表示,JSR 292将被包含在Java SE 7中。在JSR 292是否还包含invokedynamic之外的任何功能,目前还不确定。

Java SE 7和Java未来

我相信在2009年可以看到Java SE 7平台JSR,它将包含本篇文章所讨论的多数JSR,但是语言本身的改变可能会比较少。按现在的计划,它将继续集成所有这些工作到OpenJDK版本中,并在2010年发布Java SE 7。

有些人质疑人们是否真的需要使用Java SE 7。不过,即使出现很多替代性的JVM语言,Java依然将会是我们今天所使用的重要编程语言之一。Java拥有如此巨大的用户基础,在目前还看不到被淘 汰的迹象。诸如294、310和203等JSR对核心API进行了改进,这些对于企业软件开发者都是非常值得关注的。同时,我们现在正在进入多核时 代,JSR 166和JVM性能的改进也是颇具吸引力的。

我认为,Java SE 7的普及速度或许不会很快,但却会稳步上升。如果这个平台在2010年初发布,有望在2011年获得可观的市场份额。在Java SE 6发生的一幕或将在它身上重演。J2SE 1.4在2008年11月份已经结束了服务支持周期,J2SE 5.0将在2009年底加入支持范围。届时,多数进行Java应用部署的企业都将考虑在Java SE 6上的部署。按现在的情况来看,如果Java SE 7语言变化非常小,许多企业甚至有可能跳过J2SE 5.0而直接升级到Java SE 7。


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:自互联网

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP