XBlink 1.0.0版发布,更轻、更快、更好用

XBlink 1.0.0版发布,更轻、更快、更好用。

 

 

 

简介:

 

一个轻量级的通用型序列化反序列化工具

 

特点:

 

  • -- 当前版本,无需引入任何第三方jar包,JDK1.5以上适用,大小总共120K
  • -- 简单易用,基本上只需调用一个方法就能帮你搞定问题。
  • -- 无需配置Mapping文件,采用了基于注解的方式,对原有程序基本不造成任何负面影响,最大程度的降低耦合
  • -- 代码量少,结构简单,易于研究学习。
  • -- 采用全新架构,理论上支持所有以文本格式记录信息的文件的序列化工作。本产品将默认支持XMLJSONYAML格式。
  • -- 性能优秀,在速度上已经全面超越XStream,是目前最快的XML序列化工具。

 

XBlink当前情况:

 

该版本目前仅提供了XML的序列化支持,后续版本将支持JSON与YAML格式。

相比之前的版本,采用了新架构,jar包体积稍胖(比XStream还是小很多的),功能与性能上有了大幅提高,并提供了更多的扩展机制。

 

新版本的特性:

 

  • 精简后的注解,简化的API。
  • 支持无注解无配置,直接对现有系统中的类进行序列化。
  • 支持自定义转换器,定制你自己的输出格式。
  • 支持文本格式压缩,以适应开发与生产环境。
  • 支持替换底层输入输入器,你完成可以制造出个性化的“XML”。
使用示例:

定义两个类,Person与PhoneNumber。
Java代码 复制代码
  1. public class Person {   
  2.     private String firstname;   
  3.     private String lastname;   
  4.     private PhoneNumber phone;   
  5.     private PhoneNumber fax;   
  6.     // ... constructors and methods   
  7. }   
  8.   
  9. public class PhoneNumber {   
  10.     private int code;   
  11.     private String number;   
  12.     // ... constructors and methods   
  13. }  
public class Person {
	private String firstname;
	private String lastname;
	private PhoneNumber phone;
	private PhoneNumber fax;
	// ... constructors and methods
}

public class PhoneNumber {
	private int code;
	private String number;
	// ... constructors and methods
}
 

实例化一个Person对象。

 

Java代码 复制代码
  1. PhoneNumber phone = new PhoneNumber();   
  2. phone.setCode(123);   
  3. phone.setNumber("1234-456");   
  4.   
  5. PhoneNumber fax = new PhoneNumber();   
  6. fax.setCode(123);   
  7. fax.setNumber("9999-999");   
  8.   
  9. Person joe = new Person();   
  10. joe.setFirstname("Joe");   
  11. joe.setLastname("Walnes");   
  12. joe.setPhone(phone);   
  13. joe.setFax(fax);  
PhoneNumber phone = new PhoneNumber();
phone.setCode(123);
phone.setNumber("1234-456");

PhoneNumber fax = new PhoneNumber();
fax.setCode(123);
fax.setNumber("9999-999");

Person joe = new Person();
joe.setFirstname("Joe");
joe.setLastname("Walnes");
joe.setPhone(phone);
joe.setFax(fax);

 


注册本次序列化使用的类(这里是为了生成的文件格式更加适合阅读),这一步可以省略。

 

Java代码 复制代码
  1. XBlink.registerClassesToBeUsed(new Class[] { Person.class, PhoneNumber.class });  
XBlink.registerClassesToBeUsed(new Class[] { Person.class, PhoneNumber.class });

 

调用XBlink的序列化方法。

Java代码 复制代码
  1. System.out.println(XBlink.toXml(joe));  
System.out.println(XBlink.toXml(joe));

  

输出结果。

 

Java代码 复制代码
  1. <?xml version="1.0" encoding="UTF-8"?>   
  2. <person>   
  3.   <firstname>Joe</firstname>   
  4.   <lastname>Walnes</lastname>   
  5.   <phone>   
  6.     <code>123</code>   
  7.     <number>1234-456</number>   
  8.   </phone>   
  9.   <fax>   
  10.     <code>123</code>   
  11.     <number>9999-999</number>   
  12.   </fax>   
  13. </person>  
<?xml version="1.0" encoding="UTF-8"?>
<person>
  <firstname>Joe</firstname>
  <lastname>Walnes</lastname>
  <phone>
    <code>123</code>
    <number>1234-456</number>
  </phone>
  <fax>
    <code>123</code>
    <number>9999-999</number>
  </fax>
</person>

 

调用XBlink的反序列化方法。

 

Java代码 复制代码
  1. // 这里的xml就是刚才序列化生成的字符串   
  2. Person anthorJoe = (Person) XBlink.fromXml(xml);  
// 这里的xml就是刚才序列化生成的字符串
Person anthorJoe = (Person) XBlink.fromXml(xml);

 

怎么样,是不是如此简单!

 

性能测试:

 

常用的XML序列化框架有XStreamSimple

在速度与易用性上,XStream远远好于Simple,所以XBlink就一直以XStrem作为目标,无视Simple的存在(吐槽下,因为它是在是太难用啦,不信看这里)。


下面是基于上面那个Person示例的测试结果。


序列化比较:


 

序列化次数XBlinkXStream
1次0 秒, 0 毫秒, 269 微秒0 秒, 0 毫秒, 562 微秒
10次0 秒, 2 毫秒, 2182 微秒0 秒, 5 毫秒, 5426 微秒
100次0 秒, 21 毫秒, 21454 微秒0 秒, 37 毫秒, 37727 微秒
1000次0 秒, 95 毫秒, 95380 微秒0 秒, 116 毫秒, 116551 微秒
10000次0 秒, 436 毫秒, 436216 微秒0 秒, 623 毫秒, 623156 微秒


反序列化比较


 

反序列化次数XBlinkXStream
1次0 秒, 0 毫秒, 557 微秒0 秒, 0 毫秒, 767 微秒
10次0 秒, 4 毫秒, 4231 微秒0 秒, 5 毫秒, 5680 微秒
100次0 秒, 21 毫秒, 21346 微秒0 秒, 34 毫秒, 34830 微秒
1000次0 秒, 84 毫秒, 84463 微秒0 秒, 162 毫秒, 162964 微秒
10000次0 秒, 616 毫秒, 616956 微秒1 秒, 1282 毫秒, 1282416 微秒

 

相关测试用例请看http://code.google.com/p/xblink/source/browse/trunk/test/performance/testcase/demo/PersonTest.java

 

通过上面的对比,可以发现XBlink在性能上比XStream有大概30%-120%的提升,速度全面超越,基本上现有的框架中XBlink是最快的

 

说明:

 

终于XBlink发布了,算是还债了,呜呜呜。

虽然目前已经取得了一定的成绩,但是在稳定性,易用性与性能上还有很大的提高余地。

欢迎各位朋友下载,试用并提出您宝贵的意见与发现的Bug,ME将尽力尽快的改进,使其更加好用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值