博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hasor 的技术选型
阅读量:7061 次
发布时间:2019-06-28

本文共 1625 字,大约阅读时间需要 5 分钟。

  hot3.png

    这篇是承接《》系列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 的相关代码。

转载于:https://my.oschina.net/ta8210/blog/175523

你可能感兴趣的文章
背包问题
查看>>
要吃鲷鱼到岛上钓
查看>>
图片自适应宽度显示正方形
查看>>
如何提高队列的消息处理效率
查看>>
Java中的代理
查看>>
Android深度探索读后感 第三章
查看>>
Aidl
查看>>
顺序表的静态建立
查看>>
「技巧」如何快速安装 Sketch 插件
查看>>
C#中对文件的操作小结
查看>>
事件流
查看>>
苹果中毒员工称症状复发:入住当地医院遭拒
查看>>
numpy数组及处理:效率对比
查看>>
javascript事件模型
查看>>
线性表
查看>>
spring 的权限控制:security
查看>>
python基础===map和zip的用法
查看>>
常见复杂指针声明的解析(很详细)
查看>>
Java反射(Reflection)获取运行时类的结构
查看>>
获取系统热键链表windbg脚本 GetHotkeys windbg script
查看>>