UML软件工程组织

Java发展路线(技术专题)
Brian Goetz (brian@quiotix.com)
首席顾问,Quiotix Corp (选自IBM)
平台方向
易于开发性
J2SE 1.5 -- Tiger
元数据
J2EE 1.5
脚本程序
参考资料
关于作者
对本文的评价
Graham Hamilton和Tim Lindholm阐述Sun的Java平台理念
与过去的JavaOne会议一样,公开式技术专题关注Java技术的当前状态,介绍明年的发展路线。今年,Sun 副总裁Graham Hamilton和CTO Timothy Lindholm阐述了在接下来的12到18个月内,Java技术发展方向和关注焦点方面发生的一些值得关注的变化。

在今年的JavaOne会议上,专题会议改名为“研讨会”,分为综合和技术两类。无论您称它们什么,它们的目的是一样的--向与会人员展示Sun的Java技术当前和未来发展理念。

在公开式技术研讨会中,Sun副总裁Graham Hamilton和CTO Tim Lindholm阐述了明年的Java技术发展路线,以及版本1.5-J2SE和J2EE平台下一个主要版本发展方向和关注焦点方面一些值得注意的变化。

许多与会人员都对J2SE 1.5 (Tiger)预定的上市日期感到惊讶:当前计划的上市日期在1年以后,J2EE 1.5甚至更远,未确定日期。Hamilton在解释这一点时暗示 -- 更多的时间用于测试以改进最初1.5版本的质量。在过去,Sun为1.4 JDK版本中程序错误的数量而感到困窘;1.4.1和1.4.2每个包含2000个以上的bug fixes.

平台方向
Hamilton建议转变即将推出的版本的开发优先级,降低在新特性和性能方面的投资,增加在易于开发性和稳定性方面的投资。尽管特性仍旧十分重要 -- Tiger包含多种令人心动的新语言特性 -- 建议是Java平台已经成熟,而新特性的相对重要性已经减弱。同样,尽管性能仍旧十分重要,Hamilton建议Java性能,尤其是1.4.1和1.4.2的性能改进已经“足够好了”,开发人员开始转向其它目标,如稳定性和质量 。

 

JavaOne 2003的其它报告

易于开发性
J2SE和 J2EE 1.5专题中规划的令人惊讶的新重点是“易于开发性。”虽然Java技术在企业领域非常成功并在设备领域大范围普及,它仍旧滞后于部门应用-当前由Visual Basic和C#垄断的一个领域。虽然Java平台作为一个强大且稳定的平台而为人们所熟知,但人们同样认识到它很难掌握-Sun认为是Java技术在重要的大规模商业市场上立足的一个障碍。1.5版本另一个令人惊讶的新焦点是完善平台与脚本语言的集成。

J2SE 1.5 -- Tiger
Tiger是自 1.1以来包含主要新语言特性的第一个Java平台版本,包括泛型(有些时候也称为模板)、列举、autoboxing、新for-循环格式、格式化I/O (printfscanf)和新代码元数据工具。

近四年来一直提倡并最初主要面向J2SE 1.4的泛型扩展了Java程序的类型安全性,允许编译器对集合中的对象施加类型限制。它们还简化了代码,无需强制转换从集合中检索到的项目。声明一个集合拥有的对象的类型也使代码更容易被读者理解。参见下面的参考资料获得泛型详细信息的链接。

有时也称为for-each的新型for-循环格式是一种语法简化,当对数组或集合进行迭代时,使您无需具有从程序中管理循环变量或迭代器的技能。结果是当编写嵌套循环时更少的程序代码和消除了共同的错误源。清单1显示了基于数组和集合的迭代的for-each循环;任何一种情况下,循环变量测试条件和更新表达式由编译器生成,就好像编程人员把它编码成通常的方法一样。

清单 1:迭代数组和集合的新for-循环

  String[] strings;
  List<Foo> list;
  ...
  for (String s : strings) { 
    doSomething(s);
  }
  ...
  for (Foo f : list) {
    doSomething(f);
  }

列举应为C编程人员熟知,新列举工具允许您定义您可以在switch语句中用于作为标记的类型-安全列举并安全迭代,且不会出现当您尝试使用整数常量来实施列举时发生“脆弱的客户机”问题。从C#借来的特性autoboxing在主类型(int)和绕接对象类型(Integer)之间实现透明转换。

元数据
Java编译器中元数据工具的引入是一项重大且意义深远的开发。元数据工具使开发人员能够为类、方法和字段创建新属性,与定制的Javadoc标记类似。编译器把这些元数据属性放到类文件中,反射扩展允许程序和工具从那提取数据。

元数据服务两个目的:它允许开发人员记录代码的假设或属性;它允许工具检索这类信息。例如,您可以为方法创建一个 @overrides属性,它表示这一方法重载了父类中的一种方法--对记录非常有用。此外,编译后运行的工具应检测这一标记,验证该方法真正重载了父类方法,或者如果它未重载父类方法,标志其为错误。以下例举一个例子:


  public @overrides void someMethod(String foo) {
    ...
  }

工具还可以使用元数据来创造代码或支持文件-J2EE 1.5中频繁使用的一种特性。嵌入到EJB和servlet类中的元数据标记可以用于为这些组件创建缺省的配置描述器,从而简化开发。(这种元数据的应用与使用XDoclet工具可以实现的类似,它使用定制的JavaDoc工具来创建代码和配置描述器。)

J2EE 1.5
尽管J2EE 1.5的推出遥遥无期,但它的主要主题是易于开发性。J2EE 1.5中频繁使用Tiger元数据工具来简化J2EE组件的开发。当创建J2EE组件时配置描述器的创建极其复杂化,J2EE 1.5的一个目标是把开发人员从编写配置描述器的工作中释放出来。这一目标通过在组件源代码中使用特殊的元数据标记,以及为更多的配置选项提供缺省值来实现。开发工具将创建缺省的配置描述器,配置人员可以对其进行修改。

J2EE 1.5 还将包括新的JavaServer Faces工具套件版本,旨在为Web应用创建卓越的GUI,还包括新 EJB (3.0)、JDBC (4.0)、JAXB (2.0)和JAX-RPC (2.0) API版本。与以前的版本相比,每种规范都包括简化开发的功能。JAX-RPC 2.0将使用元数据,使用@remote 标记来标记Web业务方法,当创建WSDL文件时WSDL generator将使用。在EJB 3.0中,您将能够通过一个类文件来定义简单的EJB组件,而不是需要多个接口、一个类和一个配置描述器。

脚本程序
J2SE 1.5的最后目标是改进Java类和脚本语言之间的关系。将为Web层中的脚本程序定义框架的JSR 223使组件能够自行控制向脚本语言显示对象和属性。

参考资料

关于作者
Brian Goetz 是一位软件顾问,在过去 15 年间一直从事专业软件开发。他是 Quiotix,一家位于加利福尼亚,洛斯拉图斯(Los Altos)的软件开发和咨询公司的总顾问。请参阅流行的业界出版物中 Brian 已经发表和即将发表的文章
 
 

版权所有:UML软件工程组织