当前位置: 首页 > >

Java SE 6 的新特性

发布时间:

Java SE 6 的新特性






SUN公司表示,新的Java SE 6的成功发布,要归功于长达两年多的全行业范围内的通力研发合作。这种“通力的研发合作”包括了开放式的软件测评,每周一发的新测试版本,以及在SUN公司的内部工程师们和超过330名外部软件研发者之间的广泛而深远的协作。



新的Java SE 6也为我们带来了新的 JSR 270 标准,也就是以前所说的针对Java SE 6*台的umbrella JSR。而诸如IBM、Oracle、Red Hat、SAP、BEA、Google 和 Intel 一类的显赫的行业巨头也参加了SUN公司对于这项技术的修整。



事实上,有超过160家公司在SUN公司在一起通力合作,测试它们自己的基于 Java 技术的应用程序在新的Java SE 6*台上的表现,以帮助确保当新的Java SE 6*台发布的时候,能够获得最为广泛的兼容性,最为可靠的稳定性以及最佳的性能表现。



SUN公司还表示,新的Java SE 6对于先前版本的 Java *台具有良好的向后兼容性,从而确保了 Java 软件开发者们现有的知识和技能不会过时,并且商业公司们对于现有的 Java 技术的投资也不会遭受损失。



与此同时,SUN公司的官方发言人也表示,新的Java SE 6软件将会让软件开发过程变得更加简单,更加快速以及更加的经济,同时也会对现有的一系列关键性的工作任务提供“开发者辅助增强功能”。这些关键性的工作任务包括了互联网服务,动态语言支持,诊断和桌面应用程序等等。当新的Java SE 6和SUN公司的开放源代码工具包 NetBeans 5.5 一齐联合使用的时候,将给予软件开发者们一个坚实的框架来构筑应用程序和网络服务。



那么新的Java SE 6有哪些新的、令人激动的特新呢?




1、脚本语言支持:
诸如PHP、Ruby、JavaScript、Python(或Jython)之类的脚本编写语言被广泛应用于许多领域,并由于其灵活性和简单性而大受欢迎。由于脚本是被解释而不是被编译的,所以可以轻松地从命令行运行和测试它们。这就压缩了编码/测试周期,并提高了开发人员的生产率。脚本通常是动态键入的,其语法极富表现力,所编写出的算法要比Java中的等效算法简明得多。使用起来通常也很有趣。



在很多情况下,从Java使用脚本编写语言会很有用,比如为Java应用程序提供扩展,以便用户可以编写自己的脚本进行扩展或定制化核心功能。脚本编写语言可读性更强,也更容易编写,所以(从技术上来说)它们是用于为终端用户提供根据需求定制化产品的可能性的理想语言。



早已经有许多Java可用的独立脚本编写包了,包括Rhino、Jacl、Jython、BeanShell、JRuby等。新消息是Java 6通过一个标准接口为脚本编写语言提供了内置支持。



Java 6提供对JSR-223规范的全面支持。该规范提供了一种从Java内部执行脚本编写语言的方便、标准的方式,并提供从脚本内部访问Java资源和类的功能。Java 6附带了与Mozilla Rhino的JavaScript 实现的内置集成。基于该规范,对诸如PHP、Groovy和BeanShell之类的其它脚本编写语言的支持也正在进行中。



新的Java SE 6还支持具有一些新的框架和开发者程序接口(APIs)的动态语言,从而让开发者们能够将 Java 技术同诸如 PHP、Python、Ruby 和 JavaScript 一类的动态标注语言混合在一起。SUN公司同时也在新的Java SE 6*台当中,集中整合了一系列脚本语言引擎,并且还预先配置好了 Rhino JavaScript 引擎。




2、对最新的网络服务标准提供良好的支持:
新的Java SE 6软件还包含一系列完整的互联网服务客户端堆栈,能够对最新的网络服务标准提供良好的支持,其中包括 Java API for XML Web Services (JAX-WS) 2.0, Java Architecture for XML Binding (JAXB) 2.0, SOAP with Attachments API for Java (SAAJ)? 1.3 , the Streaming API for XML (STAX) 和 the Java API for XML Processing (JAXP)。



