Monday, March 6, 2006

The coming revolution

Java is facing a revolution on desktop because of the coming Java SE 6.0, Sun just released the first beta version of Java SE 6.0 a few days ago, and a log of people is making a test drive on it.

Here I present you an article which is highlighted on Sun's Java office site, and I think it will help u understand the new features better.

To view the original article, please click HERE.


初探Java SE 6: 一个桌面赢家

一个有着丰富的Java经验的开发者试用了一下Java SE 6 Beta,并且认为Java SE 6 有希望成为桌面开发的一次革命。

by Eric Bruno (Translated by Xu Ting)

刚刚发布的Java Standard Edition 6 (Java SE 6,也被称为Mustang)beta版完整的包括了预定的新特性,对于主流的应用来说,已经足够稳定。我在第一时间下载并尝试了这个新?动物?,并且被它全新的桌面特性所震撼。除了Java平台一贯以来的命名方式上的改变(去掉了2),它还包含了包含了很多值得探索一下的新特性。这些新特性可以分为两类:桌面和核心。

桌面上的改进主要集中在用户界面(UI)性能,以及,用本地化的接口与OS的桌面整合。核心部分则集中在提高开发人员的生产性,以及Java程序的可管理性上。Sun的Mustang团队也对Web Service以及安全性方面作出了显著的改进。

不管怎么样,无论你是一个应用程序开发人员,还是一个系统管理者,或者提供独立的工具,或者是一个安全专家,Java SE 6都为你准备了些东西。这片文章主要是详细讨论了一些我试用过了的有趣的特性。

有关Java核心的新特性以及改进。

