Apache 项目与子项目(整理总结),apache总结


由于java开发接触到好多Apache项目,所以进行一个简单的整理。如有不对的地方请随时提出。

同时有点自私:我只会将一些我接触到以及我可能用到的一些项目进行整理,请见谅!!

一、简介

    Apache软件基金会(也就是Apache Software Foundation,简称为ASF),是专门为支持开源软件项目而办的一个非盈利性组织。在它所支持的Apache项目与子项目中,所发行的软件产品都遵循Apache许可证(Apache License)。

官方网站:http://www.apache.org

二、介绍

    在网上看到很多文章都提及Apache中的jakarta 项目,这个项目诞生了很多当前主流的技术。著名的Tomcat服务器就是出自Jakarta旗下,后来将其中的大型、成熟的子项目剥离成为相对独立的Apache子项目。不过很不幸的是,当前Jakarta已无剩余的子项目,并于2011年12月21日退役。也应该称其实幸运的,因为Jakarta所有的子项目都脱离母体,成为成熟项目,这是值得庆幸的事。

    曾经隶属于Jakarta项目,现在已经独立的子项目包括:Ant、Avalon、Commons、DB、Excalibur、Gump、HiveMind、HttpComponents、James、Logging、Lucene、Maven、POI、Portals、Struts、Tapestry、Tomcat、Turbine、Velocity、Watchdog、BCEL、BSF、Cactus、ECS、JCS、JMeter、ORO、Regexp、Taglibs

三、项目整理

3.1 Tomcat

  • 简介:一个运行Java Servlet与JavaServer Pages(JSP)的容器。
  • 网址:http://tomcat.apache.org/

    Apache Tomcat是一个可以执行Java Servlet和JavaServer网页技术的开源软件。Apache和Tomcat是相对独立的,用户可以通过Apache访问Tomcat资源,反之亦然,二者可以在同一台服务器上。Apache Tomcat是由全世界各地的最佳开发者合力研发而来的,是一款非常优异的开源软件。

    Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。
    实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。

3.2 Ant

  • 简介:基于Java语言的构建工具,类似于C语言的Make工具。
  • 网址:http://ant.apache.org/

    Apache Ant是一种基于Java的build工具,并将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发。它有些类似于(Unix)C中的make ,但没有make的缺陷。类似于make的工具本质上是基于shell(语言)的:他们计算依赖关系,然后执行命令(这些命令与你在命令行敲的命令没太大区别)。Ant就不同了,与基于shell命令的扩展模式不同,Ant用Java的类来扩展。(用户)不必编写shell命令,而其配置文件是基于XML的,这样做虽然没有shell命令表达能力强,但是具有了跨平台性。

3.3 Commons

  • 简介:Commons是一个主要专注于可再用Java组件所有方面的Apache项目,Commons就好比一个Java百宝箱。
  • 网址:http://commons.apache.org/
  • 仓库:http://commons.apache.org/proper/

