`
fengjianchao_vip
  • 浏览: 42983 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

有关jdk1.6新特性简单整理

阅读更多

一:Desktop类和SystemTray类

在JDK6中 ,AWT新增加了两个类:Desktop和SystemTray。

前者可以用来打开系统默认浏览器浏览指定的URL,打开系统默认邮件客户端给指定的邮箱发邮件,用默认应用程序打开或编辑文件(比如,用记事本打开以txt为后缀名的文件),用系统默认的打印机打印文档;后者可以用来在系统托盘区创建一个托盘程序.

二:使用JAXB2来实现对象与XML之间的映射

JAXB是Java Architecture for XML Binding的缩写,可以将一个Java对象转变成为XML格式,反之亦然。

我们把对象与关系数据库之间的映射称为ORM, 其实也可以把对象与XML之间的映射称为OXM(Object XML Mapping). 原来JAXB是Java EE的一部分,在JDK6中,SUN将其放到了Java SE中,这也是SUN的一贯做法。JDK6中自带的这个JAXB版本是2.0, 比起1.0(JSR 31)来,JAXB2(JSR 222)用JDK5的新特性Annotation来标识要作绑定的类和属性等,这就极大简化了开发的工作量。

实际上,在Java EE 5.0中,EJB和Web Services也通过Annotation来简化开发工作。另外,JAXB2在底层是用StAX(JSR 173)来处理XML文档。除了JAXB之外,我们还可以通过XMLBeans和Castor等来实现同样的功能。

三:理解StAX

StAX(JSR 173)是JDK6.0中除了DOM和SAX之外的又一种处理XML文档的API。

StAX 的来历 :在JAXP1.3(JSR 206)有两种处理XML文档的方法:DOM(Document Object Model)和SAX(Simple API for XML).

由于JDK6.0中的JAXB2(JSR 222)和JAX-WS 2.0(JSR 224)都会用到StAX所以Sun决定把StAX加入到JAXP家族当中来,并将JAXP的版本升级到1.4(JAXP1.4是JAXP1.3的维护版本). JDK6里面JAXP的版本就是1.4. 。

StAX是The Streaming API for XML的缩写,一种利用拉模式解析(pull-parsing)XML文档的API.StAX通过提供一种基于事件迭代器(Iterator)的API让程序员去控制xml文档解析过程,程序遍历这个事件迭代器去处理每一个解析事件,解析事件可以看做是程序拉出来的,也就是程序促使解析器产生一个解析事件然后处理该事件,之后又促使解析器产生下一个解析事件,如此循环直到碰到文档结束符;
SAX也是基于事件处理xml文档,但却是用推模式解析,解析器解析完整个xml文档后,才产生解析事件,然后推给程序去处理这些事件;DOM采用的方式是将整个xml文档映射到一颗内存树,这样就可以很容易地得到父节点和子结点以及兄弟节点的数据,但如果文档很大,将会严重影响性能。

四:使用Compiler API

现在我 们可以用JDK6 的Compiler API(JSR 199)去动态编译Java源文件,Compiler API结合反射功能就可以实现动态的产生Java代码并编译执行这些代码,有点动态语言的特征。

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

五:轻量级Http Server API
 
JDK6 提供了一个简单的Http Server API,据此我们可以构建自己的嵌入式Http Server,它支持Http和Https协议,提供了HTTP1.1的部分实现,没有被实现的那部分可以通过扩展已有的Http Server API来实现,程序员必须自己实现HttpHandler接口,HttpServer会调用HttpHandler实现类的回调方法来处理客户端请求,在这里,我们把一个Http请求和它的响应称为一个交换,包装成HttpExchange类,HttpServer负责将HttpExchange传给 HttpHandler实现类的回调方法.

六:插入式注解处理API(Pluggable Annotation Processing 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. 举个例子,我们想建立一套基于Annotation的单元测试框架(如TestNG),在测试类里面用Annotation来标识测试期间需要执行的测试方法。

七:用Console开发控制台程序

JDK6中提供了java.io.Console 类专用来访问基于字符的控制台设备. 你的程序如果要与Windows下的cmd或者Linux下的Terminal交互,就可以用Console类代劳. 但我们不总是能得到可用的Console, 一个JVM是否有可用的Console依赖于底层平台和JVM如何被调用. 如果JVM是在交互式命令行(比如Windows的cmd)中启动的,并且输入输出没有重定向到另外的地方,那么就可以得到一个可用的Console实例.

八:对脚本语言的支持如: ruby, groovy, javascript.

九:Common Annotations

Common annotations原本是Java EE 5.0(JSR 244)规范的一部分,现在SUN把它的一部分放到了Java SE 6.0中.
随着Annotation元数据功能(JSR 175)加入到Java SE 5.0里面,很多Java 技术(比如EJB,Web Services)都会用Annotation部分代替XML文件来配置运行参数(或者说是支持声明式编程,如EJB的声明式事务), 如果这些技术为通用目的都单独定义了自己的Annotations,显然有点重复建设, 所以,为其他相关的Java技术定义一套公共的Annotation是有价值的,可以避免重复建设的同时,也保证Java SE和Java EE 各种技术的一致性.

下面列举出Common Annotations 1.0里面的10个Annotations Common Annotations 
Annotation Retention Target Description
Generated Source ANNOTATION_TYPE, CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE 用于标注生成的源代码 
Resource Runtime TYPE, METHOD, FIELD 用于标注所依赖的资源,容器据此注入外部资源依赖,有基于字段的注入和基于setter方法的注入两种方式 
Resources Runtime TYPE 同时标注多个外部依赖,容器会把所有这些外部依赖注入
PostConstruct Runtime METHOD 标注当容器注入所有依赖之后运行的方法,用来进行依赖注入后的初始化工作,只有一个方法可以标注为PostConstruct
PreDestroy Runtime METHOD 当对象实例将要被从容器当中删掉之前,要执行的回调方法要标注为PreDestroy RunAs Runtime TYPE 用于标注用什么安全角色来执行被标注类的方法,这个安全角色必须和Container 的Security角色一致的。RolesAllowed Runtime TYPE, METHOD 用于标注允许执行被标注类或方法的安全角色,这个安全角色必须和Container 的Security角色一致的
PermitAll Runtime TYPE, METHOD 允许所有角色执行被标注的类或方法
DenyAll Runtime TYPE, METHOD 不允许任何角色执行被标注的类或方法,表明该类或方法不能在Java EE容器里面运行 
DeclareRoles Runtime TYPE 用来定义可以被应用程序检验的安全角色,通常用isUserInRole来检验安全角色

注意:   
1.RolesAllowed,PermitAll,DenyAll不能同时应用到一个类或方法上

2.标注在方法上的RolesAllowed,PermitAll,DenyAll会覆盖标注在类上的RolesAllowed,PermitAll,DenyAll

3.RunAs,RolesAllowed,PermitAll,DenyAll和DeclareRoles还没有加到Java SE 6.0上来 

4. 处理以上Annotations的工作是由Java EE容器来做, Java SE 6.0只是包含了上面表格的前五种Annotations的定义类,并没有包含处理这些Annotations的引擎,这个工作可以由Pluggable Annotation Processing API(JSR 269)来做

分享到:
评论

相关推荐

    JDK1.6新特性搜集整理

    通过这些新特性,JDK1.6为开发者提供了更强大的工具集,提升了开发效率,同时也优化了应用程序的性能和可管理性。理解并掌握这些特性,对于深入理解Java技术和开发高质量的Java应用具有重要的意义。

    Java JDK1.5、1.6、1.7新特性整理

    ### Java JDK 1.6 新特性 1. **Desktop API** 和 **SystemTray API**: - `Desktop` 类提供了打开文件、URL、邮件和打印文档的能力。 - `SystemTray` 类支持在操作系统任务栏创建系统托盘图标,实现系统托盘程序...

    JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版整理

    Java开发工具包(JDK)是Java编程的核心组成...从JDK 1.5到JDK 1.7,每一次升级都带来了新的特性和优化,旨在提升开发效率和程序性能。掌握并利用好这些工具和资源,开发者可以更好地利用Java平台构建高质量的应用程序。

    javaweb知识点整理.docx

    在 JDK1.6 中,AWT 新增加了两个类:Desktop 和 SystemTray。Desktop 类可以用来打开系统默认浏览器浏览指定的 URL,打开系统默认邮件客户端给指定的邮箱发邮件,用默认应用程序打开或编辑文件,例如,用记事本打开...

    Java 1.6 源代码

    它引入了许多新特性,如改进的Swing组件、新的XML处理API(如StAX)、增强的I/O流、动态代理类、改进的内存管理以及对JSR 223(脚本引擎)的支持。 3. **源代码的重要性**:阅读Java 1.6源代码可以帮助开发者理解...

    PHP+Python+JDK+Android+Apache+C++各种开发文档和手册

    JDK1.6版本的API文档详细列出了Java语言的类库和接口,包括IO流、网络编程、多线程、集合框架等,是Java程序员的重要参考。 4. **Android**:Android是Google开发的开源移动操作系统,用于智能手机和平板电脑。...

    AndroidSDK与Eclipse最新版开发环境搭建[整理].pdf

    2. Java Development Kit (JDK):至少需要JDK 1.5或更高版本,推荐使用JDK 1.6或以上。你可以从Oracle官方网站下载JDK,例如Java SE 6 Update 23。 接下来,你需要下载并安装以下组件: 1. Android SDK:这是开发...

    使用testng测试java工程_操作手册整理.pdf

    - 指定JDK1.6的安装目录并完成配置。 **添加工程** 1. **导入Test工程**: - 将解压后的Test工程文件复制到合适目录。 - 在MyEclipse的Package Explorer中,右键选择“Import”。 - 选择“Existing Projects ...

    图解SSH框架配置步骤

    JDK 1.6是Java的最新版本,提供了许多新的特性和改进。Java EE 5.0是Java的企业版,提供了许多有用的功能,如EJB、JSP、Servlet等。 1.2 Tomcat的安装和配置 Tomcat是Apache软件基金会提供的一个开源的Web服务器,...

    JVM堆模型

    《Sun_JDK_1.6内存管理--使用篇-毕玄.pdf》提供了实践指导,帮助我们根据应用特性选择合适的垃圾收集器,调整内存参数,进行性能调优。 总结,JVM堆模型的理解和优化是Java开发者必须掌握的关键技能。通过对堆内存...

    Java的质料.zip

    类似于JDK 1.8的API文档,但针对的是JDK 1.6版本。虽然Java已经发展到了更高的版本,但了解旧版本的API可以帮助理解历史背景和演进过程,尤其是对于需要维护旧项目或对兼容性有要求的开发者。 通过学习这些资料,...

    HashSet详解和使用示例_动力节点Java学院整理

    在JDK 1.6版本的HashSet源码中,可以看到一个内部的HashMap实例`map`,以及一个常量`PRESENT`,用来表示HashMap的value。当添加元素时,实际上是将元素作为key,`PRESENT`作为value存入HashMap中。 在实际使用中,...

    J2P-开源

    总结,`J2P` 是一个简单的 Java 图像转 PDF 工具,它的开源性质允许社区参与改进和扩展,为用户提供了一种便捷的方式将图像文件整理成 PDF 格式。虽然目前功能有限,但通过不断的迭代和开发,有望成为一个更全面的...

    主流编译器下载地址

    根据提供的信息,我们可以总结出以下相关的IT知识点: ...以上是根据提供的信息整理的相关知识点,涵盖了Visual Studio的不同版本、Java开发工具以及C/C++开发工具的相关介绍。希望这些信息能够帮助到您。

    java小型房屋租赁管理系统设计与实现(含源文件)整理.pdf

    其中JDK 1.6的版本号尤为重要,它是Java开发工具箱的一个特定版本,对开发环境有一定的性能和功能要求。 此外,系统采用了MVC(Model-View-Controller)设计模式,这是一种软件设计模式,主要用于管理用户界面的...

    JVM之基本的垃圾回收算法汇总

    G1是Oracle JDK 1.6引入的一种新的垃圾回收器,它结合了分代、并发和空间整理的特性,目标是实现可预测的暂停时间模型。G1将堆划分为多个大小固定的区域,并尝试预测每个GC周期的暂停时间,从而满足应用程序的性能...

    基于JSP的仓库库存管理系统的设计与实现答辩ppt.ppt

    系统开发环境包括Windows 7操作系统,MySQL数据库,JDK 1.6作为开发环境,MyEclipse 6.5作为集成开发工具,以及Tomcat 6.0服务器。系统的主要功能模块包括物品分类管理、物品管理、出库明细、入库明细、出库管理、...

    JAVA_Thinking in Java(中文版 由yyc,spirit整理).chm

    JAVA_Thinking in Java(中文版 由yyc,spirit整理).chm ------------------------------------------------- 本教程由yyc,spirit整理 ------------------------------------------------- “Thinking in Java...

Global site tag (gtag.js) - Google Analytics