本文是一篇来自于一名java开发高手的文章,他通过对java标准版6.0的beta版本所作的测试得出结论:该版本有可能给桌面开发带来革命性的影响。
一、 引言
最近发行了java标准版本6.0的(java se 6,也称作mustang)的beta版。我下载并测试了这个版本,在可试用的第一时间内,我深深地为其新的桌面特征所打动。除了适合于所有的java平台("2"被删除了)的新的命名惯例外,在许多新特征的改进方面值得我们去深入研究。这些改进可以被划分成两部分:桌面应用和内核方面。
桌面改进主要集中在用户接口(ui)性能和本机os桌面集成方面。核心主要集中在提高开发者的生产效率和java应用程序的管理方面。sun的mustang开发小组还在web服务支持和安全性能方面作出重要的改进。
总之,无论你是一位应用程序开发者,系统管理员,工具供应商或是一位安全专家,java se 6都有适合于你的内容。本文想详细分析我所试用过的一些新鲜而令人感兴趣的特征。
二、 核心特征和改进
java功能的核心部分被描述为java的一个专有组成部分(语言部分和它的核心工具),它对于java的所有其它方面都起基础性的作用,从用户接口api到各种服务器端库等。下面我将分别谈谈java se 6在java核心特征上的改进。
(一) 开发者生产效率
新的java编译器api允许从java应用程序内部对java源程序进行编译。在编译期间,应用程序可以访问库相关信息以及发出警告、错误和其它生成的信息。尽管这个特征似乎不是我常用的,但是我很快就发现了它的一些新用途。例如,我可以使用它来快速构建我所构建的程序的数据存取层。我可以编写代码来生成和编译用于存取应用程序的数据库表的类。最终结果是生成一个jar文件,这个文件被进一步构建并作为系统的ant脚本的一部分一同发布。能够从应用程序内部对类进行编译这一实现使得代码生成具有了交互性-我可以以交互方式来修改和构建类。
为了支持java脚本编程,java se 6支持jsr 223,这是一种提供了到java内部进行存取的脚本语言的框架标准。你可以定位脚本引擎并且在运行时调用它们以运行脚本。该脚本编程api允许你为选择的脚本语言提供java支持。此外,该web脚本框架允许脚本代码在任何servlet容器内生成web内容。
在调试方面,java平台调试器(jpda)也得到进一步增强,开发人员可以针对被锁定的监视对象检测死锁,并同时生成栈跟踪。
(二) 应用程序管理
通过在java.lang.outofmemory异常中包含一个完整的堆栈跟踪树并且在堆栈满时生成致命错误记录,java se 6进一步加强了内存漏洞分析和探测能力。另外,还增加了一个新的jvm选项以允许你在堆栈满时运行一个脚本。
注意 当mbean属性值(包括在复杂类型内部的那些属性值)超过指定的门槛值时,对于jmx监视api的改进方面允许应用程序发送事件以传递指定的阀值。
对于solaris 10用户来说,hotspot jvm for solaris针对solaris dtrace系统调试工具提供了钩子机制以跟踪和显示内部jvm活动,例如垃圾收集、类加载、线程、锁机制等。我在javaone上面得到有关这方面特征的第一个演示程序,并因此为dtrace系统所提供的调试深度所深深吸引。当一个应用程序运行时,dtrace允许你在任何一处停止代码,观看所有已经加载的库(而不仅仅是java库,也包括所有系统库),并且能够单步跟踪到solaris内核中(直到硬件层)。java对于这种高级调试工具的新的支持使该工具非常适合于系统级上的调试。我现在还记得以前在jvm中出现solaris signal-8错误时的情况,如果当时有这种支持,那将会节省我大量的分析时间。
(三) web服务
java se 6包括一些新的api以支持web服务开发。其中,xml数字签名api允许你保护基于java的web服务――通过执行针对xml数据的加密操作。java-xml web服务(jax-ws)2.0 api对以前命名为jax-rpc的部分作了进一步更新。对于java-xml绑定(jaxb)2.0的改进包括了对xml模式的支持和把类绑定到特定模式上。最后,针对于xml的流式api(stax)提供了一种双向的api以便经由事件流读写xml-包括跳过节的能力以及能够直接针对文档的子节进行操作。
(四) 安全性
java se 6中增加的安全方面的功能包括gss/kerberos集成,java认证和针对ldap认证的授权服务(jaas),还有一个安全证书请求框架-它允许java应用程序通过许多协议来请求安全证书。
三、 桌面特征和改进
长期以来,java被认为是一种基于服务器端软件的优秀语言,但是只能作为一种二流的桌面gui应用开发工具。sun的java桌面开发小组一直在致力于改变这种局面。在java se 6忠他们成功的把java与其所运行的主机系统更紧密地集成到一起,这导致的结果是,不仅使java se 6在gui性能方面得到很大的改进,而且也大大改进了java gui应用程序的行为。
java se 6的许多新的桌面特征都是基于jdesktop集成组件(jdic)工程。jdic工程使得java应用程序能够存取本机的os桌面中一些可用特征,例如浏览器、电子邮件编辑器、文件类型关联程序、系统托盘、应用程序启动与打印等。下列是java se 6中一些杰出的在桌面方面的改进:
? splash屏幕支持-splash屏幕能够通知一个用户,当他在等待时一个应用程序正在启动。java se 6增加了对splash屏幕的支持-即使在jvm启动后也可以显示splash屏幕。
? java基础类(jfc)和swing的改进:
* java se 6利用了windows api来提高性能以确保在当前以及未来的windows版本中都能具有windows外观感觉。
* 在设计管理改进方面,包括可定制的设计管理器和简化gui组件设计的其它一些改进。
* 对swing的拖放方面进行了大幅度改进,现在可以对这一功能进行定制。
* 真实的双缓冲机制提供了快速平滑的图形过渡效果。
? 系统托盘支持。java se 6中新增两个新类,systemtray和trayicon,包含在java.awt包中,它们允许把图标,工具提示框和弹出菜单添加到windows或gnome linux系统托盘。系统托盘是由所有应用程序共享的桌面区域,通常位于这个区域的右下方。行为(action)和事件(event)允许java应用程序对放到托盘上的项跟踪鼠标点击并响应这些点击。我发现这个特性对我的服务器端应用程序也非常有用。例如,通过与桌面api(见下面)一起使用,现在我可以把一个图标添加到系统托盘上来容易地实现为应用程序的管理html页面启动一个浏览器。无论什么样的os(linux或windows),我不再需要记住应用程序的管理端口或url,只需要简单地点击图标,则该页面就会出现。
? 针对jtable的改进的打印支持
? java 2d改进-在文本显示质量方面作了改进,特别是在lcd监视器方面。与主机桌面的字体反走样设置的集成可以确保连续的文本生成。
? 新的java.awt.desktop api-新的java se 6桌面包主要目的是使得java ui应用程序成为"第一流的公民"。通过使用这个包,java应用程序能够启动缺省的浏览器和电子邮件客户端,并且与普通桌面应用程序集成(例如openoffice)来打开、编辑和打印特定类型的文件。该桌面包通过能够集成到你的应用程序中的行动事件(desktop.action)提供了这种能力。
? 国际化支持-java se 6支持针对本地化特征的"插件化",例如日期格式化,unicode文本规范化以及资源绑定等。
四、 一场新的java桌面革命
实际上,本文也只是简单地介绍了java se 6这个即将发行的重要的java发行的beta版本中所作的一些改进。这些改进涉及到java标准版本的许多方面,包括那些与java企业版本非常密切的方面。
就象java 2对服务器所产生的影响一样,java se 6将会对桌面开发领域产生革命性的影响。如今,已经到了为这场新风暴作好准备并把你自己投入到其中的时候了。
闽公网安备 35060202000074号