自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的改進計劃包括提升插件和加強日志記錄功能。
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標準的支持。