分享

Apache项目与子项目

 hkls0003 2018-06-06

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

我的QQ邮箱:577328725@qq.com

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

一、简介

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

官方网站:http://www.


二、介绍

    在网上看到很多文章都提及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



三、项目整理

1.Tomcat

简介:一个运行Java Servlet与JavaServer Pages(JSP)的容器。

网址:http://tomcat./

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

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

详解:-----留在以后的连接----

2.Ant

简介:基于Java语言的构建工具,类似于C语言的Make工具。

网址:http://ant./

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

详解:-----留在以后的连接----


3.Common

简介:Commons是一个主要专注于可再用Java组件所有方面的Apache项目,Commons就好比一个java百宝箱。

网址:http://commons./

Apache Commons项目由3个部分组成: 

  1. The Commons Proper—可再用Java组件的贮存处,并都经过了广泛、严格的测试
  2. The Commons Sandbox—Java组件的开发工作区(正在开发的项目)
  3. The Commons Dormant—沙盒组件的贮存库,当前处于非活动状态的组件库.(刚启动或者已经停止维护的项目)

Apache Commons Proper组成:

<1>BCEL

   Byte Code Engineering Library (BCEL),这是Apache Software Foundation 的Jakarta 项目的一部分。BCEL是 Java classworking 最广泛使用的一种框架,它可以让您深入 JVM 汇编语言进行类操作的细节。BCEL与Javassist 有不同的处理字节码方法,BCEL在实际的JVM 指令层次上进行操作(BCEL拥有丰富的JVM 指令级支持)而Javassist 所强调的源代码级别的工作。


<2>BeanUtils

网址:http://commons./proper/commons-beanutils/

    针对Bean的一个工具集。由于Bean往往是有一堆get和set组成,所以BeanUtils也是在此基础上进行一些包装。

详解:-----留在以后的连接----


<3>BSF

    Bean Scripting Framework (BSF)是一个支持在Java应用程序内调用脚本语言 (Script),并且支持脚本语言直接访问Java对象和方法的一个开源项目。有了它 , 你就能在java application中使用javascript, Python, XSLT, Perl, tcl, ……等一大堆scripting language. 反过来也可以,就是在这些scripting language中调用任何已经注册过了的JavaBean,java object。

