天天看點

(轉)Apache上全部JAVA開源項目簡介

近接觸Jakarta-Common-BeanUtils這個東東比較多,于是對Apache Jakarta Project産生了興趣,上他們的官方網站上看了下感覺有用的東西好多,眼花缭亂的,又沒有中文網站,又上各大論壇搜了下,也沒有發現一個集中該項目的資料,于是決定自己整理翻譯一下,有助于各位網友更好的了解該項目。如果有什麼描述不對不全面的地方,希望各位提出來給大家分享。

Jakarta項目是ASF(The Apache Software Foundation)的一部分。ASF是一個非赢利組織,她鼓勵基于開放的軟體許可下進行合作、注重實效的開發,并提供各個領域的高品質軟體,她涉及到Http伺服器,編譯工具,類庫,開發架構,伺服器端Java技術,J2EE容器,資料庫工具,日志工具,XML解析等等諸多領域。ASF提供的java項目有一部分在Jakarta中,還有一些成為獨立的諸如Tomcat的項目,Jakarta項目則提供了多種多樣開源的java解決通用方案。

先介紹一下ASF中和Jakarta項目并列的java項目:

Ant ——java建構工具,使用一個配置檔案就可以完成java的項目的,編譯、打包、測試、運作、部署、生成文檔等諸多工作。

Avalon ——是一個包括核心架構、工具、元件和容器的面向元件程式設計(AOP)的完整開發平台。使用關鍵設計模式,如反向控制模式(IoC)和分離考慮模(SoC)。 Avalon提供各種基本元件和預設的應用程式子產品,幫助你快速的建立你自己的應用程式解決方案。

Excalibur ——集多個開源項目(Avalon Framework、LogKit和Cornerstone)于一身的輕量級可嵌入式反向控制容器。

Gump ——是Apache組織自己也使用的一個持續內建工具,全面支援Ant和Maven,當有新的改動送出到版本控制系統,它可以檢查出潛在 的沖突,并及時通知項目組的所有成員并自動生成改動的詳細報告。

James ——是一套用java開發的郵件、新聞討論區、消息伺服器,提供了比較完善的配置方案,尤其是關于郵件内容存儲和使用者資訊存儲。 支援 SMTP, POP3 , NNTP , IMAP 。

Logging ——可靠,快速的日志工具。

Lucene ——Java開發的高性能,全方位的文本搜尋引擎。替檔案的每一個字作索引,索引讓搜尋的效率比傳統的逐字比較大大提高, Lucen提供一組解讀,過濾,分析檔案,編排和使用索引的API,它的強大之處除了高效和簡單外, 是最重要的是使使用者可以随時應自已需要自訂其功能。

Maven ——是一個潛在的基于java的apache ant的建構工具的替代者。提供了更強大的功能和易用性。

Portals ——提供了功能全面的、具有商業價值的企業門戶。門戶概念:門戶對企業内的各種資源如資訊管理系統進行整合并通過單一接口 對外提供服務,雇員、合夥人及顧客可以通過任何裝置在任何地點通過門戶入口享受到企業提供的服務, 分析家們預計,門戶将成為下一代的桌面環境。

Struts ——一個實作MVC model2的web應用程式開發架構。通過一個配置檔案可以很好的對各種元件進行裝配,結構清晰,應用的最廣泛的額web開發架構。

Tapestry——類似 Struts,也是一個基于servlet的應用程式架構,支援MVC,出現的較晚,不如Struts普及,主要利用javabean和xml技術進行開發,

Tomcat ——Serlvet容器,同時具有傳統的Web伺服器的功能,如:處理Html頁面。能夠處理動靜态網頁。

Watchdog ——用來檢查一個servlet或jsp容器在相應規範上的執行情況的相容性。但是該項目已經靜止了,隻支援Servlet2.3、JSP1.2,相應 的Serlvet容器如Tomcat也隻支援Tomcat4.x。

下面介紹下Jakarta的各個子項目:

Alexandria——已經不再開發

BCEL ——The Byte Code Engineering Library (formerly known as JavaClass) 位元組碼引擎類庫,它讓使用者友善的分析,建立,操作java的class檔案成為可能。 它可以讓您深入 JVM 彙編語言進行類操作的細節。

BSF ——bean腳本架構 在java應用内對腳本語言提供了支援,通過腳本語言可以通路java的對象和方法。

Cactus ——一個基于JUnit架構的簡單測試架構,用來單元測試服務端Java代碼。 Cactus單元測試服務端内容包括servlet,EJB,? tag librarie, filter等

Commons ——提供很多日常開發中使用率很高的功能解決方案,已被很多著名的開源項目采用。具體的項目清單後面會有。

ECS ——使用Java語言和面向對象方法建立标記語言文檔(HTML,XML)的開源項目。

HiveMind ——是一個服務和配置的微型核心, 一套通過簡單的java對象和接口建立複雜應用的架構。

