说说XBlink
By:pangwu86<pangwu86@gmail.com>

写在前面的话

首先很高兴你能看到这段话,至少说明你是个对XBlink感兴趣的人,也希望你能持续的关注XBlink,你会慢慢的发现它是个有趣且实用的小工具,相信你不会失望的(*^_^*)

XBlink项目的起源

XBlink的诞生是源自于两个常见的需求:

  1. 客户端要缓存一些需要提交的数据。作为临时保存的方式,可以采用XML(因为比较具有可读性)。
  2. 项目中常见的各种配置文件。如果做一个产品开发,是需要有很多自定义配置文件,也就有了各种格式的XML,当然也有了对应的配置对象类。

这样就需要一个XML与java对象间相互转化的工具,即XML序列化反序列化工具

在ME遇到的实际项目中选择了XStreamhttp://xstream.codehaus.org,一个成熟且强大的XML序列化工具。

但后来发现在OSGi环境下,XStream工作不正常,总是报ClassNotFoundException异常。

那个时候,这个问题没能解决,主要是对OSGi使用还不是很熟练,XStream也是刚上手,后来发现是ClassLoader的问题,只要把当前Bundle中的ClassLoader注进去就好了,或者在MANIFEST.MF中加入动态导入的配置语句。当然如果不是因为出了问题,XBlink也就不会出现了(*^_^*)

问题解决不了后,就决定寻找替代方案。

恰巧之前有个项目中做过一些关于使用XML做数据备份的,功能上已经实现了XML序列化与反序列。ME就向领导提议,可以自己实现这个工具,经过简单测试,发现OSGi环境下没有问题,就决定根据项目需求去完善它。

这个工具的最初组成可谓简单之极,只有五个类组成,两个注解,一个序列化类,一个反序列化类,一个写XML文件的类,并且没有使用任何第三方jar包,只需要JDK(个人认为这也算是个优点吧,哈哈)。

这些代码现在看来虽然写的很烂,功能很不齐全,局限性很大,但其核心思想跟核心算法已经出现了,而且非常精简,总共加起来也只有短短的一百行左右。

之后大家看到的XBlink也是以此为基础,对其进行的重新构建。

接口定义上大量的模仿了XStream,但比其更加简单易用(因为是先用了XStream,后面转XBlink,接口相似的话也就不会需要花费更多的精力去学习新的API)。

所以如果你用过XStream的话,当你转到XBlink下,会发现几乎没有难度。

以上就是XBlink的诞生过程了。

XBlink名称的由来

如果玩过Dota的话,你一定对Blink这个技能再熟悉不过了。

此技能真可谓居家旅行杀人越货谋财害命之必备佳品呀,哇咔咔咔咔……如果人物本身没有的话那就买把跳刀吧,同样的功能,让你飞来飞去,爽爽爽,怀念6.48的时代,人人跳刀的那份飘逸……

Blink意思是闪烁,即非常闪非常烁,非常快的意思。

所以在某局Dota结束后,力哥被ME风骚的跳刀打动了,接着说,那玩意儿就叫XBlink吧,于是它就叫XBlink了。