Apache Commons Proper组成:

  • BCEL:Byte Code Engineering Library (BCEL)BCEL是 Java classworking 最广泛使用的一种框架,它可以让您深入 JVM 汇编语言进行类操作的细节。BCEL与Javassist 有不同的处理字节码方法,BCEL在实际的JVM 指令层次上进行操作(BCEL拥有丰富的JVM 指令级支持)而Javassist 所强调的源代码级别的工作。
  • BeanUtils:针对Bean的一个工具集。由于Bean往往是有一堆get和set组成,所以BeanUtils也是在此基础上进行一些包装。
  • Chain:对Chain of Responsibility(责任链)设计模式的实现。使多个对象都有机会处理请求, 从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。
  • CLI:处理命令行命令的解析工具。
  • Codec:这个工具是用来编码和解码的,包含一些通用的编码解码算法。包括一些语音编码器,Base64,URL,Soundx等等。
  • Collections:扩展和增加标准的 Java Collection框架。
  • Compress:Compress提供了一组API用于操作(解压/压缩)ar、cpio、tar、zip、gzip和bzip2等格式的文件。
  • Configuration:这个工具是用来帮助处理配置文件的,支持很多种存储方式: Properties文件、XML文件、 Property lis文件 (.plist)、 JNDI、 JDBC 数据源、System properties 、Applet parameters 、Servlet parameters
  • Crypto:Crypto 是一个加密库,使用 AES-NI (Advanced Encryption Standard New Instructions) 进行优化。提供了加密级别和流级别的 API。开发者可以使用最少代码来实现高性能的 AES 加解密应用。
  • CSV:CSV 是一个用来读写各种 Comma Separated Value (CSV) 格式文件的 Java 库.
  • Daemon:Daemon是一套专门用于将Java应用打包成操作系统服务的类库。创建类似unix守护线程的java代码,可以安全地执行一些后台操作,线程不被某个应用程序控制,而是由操作系统控制 类似windows的service,可以设置一个服务依赖于另一个服务,一个服务关闭前必须先执行另一个服务。Commons Daemon的实现包括两部分组成,一部分由C语言编写,主要用于调用操作系统接口,另一部分由Java语言编写,主要用于实现守护进程的功能(实现服务需要调用的各种功能,比如关闭应用,启动应用等)。
  • DBCP:数据库连接池 
  • DbUtils:一个JDBC的工具类,比如可以将ResultSets生成javabean。
  • Digester:基于规则的XML文档解析,主要用于XML到Java对象的映射。
  • Discovery:提供工具来定位资源 (包括类) ,通过使用各种模式来映射服务/引用名称和资源名称。
  • EL:EL是 Apache 组织中一个用来解析 JSP 2.0 的表达式语言的 Java 类库。
  • Email:Email的目的是提供一组用于发送Email的API,它基于Java Mail API基础之上并进行了简化。
  • Exec:Exec 是 Apache 上的一个 Java 项目,提供一些常用的方法用来执行外部进程。
  • FileUpload:web应用中的文件上传组件
  • Functor:A functor is a function that can be manipulated as an object, or an object representing a single, generic function.(函数式编程)
  • Imaging (previously called Sanselan):A pure-Java image library.
  • IO:帮助进行IO功能开发,可以看成是java.io的扩展。
  • JCI:JCI 是一个封装了 Java 编译器的类库。
  • JCS:JCS是一个复合式的缓冲工具。可以将对象缓冲到内存、硬盘。具有缓冲对象时间过期设定。还可以通过JCS构建具有缓冲的分布式构架,以实现高性能的应用。对于一些需要频繁访问而每访问一次都非常消耗资源的对象,可以临时存放在缓冲区中,这 样可以提高服务的性能。而JCS正是一个很好的缓冲工具。缓冲工具对于读操作远远多于写操作的应用性能提高非常显著。
  • Jelly:Jelly能够把XML转换成可执行代码,所以Jelly是一个基于XML与Java的脚本和处理引擎。 Jelly借鉴了JSP定指标签,Velocity, Cocoon和Xdoclet中的脚本引擎的许多优点。Jelly可以用在命令行,Ant或者Servlet之中。
  • Jexl:Jexl是一个表达式语言,通过借鉴来自于Velocity的经验扩展了JSTL定义的表达式语言。
  • JXPath:使用XPath语法操作javabean的工具。
  • Lang:提供对java.lang包的扩展。提供了诸如StringUtils, StringEscapeUtils, RandomStringUtils, Tokenizer, WordUtils等工具类。
  • Launcher:跨平台的java程序的启动。
  • Logging:提供的是一个日志(Log)接口(interface),同时兼顾轻量级和不依赖于具体的日志实现工具。 它提供给中间件/日志工具开发者一个简单的日志操作抽象,允许程序开发人员使用不同的具体日志实现工具。用户被假定已熟悉某种日志实现工具的更高级别的细节。JCL提供的接口,对其它一些日志工具,包括Log4J, Avalon LogKit, and JDK 1.4等,进行了简单的包装,此接口更接近于Log4J和LogKit的实现.
  • Math:Math 是一个轻量的,自包含的数学和统计组件,解决了许多非常通用但没有及时出现在Java标准语言中的实践问题.
  • Modeler:Modeler 是 Java 程序提供一个用于创建基于 JMX 规范的 MBeans 模型的工具。
  • Net:集合了网络工具和协议工具的实现。这个包还是很实用的,封装了很多网络协议。
  • OGNL:OGNL是Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言,通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。它使用相同的表达式去存取对象的属性。
  • Pool:Commons-Pool 提供了通用对象池接口,一个用于创建模块化对象池的工具包,以及通常的对象池实现。
  • Proxy:Commons Proxy 是 Apache 的一个之项目,封装了 Java 对象代理的一些常用方法。
  • RNG:Implementations of random numbers generators.
  • SCXML:处理SCXML,State Chart XML(SCXML) 是 W3C 组织制定的一种有限状态机的规范,它提供了一个在 CCXML 和 Harel State Tables 基础之上演化而来的状态机执行环境。
  • Validator:提供了一个简单的,可扩展的框架来在一个XML文件中定义校验器 (校验方法)和校验规则。支持校验规则的和错误消息的国际化。用来帮助进行验证的工具。比如验证Email字符串,日期字符串等是否合法。
  • VFS:VFS(Virtual File System)是访问各种文件系统,可以是本地文件、HTTP服务器上的文件、zip中的文件。  这个包的功能很强大,极大的简化了程序对资源的访问。
  • Weaver:Provides an easy way to enhance (weave) compiled bytecode.

3.4 Struts

  • 简介:一个基于J2EE平台的MVC设计模式的Web应用框架。
  • 网址:http://struts.apache.org/

