性能dW at JavaOne: 下一波 -- Java 1.4英文原文内容:JSR 在 1.4 版本中的删除部分XML API 发展得太快用户有一个参数选择断言培训记录新世界"N" 代表“新的”数据库的库到达内核进入所需的认证路径利用 WebStart 的快速开始"Tiger" 的眼睛超越 JSR考虑转向 1.4参考资料关于作者对本文的评价相关内容:一个识别用户的三向解决方案使用类属在编译时找出更多的错误Merlin 的魔力:Swing 的新 Spinner 组件即将发布版本的性能和新功能一览
John Zukowski (jazzukowski.net)
总裁,JZ Ventures, Inc
2001 年 6 月
JavaOne 2001 会议进行了几个议程,来描述新近发布的 Java beta 版本 1.4 的新功能。在这篇文章中,我们集中讨论会议中的某些议程以及新版本的性能。[/i] and not . Use and not . use
and not
Use all lower case for tags. -->
Graham Hamilton 是 J2SE Merlin 发行规范制定的带头人,他对最近发布的 Java 1.4 beta 的新性能提供了一个概述。在他的议程和其他议程的详细内容中,开发人员能够充满自信地开始把他们的开发工作移向 Merlin 的世界,预计在年底完成的这个版本的发行工作。
Eenie、meenie、minee、mo: JSR 在 1.4 版本中的删除部分
质量第一,数量第二,1.4 版将为 Java 平台带来一些期待已久的性能。 用于 Merlin 的 Java 规范要求 (JSR-059) 通过 Java Community Process (JCP) 整合了一些其他的 JSR。假如调试稳定的话,这些 JSR 将逐步进入已发布的版本。这些 JSR 包括:
- JSR-005 XML 语法分析
- JSR-010 参数选择 API
- JSR-031 XML 数据绑定
- JSR-041 一个简单的断言工具
- JSR-047 记录 API
- JSR-051 新的 IO API
- JSR-054 JDBC 3.0
- JSR-055 认证路径 API
- JSR-056 网络启动 API
- JSR-057 JavaBeans 的长期持续性
- JSR-063 XML 处理
IBM 参考资料
为了让您获得更多的会议背景知识,请利用这些丰富的参考资料 -- 论文、案例研究、工具和 developerWorks、alphaWorks 及所有 IBM 的教程 -- 按类似会议议程的组分类。
某些功能尚未发布,要么因为没有准备,要么因为 JCP 社团觉得 JSR 不适合于广泛的 Java 开发社团。没有包含的 JSR 有:
- JSR-014 在 Java 编程语言中增加类属类型
- JSR-031 XML 数据绑定规范
- JSR-051 printf/scanf 性能
- JSR-076 J2SE 的 RMI 安全性
- JSR-078 RMI 自定义远程参考
XML API 发展得太快
对 Merlin 的 XML 支持实际上正在倒退。因为 XML 技术仍在不断发展中,我们在 1.4 版中采用目前稳定的 JAXP API; 以后的 XML API 会像现在的 JAXP API 一样作为标准扩展提供。
这意味着 Merlin 可以提供 SAX 1.0/2.0、DOM 1.0/2.0 和 XSLT 支持,但不提供 XML 消息传递 (JAXM)、XML 注册表 (JAXR) 或许多会议中提及的其它 JAX 的支持。XMLEncoder/XMLDecoder 可用于长期的 JavaBeans 持续性。
用户有一个参数选择
新的参数选择 API 增加了方便存储和恢复用户配置数据和应用程序配置数据的能力。为了用轻便和线程安全机制替换 Properties 类,Sun 工程师 Josh Bloch 提供了一个新库的预览,它提供了类似于 Windows 注册表的特定执行的后备存储器。
语言级的断言培训
会议上,Bloch 还忙于描述植入 1.4 版的唯一的语言级功能,这样断言工具有了一个新的 assert 关键字。
断言能在代码里增加布尔检查,它一经要求就可以启动来确保程序的正确。比如您有一个 if-else 程序块,其中整数只能是 "1"、"2" 或 "3",最后的 else 程序块可能不检查 "3"。你可以增加一个断言以保证是 "3",如清单 1 所示。
缺省情况下,断言是被禁用的,但是可以通过专门命令行开关来启动断言,让您确保在用户产生问题时的环境正确。
清单 1. 使用 assert 关键字
if (foo == 1) {} else if (foo == 2) {} else { assert (foo == 3);}
记录新世界
1.4 版中的新的记录工具由 Graham Hamilton 在星期四上午的单独议程中介绍。工具通过单个系统范围的记录管理器,用自定义的格式器,提供不同记录级别的处理。这个有用的小 API 可存储,比方说,多达 500 条在 foobar.xml 文件中用 XML 格式化的信息(请参阅清单 2)。
清单 2. 记录工具处理自定义记录级别
Logger logger = Logger.getLogger("com.ibm.utils");logger.log(Level.WARNING, "message", exception);
这个新工具确实使得广受好评的开放源代码的 log4j 包的前途未卜。当然,它仍然被版本 1.4 以前的 Java 语言版本使用。
"N" 代表 “新的”
在 Merlin 中,名字最简单的包是新的 I/O 库,它在 java.nio 包中。(是的, n 代表“新的”。)
Sun 工程师 Mark Reinhold 在 6 月 4 日的议程中描述了新库的功能。您会得到简单的缓冲区,这些缓冲区是为原始类型、字符集编码器和解码器以及类 Perl 的规则表达式和模式匹配工具而设的。但新库最有趣的功能是内存映射文件和非模块化的 I/O。
数据库的库到达内核
当使用 Kestrel 发行版(版本 1.3)时,在标准 Java 平台和几个扩展 API 上有一些库。而 Merlin 中,所有扩展数据库 API 都被认为是内核 API。
最后,与别的比较,CachedRowSet 是标准的。星期三的会议阐述了这些新功能,主持那个会议的人都叫 John -- Sun 公司的 Jonathan Bruce 和 Jon Ellis,以及 Merant 的 John Goodson。
注意:为了支持 JDBC 3.0,在内核库中需要添加一小部分 Java 事务处理 API (JTA)。
进入所需的认证路径
新的认证路径 API 是加在 Merlin 中的一系列安全变化中的一部分。由于新的和更宽松的美国出口限制,以前可选择的和大多数国家没有的安全 API 如今在 Java 平台上已经是成为标准了。
在标准 Merlin 内核中,您会得到 Java 加密扩展 (JCE)、Java 安全套接字扩展 (JSSE) 和 Java 认证和授权服务 (JAAS) API。您还会得到在 Java 普通安全性服务应用程序界面 (GSS-API) 下的 Kerberos V5 支持。
利用 WebStart 的快速开始
Merlin 将网络启动的 Java WebStart 产品添加入 deliverables 的标准集合。虽然您还能标记小应用程序以摆脱 Java 沙盒(如果想在浏览器里保留小应用程序),WebStart 却允许您启动成熟的应用程序,让用户在客户端高速缓存程序,而不必每次运行程序时都下载。
几个议程介绍了产品的最主要部分。Sun 高级工程师 Rene Schmidt 阐述了最技术性的有关产品性能的概述,其它议程将此技术与象 JavaServer Pages 和 Java 插件这样的其它客户端选项进行比较。
"Tiger" 的眼睛
Java 1.4 在 Java 平台上添加了一些新性能。接下来是代号名为 "tiger" 的 Java 1.5 平台。假设版本发布周期为 18 个月的话,我们期待 2003 年的某个时候能见到新版本中出现类似类属的功能。
Gilad Bracha 简介了目前可用的原型执行情况,其本质主要是添加了类型安全集合,并取消了(从集合中)取回元素时需要执行造型的需要。(请参阅参考资料,在 developerWorks 上有最近关于类属的文章。)
类属的类型检查被移到了编译时间中,不再实时进行,这真是件好事情。如清单 3 所示,它们让代码变得更加简洁了。
清单 3. 类属代码变简洁了
public static void main (String args[]) {... List<String> list = Arrays.asList(args); String head = list.get(0);...}
对 "Tiger" 的另一期待是 scanf/printf 格式化工具,它没有被包含在 Merlin I/O 变化中。
超越 JSR
所有 1.4 库的变化并不都通过单独的 JSR 产生。像 Hamilton 总结的那样,很多新变化只在个别议程中谈到,或在其它议程中偶尔提及。
例如,Java 1.4 将支持 IPv6,但这需要支持它的操作系统(如 Windows XP 或 Solaris 8)。同时,Bloch 主办了一个关于 Collections Framework 的 BOF,这个 Collections Framework 描述了新库的功能:在 Collections 类中的 3 个新的执行方法、1 个标记接口和 6 个新的支持方法。
考虑转向 1.4
如果是一个尖端和前沿的项目,并期待在 6 至 9 个月内发布,请考虑转向 Java 1.4 平台。这个即将到来的版本包含了开发商期盼的几个功能。如想了解如何使用这些新功能的详细信息,请阅读我很快就会在 developerWorks Java 技术专区上的开设的全新 Merlin 的魔力专栏。
顺便提一下,如果你在寻找会议的幻灯片,Sun 好像正努力要从 250 万没有参加会议的 Java 开发商那儿赚点钱。你可能要等到 2001 年 6 月 17 日去浏览 http://java.sun.com/learning 获取信息。
当然你要为每个议程支付约 30 美元,也可以花 1,500 美元获取整个会议的信息。学生享受 40% 的折扣。
参考资料
- 欲知更多 Merlin 版本变化的信息,请参阅附带在开发商套件中的新的功能和增强的概览文档。
- 欲知安全性和 Java 平台的详细信息,请参阅 Joseph Sinclair 的文章:“一个识别用户的三向解决方案”(developerWorks,2001 年 6 月)。
- Log4j 提供快速高效的记录服务。
- 欲知更多开放源代码 API 的详细信息,请查看 log4j 主页,它是 Apache Jakarta 项目的一部分。
- 在这篇 2001 年 3 月 developerWorks 的文章中,Keith Turner 研究了使用类属在编译时找出更多的错误。
- IBM Education 提供您关于 Java 语言尖端实现的课堂和卫星指导。
关于作者
John Zukowski 为 JZ Ventures, Inc. 做战略性的 Java 咨询。他最新的著作是 Apress 的 Java Collections 和 Definitive Guide to Swing for Java 2 (第 2 版)。可通过 jazzukowski.net 联系 John。