HttpComponents ——提供了java.net包所不能提供的更多強大的、友善的http協定處理功能。

JCS ——一個分布式的緩存系統,用來提高應用程式的性能,并且提供很多強大的額外功能。

JMeter ——純java開發的一套桌面應用程式。用來進行功能測試和性能測試。它可以用來測試靜止資料庫或者活動資料庫中的伺服器的運作情況, 可以用來模拟對伺服器或者網絡系統加以重負荷以測試它的抵抗,或者用來分析不同負荷類型下的所有運作情況。 它也提供了一個可替換的界面用來定制資料顯示,測試同步及測試的建立和執行。

ORO ——一套文本處理工具,能提供perl5.0相容的正規表達式、 AWK-like正規表達式, glob 表達式。還提供替換,分割,檔案名過慮等功能。

POI ——一套用來建立,讀寫基于OLE 2元件文檔格式的檔案。使用Java來讀寫MS Excel ,Word檔案。

Regexp ——一套純java的正規表達式相關的包。

Slide ——主要子產品是一個可以做為内容管理架構底層的内容倉庫.它可以把内容資訊存取到專門的,異質的,分布式的資料庫中.Slide還增加了security, locking, versioning等特性.

Taglibs ——一套在開發web應用時十分有用的,jsp 通用 tag包。

Turbine ——類似 Struts,也是一個基于servlet的應用程式架構,支援MVC。提供了大量可重用的元件。此架構包中包含了大量元件,但是這些元件是離散的。

Velocity ——是一個基于java的模闆引擎(template engine)。它允許任何人僅僅簡單的使用模闆語言(template language)來引用由java代碼定義的對象。? 當Velocity應用于web開發時,界面設計人員可以和java程式開發人員同步開發一個遵循MVC架構的web站點, 也就是說,頁面設計人員可以隻關注頁面的顯示效果,而由java程式開發人員關注業務邏輯編碼。 Velocity将java代碼從web頁面中分離出來,這樣為web站點的長期維護提供了便利, 同時也為我們在JSP和PHP之外又提供了一種可選的方案。 Velocity的能力遠不止web站點開發這個領域, 例如,它可以從模闆(template)産生SQL和PostScript、XML,它也可以被當作一個獨立工具來産生源代碼和報告, 或者作為其他系統的內建元件使用。Velocity也可以為Turbine web開發架構提供模闆服務(template service)。 Velocity+Turbine提供一個模闆服務的方式允許一個web應用以一個真正的MVC模型進行開發。?

Apache java項目全介紹2

下面介紹一下Jakarta下的Commons:一個csdn網友描述得很貼切,Commons就好比一個java百寶箱。

commons分為3部分Commons Proper、Commons Sandbox和Commons Dormant

Commons Proper:提供了設計良好可重用的java元件,并都經過了廣泛、嚴格的測試。

Commons Sandbox:處于實驗、測試階段的元件。

Commons Dormant:處于停滞狀态,從Sandbox退出的,不活躍的元件,謹慎使用。

Commons Proper元件:

Attributes—— 支援源代碼級的中繼資料。

BeanUtils——提供對 Java 反射和自省API的包裝,處理javabean的工具。

Betwixt——将JavaBeans與XML互相轉換。?

Chain——對Chain of Responsibility(責任鍊)設計模式的實作。使多個對象都有機會處理請求, 進而避免請求的發送者和接收者之間的耦合關系。将這些對象連成一條鍊,并沿着這條鍊傳遞請求,直到有一個對象處理它為止。

CLI——處理指令行的指令的解析。

Codec——包含一些通用的編碼解碼算法。包括一些語音編碼器, Hex, Base64, 以及URL encoder。

Collections——擴充和增加标準的 Java Collection架構。

Configuration——操作各種格式的配置檔案。Properties檔案 /XML檔案 /JNDI /JDBC 資料源 /System properties /Applet parameters / Servlet parameters

Daemon——建立類似unix守護線程的java代碼,可以安全地執行一些背景操作,線程不被某個應用程式控制,而是由作業系統控制 類似windows的service,可以設定一個服務依賴于另一個服務,一個服務關閉前必須先執行另一個服務。

DBCP——一個資料庫連接配接池

DbUtils——一個JDBC的工具類,比如可以将ResultSets生成javabean。

Digester——基于規則的XML文檔解析,主要用于XML到Java對象的映射.

Discovery——提供工具來定位資源 (包括類) ,通過使用各種模式來映射服務/引用名稱和資源名稱。

EL——JSP 2.0引入的表達式

Email——處理e-mail

FileUpload——web應用中的檔案上傳元件

HttpClient——使用HTTP協定的用戶端開發架構

IO——幫助進行IO功能開發

Jelly——Jelly能夠把XML轉換成可執行代碼,是以Jelly是一個基于XML與Java的腳本和處理引擎。 Jelly借鑒了JSP定名額簽,Velocity, Cocoon和Xdoclet中的腳本引擎的許多優點。Jelly可以用在指令行,Ant或者Servlet之中。

