一个经验丰富的Java开发者对Java SE 6 beta做了性能测试,并认为它有可能成为桌面应用的革命性产品。
目前发布的Java SE 6 beta 被主流评价是特征全面的并且比较稳定的。我下载下来并进行了一个星期的版本可用性测试,在使用之后我对这个新的桌面特性产生了独特的印象。除了为所有的Java platforms(“2”已经被去掉了)版本采用新的命名之外,它还改进了许多新的特性,这些都值得我们探究。这些改进主要从桌面与核心两个方面。
对桌面的改进主要是在用户界面(UI)执行和本地操作系统的桌面集成。对内核的改进的目的也是为了提高开发者的生产力与Java应用的管理。Sun公司的Mustang Team对Web services的支持和安全改进也做了很大的努力。
总的来说,无论你是应用开发人员、系统管理员、软件厂商或者安全专家,Java SE 6中都有适用你的东西。这篇文章介绍了一些有趣的新特性,我将详细叙述。
核心特征和改进
Java的核心可以描述为给Java从用户接口API到服务器库各方面提供基本支持的Java(语言和工具)部分。我对Java SE 6的Java核心改进的理解可以分为以下几个部分:
开发人员的生产力
新的Java Compiler API允许源代码在应用程序内部编译。在编译过程中,应用程序有权以公式化的形式使用库的所属信息,连同警告、错误和其它产生的信息。尽管这个特征看起来我们并不常用,但我立刻发现了它的新用途。例如,我用它很快地为一个已有应用程序构造了数据存取层。我写的代码编译成类对应用程序的数据库表进行存取。最后的结果是产生了JAR文件,并用一部分系统Ant脚本构造布署。事实上所有这些类都是在应用程序内部代码相互编译产生的——因此我能反复地修改和构造这些类。
为了能够使用Java scripting,Java SE 6开始支持JSR 233,JSR233是一种提供把脚本语言加入到Java内部的脚本框架。你能在程序运行的时候查找调用脚本运行。Scripting API使你能为自己选择的脚本语言提供Java支持。除此之外,Web Scripting Framework可以让脚本代码在一些Servlet容器创建Web目录。
对于调试(debugging),Java平台调试器(JPDA)增强了死锁的检测和产生被锁对象监控的堆栈跟踪。Java SE 6允许在运行的JVM上捆定第三方代理而起到诊断的目的。
应用程序管理
Java SE 6也增强了内存泄漏的分析和检测,其主要是通过在java.lang.OutOfMemory异常里完整的堆栈跟踪和堆满时产生的重大错误日志。另外,在新的JVM中,你还可以在堆满时运行脚本。
改进的JMX Monitoring API允许应用程序当MBean属性(包括复杂的类型)值通过指定的入口时发送事件。
对于Solaris 10的用户们,Solaris里的Hotspot JVM提供了实用的Solaris DTrace系统调试,用来跟踪和显示JVM内部活动,如垃圾回收器、类的加载、线程、锁等等。我在JavaOne上得到了关于这个特性的第一手Demo,并且对DTrace系统提供的深度调试有很深的印象。当一个程序在运行的时候,你可以通过DTrace随时停止代码运行,看看所有库是如何载入的(不仅仅是Java库,还有系统库),也可深入Solaris内核,一直到底层硬件。Java提供的这个了不起的工具使得系统调试领域成为可能。我还记得在过去的一段时间,当我看到在JVM中Solaris Signal-8错误时的情形;现在这个特征将省去我很多猜测的时间。
Web Services
Java SE 6包含了一些对Web services支持的API。通过在XML数据上执行密码操作,你可以使用XML Digital Signatures API保护以Java为基础的Web services。Java-XML Web Service(JAX-WS)2.0 API补充了原来JAX-RPC中的库。改进的Java-XML Binding(JAXB)2.0包含XML计划和绑定在计划上的类。最后,Streaming API for XML(STAX)可以读写双向API和经过事件流写入XML,包括跳跃部件的能力和文档分段的关注。
安 全
Java SE 6
的安全机制有:
GSS/Kerberos
集成、
Java Authentication and Authorization Service (JAAS) for LDAP authentication
和安全证书请求框架,这个框架允许
Java
应用程序在众多协议之上请求安全证书。