这篇是承接《》系列Blog文的后续文章,本文主要介绍 Hasor 框架的技术选型。
前面已经介绍了 Hasor 的目的是为了打造一款轻量化的 Java 开发框架。这款框架首先不考虑 SSH JFinal 这类框架作为模板,因为 Hasor 的基础部分定位和这些框架有少许出入。但是它们的经典设计是可以用来参考的。
首先 Hasor 并不是轮子,恐怕也很难找到一款类似的框架。至少作者目前尚未发现,所以暂且列为独创或者原创把。我会努力的把它打造成“国人的SSH”也希望它能为中国开源事业增添一份色彩。
下面介绍一下技术选型,Hasor 的依赖分为三个部分:
第一部分:核心依赖: 1. JUint 用于单元测试。2. Guice3.0 Google 提供的一款轻量级 Ioc/Aop 框架(据说它的运行效率是 Spring 100倍)。采用 Guice 的主要原因是基于 Guice 开发 IoC/Aop 不会产生任何配置文件,并且支持全注解开发,而且代码量非常少。3. slf4j 用于收集并处理日志,在 Demo 程序中使用 log4j 作为日志组件。了解 slf4j 的朋友可以根据自己的意愿更换日志组件。
第二部分:摘取的第三方代码程序: 摘取故名思议就是“拿来主义”。具体是指直接将人家的代码原封不动的拷贝过来,对于拷贝过来的代码所做的改动就是仅仅改变一下包名。例如:Apache Commons Lang 工具包提供的 SpringUtils.isBlank。这么做的目的是减少其它依赖工具包。 它们包含了: 1.convert 将任意类型转换成其它格式,这部分代码来源于:Apache Commons BeanUtils 工具包 2.json 负责 Hasor 中 JSON 数据的转换,这部分代码来源于:Jetty 8.1.12 3.ref 提供若引用下的 ArrayList 和 HashSet 实现,它们的代码是从网络上收集的。 4.util 其中大部分代码来源于Apache Commons ,例如:Lang、Collections、BeanUtils工具包。
第三部分:前世的一些工具部件,Hasor 并不依赖它们 1.ASM 4.0 框架核心代码 2.classcode 很早以前我开发的一款字节码框架,它可以为一个对象动态增加属性或实现某个接口(有时间单独介绍它的奇妙功能) 3.Ognl 负责处理OGNL表达式。 4.xml 是我去年基于 Stax 方式开发的一款Xml 解析器工具(jdk 1.5 版本编译的话需要依赖 stax 软件包)。
如上图:核心的4个 Jar 包中只有 Guice-3.0.jar 的大小接近 700K,另外三个软件包最大的不过 30K。log4j 大概有 500K。Hasor 的编译结果也只有 700KB 的样子。总计编译结果和依赖包在内不会超过 2MB。
假如您还觉得体积过于庞大,那么删除这几个软件包:org.more.asm、org.more.classcode、org.more.ognl、org.more.xml,还可以为您节省 300KB 的体积。
对于编译结果大家可能会觉得为什么如此庞大?这是因为为了降低依赖 Hasor 摘取了很多其它框架的代码进来。这部分代码位于 org.more软件包。除去这部分代码 Hasor 的编译结果仅 133KB
---------------------------------------------------------------- 目前的开发代码存放于(包括Demo程序): Github:
git@OSC:非常感谢您百忙之中抽出时间来看这一系博文。可以通过Maven 中央仓库网站 搜索 Hasor 下载 hasor 的相关代码。