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開發的郵件、新聞群組、Message Service器,提供了比較完善的配置方案,尤其是關於郵件內容儲存和使用者資訊儲存。 支援 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相容的Regex、 AWK-likeRegex, glob 運算式。還提供替換,分割,檔案名稱過慮等功能。
POI ——一套用來建立,讀寫基於OLE 2組件文檔格式的檔案。使用Java來讀寫MS Excel ,Word檔案。
Regexp ——一套純java的Regex相關的包。
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——產生動態代理