Apache Java项目全介绍 .
转自:http://java.csdn.net/page/f1d86ecf-6cb8-4773-b169-6676a9fe4013
?
Apache java项目全介绍
最近接触Jakarta-Common-BeanUtils这个东东比较 多,于是对Apache Jakarta Project产生了兴趣,上他们的官方网站上看了下感觉有用的东西好多,眼花缭乱的,又没有中文网站,又上各大论坛搜了下,也没有发现一个集中该项目的资料,于是决定自己整理翻译一下,有助于各位网友更好的了解该项目。如果有什么描述不对不全面的地方,希望各位提出来给大家分享。
??????? Jakarta项目是ASF(The Apache Software Foundation)的一部分。ASF是一个非赢利组织,她鼓励基于开放的软件许可下进行合作、注重实效的开发,并提供各个领域的高质量软件,她涉及到 Http服务器,编译工具,类库,开发架构,服务器端Java技术,J2EE容器,数据库工具,日志工具,XML解析等等诸多领域。ASF提供的java 项目有一部分在Jakarta中,还有一些成为独立的诸如Tomcat的项目,Jakarta项目则提供了多种多样开源的java解决通用方案。
?????? 先介绍一下ASF中和Jakarta项目并列的java项目:
Ant ——java构建工具,使用一个配置文件就可以完成java的项目的,编译、打包、测试、运行、部署、生成文档等诸多工作。 Avalon ——是一个包括核心框架、工具、组件和容器的面向组件编程(AOP)的完整开发平台。使用关键设计模式,如反向控制模式(IoC)和分离考虑模(SoC)。 Avalon提供各种基本组件和缺省的应用程序模块,帮助你快速的建立你自己的应用程序解决方案。 Excalibur ——集多个开源项目(Avalon Framework、LogKit和Cornerstone)于一身的轻量级可嵌入式反向控制容器。 Gump ——是Apache组织自己也使用的一个持续集成工具,全面支持Ant和Maven,当有新的改动提交到版本控制系统,它可以检查出潜在的冲突,并及时通知项目组的所有成员并自动生成改动的详细报告。 James ——是一套用java开发的邮件、新闻组、消息服务器,提供了比较完善的配置方案,尤其是关于邮件内容存储和用户信息存储。 支持 SMTP, POP3 , NNTP , IMAP 。 Logging ——可靠,快速的日志工具。 Lucene ——Java开发的高性能,全方位的文本搜索引擎。替文件的每一个字作索引,索引让搜寻的效率比传统的逐字比较大大提高, Lucen提供一组解读,过 滤,分析文件,编排和使用索引的API,它的强大之处除了高效和简单外,是最重要的是使使用者可以随时应自已需要自订其功能。 Maven ——是一个潜在的基于java的apache ant的构建工具的替代者。提供了更强大的功能和易用性。 Portals ——提供了功能全面的、具有商业价值的企业门户。门户概念:门户对企业内的各种资源如信息管理系统进行整合并通过单一接口对外提供服务,雇员、合伙人及 顾客可以通过任何装置在任何地点通过门户入口享受到企业提供的服务,分析家们预计,门户将成为下一代的桌面环境。 Struts ——一个实现MVC model2的web应用程序开发框架。通过一个配置文件可以很好的对各种组件进行装配,结构清晰,应用的最广泛的额web开发框架。
??????? 下面介绍下Jakarta的各个子项目:
下面介绍一下Jakarta下的Commons:一个csdn网友描述得很贴切,Commons就好比一个java百宝箱。
commons分为3部分Commons Proper、Commons Sandbox和Commons Dormant。
Commons Proper:提供了设计良好可重用的java组件,并都经过了广泛、严格的测试。
Commons Sandbox:处于实验、测试阶段的组件。
Commons Dormant:处于停滞状态,从Sandbox退出的,不活跃的组件,谨慎使用。
Commons Proper组件:
Attributes—— 支持源代码级的元数据。 BeanUtils——提供对 Java 反射和自省API的包装,处理javabean的工具。 Betwixt——将JavaBeans与XML相互转换。 Chain——对Chain of Responsibility(责任链)设计模式的实现。使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。 CLI——处理命令行的命令的解析。 Codec——包含一些通用的编码解码算法。包括一些语音编码器, Hex, Base64, 以及URL encoder。 Collections——扩展和增加标准的 Java Collection框架。 Configuration——操作各种格式的配置文件。Properties文件 /XML文件 /JNDI /JDBC 数据源 /System properties /Applet parameters / Servlet parameters Daemon——创建类似unix守护线程的java代码,可以安全地执行一些后台操作,线程不被某个应用程序控制,而是由操作系统控制类似windows的service,可以设置一个服务依赖于另一个服务,一个服务关闭前必须先执行另一个服务。 DBCP——一个数据库连接池 DbUtils——一个JDBC的工具类,比如可以将ResultSets生成javabean。 Digester——基于规则的XML文档解析,主要用于XML到Java对象的映射. Discovery——提供工具来定位资源 (包括类) ,通过使用各种模式来映射服务/引用名称和资源名称。 EL——JSP 2.0引入的表达式 Email——处理e-mail FileUpload——web应用中的文件上传组件 HttpClient——使用HTTP协议的客户端开发框架 IO——帮助进行IO功能开发 Jelly ——Jelly能够把XML转换成可执行代码,所以Jelly是一个基于XML与Java的脚本和处理引擎。 Jelly借鉴了JSP定指标签,Velocity, Cocoon和Xdoclet中的脚本引擎的许多优点。Jelly可以用在命令行,Ant或者Servlet之中。 Jexl——Jexl是一个表达式语言,通过借鉴来自于Velocity的经验扩展了JSTL定义的表达式语言。 JXPath——使用XPath语法操作javabean的工具。 Lang——提供对java.lang包的扩展。 Launcher——跨平台的java程序的启动 Logging ——提供的是一个日志(Log)接口(interface),同时兼顾轻量级和不依赖于具体的日志实现工具。它提供给中间件/日志工具开发者一个简单的日志操作抽象,允许程序开发人员使用不同的具体日志实现工具。用户被假定已熟悉某种日志实现工具的更高级别的细节。JCL提供的接口,对其它一些日志工具,包括Log4J, Avalon LogKit, and JDK 1.4等,进行了简单的包装,此接口更接近于Log4J和LogKit的实现. Math——Math 是一个轻量的,自包含的数学和统计组件,解决了许多非常通用但没有及时出现在Java标准语言中的实践问题. Modeler—— 支持兼容JMX规范的MBeans开发。 Net——集合了网络工具和协议工具的实现 Pool——Commons-Pool 提供了通用对象池接口,一个用于创建模块化对象池的工具包,以及通常的对象池实现。 Primitives——对java原始类型的支持。 SCXML——处理SCXML Transaction——事务处理,实现了多层次锁、事务集合、事务文件的访问。 Validator——提供了一个简单的,可扩展的框架来在一个XML文件中定义校验器 (校验方法)和校验规则。支持校验规则的和错误消息的国际化。 VFS——访问各种文件系统,可以是本地文件、HTTP服务器上的文件、zip中的文件。Commons Sandbox组件:
Compress——处理压缩文件如tar, zip 和 bzip2 格式。 CSV——处理CSV文件 Exec——安全地处理外部进程 Finder——实现类似UNIX find命令的功能 I18n——处理软件的I18n功能 Id——生成id号功能 Javaflow——捕捉程序运行状态 JCI——java编译接口 OpenPGP——处理加密方法OpenPGP. Pipeline——处理类似工作队列的管道工具 Proxy——生成动态代理