Jexl——Jexl是一個表達式語言,通過借鑒來自于Velocity的經驗擴充了JSTL定義的表達式語言。

JXPath——使用XPath文法操作javabean的工具。

Lang——提供對java.lang包的擴充。?

Launcher——跨平台的java程式的啟動

Logging——提供的是一個日志(Log)接口(interface),同時兼顧輕量級和不依賴于具體的日志實作工具。 它提供給中間件/日志工具開發者一個簡單的日志操作抽象,允許程式開發人員使用不同的具體日志實作工具。使用者被假定已熟悉某種日志實作工具的更進階别的細節。JCL提供的接口,對其它一些日志工具,包括Log4J, Avalon LogKit, and JDK 1.4等,進行了簡單的包裝,此接口更接近于Log4J和LogKit的實作.

Math——Math 是一個輕量的,自包含的數學和統計元件,解決了許多非常通用但沒有及時出現在Java标準語言中的實踐問題.

Modeler—— 支援相容JMX規範的MBeans開發。

Net——集合了網絡工具和協定工具的實作

Pool——Commons-Pool 提供了通用對象池接口,一個用于建立子產品化對象池的工具包,以及通常的對象池實作。

Primitives——對java原始類型的支援。

SCXML——處理SCXML

Transaction——事務處理,實作了多層次鎖、事務集合、事務檔案的通路。?

Validator——提供了一個簡單的,可擴充的架構來在一個XML檔案中定義校驗器 (校驗方法)和校驗規則。支援校驗規則的和錯誤消息的國際化。

VFS——通路各種檔案系統,可以是本地檔案、HTTP伺服器上的檔案、zip中的檔案。

Commons Sandbox元件:

Compress——處理壓縮檔案如tar, zip 和 bzip2 格式。

CSV——處理CSV檔案

Exec——安全地處理外部程序

Finder——實作類似UNIX find指令的功能

I18n——處理軟體的I18n功能

Id——生成id号功能

Javaflow——捕捉程式運作狀态

JCI——java編譯接口

OpenPGP——處理加密方法OpenPGP.?

Pipeline——處理類似工作隊列的管道工具

Proxy——生成動态代理

Java開源-Apache組織的所有開源項目

來自Apache的開源項目(按字母順序排序):

  Ant:Ant現在已經是任何IDE都內建的編譯工具了。為了編譯一大堆java源代碼檔案,需要一次次的在指令行敲重複的指令,Ant便是讓你編寫指令腳本,然後讓Ant自動完成複雜的編譯工作,類似于Makefile,但Ant腳本是标準的XML格式,更容易編寫和閱讀。事實上,巧妙地使用Ant,您可以讓Ant自動完成編譯,測試,輸出文檔,生成Release版本等一系列任務,使得整個項目流程自動化。

  Commons:Commons包括一組可重用的Java元件,如BeanUtil,Collections,FileUpload,Validator等等。

  Jetspeed:Jetspeed是開源的企業門戶應用架構。支援JSP,Velocity,XML,RSS,WAP等,即将支援Java Portlet API規範(JSR168标準)

  JMeter:JMeter是100%純Java編寫的壓力測試工具,最初專用于Web應用的壓力測試,現在還可以測試檔案系統,資料隊列,FTP服務等其他應用。JMeter模拟多使用者同時向伺服器發送請求,并将結果以圖表的方式顯示出來,使用非常簡便。

  Log4j:看名字就能猜到,Log4j是專門為Java設計的日志服務。Log4j提供非常友善的分等級的日志記錄,可以輸出到螢幕,檔案甚至是NT的日志系統,特點是速度非常快。如果您留意的話,可以看到很多Java項目早已內建了Log4j,如Eclipse,Tomcat,Spring等等。

  Lucence:Lucence是一個高性能的全文搜尋引擎,可以非常容易的把它內建到您的應用中來。Lucence的發起人就是搜尋領域的一位專家,曾在Excite任職。

  Taglibs:Taglibs是一組自定義的JSP标簽庫。JSP标簽能以簡單的标簽來實作頁面功能但避免了嵌入Java代碼,不過JSP标簽編寫比較困難,好在Taglibs提供一系列标簽,幾乎能滿足您的常見需求。

  Tapestry:Tapestry是類似于JSP,Velocity的視圖技術,提供一個完整的架構讓您不必使用JSP也能實作動态頁面。

  Tomcat:Tomcat是最著名的開源Web伺服器,最新版本5.5支援Servlet2.4和JSP2.0,最适合于構件Java Web應用。

  Velocity:Velocity是類似JSP的另一種動态頁面,特點是标簽更簡單,能直接寫在HTML中,并且不能嵌入Java代碼,強迫您隻能在Velocity頁面中渲染結果而不是處理業務邏輯,以便更清晰地劃分MVC結構。