经典框架模式SSH,第二个S就是Struts,虽然现在使用的是Struts2。

3.5 Lucene

  • 简介:高性能的,基于Java语言的全文检索项目。
  • 网址:http://lucene.apache.org/

Java开发的高性能,全方位的文本搜索引擎。替文件的每一个字作索引,索引让搜寻的效率比传统的逐字比较大大提高, Lucen提供一组解读,过滤,分析文件,编排和使用索引的API,它的强大之处除了高效和简单外, 是最重要的是使使用者可以随时应自已需要自订其功能。

3.6 Cocoon

  • 简介:一个基于组件技术和XML和Web应用开发框架。
  • 网址:http://cocoon.apache.org/

Apache Cocoon是一个基于Spring框架的围绕分离理念建立的构架,在这种框架下的所有处理都被预先定义好的处理组件线性连接起来,能够将输入和产生的输出按照流水线顺序处理。

3.7 SpamAssassin

SpamAssassin是一个由Apache开发的一个著名的反垃圾引擎,邮件系统完整的集成了SpamAssassin反垃圾引擎。SpamAssassin中包含了各种各样的垃圾邮件监测技术,其中包括基于DNS和checksum的垃圾邮件监测、Bayesian过滤、外部程序、黑名单和在线数据库等。

3.8 Axis

  • 简介:Apache Axis是一个基于SOAP应用的框架,核心是一个SOAP处理器,用于开发包括客户端,服务器端,SOAP Gateway等各种应用。
  • 网址:http://axis.apache.org/

3.9 LoggingService

  • 简介:一个开发可以在C++、Java、Perl、PHP、.NET计算机语言下运行的通用日志工具项目集合。
  • 网址:http://logging.apache.org/

Apache Logging Services项目主要是为了提供应用程式除错以及监督的日志登录服务。 

Apache Logging Services项目的产品包括三个日志登录框架,分别为log4j for Java、log4cxx for C++以及log4net for the Microsoft .NET framework。

Apache Logging Services还被应用于日志查看器和分析工具Chainsaw中。

3.10 Derby

  • 简介:一个纯JAVA的数据库管理系统
  • 网址:http://db.apache.org/derby/

    Apache Derby是一个完全用java编写的数据库,Derby是一个Open source的产品,基于Apache License 2.0分发。
   Apache Derby非常小巧,核心部分derby.jar只有2M,所以既可以做为单独的数据库服务器使用,也可以内嵌在应用程序中使用。Cognos 8 BI的Content Store默认就是使用的Derby数据库,可以在Cognos8的安装目录下看到一个叫derby10.1.2.1的目录,就是内嵌的10.1.2.1 版本的derby。

 

3.11 iBATIS&mybatis

  • 简介:一个基于JAVA语言的数据持久化框架
  • 网址:http://www.mybatis.org/
  • https://github.com/mybatis/ibatis-2
  • https://github.com/mybatis/mybatis-3
  • 在线API:http://tool.oschina.net/apidocs/apidoc?api=mybatis-3.1.1

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。

3.12 其它项目

  • HTTP Server: 可以在UNIX,MS-Windows,Macintosh和Netware操作系统下运行的HTTP服务器的项目
  • AXIS2:Web服务(SOAP, WSDL)的处理器,基于AXIS1.X重新构建。
  • APR:(也就是:Apache Portable Runtime)C语言实现的便携运行库的管理工具。
  • Beehive:为了简单构建J2EE应用的对象模型。
  • DB:关于数据库管理系统的几个开源项目集合
  • Drill :将有助于Hadoop用户实现更快查询海量数据集的目的[2]
  • Directory:基于JAVA语言的目录服务器,支持LDAP等目录访问协议。
  • Excalibur:Apache Avalon项目的前身。
  • Forrest:一个发布系统框架的项目。
  • Geronimo:J2EE服务器
  • Gump:整合管理器
  • Hadoop:并行运算编程工具和分布式文件系统。
  • Harmony:一个兼容JAVA标准的JAVA语言的开源实现。
  • HiveMind:一个服务(Services)与配置(configuration)的微内核
  • Incubator:为了帮助那些希望获取Apache软件基金会支持的计划进入Apache软件基金会的审核项目
  • Jackrabbit:内容仓库API标准(Content Repository for Java Technology API,即JSR-170)的一个开源实现项目。
  • Jakarta: 在ASF中,基于Java语言的一组开源子项目的集合,现在包含的子项目有:BCEL,BSF,Cactus,Commons,ECS,HttpComponents,JCS,JMeter,ORO,Regexp,Slide,Taglibs,Turbine,Velocity
  • James:JAVA语言实现的邮件新闻服务器
  • Labs:为基金会成员提供最新变更的思维的计划
  • Lenya:内容管理系统

参考资料:

  • 360百科
  • Apache Jakarta Commons 工具集简介
  • Apache软件基金会

相关内容

    暂无相关文章