1)Java SE 6中对于Web Services规范的升级以及JAX-WS(Java API for XML Web Services)2.0规范,这些升级使得我们Web Services的创建和调用变得更加容易。使用这些新功能,我们可以仅仅使用简单的Annotations注释从一个Java类创建Web Services;随后,我们在调用这个服务的时候使用JAX-WS2.0。我们同样可以给这个服务添加一个管理者用来截取这个服务调用而且将截取的SOAP消息传输到System.out从控制台打印出来。



Java Architecture for XML Binding( JAXB )简化了启用 XML 的 Java 程序的创建和维护。 JAXB 提供一个绑定的编译器和一个运行时框架用来支持 XML 和 Java 对象的双向映射。绑定编译器可将 W3C XML 样式转换成一个或多个 Java 类,这个过程无需开发人员编写复杂的解析代码。模式派生类以及绑定框架可对输入和输出的 XML 文档启用错误或有效性检查,因而可以确保系统接收、处理和生成有效而无误的消息。



最新版本的JAXB 2.0可以在一个简单的包中绑定所有的XML数据,而之前我们使用的Web services 1.6,需要将部分数据绑定在JAX-RPC 1.x包中,将另一部分数据绑定在JAXB 1.x包中。使用最新的AX-WS 2.0, JAXB 2.0和SAAJ 1.3可以将Web services的描述、数据绑定和SOAP附属处理更有逻辑的构建,以使你的Web services 和Web应用更简单。



2)Streaming API for XML (StAX) 不仅能解析 XML 文档,而且可以把 XML 文档写入一个输出流。使用 Streaming for XML (StAX),可以避免传统推式解析器的缺陷,从而有效地筛选 XML 文档。新Streaming API通过事件流提供双向的API完成读写XML的工作,还包括略读文本和精读文本的能力,并且可以使用XML数字签名API,在XML数据上执行用密码写的操作。



直到最*,程序员通过编程创建 XML 文档还只有两种选择。一种是把序列化的 XML 内容写入输出流,第二种是使用 DOM。



这两种方法都有严重的缺陷。对于第一种情况,程序员完全负责保证结果文档是格式正规的。程序员必须处理其中的细节,比如起始标签和结束标签的匹配,以及字符内容中特殊字符的转义,如小于号(<)和逻辑与(&)。这可能造成程序的实现冗长乏味而且容易出错。另一方面,尽管 DOM 把程序员从这种沉重的负担中解放出来,但是引入了巨大的开销:在序列化到输出流之前,整个文档必须首先在内存中构造一棵节点树。



Streaming API for XML (StAX) 彻底改变这一切。与 Simple API for XML (SAX) 不同,StAX 提供了编写 XML 文档的 API。更具体地说,它提供了两种 API:底层的、基于指针的 API( XMLStreamWriter )和高级的、基于事件的 API( XMLEventWriter )。基于指针的 API 最适合用于数据绑定的情况(比如从应用程序数据创建文档),而基于事件的 API 则通常用于管道式的情况,从输入文档中的数据构造新的文档。




3、JDBC 4.0

JDBC 4.0中加入的主要功能包括:

自动加载JDBC驱动程序类。

连接管理增强。

支持RowId SQL 类型。

使用Annotations的DataSet SQL实现。

处理增强的SQL异常。

支持SQL XML。





4、桌面系统地增强

新的Java SE 6*台还为桌面系统带来了显著的改善。比如说,为了对交互式应用程序进行快速的可视开发,Java SE 6*台包含了一套全新的版面设计管理插件。这套插件基于 NetBeans GUI Builder (先前代码为Matisse)。同时新的Java SE 6也为微软公司的下一代操作系统Windows Vista提供了增强的支持。



随着Java SE 6的发行,Java开发者再也不需要自己去实现Java本机接口(JNI)便可以在其应用程序中加入桌面产品所具有的特征。这些桌面集成特征现在已成为内核的一个组成部分。



最新的Java标准版本6将在功能上进行一系列的改进--开发者们能够方便地用Java处理安全,JMX,操作系统文件,国际化和桌面开发等一系列问题。Sun在开发这个版本的过程中表现出非常积极的合作态度。他们通过JSR 270仔细地倾听开发者的意见并且在2006年2月早些时候就发行了所有的Java SE源码和二进制代码。看来,Sun正在倾力打造全新的桌面开发工具。