关于Java 核心部分,我们认为是部分((语言和工具)对所有的Java而言都是很基础的东西,包括从界面API到服务端API库。下面我将按照不同的分类来讨论这些与Java核心相关的特性。

开发人员的生产性

新的Java编译器API允许你从一个Java应用程序中去编译另外的Java源程序。在这样的编译的过程中,应用程序将根据计算出来的依赖关系去访问那些相关的API库文件,这个过程也会产生Warning,Error以及其他一些在编译的时候会产生的消息。虽然这个功能是我不太会常去用的,但是我很快发现了一种用法。比如:我在我的应用程序A中,快速的用这个特性来编译A的数据访问层代码。我可以用我的代码去生成并且编译我在A程序中要去访问的数据库表的类,最终的结果可以是一个从Ant脚本中生成出来的JAR文件。这样最显而易见的一个事实就是我可以在自己的程序中去重新编译生成这些重要的文件,至少我可以不需要改动应用程序。

Java Scripting,是在Java SE6中实现了的JSR223。这是一个脚本框架,提供了让脚本语言来访问Java内部的方法。你可以在运行的时候找到脚本引擎,然后调用这个引擎去执行脚本。这个脚本API允许你为脚本语言提供Java支持。另外,Web Scripting Framework允许脚本代码在任何的Servlet容器(例如Tomcat)中生成Web内容。

对于调试,Java平台的调试器(JPDA)已经提供了死锁诊测,并且可以为产生了死锁的对象生成堆栈信息。另外,Java SE 6允许在一个运行中的JVM上,添加不同的诊断工具 。

应用程序管理

Java SE 6中对内存泄漏增强了分析以及诊断能力。当遇到java.lang.OutOfMemory异常的时候,可以得到一个完整的堆栈信息,并且当堆已经满了的时候,会产生一个Log文件来记录这个致命错误。另外,JVM还添加了一个选项,允许你在堆满的时候运行脚本。(这也就是提供了另外一种方法来诊断错误)

增强的JMX 监视API在MBean的属性值传入了一个特定的参数的时候,允许这个应用程序发送一个事件通告。(这里的属性值可以在很复杂的类型中)

对于Solaris 10的用户,为Solaris提供的Hotspot JVM中,提供了一种通过Solaris DTrace(这是个系统的调试工具)来追踪显示JVM内部的活动情况,包括垃圾收集,类装载,线程,锁等等。我在JavaOne上得到了一个第一手的DEMO,这个DEMO所显示的能追踪到的详细情况简直是太棒了。比如,当一个应用程序运行的时候,DTrace允许可以在任何地方中止代码,查看所有被载入内存的库(不仅仅是Java的类库,甚至是系统级别的库),并且可以单部跟踪到Solaris的内核中去,甚至可以直达硬件!Java新提供的这个工具为全世界提供了一种系统级别的追踪调试手段。我还记得以前我在Solaris的JVM上经常会收到一些Signal8这样的错误,这个特性将会省去我许多的猜测。

Web services

Java SE 6 包含了一些支持Web Services的新API。XML 数字签名API,允许你为基于Java上的Web Services数据提供加密的可能。Java-XML Web Services (JAX-WS)2.0API更新的以前称为JAX-RPC的API库。增强的Java-XML Binding (JAXB)2.0包含了对XMLSchema的支持,以及将某个Class绑定到一个Schema上去。最后, Streaming API for XML (STaX)提供了一个双向API,这个API可以通过一个事件流来读取或者写入XML,其中包括跳过某个部分,然后直接关注与文档中的另外一个小部分的能力。

安全

Java SE 6的安全部分,整合了GSS/Kerberos的操作API,LDAP上的JAAS认证,以及一个?请求安全认证?的框架,这个框架允许应用程序从一系列的协议中选择一种?请求安全认证?所用的协议。

桌面特性以及改进

Java长久以来,一直被认为是一个一流的服务器端软件的语言,但是桌面GUI应用上只能是二流地位。 Sun的Java桌面工作小组正在努力改变这个现状。通过调用系统的GUI接口,来更好的显示Java 的GUI应用。他们的努力不仅改善了Java SE 6中的GUI性能,也改变了一些Java GUI应用程序的行为。(比如提供了DnD的支持)

Java SE 6中的桌面新特性,大部分 都来自于JDesktop Integration Components(JDIC)项目。JDIC项目为Java的应用程序提供了访问OS底层本地桌面GUI接口的方法,例如浏览器,Email编辑器,文件类型绑定,系统托盘,阴应用程序启动,打印等等。 下面是那些Java SE 6中最显著的一些桌面特性。
  • 启动界面的支持。启动界面(Splash Screens)是一个应用程序启动的时候,用户等待的时候给用户看的界面。Java SE 6中的启动界面甚至可以在JVM启动之前显示出来。
  • JFC以及Swing中的改进:
    • Java SE 6通过调用Windows的API,不仅提高了 GUI的性能,也保证了在当前以及以后的Windows版本中的兼容
    • 增强的布局管理包含了一个可定制的布局管理,另外还包含了一些使得GUI元素布局的时候更加简单的方法。
    • Java SE 6中显著的增强了Swing控件的托拽功能,并且是可以定制的。
    • 真正的双缓冲,提供了快速,平滑的图形效果。
  • 系统托盘的支持。在java.awt包中,增加了SystemTray和TrayIcon两个类,它们允许你在Windows或者使用GNome的Linux的系统托盘区,添加图标,提示信息,弹出菜单。系统托盘区是所有的应用程序都共享的区域,通常在屏幕的右下角。通过系统的动作和事件可以允许你的Java应用程序去相应在托盘区的鼠标事件。我发现这个特性也同样对我的服务器程序非常有用,比如,我可以通过桌面API,非常轻松的启动一个浏览器,并且打开这个服务器程序的管理界面(当然,是HTML页面)。在Linux或者Window上,我再也不需要自己输入管理界面的URL和端口号了,只要简单的点击一下托盘图标就可以:)
  • JTable支持打印了
  • Java 2D方面增强了许多。 主要是在字符显示上,尤其在LCD的显示屏上。整合了许多字体反锯齿的设定来保证平滑的显示文字。
  • 新的java.awt.Desktop包。Java SE 6中这个新的包目标是让Java 的GUI应用程序成为?一等公民?。 有了这个包,Java的应用程序可以启动默认的浏览器和邮件客户端,并且整合了一些通用桌面应用程序的启动。例如启动OpenOffice,然后打开,编辑,打印一些制定的类型。Desktop包通过action事件来实现的,你可以将这些Action整合到你的应用程序中去。
  • 国际化。Java SE 6提供了一些本地化特性的可扩充性,比如日期格式,Unicode文字的一致性,资源簇等等。
一场Java桌面革命

Java SE 6提供了许多的特性,改进,bug修改等 (这些可以参考我的另外一篇翻译),本文旨在对Java这个即将到来的重要版本之前做一个历史的记录。 这个改动涉及到了Java SE如此多的方面,乃至几乎所有的Java应用程序都会被波及到,包括那些Java EE的应用程序。

Java SE 6有潜力成就一场桌面革命,就如同Java 2成就了一场服务器革命。最好是现在就为这场即将到来的风暴做好准备,让你自己成为革命的先锋人员。

Eric Bruno is a New York-based consultant who has built high-volume Web applications, database systems, and real-time transactional systems in Java and C++. Visit www.ericbruno.com for more about him.

No comments:

Post a Comment