|
即将发布版本的性能和新功能一览
john zukowski (jaz@zukowski.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 语言尖端实现的课堂和卫星指导。
|