可复用的工具类库 Apache Commons

可以帮助程序员节约大量时间的几大件:好的架构(排兵布阵中的整体阵形)、好的框架(排兵摆阵中的小方阵)、好的工具(手中钢枪长矛),而程序员就是在大阵与小阵中握着长枪杀敌的士兵。
 
在一个软件系统中,除了架构、框架外,通常还有一些必不可少的工具类,来完成一些开发层面上的工作,如数据格式转换、数据验证、数据加密解密等。这些类通常放在同一个包下,命名为utils、common或helper,甚至于独立为一个项目,在多个软件系统中复用。
 
这样做的原因在于jdk提供了核心实现,但是在实际项目开发中,还有大量常用的操作,如果直接用java写,存在几方面问题:
  • 需要投入时间和精力,并充分测试
  • 代码比较繁琐,不够简洁
  • 复用性很差,如发现问题,需要工程级代码搜索和修正
软件开发中,很重要的一点,就是不要重复去造轮子,去网上搜索一些成熟的工具包更合适,通过关键词可以搜索出大量个人积累和整理的工具包或工具类。相对于个人整理包而言,组织级的更可靠,例如apache的common。此外,同时搜索到了谷歌的 Guava,进一步了解了下,Guava的定位不完全是工具包,因了解有限,暂时不做评论,优先学习和掌握Apache Commons。
 
Apache Commons是Apache软件基金会的项目,曾隶属于Jakarta项目,官网地址:http://commons.apache.org/
Commons的目的是提供可重用的、开源的Java代码,使用组件可以提高开发效率和质量。

Commons的开发者努力确保其组件对其他的软件库的依赖最少,以便可以轻松地部署这些组件。此外,Commons组件会尽可能的保持其接口的稳定,因而Apache用户以及其他Apache项目可以实现这些组件,而无需担心未来接口的变化。 

Apache Commons项目的由三部分组成:
The Commons Proper - 一个可重用的java组件库。(已经发布过的)
The Commons Sandbox - Java组件开发工作区. (正在开发的项目)
The Commons Dormant - 当前处于非活动状态的组件库.(刚启动或者已经停止维护的项目)
 
依据官网,当前处于发布状态的组件大概有四十多个了,

BeanUtils 
Commons-BeanUtils 提供对 Java 反射和自省API的包装

Betwixt 
Betwixt提供将 JavaBean 映射至 XML 文档,以及相反映射的服务.

Chain 
Chain 提供实现组织复杂的处理流程的“责任链模式”.

CLI 
CLI 提供针对命令行参数,选项,选项组,强制选项等的简单API.

Codec 
Codec 包含一些通用的编码解码算法。包括一些语音编码器, Hex, Base64, 以及URL encoder.

Collections 
Commons-Collections 提供一个类包来扩展和增加标准的 Java Collection框架

Configuration 
Commons-Configuration 工具对各种各式的配置和参考文件提供读取帮助.

Daemon 
一种 unix-daemon-like java 代码的替代机制

DBCP 
Commons-DBCP 提供数据库连接池服务

DbUtils 
DbUtils 是一个 JDBC helper 类库,完成数据库任务的简单的资源清除代码.

Digester 
Commons-Digester 是一个 XML-Java对象的映射工具,用于解析 XML配置文件.

Discovery 
Commons-Discovery 提供工具来定位资源 (包括类) ,通过使用各种模式来映射服务/引用名称和资源名称。.

EL 
Commons-EL 提供在JSP2.0规范中定义的EL表达式的解释器.

FileUpload 
FileUpload 使得在你可以在应用和Servlet中容易的加入强大和高性能的文件上传能力

HttpClient 
Commons-HttpClient 提供了可以工作于HTTP协议客户端的一个框架.

IO 
IO 是一个 I/O 工具集

Jelly 
Jelly是一个基于 XML 的脚本和处理引擎。 Jelly 借鉴了 JSP 定指标签,Velocity, Cocoon和Xdoclet中的脚本引擎的许多优点。Jelly 可以用在命令行, Ant 或者 Servlet之中。

Jexl 
Jexl是一个表达式语言,通过借鉴来自于Velocity的经验扩展了JSTL定义的表达式语言。.

JXPath 
Commons-JXPath 提供了使用Xpath语法操纵符合Java类命名规范的 JavaBeans的工具。也支持 maps, DOM 和其他对象模型。.

Lang 
Commons-Lang 提供了许多许多通用的工具类集,提供了一些java.lang中类的扩展功能

Latka 
Commons-Latka 是一个HTTP 功能测试包,用于自动化的QA,验收和衰减测试.

Launcher 
Launcher 组件是一个交叉平台的Java 应用载入器。Commons-launcher 消除了需要批处理或者Shell脚本来载入Java 类。.原始的 Java 类来自于Jakarta Tomcat 4.0 项目

Logging 
Commons-Logging 是一个各种 logging API实现的包裹类.

Math 
Math 是一个轻量的,自包含的数学和统计组件,解决了许多非常通用但没有及时出现在Java标准语言中的实践问题.

Modeler 
Commons-Modeler 提供了建模兼容JMX规范的Mbean的机制.

Net 
Net 是一个网络工具集,基于 NetComponents 代码,包括 FTP 客户端等等。

Pool 
Commons-Pool 提供了通用对象池接口,一个用于创建模块化对象池的工具包,以及通常的对象池实现.

Primitives 
Commons-Primitives提供了一个更小,更快和更易使用的对Java基本类型的支持。当前主要是针对基本类型的 collection。.

Validator 
The commons-validator提供了一个简单的,可扩展的框架来在一个XML文件中定义校验器 (校验方法)和校验规则。支持校验规则的和错误消息的国际化。

 
这相当于是一个大而全组件库,而在实际开发过程中,我们用到的可能仅仅一小部分,建议泛泛了解,知道有这么一些相关组件,重点掌握一些常用的即可,不常见常用的,待到有需求时再查阅文档,不断吸收消化,最终转换为自己的一部分。
 
此外,陆续搜索到了国产的工具包 http://hutool.mydoc.io/,以及http://feilong-core.mydoc.io/,前者完全是自己实现,无第三方依赖,而后者则是基于Apache Commons3,进一步完善和补充,特别是添加了常量。
 
作为一名从net转java的新人,各位同仁前辈,Apache Commons在真正使用过程中是否友好可用,请发表下自己的体验和看法,同时,是否还有其他类似Apache Commons的知名工具类库,甚至更好的工具库,也请在评论区推荐下,不胜感激。
 
 
 

转载于:https://www.cnblogs.com/sealy321/p/10201685.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值