职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 1221|回复: 0

JDK 6.0 - 总述及 XML 的新标准

[复制链接]
weisheng 发表于 2006-12-12 18:51 | 显示全部楼层 |阅读模式
《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提供就行了。
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-5-18 01:45 , Processed in 0.108548 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表