15個非常重要的Apache開源項目匯總
自1999年創(chuàng)立以來,Apache軟件基金會如今已成了眾多重要的開源軟件項目之家。其中成功的項目有Geronimo,有Tomcat,有Hadoop,有如今成了大數(shù)據(jù)王國關(guān)鍵車轂的分布式計算系統(tǒng)。
雖然Apache沒有去維護(hù)有關(guān)下載量的完備統(tǒng)計數(shù)字,但是像Apache HTTP Server,已成為全球?qū)⒔?億多個網(wǎng)站的引擎,再比如OpenOffice,雖然只是前不久才進(jìn)入Apache的項目庫,但也已經(jīng)被下載了數(shù)百萬次。Apache還提供更為寬容的開源許可證。
下面是15個多年來非常重要的Apache項目,這些項目不僅對開源運動來說非常重要,對于與一般的技術(shù)世界來說也是非常重要的。
Cassandra
Cassandra數(shù)據(jù)庫在大數(shù)據(jù)世界里被稱為“可擴(kuò)展的記錄系統(tǒng)”,這是Cassandra公司的副總裁Jonathan Ellis說的。Apache是2008奶奶從Facebook接手了這個開源項目。不過后來Hadoop承擔(dān)了數(shù)據(jù)分析,Cassandra則為應(yīng)用提供數(shù)據(jù)倉庫,在網(wǎng)上是可以高度擴(kuò)展的。舉例說,Netflix就運行著很多的Cassandra集群。
Cassandra可在普通的硬件或云基礎(chǔ)設(shè)施上提供容錯能力,可以跨多個數(shù)據(jù)中心復(fù)制數(shù)據(jù)。到今年7月,Cassandra 2.0將會包含對CAS(compare-and-set)功能的支持,在單一操作中綜合讀與更新;觸發(fā)器支持,為響應(yīng)更新不同表格而定義動作,進(jìn)一步縮短請求延時。
Cordova
因為Apache在移動計算領(lǐng)域占據(jù)支配地位,Cordova為應(yīng)用開發(fā)人員配備了API以便其訪問本地功能。Cordova可以和諸如jQuery或Sencha Touch的UI框架一起使用,在iOS、Android、黑莓和Windows Phone上運行。
Cordova負(fù)責(zé)Apache的副總裁兼Adobe產(chǎn)品經(jīng)理Brian Leroux說,這一項目源于PhoneGap,由Adobe收購的Nitobi開發(fā)。源代碼貢獻(xiàn)給了Apache。
“Apache Cordova是我們用來在HTML、CSS和JavaScript上開發(fā)應(yīng)用的開源項目,PhoneGap是其發(fā)行版之一,”Leroux說。Apache計劃7月發(fā)布Cordova 3.0,并提供使用該軟件的一種模塊化方法。
CouchDB
這個數(shù)據(jù)庫軟件的MapReduce查詢使用JSON文檔、JavaScript,API則使用HTTP協(xié)議。CouchDB的核心功能是其復(fù)制機(jī)制,該項目的一位長期貢獻(xiàn)者Jan Lehnhardt稱。
“這能讓我們將任何CouchDB的實例與任何其他實例相互同步。每份數(shù)據(jù)副本皆可獨立運行,所有變更皆可同步反饋給改組中的所有成員。”
CouchDB的復(fù)制功能可用于全球分發(fā)數(shù)據(jù),或者分發(fā)至地理上最接近用戶的所在。計劃中其他改進(jìn)還包括與BigCouch的集成,后者是CouchDB的一個容錯集群版本。該數(shù)據(jù)庫的JavaScript引擎將會升級至V8和Node.JS,已獲得服務(wù)器腳本更大的靈活性。
Flex
由Adobe貢獻(xiàn)的Flex是一個應(yīng)用框架,充分利用了Adobe Flash豐富的互聯(lián)網(wǎng)插件技術(shù)。開發(fā)人員可以為iOS、Android和黑莓平板OS開發(fā)應(yīng)用,也可以開發(fā)桌面和瀏覽器應(yīng)用。Apache目前正計劃擴(kuò)展Flex以支持HTML5,Apache Flex副總裁Alex Harui稱。不過任何與HTML5相關(guān)的改進(jìn)都有可能不再叫這一名稱。
在解釋Apache對Flex的HTML5改進(jìn)時,Harui稱,“我們希望它能在盡可能多的地方運行。”然而即將發(fā)布的Flex 4.10版預(yù)計不會出現(xiàn)太大的改進(jìn)。
Geronimo
這個服務(wù)器運行環(huán)境集成開源項目包含了Tomcat、MyFaces和OpenJPA,可產(chǎn)生Java/OSGi運行環(huán)境。其最流行的發(fā)行版是Java EE 6應(yīng)用服務(wù)器運行環(huán)境。
“Apache Geronimo是一個模塊化、可編譯的開源服務(wù)器運行環(huán)境,”Geronimo程序管理委員會主席Kevan Miller稱。“下一次重要升級將是Java EE 7。”這一項目發(fā)源于2003年的Apache Incubator,隨后逐漸演變?yōu)锳pache的頂級項目。#p#
Hadoop
這個項目是最近最為時髦的項目,并已成為大數(shù)據(jù)的同義詞。Hadoop為分布式計算提供了一個操作系統(tǒng)。
Hadoop的一位主要貢獻(xiàn)者Doug Cutting稱,“假如你想要運行數(shù)萬臺電腦而不是一臺電腦,那么Hadoop就能讓你應(yīng)付裕如。”Hadoop起源于2006年的Nutch Web軟件。Cloudera、HortonWorks等廠商都在圍繞Hadoop開發(fā)各種業(yè)務(wù)。未來的改進(jìn)將包括安全性和可擴(kuò)展性方面的提升。
Harmony
這款模塊化的Java運行環(huán)境是Apache最具爭議的項目之一,在Apache和接管了Java的Oracle之間引起了爭論。
“Harmony的主要目標(biāo)是創(chuàng)建一個自由而且開源的Java運行環(huán)境,”Apache的項目參與者Jim Jagielski稱。“該項目由于Sun被收購而退役,然后是Oracle拒絕將所需要的TCK(技術(shù)兼容性工具包)授權(quán)給Apache,以便使Harmony具有Java兼容性。”
Sun為了防止Harmony在移動平臺上使用而強(qiáng)加了一個使用限制領(lǐng)域,Sun曾聲稱這會影響到Java ME的銷售。不過Harmony已迫使Oracle接受了OpenJDK,而后者正是谷歌Android的一個核心組件。
HTTP Server
這一項目又叫“httpd”。“從很多方面來看,Apache httpd依然是Apache軟件基金會的主要基石,”Jagileski說,他從1995年起就是該項目的一位提交者。“要說是Apache httpd導(dǎo)致了Web的流行、實用和無所不在,那是一點兒都不為過的。由于是免費的、開源的,并且完全符合標(biāo)準(zhǔn)的參考實施才使得Web成了普適的和無所不在的。”
Httpd的最新版2.4.4為云環(huán)境提供了改進(jìn)的性能和適用性。“包括反向代理設(shè)置的動態(tài)重設(shè)、更快更高的內(nèi)存效率請求處理、支持I/O異步、正在開發(fā)中的一組新的模塊,以及動態(tài)內(nèi)容處理等。”
Lucene
Lucene提供一個用Java編寫的文本引擎搜索庫。“Lucene的用戶是那些需要為其應(yīng)用增加搜索功能的人,”2006年起就是Lucene核心提交者的Simon Willnauer稱。Twitter目前就在用Lucene。
Lucene 4.0是去年10月發(fā)布的,起著重新改寫和支持用戶自己用于確定數(shù)據(jù)結(jié)構(gòu)如何編碼的編解碼器的工作。Willnauer認(rèn)為,這使得一些專門的用例生效。Lucen 4.1發(fā)表于今年1月,節(jié)省了磁盤空間,性能也有了提高。而預(yù)計在數(shù)月內(nèi)發(fā)表的4.2版預(yù)計會重構(gòu)搜索文檔的doc值功能。
Maven
這個軟件管理與綜合工具用于管理構(gòu)建、報表和文檔。強(qiáng)調(diào)了Java開發(fā)環(huán)境。
“Maven的主要益處是更快速進(jìn)行項目開發(fā)的方法,”從事Maven開發(fā)長達(dá)十年之久的Brett Porter稱。
對Java項目的依賴關(guān)系管理對Maven來說也很關(guān)鍵,需要將各種不同的軟件項目連接起來。它可以集成一些像Jenkins軟件構(gòu)件系統(tǒng)的工具。Maven的改進(jìn)計劃包括提升插件和加強(qiáng)日志記錄功能。#p#
OpenOffice
該項目是Oracle于2011年轉(zhuǎn)給Apache的,此前OpenOffice應(yīng)用套件一直是Sun的項目。它在Oracle管轄下進(jìn)展混亂,與OpenOffice.org社區(qū)的很多成員都發(fā)生了沖突。
該套件共有6個個人生產(chǎn)力應(yīng)用:字處理、電子表格、演示、繪畫、公式編輯器和數(shù)據(jù)庫。2012年,Apache發(fā)表了兩個版本,增加了矢量圖形、擴(kuò)展語言支持、性能改進(jìn)和漏洞修復(fù)等。Apache OpenOffice副總裁Andrea Pesecetti稱,計劃今年4月發(fā)表4.0版。該版本將提供一個更為時尚的GUI、對微軟Word文件的互操作性改進(jìn)、更好的禁止個人可訪問功能以及其他性能改進(jìn)等。自2012年5月以來,OpenOffice 3.4版已被下載超過3500萬次。
Pig
Pig常用于分析大型數(shù)據(jù)集,為數(shù)據(jù)分析算法配備了并行和高級語言。開發(fā)人員在使用Hadoop時可使用Pig而不必編寫Java代碼。
該項目的提交者Daniel Dai稱,“你可以認(rèn)為Pig是在Hadoop之上的一個抽象層。”Pig之所以如此命名,是因為它具備吃掉所有數(shù)據(jù)的能力。“它可以消化掉所有種類的數(shù)據(jù)。”
用戶可以構(gòu)建自己的特殊處理功能。即將發(fā)表的Pig 11.0將會呈現(xiàn)很多性能增強(qiáng)和操作者立方,用于計算多維度聚合和排名等。Pig開發(fā)人員希望Pig最終能擺脫對Hadoop的依賴,但是到目前為止,它還得依賴Hadoop。
Struts
Struts是構(gòu)建Java Web應(yīng)用的框架。最初是作為Apache Jakarta的子項目出現(xiàn)的,2005年獨立剝離出來。
“Apache Struts項目提供構(gòu)建所謂基于動作的Java Web應(yīng)用的框架解決方案,這和基于組件的解決方案如JSF或Apache Wicket相反,”Apache Struts副總裁Rene Gielen說。
Gielen稱,在JavaServer Faces出現(xiàn)之前,版本1是構(gòu)建Java Web應(yīng)用的事實標(biāo)準(zhǔn)。Struts 2“是一個輕量級、精致的和高度解耦的基于動作的Web框架,雖然是在Struts 1所引進(jìn)的基本原則上構(gòu)建的,但沒有繼承其前一版本的任何一行代碼。”該項目的下一次重大重新設(shè)計預(yù)計不久就會面世。
Subversion
Subversion是CollabNet在2000年創(chuàng)立的。這個版本控制系統(tǒng)目前正在與Git爭奪開發(fā)人員的注意力,不過Subversion副總裁Greg Stein并不認(rèn)為這兩者在進(jìn)行決斗。
“這并非一場戰(zhàn)爭。版本控制系統(tǒng)只是工具,開發(fā)團(tuán)體會選擇最適合于他們的工具。擁有多種選擇才是合乎情理的。”
“它的集中式知識庫、簡單設(shè)置、訪問控制、龐大的知識庫規(guī)模和種類繁多的客戶端等,都深受眾多企業(yè)的青睞。Subversion是商界最受歡迎的、利潤巨大的版本控制系統(tǒng),”Stein說。
即將發(fā)表的Version 1.8將針對文件和目錄遷移提供客戶端改進(jìn)。它還將提供經(jīng)過改進(jìn)的融合、可繼承的和服務(wù)器定義的各種屬性。
Tomcat
這是Java Servlet和JavaServer Pages技術(shù)的實現(xiàn),是Apache從1999年就啟動了的資深項目。Tomcat是高效的Java應(yīng)用服務(wù)器,并且已衍生了一些商業(yè)產(chǎn)品,如Mulesoft的Tcat Server,和VMware vFabric tc Server。還有Apache TomEE,這基本上是Tomcat的Java EE 6 Web Profile版本。Tomcat 8計劃將包含對Servlet 3.1標(biāo)準(zhǔn)的支持。