它提供了完整的API实现通过Java访问脚本语言的引擎。目前BSF 2.x支持以下几种脚本语言:
  • Javascript (using Rhino ECMAScript, from the Mozilla project)
  • NetRexx(an extension of the IBM REXX scripting language in Java)
  • Python (using Jython)
  • Tcl (using Jacl)
  • XSLT Stylesheets (as a component of Apache XML project's Xalan and Xerces)

另外,也支持以下的这几种语言通过他们自身的BSF引擎来实现(下面提到的各个脚本语言的引擎都可以在其官网下载到)。

  • Java (using BeanShell, from the BeanShell project)
  • Groovy
  • JLog (PROLOG implemented in Java)
  • JRuby
  • JudoScript
  • ObjectScript
  • ooRexx (Open Object Rexx), using BSF4Rexx.

详解:-----留在以后的连接----

<4>Chain

    对Chain of Responsibility(责任链)设计模式的实现。使多个对象都有机会处理请求, 从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。

详解:-----留在以后的连接----

<5>CLI

    处理命令行命令的解析工具。

详解:-----留在以后的连接----

<6>Codec

    这个工具是用来编码和解码的,包含一些通用的编码解码算法。包括一些语音编码器,Base64,URL,Soundx等等。

详解:-----留在以后的连接----


<7>Collections

    扩展和增加标准的 Java Collection框架。

详解:-----留在以后的连接----

<8>Compress

   Compress提供了一组API用于操作(解压/压缩)ar、cpio、tar、zip、gzip和bzip2等格式的文件。

详解:-----留在以后的连接----


<9>Configuration

这个工具是用来帮助处理配置文件的,支持很多种存储方式

  1.  Properties文件
  2. XML文件
  3.  Property lis文件 (.plist)
  4.  JNDI
  5.  JDBC 数据源
  6. System properties 
  7. Applet parameters 
  8. Servlet parameters

详解:-----留在以后的连接----

<10>Crypto

   Crypto 是一个加密库,使用 AES-NI (Advanced Encryption Standard New Instructions) 进行优化。提供了加密级别和流级别的 API。开发者可以使用最少代码来实现高性能的 AES 加解密应用。

详解:-----留在以后的连接----

<11>CSV

   CSV 是一个用来读写各种 Comma Separated Value (CSV) 格式文件的 Java 库.

详解:-----留在以后的连接----

<12>Daemon

   Daemon是apache旗下Commons组件库的一个组件,是一套专门用于将Java应用打包成操作系统服务的类库。创建类似unix守护线程的java代码,可以安全地执行一些后台操作,线程不被某个应用程序控制,而是由操作系统控制 类似windows的service,可以设置一个服务依赖于另一个服务,一个服务关闭前必须先执行另一个服务。

   Commons Daemon的实现包括两部分组成,一部分由C语言编写,主要用于调用操作系统接口,另一部分由Java语言编写,主要用于实现守护进程的功能(实现服务需要调用的各种功能,比如关闭应用,启动应用等)。

实际上Commons Daemon并不仅仅支持window平台,在Linux和Unix平台下依然可以用。

详解:-----留在以后的连接----

<13>DBCP

   数据库连接池 
详解:-----留在以后的连接----

<14>DbUtils

  一个JDBC的工具类,比如可以将ResultSets生成javabean。

详解:-----留在以后的连接----

<15>Digester

  基于规则的XML文档解析,主要用于XML到Java对象的映射.
详解:-----留在以后的连接----


<16>Discovery

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

详解:-----留在以后的连接----


<17>EL

    EL是 Apache 组织中一个用来解析 JSP 2.0 的表达式语言的 Java 类库。

详解:-----留在以后的连接----

<18>Email

   Email的目的是提供一组用于发送Email的API,它基于Java Mail API基础之上并进行了简化。

详解:-----留在以后的连接----

<19>Exec

   Exec 是 Apache 上的一个 Java 项目,提供一些常用的方法用来执行外部进程。

详解:-----留在以后的连接----

<20>FileUpload

  web应用中的文件上传组件

详解:-----留在以后的连接----

<21>Functor

  A functor is a function that can be manipulated as an object, or an object representing a single, generic function.(函数式编程)

详解:-----留在以后的连接----

<22>Imaging (previously called Sanselan)

    A pure-Java image library.

详解:-----留在以后的连接----

<23>IO
   帮助进行IO功能开发,可以看成是java.io的扩展。

 详解:-----留在以后的连接----


<24>JCI

   JCI 是一个封装了 Java 编译器的类库。
 详解:-----留在以后的连接----


<25>JCS

  JCS是一个复合式的缓冲工具。可以将对象缓冲到内存、硬盘。具有缓冲对象时间过期设定。还可以通过JCS构建具有缓冲的分布式构架,以实现高性能的应用。对于一些需要频繁访问而每访问一次都非常消耗资源的对象,可以临时存放在缓冲区中,这 样可以提高服务的性能。而JCS正是一个很好的缓冲工具。缓冲工具对于读操作远远多于写操作的应用性能提高非常显著。

 详解:-----留在以后的连接----


<26>Jelly

    Jelly能够把XML转换成可执行代码,所以Jelly是一个基于XML与Java的脚本和处理引擎。 Jelly借鉴了JSP定指标签,Velocity, Cocoon和Xdoclet中的脚本引擎的许多优点。Jelly可以用在命令行,Ant或者Servlet之中。

 详解:-----留在以后的连接----


<27>Jexl

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

 详解:-----留在以后的连接----


<28>JXPath

    使用XPath语法操作javabean的工具。

 详解:-----留在以后的连接----

<29>Lang

   提供对java.lang包的扩展。提供了诸如StringUtils, StringEscapeUtils, RandomStringUtils, Tokenizer, WordUtils等工具类。

 详解:-----留在以后的连接----


<30>Launcher

    跨平台的java程序的启动。

 详解:-----留在以后的连接----


<31>Logging

    提供的是一个日志(Log)接口(interface),同时兼顾轻量级和不依赖于具体的日志实现工具。 它提供给中间件/日志工具开发者一个简单的日志操作抽象,允许程序开发人员使用不同的具体日志实现工具。用户被假定已熟悉某种日志实现工具的更高级别的细节。JCL提供的接口,对其它一些日志工具,包括Log4J, Avalon LogKit, and JDK 1.4等,进行了简单的包装,此接口更接近于Log4J和LogKit的实现.

 详解:-----留在以后的连接----


<32>Math

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

 详解:-----留在以后的连接----


<33>Modeler

    Modeler 是 Java 程序提供一个用于创建基于 JMX 规范的 MBeans 模型的工具。

 详解:-----留在以后的连接----


<34>Net

   集合了网络工具和协议工具的实现。这个包还是很实用的,封装了很多网络协议。

  1. FTP
  2.  NNTP
  3.  SMTP
  4.  POP3
  5.  Telnet  
  6. TFTP
  7.  Finger
  8.  Whois
  9.  rexec/rcmd/rlogin
  10.  Time (rdate) and Daytime
  11.  Echo
  12. Discard
  13. NTP/SNTP

 详解:-----留在以后的连接----


<35>OGNL

    OGNL是Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言,通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。它使用相同的表达式去存取对象的属性。

 详解:-----留在以后的连接----

<36>Pool

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

 详解:-----留在以后的连接----

<37>Proxy

    Commons Proxy 是 Apache 的一个之项目,封装了 Java 对象代理的一些常用方法。

 详解:-----留在以后的连接----

<38>RNG

    Implementations of random numbers generators.

 详解:-----留在以后的连接----


<39>SCXML

   处理SCXML,State Chart XML(SCXML) 是 W3C 组织制定的一种有限状态机的规范,它提供了一个在 CCXML 和 Harel State Tables 基础之上演化而来的状态机执行环境。

 详解:-----留在以后的连接----

<40>Validator

   提供了一个简单的,可扩展的框架来在一个XML文件中定义校验器 (校验方法)和校验规则。支持校验规则的和错误消息的国际化。用来帮助进行验证的工具。比如验证Email字符串,日期字符串等是否合法。
 详解:-----留在以后的连接---


<41>VFS

    VFS(Virtual File System)是访问各种文件系统,可以是本地文件、HTTP服务器上的文件、zip中的文件。  这个包的功能很强大,极大的简化了程序对资源的访问。

支持的资源类型包括 :

  1. CIFS
  2.  FTP
  3.  Local Files
  4.  HTTP and HTTPS
  5.  SFTP
  6.  Temporary Files
  7.  WebDAV
  8.  Zip, Jar and Tar (uncompressed, tgz or tbz2)
  9.  gzip and bzip2
  10.  res
  11.  ram

 详解:-----留在以后的连接---


<42>Weaver

   Provides an easy way to enhance (weave) compiled bytecode.

 详解:-----留在以后的连接---

4.Struts

简介:一个基于J2EE平台的MVC设计模式的Web应用框架。

网址:http://struts./

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


5.Lucene

简介:高性能的,基于Java语言的全文检索项目。

网址:http://lucene./

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


6.Cocoon

简介:一个基于组件技术和XML和Web应用开发框架。

网址:http://cocoon./

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


7.SpamAssassin

简介:垃圾邮件过滤器

网址:http://spamassassin./

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


8.Axis

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

网址:http://axis./


9.LoggingService

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

网址:http://logging./

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

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

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


10.Derby

简介:一个纯JAVA的数据库管理系统

网址:http://db./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。


11.iBATIS&mybatis

简介:一个基于JAVA语言的数据持久化框架

网址:http://www./

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。


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软件基金会


********************************************************************************结束语********************************************************************************************
  我在写这篇博客的时候也是一名初学者,有任何疑问或问题请留言,或发邮件也可以,邮箱为:577328725@qq.com,我会尽早的进行更正及更改。
在我写过的博客中有两篇博客是对资源的整理,可能对大家都有帮助,大家有兴趣的话可以看看!!
下载资料整理——目录http://blog.csdn.net/fanxiaobin577328725/article/details/51894331
  这篇博客里面是我关于我见到的感觉不错的好资源的整理,里面包含了书籍及源代码以及个人搜索的一些资源,如果有兴趣的可以看看,我会一直对其进行更新和添加。
优秀的文章&优秀的学习网站之收集手册http://blog.csdn.net/fanxiaobin577328725/article/details/52753638
  这篇博客里面是我对于我读过的,并且感觉有意义的文章的收集整理,纯粹的个人爱好,大家感觉有兴趣的可以阅读一下,我也会时常的对其进行更新。
********************************************************************************感谢********************************************************************************************

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多