自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标准的支持。

15个具有高度影响力的Apache开源项目的更多相关文章

  1. 15个非常重要的Apache开源项目汇总

    15个非常重要的Apache开源项目汇总 自1999年创立以来,Apache软件基金会如今已成了众多重要的开源软件项目之家.本文列举了15个多年来非常重要的Apache项目,这些项目不仅对开源运动来说 ...

  2. apache开源项目--Apache Drill

    为了帮助企业用户寻找更为有效.加快Hadoop数据查询的方法,Apache 软件基金会发起了一项名为“Drill”的开源项目.Apache Drill 实现了 Google's Dremel. Apa ...

  3. apache开源项目--Cassandra

    Apache Cassandra是一套开源分布式Key-Value存储系统.它最初由Facebook开发,用于储存特别大的数据.Facebook目前在使用此系统. 主要特性: 分布式 基于column ...

  4. apache开源项目 --Struts

    struts简介 Struts是Apache软件基金会(ASF)赞助的一个开源项目.它最初是jakarta项目中的一个子项目,并在2004年3月成为ASF的顶级项目.它通过采用JavaServlet/ ...

  5. apache开源项目 -- Tuscany

    tuscany是Apache组织关于SOA实现的一个开放源码的工程项目,目前处于孵化期阶段. 该项目主要基于SCA,SDO,DAS等技术上实现的. SCA 的基本概念以及 SCA 规范的具体内容并不在 ...

  6. apache开源项目--Mahout

    Apache Mahout 是 Apache Software Foundation (ASF) 开发的一个全新的开源项目,其主要目标是创建一些可伸缩的机器学习算法,供开发人员在 Apache 在许可 ...

  7. apache开源项目--CouchDB

    Apache CouchDB 是一个面向文档的数据库管理系统.它提供以 JSON 作为数据格式的 REST 接口来对其进行操作,并可以通过视图来操纵文档的组织和呈现. CouchDB 是 Apache ...

  8. apache开源项目--nutch

    Nutch 是一个开源Java 实现的搜索引擎.它提供了我们运行自己的搜索引擎所需的全部工具.包括全文搜索和Web爬虫. Nutch的创始人是Doug Cutting,他同时也是Lucene.Hado ...

  9. 强烈推荐!15 个Github 顶级Java教程类开源项目

    大家好,我是 Guide 哥!今天给大家推荐 15 个新手也能看懂的 Java 教程方向的开源项目.这些项目无论是对于你学习 Java 还是准备 Java 方向的面试都非常有帮助. 正如我第一个要推荐 ...

随机推荐

  1. CCF CSP 201709-1 打酱油

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201709-1 打酱油 问题描述 小明带着N元钱去买酱油.酱油10块钱一瓶,商家进行促销,每买 ...

  2. CodeIgniter2.0中sqlserver驱动返回受影响行数问题解决

    最近使用CI写项目时遇到的问题,当使用sqlserve链接操作时 修改和删除返回的受影响行数不对 解决办法如下: 找到ci框架目录中include\database\drivers\sqlsrv\sq ...

  3. [水煮 ASP.NET Web API2 方法论](1-4)从 MVC Controller 链接到 API Controller 以及反向链接

    问题 想创建一个从 ASP.NET MVC controller 到 ASP.NET Web API controller 的直接链接,或者反向链接. 解决方案 可以使用 System.Web.Htt ...

  4. Educational Codeforces Round 56 (Rated for Div. 2) F - Vasya and Array dp好题

    F - Vasya and Array dp[ i ][ j ] 表示用了前 i 个数字并且最后一个数字是 j 的方案数. dp[ i ][ j ] = sumdp [i - 1 ][ j ], 这样 ...

  5. 自定义排序及Hadoop序列化

    自定义排序 将两列数据进行排序,第一列按照升序排列,当第一列相同时,第二列升序排列. 在map和reduce阶段进行排序时,比较的是k2.v2是不参与排序比较的.如果要想让v2也进行排序,需要把k2和 ...

  6. 2016-2017 ACM-ICPC Pacific Northwest Regional Contest (Div. 2) 题解

    [题目链接] A - Alphabet 最长公共子序列.保留最长公共子序列,剩余的删除或者补足即可. #include <bits/stdc++.h> using namespace st ...

  7. JFinal 3.3 学习 -- JFinalConfig (配置web项目)

    开篇  概述 基于JFinal的web项目需要创建一个继承自JFinalConfig类的子类,该类用于对整个web项目进行配置. JFinalConfig子类需要实现六个抽象方法,如下所示: publ ...

  8. Form与ModelForm-下拉框或者多选注意//及字段补充

    一.Form 设计一张普通model表: class UserInfo(models.Model): name = models.CharField(verbose_name='员工姓名', max_ ...

  9. QT学习笔记7:C++函数默认参数

    C++中允许为函数提供默认参数,又名缺省参数. 使用默认参数时的注意事项: ① 有函数声明(原型)时,默认参数可以放在函数声明或者定义中,但只能放在二者之一.建议放在函数声明中. double sqr ...

  10. Struts2 (中)

    Struts中API介绍 ServletAPI 在使用Struts2的框架的过程中,发现Struts2和Servlet的API是解耦合的. 在实际开发中,经常使用到Servlet的API,比如进行登录 ...