Apache上全部JAVA開源項目簡介
最近接觸Jakarta-Common-BeanUtils這個東東比較多,于是對Apache Jakarta Project產(chǎn)生了興趣,上他們的官方網(wǎng)站上看了下感覺有用的東西好多,眼花繚亂的,又沒有中文網(wǎng)站,又上各大論壇搜了下,也沒有發(fā)現(xiàn)一個集中該項目的資料,于是決定自己整理翻譯一下,有助于各位網(wǎng)友更好的了解該項目。如果有什么描述不對不全面的地方,希望各位提出來給大家分享。
Jakarta項目是ASF(The Apache Software Foundation)的一部分。ASF是一個非贏利組織,她鼓勵基于開放的軟件許可下進(jìn)行合作、注重實(shí)效的開發(fā),并提供各個領(lǐng)域的高質(zhì)量軟件,她涉及到Http服務(wù)器,編譯工具,類庫,開發(fā)架構(gòu),服務(wù)器端Java技術(shù),J2EE容器,數(shù)據(jù)庫工具,日志工具,XML解析等等諸多領(lǐng)域。ASF提供的java項目有一部分在Jakarta中,還有一些成為獨(dú)立的諸如Tomcat的項目,Jakarta項目則提供了多種多樣開源的java解決通用方案。
先介紹一下ASF中和Jakarta項目并列的java項目:
Ant ——java構(gòu)建工具,使用一個配置文件就可以完成java的項目的,編譯、打包、測試、運(yùn)行、部署、生成文檔等諸多工作。
Avalon ——是一個包括核心框架、工具、組件和容器的面向組件編程(AOP)的完整開發(fā)平臺。使用關(guān)鍵設(shè)計模式,如反向控制模式(IoC)和分離考慮模(SoC)。 Avalon提供各種基本組件和缺省的應(yīng)用程序模塊,幫助你快速的建立你自己的應(yīng)用程序解決方案。
Excalibur ——集多個開源項目(Avalon Framework、LogKit和Cornerstone)于一身的輕量級可嵌入式反向控制容器。
Gump ——是Apache組織自己也使用的一個持續(xù)集成工具,全面支持Ant和Maven,當(dāng)有新的改動提交到版本控制系統(tǒng),它可以檢查出潛在 的沖突,并及時通知項目組的所有成員并自動生成改動的詳細(xì)報告。
James ——是一套用java開發(fā)的郵件、新聞組、消息服務(wù)器,提供了比較完善的配置方案,尤其是關(guān)于郵件內(nèi)容存儲和用戶信息存儲。 支持 SMTP, POP3 , NNTP , IMAP 。
Logging ——可靠,快速的日志工具。
Lucene ——Java開發(fā)的高性能,全方位的文本搜索引擎。替文件的每一個字作索引,索引讓搜尋的效率比傳統(tǒng)的逐字比較大大提高, Lucen提供一組解讀,過濾,分析文件,編排和使用索引的API,它的強(qiáng)大之處除了高效和簡單外, 是最重要的是使使用者可以隨時應(yīng)自已需要自訂其功能。
Maven ——是一個潛在的基于java的apache ant的構(gòu)建工具的替代者。提供了更強(qiáng)大的功能和易用性。
Portals ——提供了功能全面的、具有商業(yè)價值的企業(yè)門戶。門戶概念:門戶對企業(yè)內(nèi)的各種資源如信息管理系統(tǒng)進(jìn)行整合并通過單一接口 對外提供服務(wù),雇員、合伙人及顧客可以通過任何裝置在任何地點(diǎn)通過門戶入口享受到企業(yè)提供的服務(wù), 分析家們預(yù)計,門戶將成為下一代的桌面環(huán)境。
Struts ——一個實(shí)現(xiàn)MVC model2的web應(yīng)用程序開發(fā)框架。通過一個配置文件可以很好的對各種組件進(jìn)行裝配,結(jié)構(gòu)清晰,應(yīng)用的最廣泛的額web開發(fā)框架。
Tapestry——類似 Struts,也是一個基于servlet的應(yīng)用程序框架,支持MVC,出現(xiàn)的較晚,不如Struts普及,主要利用javabean和xml技術(shù)進(jìn)行開發(fā),
Tomcat ——Serlvet容器,同時具有傳統(tǒng)的Web服務(wù)器的功能,如:處理Html頁面。能夠處理動靜態(tài)網(wǎng)頁。
Watchdog ——用來檢查一個servlet或jsp容器在相應(yīng)規(guī)范上的執(zhí)行情況的兼容性。但是該項目已經(jīng)靜止了,只支持Servlet2.3、JSP1.2,相應(yīng) 的Serlvet容器如Tomcat也只支持Tomcat4.x。
下面介紹下Jakarta的各個子項目:
Alexandria——已經(jīng)不再開發(fā)
BCEL ——The Byte Code Engineering Library (formerly known as JavaClass) 字節(jié)碼引擎類庫,它讓用戶方便的分析,創(chuàng)建,操作java的class文件成為可能。 它可以讓您深入 JVM 匯編語言進(jìn)行類操作的細(xì)節(jié)。
BSF ——bean腳本框架 在java應(yīng)用內(nèi)對腳本語言提供了支持,通過腳本語言可以訪問java的對象和方法。
Cactus ——一個基于JUnit框架的簡單測試框架,用來單元測試服務(wù)端Java代碼。 Cactus單元測試服務(wù)端內(nèi)容包括servlet,EJB,? tag librarie, filter等
Commons ——提供很多日常開發(fā)中使用率很高的功能解決方案,已被很多著名的開源項目采用。具體的項目列表后面會有。
ECS ——使用Java語言和面向?qū)ο蠓椒▌?chuàng)建標(biāo)記語言文檔(HTML,XML)的開源項目。
HiveMind ——是一個服務(wù)和配置的微型內(nèi)核, 一套通過簡單的java對象和接口創(chuàng)建復(fù)雜應(yīng)用的框架。
HttpComponents ——提供了java.net包所不能提供的更多強(qiáng)大的、方便的http協(xié)議處理功能。
JCS ——一個分布式的緩存系統(tǒng),用來提高應(yīng)用程序的性能,并且提供很多強(qiáng)大的額外功能。
JMeter ——純java開發(fā)的一套桌面應(yīng)用程序。用來進(jìn)行功能測試和性能測試。它可以用來測試靜止資料庫或者活動資料庫中的服務(wù)器的運(yùn)行情況, 可以用來模擬對服務(wù)器或者網(wǎng)絡(luò)系統(tǒng)加以重負(fù)荷以測試它的抵抗,或者用來分析不同負(fù)荷類型下的所有運(yùn)行情況。 它也提供了一個可替換的界面用來定制數(shù)據(jù)顯示,測試同步及測試的創(chuàng)建和執(zhí)行。
ORO ——一套文本處理工具,能提供perl5.0兼容的正則表達(dá)式、 AWK-like正則表達(dá)式, glob 表達(dá)式。還提供替換,分割,文件名過慮等功能。
POI ——一套用來創(chuàng)建,讀寫基于OLE 2組件文檔格式的文件。使用Java來讀寫MS Excel ,Word文件。
Regexp ——一套純java的正則表達(dá)式相關(guān)的包。
Slide ——主要模塊是一個可以做為內(nèi)容管理框架底層的內(nèi)容倉庫.它可以把內(nèi)容信息存取到專門的,異質(zhì)的,分布式的數(shù)據(jù)庫中.Slide還增加了security, locking, versioning等特性.
Taglibs ——一套在開發(fā)web應(yīng)用時十分有用的,jsp 通用 tag包。
Turbine ——類似 Struts,也是一個基于servlet的應(yīng)用程序框架,支持MVC。提供了大量可重用的組件。此框架包中包含了大量組件,但是這些組件是離散的。
Velocity ——是一個基于java的模板引擎(template engine)。它允許任何人僅僅簡單的使用模板語言(template language)來引用由java代碼定義的對象。? 當(dāng)Velocity應(yīng)用于web開發(fā)時,界面設(shè)計人員可以和java程序開發(fā)人員同步開發(fā)一個遵循MVC架構(gòu)的web站點(diǎn), 也就是說,頁面設(shè)計人員可以只關(guān)注頁面的顯示效果,而由java程序開發(fā)人員關(guān)注業(yè)務(wù)邏輯編碼。 Velocity將java代碼從web頁面中分離出來,這樣為web站點(diǎn)的長期維護(hù)提供了便利, 同時也為我們在JSP和PHP之外又提供了一種可選的方案。 Velocity的能力遠(yuǎn)不止web站點(diǎn)開發(fā)這個領(lǐng)域, 例如,它可以從模板(template)產(chǎn)生SQL和PostScript、XML,它也可以被當(dāng)作一個獨(dú)立工具來產(chǎn)生源代碼和報告, 或者作為其他系統(tǒng)的集成組件使用。Velocity也可以為Turbine web開發(fā)架構(gòu)提供模板服務(wù)(template service)。 Velocity+Turbine提供一個模板服務(wù)的方式允許一個web應(yīng)用以一個真正的MVC模型進(jìn)行開發(fā)。?
Apache java項目全介紹2
下面介紹一下Jakarta下的Commons:一個csdn網(wǎng)友描述得很貼切,Commons就好比一個java百寶箱。
commons分為3部分Commons Proper、Commons Sandbox和Commons Dormant
Commons Proper:提供了設(shè)計良好可重用的java組件,并都經(jīng)過了廣泛、嚴(yán)格的測試。
Commons Sandbox:處于實(shí)驗、測試階段的組件。
Commons Dormant:處于停滯狀態(tài),從Sandbox退出的,不活躍的組件,謹(jǐn)慎使用。
Commons Proper組件:
Attributes—— 支持源代碼級的元數(shù)據(jù)。
BeanUtils——提供對 Java 反射和自省API的包裝,處理javabean的工具。
Betwixt——將JavaBeans與XML相互轉(zhuǎn)換。?
Chain——對Chain of Responsibility(責(zé)任鏈)設(shè)計模式的實(shí)現(xiàn)。使多個對象都有機(jī)會處理請求, 從而避免請求的發(fā)送者和接收者之間的耦合關(guān)系。將這些對象連成一條鏈,并沿著這條鏈傳遞請求,直到有一個對象處理它為止。
CLI——處理命令行的命令的解析。
Codec——包含一些通用的編碼解碼算法。包括一些語音編碼器, Hex, Base64, 以及URL encoder。
Collections——擴(kuò)展和增加標(biāo)準(zhǔn)的 Java Collection框架。
Configuration——操作各種格式的配置文件。Properties文件 /XML文件 /JNDI /JDBC 數(shù)據(jù)源 /System properties /Applet parameters / Servlet parameters
Daemon——創(chuàng)建類似unix守護(hù)線程的java代碼,可以安全地執(zhí)行一些后臺操作,線程不被某個應(yīng)用程序控制,而是由操作系統(tǒng)控制 類似windows的service,可以設(shè)置一個服務(wù)依賴于另一個服務(wù),一個服務(wù)關(guān)閉前必須先執(zhí)行另一個服務(wù)。
DBCP——一個數(shù)據(jù)庫連接池
DbUtils——一個JDBC的工具類,比如可以將ResultSets生成javabean。
Digester——基于規(guī)則的XML文檔解析,主要用于XML到Java對象的映射.
Discovery——提供工具來定位資源 (包括類) ,通過使用各種模式來映射服務(wù)/引用名稱和資源名稱。
EL——JSP 2.0引入的表達(dá)式
Email——處理e-mail
FileUpload——web應(yīng)用中的文件上傳組件
HttpClient——使用HTTP協(xié)議的客戶端開發(fā)框架
IO——幫助進(jìn)行IO功能開發(fā)
Jelly——Jelly能夠把XML轉(zhuǎn)換成可執(zhí)行代碼,所以Jelly是一個基于XML與Java的腳本和處理引擎。 Jelly借鑒了JSP定指標(biāo)簽,Velocity, Cocoon和Xdoclet中的腳本引擎的許多優(yōu)點(diǎn)。Jelly可以用在命令行,Ant或者Servlet之中。
Jexl——Jexl是一個表達(dá)式語言,通過借鑒來自于Velocity的經(jīng)驗擴(kuò)展了JSTL定義的表達(dá)式語言。
JXPath——使用XPath語法操作javabean的工具。
Lang——提供對java.lang包的擴(kuò)展。?
Launcher——跨平臺的java程序的啟動
Logging——提供的是一個日志(Log)接口(interface),同時兼顧輕量級和不依賴于具體的日志實(shí)現(xiàn)工具。 它提供給中間件/日志工具開發(fā)者一個簡單的日志操作抽象,允許程序開發(fā)人員使用不同的具體日志實(shí)現(xiàn)工具。用戶被假定已熟悉某種日志實(shí)現(xiàn)工具的更高級別的細(xì)節(jié)。JCL提供的接口,對其它一些日志工具,包括Log4J, Avalon LogKit, and JDK 1.4等,進(jìn)行了簡單的包裝,此接口更接近于Log4J和LogKit的實(shí)現(xiàn).
Math——Math 是一個輕量的,自包含的數(shù)學(xué)和統(tǒng)計組件,解決了許多非常通用但沒有及時出現(xiàn)在Java標(biāo)準(zhǔn)語言中的實(shí)踐問題.
Modeler—— 支持兼容JMX規(guī)范的MBeans開發(fā)。
Net——集合了網(wǎng)絡(luò)工具和協(xié)議工具的實(shí)現(xiàn)
Pool——Commons-Pool 提供了通用對象池接口,一個用于創(chuàng)建模塊化對象池的工具包,以及通常的對象池實(shí)現(xiàn)。
Primitives——對java原始類型的支持。
SCXML——處理SCXML
Transaction——事務(wù)處理,實(shí)現(xiàn)了多層次鎖、事務(wù)集合、事務(wù)文件的訪問。?
Validator——提供了一個簡單的,可擴(kuò)展的框架來在一個XML文件中定義校驗器 (校驗方法)和校驗規(guī)則。支持校驗規(guī)則的和錯誤消息的國際化。
VFS——訪問各種文件系統(tǒng),可以是本地文件、HTTP服務(wù)器上的文件、zip中的文件。
Commons Sandbox組件:
Compress——處理壓縮文件如tar, zip 和 bzip2 格式。
CSV——處理CSV文件
Exec——安全地處理外部進(jìn)程
Finder——實(shí)現(xiàn)類似UNIX find命令的功能
I18n——處理軟件的I18n功能
Id——生成id號功能
Javaflow——捕捉程序運(yùn)行狀態(tài)
JCI——java編譯接口
OpenPGP——處理加密方法OpenPGP.?
Pipeline——處理類似工作隊列的管道工具
Proxy——生成動態(tài)代理