岁月联盟 · 中国技术网 本站主页 | 安全认证 | 用户服务 | 技术论坛
新闻快报 | 新手学堂 | 黑客特区 | 程序语言 | 数 据 库 | 防 火 墙 | 路由交换 | 系统集成 | 服 务 器 | 存储备份 | 考试认证
Windows | Linux | Java | 协议分析 | 问题解答 | 进程大全 | 网页设计 | 多 媒 体 | 图库资料 | 软件下载 | 站内下载
  您现在的位置: 岁月联盟 >> Java >> XML >> WebServices >> Java正文
JDK 6.0--总述及XML的新标准
作者:未知 文章来源:本站整理 点击数: 更新时间:2007-7-23 0:05:13

   《Java.6.Platform.Revealed》  Apress 2006.Jul 出版,不得不佩服国外出版社的效率。在ROR步步进逼,风声雨声的时候,八卦一下Java 6有什么新功能对Java程序员还是很好的。此书易读,代码清晰,239页,大约几个小时就能翻完。

       JDK6的升级大体可以分为几大类:

       一、JavaEE 5中新XML,WebService标准的JavaSE固化,如StAX、JAXB2、JSR181等。

       二、JSR223 Script的引入,可在Java代码中运行Javascript, Ruby, Php,对开发人员刺激较大。

       三、JDBC 4,开始直接支持轻度的ORM,对XML支持增强,但其实要等各jdbc driver厂商的实现。

       四、Compiler API及Pluggable Annocation,对IDE开发厂商帮助较大 ,比如即时编译。
               而Common Annotations对普通开发人员意义更大一点。

       五、每次升级必有的Swing、Collections、 IO 的小更新。 

      JDK6 新特性很多文章都有提,还是实实在在的具体代码更让人放心。

一、XML新标准

JSR 105: XML Digital Signature
JSR 173: Streaming API for XML
JSR 222: JAXB 2.0

1.StAX--Streaming API,一种在Dom,Sax之外号称完美的XML处理方式

大家都知道DOM虽好,但狂吃内存。

Sax并不把全部内容保存在自己的内存里,而是由Sax框架不断调用处理程序实现的OnElementBegin()等函数,由框架推送内容,处理程序通过回调函数处理所有内容,Sax将XML内容全部推给处理程序后就下班休息。所以称为推模式。

而StAX既然被称为拉模式,访问数据的方法其实与Sax差不多,但与只能被动实现回调函数的不能进行暂停和跳过等操控的Sax不同,StAX是主动用Iterator API循环去读取XML的,控制权完全在处理程序手中。

XMLInputFactory xmlif = XMLInputFactory.newInstance();
XMLEventReader xmler = xmlif.createXMLEventReader(new FileReader("points.xml"));
XMLEvent event;
while (xmler.hasNext()) {
  event = xmler.nextEvent();
  if (event.isStartElement()) {
    console.printf("%s", event.asStartElement().getName());
  } else if (event.isCharacters()) {
    console.printf(" %s", event.asCharacters().getData());
  }
}

 

2.JAXB2使用Annotation定义实现 Java->xml 的生成
  只要在POJO里声明了@XmlRootElement,JAXB2就会自动进行绑定。其他标签还有一堆,大家自己看书的138页。看sample比其他的binding方案清爽了不少。

Pojo定义:

@XmlRootElement
private static class Point ...{
int x;
int y;
//getter setter about x,y
}

生成XML的代码:

JAXBContext context = JAXBContext.newInstance(Point.class);
Marshaller m = context.createMarshaller();
Point p = new Point(3, 4);
m.marshal(p, System.out);

输出结果:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<point>
<x>3</x>
<y>4</y>
</point>

 XML Schema->Java Class

一个叫xjc的自带工具负责编译,如xjc course.xsd。

 3.xml加密签名包

david.turing 会很关心,我一眼扫过去了,反正记得这功能已经由JDK的javax.xml.crypto package提供就行了。


  • 上一个Java:
  • 下一个Java:
  •  
    热门文章
    推荐文章
    关于我们 | 发展历程 | 网站地图 | 广告服务 | 招贤纳士 | 战略合作 | 友情链接 | 著作声明 | 联系我们
    Copyright © 2002-2007 SYUE All rights reserved.
    E_mail:Admin@Syue.Com 皖ICP备05004589号
    未经授权禁止转载、摘编、复制或建立镜像.如有违反,追究法律责任.
    传世私服 传奇世界私服 天龙八部私服 bet365 传世私服 天龙八部私服 热血江湖私服 英雄合击传奇私服 热血江湖私服 bet365 bet365