JAXB和XStream比较

这两东东本质上是有差别的,JAXB称为OX binding工具,XStream应该算序列化工具,但OX binding工具也会marshall和unmarshall,所以包含了序列化这一部分。序列化工具不一定需要提供binding的功能。既然都玩序列化,那就简单地比较一下它们两在序列化方面的强弱吧。

JAXB:Toplink JAXB 10133,应该是JAXB 1.1标准 (取消了schema的validation功能)

XStream:1.3.1

数据长度:

类型

长度

内容

XStraem

351

<com.oocl.frm.ws.sample.Employee>

 <name>Liufei</name>

 <age>40</age>

 <address>

    <street>Zhaojiabang</street>

    <country>China</country>

    <city>Shanghai</city>

    <doorNum>789</doorNum>

    <empName>Afka liu</empName>

 </address>

 <salary>20000.0</salary>

 <isActive>false</isActive>

 <sexy>F</sexy>

</com.oocl.frm.ws.sample.Employee>

Toplink JAXB

589(已经去掉了white space)

<?xml version="1.0" encoding="UTF-8"?>

<ns0:employee xsi:schemaLocation="http://www.oocl.com/frm/ws/jaxb" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ns0="http://www.oocl.com/frm/ws/jaxb" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><ns0:name>Liufei</ns0:name><ns0:age>40</ns0:age><ns0:salary>20000.0</ns0:salary><ns0:sexy>F</ns0:sexy><ns0:isActive>false</ns0:isActive><ns0:address><ns0:street>Zhaojiabang</ns0:street><ns0:country>China</ns0:country><ns0:city>Shanghai</ns0:city><ns0:doorNum>789</ns0:doorNum><ns0:empName>Afka liu</ns0:empName></ns0:address></ns0:employee>

时间:序列化和反序列化1000000次。

类型

序列化(ms)

反序列化(ms)

XStraem

90148

135878

Toplink JAXB

34872

56557

结果对比:数据量XStream占优势,时间性能上Toplink Jaxb占明显优势

总结(只从序列化功能角度看)

JAXB: 优点

  • J2EE标准
  • 运行时间比XStream少

缺点

  • 用起来不方便:需要把手动的把business object转换成schema object,当然也可以直接将schema object作为business object,或者采用反射的方法。
  • 有一定的局限性:需要schema或者annotation
  • 数据量稍大

XStream优点:

  • 用起来方便
  • 不需要schema,拿过来就转
  • 数据量稍小

缺点:

  • 非标准
  • 时间性能差

转载于:https://www.cnblogs.com/wlsblog/p/7452949.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/257600.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【起航计划 011】2015 起航计划 Android APIDemo的魔鬼步伐 10 App-Activity-Reorder Activities 后退栈 Intent FLAG...

Reorder Activities 示例有四个相关的Activitives: ReorderOnLaunch, ReorderTwo,ReorderThree, ReorderFour。其中ReorderOnLaunch为主Activity&#xff0c;ReorderOnLaunch启动ReorderTwo &#xff0c;ReorderTwo启动 ReorderThree&#xff0c;ReorderThree启动 ReorderFour。…

java date dateformat_java中Date与DateFormat的格式输出

一、DateFormatjava.text.DateFormat使用 getDateInstance 来获取该国家/地区的标准日期格式。另外还提供了一些其他静态工厂方法。使用 getTimeInstance 可获取该国家/地区的时间格式。使用 getDateTimeInstance 可获取日期和时间格式。可以将不同选项传入这些工厂方法&#x…

spartan6不能直接把时钟连到IO上

1、问题的提出&#xff1a;spartan6中不允许时钟信号直接连到IO口上面&#xff1f; 2、解决办法&#xff1a;ODDR2的使用 ODDR2Primitive: Double Data Rate Output D Flip-Flop with Optional Data Alignment, Clock Enable and Programmable Synchronous or Asynchronous Set…

STL容器及适配器

STL容器 1.序列式容器 &#xff1a; vector&#xff0c;deque&#xff0c;list。 每个元素都有固定的位置&#xff08;取决于插入的时机和位置&#xff0c;与元素值无关&#xff09;。 vector 特点&#xff1a; 将一个元素置于一个动态数组中加以管理&#xff0c;可以随机存取元…

Html5 Canvas斗地主游戏

过完年来公司&#xff0c;没什么事&#xff0c;主管说研究下html5 游戏&#xff0c;然后主管就给了一个斗地主的demo&#xff0c;随后我就开始看代码&#xff0c; 现在我看了html5以及canvas相关知识和斗地主的demo后&#xff0c;自己用demo上的素材试着写了个斗地主&#xff0…

java流的传递方式是_如何在方法中流式传输Java List(Varargs)的值?

我有以下方法&#xff1a;public static List getValuesExclusion(A exclusion) {return Arrays.stream(values()).filter(item -> item ! exclusion).collect(Collectors.toList());}//this function returns enum list of A types that has no A typeexclusion现在我想将它…

JAVA作业——JAVA课程的总结及学习计划

JAVA作业——JAVA课程的总结及学习计划 NO.1 总结 在上一年的学习中&#xff0c;对JAVA语言比较陌生&#xff0c;英语基础不好&#xff0c;so学习起来有点困难&#xff0c;对JAVA的一些语法和编程记得比较少。 NO.2 计划 对过去一年的认真反思之后&#xff0c;我的计划如下&…

