自1999年创立以来,Apache软件基金会如今已成了众多重要的开源软件项目之家。其中成功的项目有Geronimo,有Tomcat,有Hadoop,有如今成了大数据王国关键车毂的分布式计算系统。
虽然Apache没有去维护有关下载量的完备统计数字,但是像Apache HTTP Server,已成为全球将近5亿多个网站的引擎,再比如OpenOffice,虽然只是前不久才进入Apache的项目库,但也已经被下载了数百万次。
Apache还提供更为宽容的开源许可证。
下面是15个多年来非常重要的Apache项目,这些项目不仅对开源运动来说非常重要,对于与一般的技术世界来说也是非常重要的。
Cassandra
Cassandra数据库在大数据世界里被称为“可扩展的记录系统”,这是Cassandra公司的副总裁Jonathan Ellis说的。Apache是2008奶奶从Facebook接手了这个开源项目。不过后来Hadoop承担了数据分析,Cassandra则为应用提供数据仓库,在网上是可以高度扩展的。举例说,Netflix就运行着很多的Cassandra集群。
Cassandra可在普通的硬件或云基础设施上提供容错能力,可以跨多个数据中心复制数据。到今年7月,Cassandra 2.0将会包含对CAS(compare-and-set)功能的支持,在单一操作中综合读与更新;触发器支持,为响应更新不同表格而定义动作,进一步缩短请求延时。
Cordova
因为Apache在移动计算领域占据支配地位,Cordova为应用开发人员配备了API以便其访问本地功能。Cordova可以和诸如jQuery或Sencha Touch的UI框架一起使用,在iOS、Android、黑莓和Windows Phone上运行。
Cordova负责Apache的副总裁兼Adobe产品经理Brian Leroux说,这一项目源于PhoneGap,由Adobe收购的Nitobi开发。源代码贡献给了Apache。
“Apache Cordova是我们用来在HTML、CSS和JavaScript上开发应用的开源项目,PhoneGap是其发行版之一,”Leroux说。Apache计划7月发布Cordova 3.0,并提供使用该软件的一种模块化方法。
CouchDB
这个数据库软件的MapReduce查询使用JSON文档、JavaScript,API则使用HTTP协议。CouchDB的核心功能是其复制机制,该项目的一位长期贡献者Jan Lehnhardt称。
“这能让我们将任何CouchDB的实例与任何其他实例相互同步。每份数据副本皆可独立运行,所有变更皆可同步反馈给改组中的所有成员。”
CouchDB的复制功能可用于全球分发数据,或者分发至地理上最接近用户的所在。计划中其他改进还包括与BigCouch的集成,后者是CouchDB的一个容错集群版本。该数据库的JavaScript引擎将会升级至V8和Node.JS,已获得服务器脚本更大的灵活性。
Flex
由Adobe贡献的Flex是一个应用框架,充分利用了Adobe Flash丰富的互联网插件技术。开发人员可以为iOS、Android和黑莓平板OS开发应用,也可以开发桌面和浏览器应用。Apache目前正计划扩展Flex以支持HTML5,Apache Flex副总裁Alex Harui称。不过任何与HTML5相关的改进都有可能不再叫这一名称。
在解释Apache对Flex的HTML5改进时,Harui称,“我们希望它能在尽可能多的地方运行。”然而即将发布的Flex 4.10版预计不会出现太大的改进。
Geronimo
这个服务器运行环境集成开源项目包含了Tomcat、MyFaces和OpenJPA,可产生Java/OSGi运行环境。其最流行的发行版是Java EE 6应用服务器运行环境。
“Apache Geronimo是一个模块化、可编译的开源服务器运行环境,”Geronimo程序管理委员会主席Kevan Miller称。“下一次重要升级将是Java EE 7。”这一项目发源于2003年的Apache Incubator,随后逐渐演变为Apache的*项目。
Hadoop
这个项目是最近最为时髦的项目,并已成为大数据的同义词。Hadoop为分布式计算提供了一个操作系统。
Hadoop的一位主要贡献者Doug Cutting称,“假如你想要运行数万台电脑而不是一台电脑,那么Hadoop就能让你应付裕如。”Hadoop起源于2006年的Nutch Web软件。Cloudera、HortonWorks等厂商都在围绕Hadoop开发各种业务。未来的改进将包括安全性和可扩展性方面的提升。
Harmony
这款模块化的Java运行环境是Apache最具争议的项目之一,在Apache和接管了Java的Oracle之间引起了争论。
“Harmony的主要目标是创建一个*而且开源的Java运行环境,”Apache的项目参与者Jim Jagielski称。“该项目由于Sun被收购而退役,然后是Oracle拒绝将所需要的TCK(技术兼容性工具包)授权给Apache,以便使Harmony具有Java兼容性。”
Sun为了防止Harmony在移动平台上使用而强加了一个使用限制领域,Sun曾声称这会影响到Java ME的销售。不过Harmony已迫使Oracle接受了OpenJDK,而后者正是谷歌Android的一个核心组件。
HTTP Server
这一项目又叫“httpd”。“从很多方面来看,Apache httpd依然是Apache软件基金会的主要基石,”Jagileski说,他从1995年起就是该项目的一位提交者。“要说是Apache httpd导致了Web的流行、实用和无所不在,那是一点儿都不为过的。由于是免费的、开源的,并且完全符合标准的参考实施才使得Web成了普适的和无所 不在的。”
Httpd的最新版2.4.4为云环境提供了改进的性能和适用性。“包括反向代理设置的动态重设、更快更高的内存效率请求处理、支持I/O异步、正在开发中的一组新的模块,以及动态内容处理等。”
Lucene
Lucene提供一个用Java编写的文本引擎搜索库。“Lucene的用户是那些需要为其应用增加搜索功能的人,”2006年起就是Lucene核心提交者的Simon Willnauer称。Twitter目前就在用Lucene。
Lucene 4.0是去年10月发布的,起着重新改写和支持用户自己用于确定数据结构如何编码的编解码器的工作。Willnauer认为,这使得一些专门的用例生效。Lucen 4.1发表于今年1月,节省了磁盘空间,性能也有了提高。而预计在数月内发表的4.2版预计会重构搜索文档的doc值功能。
Maven
这个软件管理与综合工具用于管理构建、报表和文档。强调了Java开发环境。
“Maven的主要益处是更快速进行项目开发的方法,”从事Maven开发长达十年之久的Brett Porter称。
对Java项目的依赖关系管理对Maven来说也很关键,需要将各种不同的软件项目连接起来。它可以集成一些像Jenkins软件构件系统的工具。Maven的改进计划包括提升插件和加强日志记录功能。
第3页:OpenOffice
OpenOffice
该项目是Oracle于2011年转给Apache的,此前OpenOffice应用套件一直是Sun的项目。它在Oracle管辖下进展混乱,与OpenOffice.org社区的很多成员都发生了冲突。
该套件共有6个个人生产力应用:字处理、电子表格、演示、绘画、公式编辑器和数据库。2012年,Apache发表了两个版本,增加了矢量图 形、扩展语言支持、性能改进和漏洞修复等。Apache OpenOffice副总裁Andrea Pesecetti称,计划今年4月发表4.0版。该版本将提供一个更为时尚的GUI、对微软Word文件的互操作性改进、更好的禁止个人可访问功能以及其他性能改进等。自2012年5月以来,OpenOffice 3.4版已被下载超过3500万次。
Pig
Pig常用于分析大型数据集,为数据分析算法配备了并行和高级语言。开发人员在使用Hadoop时可使用Pig而不必编写Java代码。
该项目的提交者Daniel Dai称,“你可以认为Pig是在Hadoop之上的一个抽象层。”Pig之所以如此命名,是因为它具备吃掉所有数据的能力。“它可以消化掉所有种类的数据。”
用户可以构建自己的特殊处理功能。即将发表的Pig 11.0将会呈现很多性能增强和操作者立方,用于计算多维度聚合和排名等。Pig开发人员希望Pig最终能摆脱对Hadoop的依赖,但是到目前为止,它还得依赖Hadoop。
Struts
Struts是构建Java Web应用的框架。最初是作为Apache Jakarta的子项目出现的,2005年独立剥离出来。
“Apache Struts项目提供构建所谓基于动作的Java Web应用的框架解决方案,这和基于组件的解决方案如JSF或Apache Wicket相反,”Apache Struts副总裁Rene Gielen说。
Gielen称,在JavaServer Faces出现之前,版本1是构建Java Web应用的事实标准。Struts 2“是一个轻量级、精致的和高度解耦的基于动作的Web框架,虽然是在Struts 1所引进的基本原则上构建的,但没有继承其前一版本的任何一行代码。”该项目的下一次重大重新设计预计不久就会面世。
Subversion
Subversion是CollabNet在2000年创立的。这个版本控制系统目前正在与Git争夺开发人员的注意力,不过Subversion副总裁Greg Stein并不认为这两者在进行决斗。
“这并非一场战争。版本控制系统只是工具,开发团体会选择最适合于他们的工具。拥有多种选择才是合乎情理的。”
“它的集中式知识库、简单设置、访问控制、庞大的知识库规模和种类繁多的客户端等,都深受众多企业的青睐。Subversion是商界最受欢迎的、利润巨大的版本控制系统,”Stein说。
即将发表的Version 1.8将针对文件和目录迁移提供客户端改进。它还将提供经过改进的融合、可继承的和服务器定义的各种属性。
Tomcat
这是Java Servlet和JavaServer Pages技术的实现,是Apache从1999年就启动了的资深项目。Tomcat是高效的Java应用服务器,并且已衍生了一些商业产品,如Mulesoft的Tcat Server,和VMware vFabric tc Server。还有Apache TomEE,这基本上是Tomcat的Java EE 6 Web Profile版本。Tomcat 8计划将包含对Servlet 3.1标准的支持。