Hasor 的技术选型

ta8210 2013-12-27

    这篇是承接《轻量级 Java 开发框架 设计》系列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 大概有 500KHasor 的编译结果也只有 700KB 的样子。总计编译结果和依赖包在内不会超过 2MB

    假如您还觉得体积过于庞大,那么删除这几个软件包:org.more.asm、org.more.classcode、org.more.ognl、org.more.xml,还可以为您节省 300KB 的体积。

    对于编译结果大家可能会觉得为什么如此庞大?这是因为为了降低依赖 Hasor 摘取了很多其它框架的代码进来。这部分代码位于 org.more软件包。除去这部分代码 Hasor 的编译结果仅 133KB

----------------------------------------------------------------
目前的开发代码存放于(包括Demo程序)
    Github:    https://github.com/zycgit/hasor
    git@OSC: http://git.oschina.net/zycgit/hasor

非常感谢您百忙之中抽出时间来看这一系博文。可以通过Maven 中央仓库网站  http://search.maven.org/ 搜索 Hasor 下载 hasor 的相关代码。

Global site tag (gtag.js) - Google Analytics