J2SE 1.4.2增强功能与改变
J2SE 1.4.2beta版本新鲜出炉,本文来介绍此版本的主要新功能与新的改变。
虚拟机
运行时性能
Client HotSpot编译器,主要在编译速度和footprint上的改善。
Server HotSpot编译器,在IA32平台上当处理器和操作系统支持时,使用SSE和SSE2指令。
更快的常数整除运算。
更快的浮点2次幂除法运算。
更快的NullPointerException处理。
核心内库
网络
针对http和https的NTLM认证现在在Windows平台上支持。
支持HTTP重定向到相对URL,而在1.4.2之前,我们要求重定向的URL必须是一个绝对URL地址。
New I/O(NIO)
原始Channel类(SocketChannel,ServerSocketChannel等)的finalize方法被移除了。
I/O
在Windows2000/XP上,Windows的locale的预设编码没有相应的ANSI代码页从utf-16le转换到utf-8。在这个版本中提供了用现存的ASCII文本编码的兼容性以及用这个locale处理输出系统的能力。
国际化
改变了Windows平台的安装程序,主要在所支持的locale上有所改变。现在有一个单个的安装程序,如果Windows系统只支持欧洲语系在预设情况下将安装对欧洲语系的支持。如果Windows系统支持至少一种非欧洲语系将安装对所有语系的支持。用户可以在安装时自定义安装另外的语系。
安全
许多新的证书和加密算法被加到这个版本中,如CA证书,AES(Advanced Encryption Standard),SHA-256,SHA-384和SHA-512哈希算法等。
综合库
JNDI
修复一些bug。
JNDI/LDAP服务现在提供对请求存取LDAP服务器时使用SSL连接的支持。
另外用户可以不用在LDAP URL中指定端口号。对于非SSL连接预设的端口号是389,而SSL连接预设的端口号是636。而在1.4.2之前的版本中所有连接的预设端口号都是389.。
用户界面
Java声音技术
在Windows和Solaris上现在支持Port。
现在支持ALSA(Advanced Linux Sound Architecture)。
同时在Lunux上capture/和playback现在已成为可能。
Java 2D技术
在1.4.2中已修正了许多的bug。所做的许多工作主要是加强在Window中对全屏幕的支持。还有如修正了字体的处理,还有在Linux中对24bit像素的支持,以及 IDE锁死的bug.等。
输入法
现在在1.4.2中捆绑了泰文输入法,但在预设情况下是关闭的。要启用它,可以将位于JRE的lib/im目录中的thaiim.jar移到lib/ext目录中。
在Windows XP上,你可能经历过这样的问题:例如不能切换输入法或输入法工具条不能显示。如果你遇到过这样的问题,请使用最新的Windows XP service pack。
AWT
修正了Windows2000和XP上,一个TextArea在设置了SCROLLBARS_BOTH时只显示一个垂直条的bug。
修正了在1.3.1和1.4中从一个Runnable运行模态窗口死锁的问题。
修正了在没有ANSI代码页时Windows输入法中无法输入文字的bug。
Swing
引入两个新的Look&Feel:Windows XP L&F和GTK+ L&F。
部署
启动时间的改善
最佳化了核心内库来提升启动时间。对于一个小规模的命令行应用程序,启动时间提升了30%;对于一个小规模的Swing应用程序,提升了14%到20%的启动时间。
Applet
在1.4.1中,从Applet的stop()或destroy()方法中调用一个模枋的弹出窗口可能导致一些问题,如NullPointerException,或是这个对话框不显示,甚至当Applet被销毁后对话框还存在,最坏的情况是
Browser死掉。这些问题在1.4.2中已修复。
在1.4.1中,java.applet.getDocumentBase()返回一个包含这个Applet的文档的目录的URL。而在1.4.2中修正为返回这个文档自身的URL。同样的,java.applet.getCodeBase()返回Applet的URL,在1.4.2中现在修正为返回包含这个Applet的目录的URL。
在1.4.2中,当经由Java Plug-in部署一个applet(在cache开启的情况下),如果applet在一个有多个class文件的JAR文件中,并且如果这些类中有一个调用了javax.crypto.Cipher.getInstance()方法,那么存取到同一个JAR文件的请求操作将失败并抛出“java.lang.IllegalStateException:Zip file closed”,现在这个bug已修正。
Java Plug-in技术
Java Plug-in现在支持Mozilla 1.1及其以后版本。
在本次版本中ActiveX Bridge技术被重新实现。它允许JavaBean像ActiveX控件一样显示在ActiveX容器中。与以前不同的是,开发者要使用ActiveX Bridge必须重新封装他们的bean。
JSObject现在可以返回正确的DOM元素类型。
Java Web Start 1.4.2
实现了当JAWS每次运行时,自动检测电脑中所有已注册的JRE。
不仅是JNLP URL,连.html和.jnlp文件现在可以直接在JAWS应用程序管理器中开启和标记为书签。
Java工具
JPDA(Java Platform Debugger Architecture)
新的接口功能增加到JVMDI中,允许多线程的suspend和resume执行。这个功能也同样增加到了JVMPI中。它们是:
jvmdiError SuspendThreadList(jint reqCount, jthread *reqList, jvmdiError *results)
jvmdiError ResumeThreadList(jint reqCount, jthread *reqList, jvmdiError *results)
另外,现在还实现了先前在JVMDI中没有实现的接口功能:
jvmdiError GetOwnedMonitorInfo(jthread thread, JVMDI_owned_monitor_info *infoPtr)
jvmdiError GetCurrentContendedMonitor(jthread thread,jobject *monitorPtr)
Java编译器(javac)
增加了-classpath命令选项的同义命令-cp。
增加了-Xmaxerrors和-Xmaxwarns命令选项去限制最大打印在Java控制台的错误和警告数。
Javac还修复了一些生要的Bug.,如不再错误的检测重复的local类的宣告等。
Javadoc工具
增加了几个新的命令选项。