相对于以前的Java版本,Java SE 6的桌面集成能力特别受Java开发者欢迎。这些新特征把很多有趣的功能加入到Java桌面应用程序的开发中。



以前,开发例如Internet Explorer,系统托盘和邮件客户端等Java时,开发者必须在创建如Jtray和SysTray等Java本机接口(JNI)方面大伤脑筋。尽管这种"补丁"方案能够实现既定目的,但是绝大部分的Java开发者都非常盼望这些特征成为核心Java*台的一部分。



GUI 开发者可以有更多的技巧来使用 SwingWorker utility ,以帮助GUI应用中的多线程。, JTable 分类和过滤,以及添加splash闪屏。 并且将Java插件技术和Java Web Start引擎统一了起来





5、扩展和诊断工具
新的Java SE 6*台还提供了用于诊断、管理和监控应用程序的扩展工具,添加更多的诊断信息,绑定了不是很知名的 memory-heap 分析工具Jhat 来查看内核导出。同时也提供了对于新的NetBeans Profiler 5.5 和 Solaris DTrace 软件的支持。Solaris DTrace 是整合在 Solaris 10 操作系统当中的一种动态追踪框架。



此外,Java SE 6还通过升级了针对JVM (Java 虚拟机,Java Virtual Machine)和 JPDA (Java *台诊断体系,Java Platform Debugger Architecture)的工具界面,进一步简化了其相应的开发难度。





6、编译器接口

新的Java SE 6*台提供了Compiler API,也就是JDK为我们提供的访问Java编译器的接口,提供编程访问javac,可以实现进程内编译,动态产生Java代码。



现在我们可以用JDK6 的Compiler API(JSR 199)去动态编译Java源文件,Compiler API结合反射功能就可以实现动态的产生Java代码并编译执行这些代码,有点动态语言的特征。这个特性对于某些需要用到动态编译的应用程序相当有用, 比如JSP Web Server,当我们手动修改JSP后,是不希望需要*鬢eb Server才可以看到效果的,这时候我们就可以用Compiler API来实现动态编译JSP文件,当然,现在的JSP Web Server也是支持JSP热部署的,现在的JSP Web Server通过在运行期间通过Runtime.exec或ProcessBuilder来调用javac来编译代码,这种方式需要我们产生另一个进程去做编译工作,不够优雅而且容易使代码依赖与特定的操作系统;Compiler API通过一套易用的标准的API提供了更加丰富的方式去做动态编译,而且是跨*台的。




7、插入式注解处理API

插入式注解处理API(JSR 269)提供一套标准API来处理Annotations(JSR 175),实际上JSR 269不仅仅用来处理Annotation,我觉得更强大的功能是它建立了Java 语言本身的一个模型,它把method, package, constructor, type, variable, enum, annotation等Java语言元素映射为Types和Elements, 从而将Java语言的语义映射成为对象, 我们可以在javax.lang.model包下面可以看到这些类. 所以我们可以利用JSR 269提供的API来构建一个功能丰富的元编程(metaprogramming)环境. JSR 269用Annotation Processor在编译期间而不是运行期间处理Annotation, Annotation Processor相当于编译器的一个插件,所以称为插入式注解处理.如果Annotation Processor处理Annotation时(执行process方法)产生了新的Java代码,编译器会再调用一次Annotation Processor,如果第二次处理还有新代码产生,就会接着调用Annotation Processor,直到没有新代码产生为止.每执行一次process()方法被称为一个"round",这样整个Annotation processing过程可以看作是一个round的序列. JSR 269主要被设计成为针对Tools或者容器的API.




8、安全性的增强

XML-数字签名(XML-DSIG) APIs 用于创建和操纵数字签名);新的方法来访问本*教ǖ陌踩瘢绫镜豈icrosoft Windows for secure authentication and communicationnative 的Public Key Infrastructure (PKI) 和 cryptographic services, Java Generic Security Services (Java GSS) 和 Kerberos services for authentication, 以及访问 LDAP servers 来认证用户.



友情链接: