可重用性是Jakarta Commons項目的靈魂所在。這些包在設計階段就已經考慮了可重用性問題。其中一些包,例如Commons里面用來記錄日志的Logging包,最初是為其他項目設計的,例如Jakarta Struts項目,當人們發現這些包對于其他項目也非常有用,能夠極大地幫助其他項目的開發,他們決定為這些包構造一個"公共"的存放位置,這就是Jakarta Commons項目。
為了真正提高可重用性,每一個包都必須不依賴于其他大型的框架或項目。因此,Commons項目的包基本上都是獨立的,不僅是相對于其他項目的獨立,而且相對于Commons內部的大部分其他包獨立。雖然存在一些例外的情況,例如Betwixt包要用到XML API,但絕大部分只使用最基本的API,其主要目的就是要能夠通過簡單的接口方便地調用。
不過由于崇尚簡潔,許多包的文檔變得過于簡陋,缺乏維護和支持,甚至有一部分還有錯誤的鏈接,文檔也少得可憐。大部分的包需要我們自己去找出其用法,甚至有時還需要我們自己去分析其適用場合。本文將逐一介紹這些包,希望能夠幫助你迅速掌握這一積累了許多人心血的免費代碼庫。
說明:Jakarta Commons和Apache Commons是不同的,后者是Apache Software Foundation的一個頂層項目,前者則是Jakarta項目的一個子項目,同是也是本文要討論的主角。本文后面凡是提到Commons的地方都是指Jakarta的Commons。
為了便于說明,本文把Commons項目十八個成品級的組件(排除了EL、Latka和Jexl)分成5類,如下表所示
commons分為3部分Commons Proper、Commons Sandbox和Commons Dormant
Commons Proper:提供了設計良好可重用的java組件,并都經過了廣泛、嚴格的測試。
Commons Sandbox:處于實驗、測試階段的組件。
Commons Dormant:處于停滯狀態,從Sandbox退出的,不活躍的組件,謹慎使用。
Commons Proper組件:
Codec——包含一些通用的編碼解碼算法。包括一些語音編碼器, Hex, Base64, 以及URL encoder。
BeanUtils——提供對 Java 反射和自省API的包裝,處理javabean的工具。
Betwixt——將JavaBeans與XML相互轉換。
Digester——基于規則的XML文檔解析,主要用于XML到Java對象的映射.
Email——處理e-mail
FileUpload——web應用中的 文件上傳 組件
IO——幫助進行IO功能開發
JXPath——使用XPath語法操作javabean的工具。
Lang——提供對java.lang包的擴展
Chain——對Chain of Responsibility(責任鏈)設計模式的實現。使多個對象都有機會處理請求, 從而避免請求的發送者和接收者之間的耦合關系。將這些對象連成一條鏈,并沿著這條鏈傳遞請求,直到有一個對象處理它為止。
CLI——處理命令行的命令的解析。
Attributes—— 支持源代碼級的元數據。
Collections——擴展和增加標準的 Java Collection框架。
Configuration——操作各種格式的配置文件。Properties文件 /XML文件 /JNDI /JDBC 數據源 /System properties /Applet parameters / Servlet parameters
Daemon——創建類似unix守護線程的java代碼,可以安全地執行一些后臺操作,線程不被某個應用程序控制,而是由操作系統控制 類似windows的service,可以設置一個服務依賴于另一個服務,一個服務關閉前必須先執行另一個服務。
DBCP——一個數據庫連接池
DbUtils——一個JDBC的工具類,比如可以將ResultSets生成javabean。
Discovery——提供工具來定位資源 (包括類) ,通過使用各種模式來映射服務/引用名稱和資源名稱。
EL——JSP 2.0引入的表達式
HttpClient——使用HTTP協議的客戶端開發框架
Jelly——Jelly能夠把XML轉換成可執行代碼,所以Jelly是一個基于XML與Java的腳本和處理引擎。 Jelly借鑒了JSP定指標簽,Velocity, Cocoon和Xdoclet中的腳本引擎的許多優點。Jelly可以用在命令行,Ant或者Servlet之中。
Jexl——Jexl是一個表達式語言,通過借鑒來自于Velocity的經驗擴展了JSTL定義的表達式語言。??
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——生成動態代理
--------------------------------org.apache.commons.beanutils.PropertyUtils;
copyProperties(a,b);//把相同類型b的屬性賦值給a
--------------------------------
在org.apache.commons包中提供了的一系列能簡化一些編程過程中常見問題的共通函數和類,使程序員能把主要精力集中在
構架,業務實現和優化而不是具體實現及驗證上,一言以蔽之,它能使我們避免重復的發明車輪。
為了真正提高可重用性,每一個包都必須不依賴于其他大型的框架或項目。因此,Commons項目的包基本上都是獨立的,不僅是相對于其他項目的獨立,而且相對于Commons內部的大部分其他包獨立。雖然存在一些例外的情況,例如Betwixt包要用到XML API,但絕大部分只使用最基本的API,其主要目的就是要能夠通過簡單的接口方便地調用。
不過由于崇尚簡潔,許多包的文檔變得過于簡陋,缺乏維護和支持,甚至有一部分還有錯誤的鏈接,文檔也少得可憐。大部分的包需要我們自己去找出其用法,甚至有時還需要我們自己去分析其適用場合。本文將逐一介紹這些包,希望能夠幫助你迅速掌握這一積累了許多人心血的免費代碼庫。
說明:Jakarta Commons和Apache Commons是不同的,后者是Apache Software Foundation的一個頂層項目,前者則是Jakarta項目的一個子項目,同是也是本文要討論的主角。本文后面凡是提到Commons的地方都是指Jakarta的Commons。
為了便于說明,本文把Commons項目十八個成品級的組件(排除了EL、Latka和Jexl)分成5類,如下表所示
commons分為3部分Commons Proper、Commons Sandbox和Commons Dormant
Commons Proper:提供了設計良好可重用的java組件,并都經過了廣泛、嚴格的測試。
Commons Sandbox:處于實驗、測試階段的組件。
Commons Dormant:處于停滯狀態,從Sandbox退出的,不活躍的組件,謹慎使用。
Commons Proper組件:
Codec——包含一些通用的編碼解碼算法。包括一些語音編碼器, Hex, Base64, 以及URL encoder。
BeanUtils——提供對 Java 反射和自省API的包裝,處理javabean的工具。
Betwixt——將JavaBeans與XML相互轉換。
Digester——基于規則的XML文檔解析,主要用于XML到Java對象的映射.
Email——處理e-mail
FileUpload——web應用中的 文件上傳 組件
IO——幫助進行IO功能開發
JXPath——使用XPath語法操作javabean的工具。
Lang——提供對java.lang包的擴展
Chain——對Chain of Responsibility(責任鏈)設計模式的實現。使多個對象都有機會處理請求, 從而避免請求的發送者和接收者之間的耦合關系。將這些對象連成一條鏈,并沿著這條鏈傳遞請求,直到有一個對象處理它為止。
CLI——處理命令行的命令的解析。
Attributes—— 支持源代碼級的元數據。
Collections——擴展和增加標準的 Java Collection框架。
Configuration——操作各種格式的配置文件。Properties文件 /XML文件 /JNDI /JDBC 數據源 /System properties /Applet parameters / Servlet parameters
Daemon——創建類似unix守護線程的java代碼,可以安全地執行一些后臺操作,線程不被某個應用程序控制,而是由操作系統控制 類似windows的service,可以設置一個服務依賴于另一個服務,一個服務關閉前必須先執行另一個服務。
DBCP——一個數據庫連接池
DbUtils——一個JDBC的工具類,比如可以將ResultSets生成javabean。
Discovery——提供工具來定位資源 (包括類) ,通過使用各種模式來映射服務/引用名稱和資源名稱。
EL——JSP 2.0引入的表達式
HttpClient——使用HTTP協議的客戶端開發框架
Jelly——Jelly能夠把XML轉換成可執行代碼,所以Jelly是一個基于XML與Java的腳本和處理引擎。 Jelly借鑒了JSP定指標簽,Velocity, Cocoon和Xdoclet中的腳本引擎的許多優點。Jelly可以用在命令行,Ant或者Servlet之中。
Jexl——Jexl是一個表達式語言,通過借鑒來自于Velocity的經驗擴展了JSTL定義的表達式語言。??
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——生成動態代理
--------------------------------org.apache.commons.beanutils.PropertyUtils;
copyProperties(a,b);//把相同類型b的屬性賦值給a
--------------------------------
在org.apache.commons包中提供了的一系列能簡化一些編程過程中常見問題的共通函數和類,使程序員能把主要精力集中在
構架,業務實現和優化而不是具體實現及驗證上,一言以蔽之,它能使我們避免重復的發明車輪。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
