6有哪些新特征?

17小时前 (03:30:22)阅读1回复0
dyyh
dyyh
  • 管理员
  • 注册排名7
  • 经验值89630
  • 级别管理员
  • 主题17926
  • 回复0
楼主

  一:Desktop类和SystemTray类

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

前者能够用来翻开系统默认阅读器阅读指定的URL,翻开系统默认邮件客户端给指定的邮箱发邮件,用默认利用法式翻开或编纂文件(好比,用记事本翻开以txt为后缀名的文件),用系统默认的打印机打印文档;后者能够用来在系统托盘区创建一个托盘法式。

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

JAXB是Java Architecture for XML Binding的缩写,能够将一个Java对象改变成为XML格局,反之亦然。

我们把对象与关系数据库之间的映射称为ORM,其实也能够把对象与XML之间的映射称为OXM(Object XML Mapping)。

  本来JAXB是Java EE的一部门,在JDK1。6中,SUN将其放到了Java SE中,那也是SUN的一贯做法。JDK1。6中自带的那个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)是JDK1。6。0中除了DOM和SAX之外的又一种处置XML文档的API。

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

因为JDK1。6。0中的JAXB2(JSR 222)和JAX-WS 2。0(JSR 224)城市用到StAX所以Sun决定把StAX加进到JAXP家族傍边来,并将JAXP的版本晋级到1。4(JAXP1。4是JAXP1。3的庇护版本)。JDK1。

  6里面JAXP的版本就是1。4。

StAX是The Streaming API for XML的缩写,一种操纵拉形式解析(pull-parsing)XML文档的API。StAX通过供给一种基于事务迭代器(Iterator)的API让法式员往掌握xml文档解析过程,法式遍历那个事务迭代器往处置每一个解析事务,解析事务能够看做是法式拉出来的,也就是法式促使解析器产生一个解析事务然后处置该事务,之后又促使解析器产生下一个解析事务,如斯轮回曲到碰着文档完毕符;

SAX也是基于事务处置xml文档,但却是用推形式解析,解析器解析完全个xml文档后,才产生解析事务,然后推给法式往处置那些事务;DOM摘用的体例是将整个xml文档映射到一颗内存树,如许就能够很随便地得到父节点和子结点以及兄弟节点的数据,但假设文档很大,将会严峻影响性能。

四:利用Compiler API

如今我 们能够用JDK1。6 的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供给了愈加丰富的体例往做动态编译,并且是跨平台的。

五:轻量级

JDK1。6 供给了一个简单的实现类的回调办法。

六:插进式注解处置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开发掌握台法式

JDK1。6中供给了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同时标注多个外部依靠,java认证网,加进收躲容器会把所有那些外部依靠注进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)来做。

0
回帖

6有哪些新特征? 期待您的回复!

取消