由LintCode问题子集出发,浅析ArrayList的拷贝问题

在做LintCode上的递归类题目子集时&#xff0c;我一开始的想法是递归到最后一层即单元素时然后开始逐层返回&#xff0c;产生相应的每层的子集并添加到最终的结果中去。于是乎有了以下代码&#xff1a; public List<List<Integer>> findSolution(int[] nums, int b…

大小端模式详解

http://www.cnblogs.com/xinsheng/archive/2012/04/18/2455039.html 端模式&#xff08;Endian&#xff09;的这个词出自Jonathan Swift书写的《格列佛游记》。这本书根据将鸡蛋敲开的方法不同将所有的人分为两类&#xff0c;从圆头开始将鸡蛋敲开的人被归为Big Endian&#xf…

.NET 跨平台服务端资料

OWIN Web API: http://www.asp.net/web-api/overview/hosting-aspnet-web-api/use-owin-to-self-host-web-api 用于写API的 OWIN SignalR: http://www.dotnetcurry.com/signalr/915/owin-katana-signalr-web-server 用于写即时通讯的转载于:https://www.cnblogs.com/Jarvin…

mysql的查询、子查询及连接查询

一、mysql查询的五种子句 where子句&#xff08;条件查询&#xff09;&#xff1a;按照“条件表达式”指定的条件进行查询。 group by子句&#xff08;分组&#xff09;&#xff1a;按照“属性名”指定的字段进行分组。group by子句通常和count()、sum()等聚合函数一起使用。 h…

BZOJ-1192-鬼谷子的钱袋

描述 鬼谷子非常聪明&#xff0c;正因为这样&#xff0c;他非常繁忙&#xff0c;经常有各诸侯车的特派员前来向他咨询时政。有一天&#xff0c;他在咸阳游历的时候&#xff0c;朋友告诉他在咸阳最大的拍卖行&#xff08;聚宝商行&#xff09;将要举行一场拍卖会&#xff0c;其中…

lamp 独立mysql_lamp or lnmp 环境搭建之独立安装mysql数据库

lamp or lnmp 环境搭建,如果mysql 是独立安装的则需要授权&#xff1a;单独一台服务器独立安装mysql安装后&#xff0c;优化服务器。授权实例如下&#xff1a;创建用户CREATE USER demo IDENTIFIED BY “passwd123”;授权使用mysql数据库下面的所有表GRANT ALL PRIVILEGES ON m…

item 24: 区分右值引用和universal引用

本文翻译自《effective modern C》&#xff0c;由于水平有限&#xff0c;故无法保证翻译完全正确&#xff0c;欢迎指出错误。谢谢&#xff01; 博客已经迁移到这里啦 古人曾说事情的真相会让你觉得很自在&#xff0c;但是在适当的情况下&#xff0c;一个良好的谎言同样能解放你…

WebLogic11g-常用运维操作

转自&#xff1a;https://dead-knight.iteye.com/blog/1940399 希望这篇能把weblogic运维时经常遇到的问题、常用的配置汇总到一起。 1、配置jvm参数&#xff1a; 一般在domain启动过程中会看到以下启动的日志信息&#xff0c;如下图所示&#xff1a; 图中红色方框部分为启动we…

牛腩新闻发布系统(一):SQLHelper重构(一)

导读&#xff1a;在机房重构的时候&#xff0c;就用到了SQLHelper&#xff0c;但那时候即使把代码反复看了很多遍&#xff0c;也看了注释&#xff0c;还和同学交流&#xff0c;也依然是半懂不懂。现在&#xff0c;我再次用到了SQLhelper这个东西&#xff0c;就来说说SQLHelper是…

OPENCV图像轮廓检测

前面在图像转换的时候学到canny算子,可以检测出图像的轮廓信息,但是,该算子检测到的轮廓信息还需要我们手动的用眼睛去识别,而实际工程应用中,我们需要得到轮廓的具体数学信息,这就涉及到今天的主题,图像轮廓检测. 一.图像轮廓检测 在opencv中,轮廓对应着一系列的点的集合,open…

mysql 5.7.11 授权_mysql 5.7.11 安装配置教程

六步轻松搞定mysql5.7.11的安装1、下载安装包。mysql-5.7.11版本&#xff1a;2、拷贝到任意盘&#xff1a;例如&#xff0c;解压后拷贝文件夹至C盘&#xff1a;C:\Program Files\mysql。建议文件夹名字使用英文。3、配置环境变量&#xff1a;计算机—>右键—>高级系统设置…

iOS 面试之Block

转自&#xff1a;http://blog.csdn.net/xunyn/article/details/11658261 1 什么是block 对于闭包&#xff08;block),有很多定义&#xff0c;其中闭包就是能够读取其它函数内部变量的函数&#xff0c;这个定义即接近本质又较好理解。对于刚接触Block的同学&#xff0c;会觉得有…

当安全遇到大数据 “永恒之蓝”也将无所遁形!

文章讲的是当安全遇到大数据 “永恒之蓝”也将无所遁形&#xff01;5月12日&#xff0c;席卷全球的勒索病毒“永恒之蓝”让全世界都为之震动&#xff0c;这是迄今为止全球最大规模的勒索病毒网络攻击&#xff0c;100多个国家受到病毒感染&#xff0c;国内中石油、公安内网、高校…