posts - 189,comments - 115,trackbacks - 0

Java6印象:桌面应用胜出者

         Java beta已经发布了,虽然离正式的FCS还有一段时间,一个朋友还是急不可耐地下载了Java6进行试用,他认为Java6将会给Java桌面开发带来革命性的变化。

         最近发版的Java6(Mustang)beta是功能齐全足够稳定的版本,我下载并在第一周测试了这一版,我尤其被它的桌面功能所吸引,除了命名习惯改变了(2不再Java SE中出现),在许多新功能上都值得探索。改进总的来说分为两类:桌面开发和内核。

         桌面开发改进主要体现在用户界面(UI)效率以及本地操作系统桌面集成上。核心改进主要集中在增加开发效率和Java应用管理上。Sun的Mustang开发小组对Web服务和安全改进做了很多重要的努力。

         总的来说,不管你是应用开发者、系统管理员、工具提供商或者安全专家,Java6都为你提供你想要的。本文描述了一些我用过的有趣新功能。

内核功能和改进

         Java内核是Java的几个部分,包括语言和工具,这些是Java其他方面的基础,从用户界面API到服务类库。下面我细分小类描述Java内核以及Java6的改进。

开发效率

         新的Java编译器API允许在Java应用程序中编译Java代码。在编译的时候,应用程序能够访问格式化的类库依赖信息、警告信息、错误信息以及编译中产生的其他消息(该功能已经被netbeans6.0集成进去,实现新的Javac API,并籍此提高错误信息的提示)。尽管此项功能我不会经常用到,但是我已经发现它的新用处了。比如,用它为应用程序数据库迅速生成数据访问层。我写的代码生成并编译访问应用程序数据库的类,最终生成jar文件,这些jar文件产生、生成之后作为系统的一部分部署到Ant脚本中。在应用程序中生成并编译使得代码生成变得可以互动起来,我可以不断修改并反复生成这些类。

         为使用Java的脚本功能,Java6支持了JSR223,JSR223提供脚本语言访问Java内部的框架,你可以在运行时定位并启动脚本引擎来运行你指定的脚本。另外,Web脚本框架还允许脚本在任何Servlet容器内生成Web页面。

         对于调试来说,Java平台调试接口(JPDA)增强了检测死锁以及为被锁定监控对象产生堆栈跟踪的功能。此外,Java6添加了允许客户程序attach到一个正在运行的虚拟机进行诊断的功能。

应用程序管理

         Java6增强了内存泄漏分析和检测,在java.lang.OutOfMemory异常中包含了所有跟踪栈的信息,并能当堆栈溢出时时产生致命错误的日志。另外,增添了一个新的虚拟机选项允许你当堆栈溢出时调用某段脚本。

         JMX监控API的增强允许应用程序在MBean属性值(包括那些包含在复杂类型内的)超出临界值时发送事件消息。

         对于Solaris10用户,Solaris的Hotspot JVM为Solaris的DTrace系统调试工具提供钩子来追踪和显示虚拟机内部活动,比如垃圾收集器、类加载、线程、锁等等。参加JavaOne大会时,我观看此项功能的演示,深深被DTrace工具调试的深度所吸引。应用程序运行时,DTrace允许你在任何地方中断代码的运行,查看所有加载的库(不仅仅是Java类库,还包含系统类库),跟踪到Solaris内核直至硬件!Java提供的这个令人惊讶的新工具让系统调试成为可能。我现在还记得过去经常会遇到虚拟机中报出Solaris Signal-8的错误,此新功能能帮我一探究竟。

Web服务

          Java6包含了一些新的API来支持Web服务。XML数字签名API允许你对XML数据进行加密,从而安全地使用基于Java的Web服务,Java-XML Web服务(JAX-WS)2.0 API更新了以前称作JAX-RPC的接口。Java-XML绑定(JAXB)2.0的增强包括XML Schecma支持以及将类直接绑定到Schema上。最后,XML流API(STaX)提供了双向应用程序接口通过事件流来读写XML,包括跳过某些部分,只处理于文档的某些部分。

安全

          Java6的安全包括GSS/Kerberos集成,LDAP认证的Java认证及授权服务(JAAS),允许Java应用程序通过多种协议请求安全证书的安全证书请求框架。

桌面功能和改进

         很长一段时间内Java被认为是优秀的服务器段软件语言,而在桌面GUI应用方面被认为是次等公民。Sun的Java桌面开发小组一直致力于改变这种看法,将Java同本地操作系统更紧密的集成,结果在Java6中不仅提高了用户界面效率,还改进了Java GUI应用程序的表现。

         Java6的许多新的桌面功能基于JDIC项目,JDIC项目让Java应用程序可以访问本地操作系统的许多功能,比如浏览器、email编辑器、文件类型关联、系统托盘、应用程序启动以及打印等等。下面是Java6在桌面开发上的明显改进:

启动画面支持

         启动画面告诉用户等待应用程序启动。Java6甚至提供了在虚拟机启动之前展现启动画面的支持。

Java基础类(JFC)以及Swing改进

         Java6调整了Windows API,使Swing既提高了运行速度,又保证了当前Windows版本的Windows外观。

  • 增强了布局管理器,加入了自定义布局管理器以及其他简化界面组件的布局器。
  • 极大的增强了Swing的drag-and-drop功能,使其更加灵活。
  • 真双缓冲机制提供了快速平滑的界面切换。
  • 系统托盘支持,在java.awt中增添了两个新类SystemTray和TrayIcon,允许你在Windows和Gnome Linux系统托盘上添加图标、tool tips、以及弹出菜单。系统托盘是所有应用程序共享的桌面领域,通常位于桌面的左下角,动作事件允许Java应用程序跟踪你放入托盘上图标鼠标点击事件。我发现这个新功能对我的服务器端程序也有用,比如和下文所提到的Desktop API结合使用能容易地为应用程序管理员启动管理页面浏览器。不管是什么操作系统(Linux还是Windows),我不再需要记住应用程序管理端口或者URL,只需要点击图标,页面就出现了。
  • JTable的增强打印的支持。
  • Java2D的增强:增强了文本显示质量,特别是在液晶(LCD)显示器上,同本地桌面字体反走样设置集成确保了文本显示的一致性。
  • 新的java.awt.Desktop的API:Java6新的Desktop包目的是使Java用户界面程序成为一等公民。使用该包,Java应用程序能够启动缺省的浏览器和电子邮件客户端,并且和普通桌面应用程序(比如OpenOffice)集成,能够打开、编辑并且打印特定类型的文件。Desktop包通过动作事件(Desktop.Action)来提供此项功能,让你能集成到你的应用系统中。

国际化

           Java6为某些格式支持可插拔式支持,比如日期格式化、Unicode文本标准化以及资源bundle。

         Java6有可能使Java桌面应用产生革命的变化,就像java 2曾经产生的服务器端革命一样。我们最好为这场风暴做好准备,为早期投入Java桌面市场得到的报偿摆好姿态。

posted on 2007-03-30 20:32 MEYE 阅读(668) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: