通过注释实现更好的决策 J2SE把我们带入了Java注释的世界,在Java SE 6中,我们只可以对类、方法、字段和变量声明进行注释。JSR 308:Java类中的标注(Annotations on Java Types)允许注释出现在任何可用的类型上,使得更具表现力和准确性的系统成为可能。 在JSR 305:供检查软件缺陷用的注解(Annotations for Software Defect Detection)中尽管定义了一些注释,但是JSR本身并不定义任何更多的注释。JSR 305的目的是让开发者更准确的定义方法调用情况,诸如是否允许为空,集合是否可以为空集合等等。 Listing 4演示了如何使用一个新注释。 Listing 4 // A more precise class definition: class UnmodifiableList implements @Readonly List<@Readonly T> { ... } // A more precise variable declaration: List str = new @NonEmpty @Readonly ArrayList(stringSet); 注释处理器可以被插入到编译器中,以在编译的时候验证这些注释。This allows a great deal more specificity and precision, but it comes with a heavy cost of verbosity and will certainly fill some Java users with dread. 简化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特定类型异常。 |