一般一個(gè)經(jīng)驗(yàn)豐富的開發(fā)者,一般都喜歡使用開源的第三方api庫來進(jìn)行開發(fā),畢竟這樣能夠提高開發(fā)效率,并且能夠簡單快速的集成到項(xiàng)目中去,而不用花更多的時(shí)間去在重復(fù)造一些無用的輪子,多了解一些第三方庫可以提高我們的開發(fā)效率,下面就來看一下在開發(fā)過程中經(jīng)常會(huì)用到的一些開發(fā)第三方庫,也可能不是太全,就列舉一些常見或者常用的吧。
1,日志庫
日志庫是最常用的,畢竟在開發(fā)項(xiàng)目的過程中都需要使用日志來記錄項(xiàng)目的運(yùn)行信息,從而很快的定位項(xiàng)目的發(fā)生的問題。盡管JDK附帶了自己的日志庫,但是還有更好的選擇,例如
Log4j、SLF4j和LogBack
。一般建議使用SLF4j。比如Alibaba開發(fā)手冊上也是這樣說的,畢竟SLF4J使您的代碼獨(dú)立于任何特定的日志API,就是在項(xiàng)目的其它框架中使用了其它的日志框架庫也能夠很好的集成。
2,JSON轉(zhuǎn)換庫
在當(dāng)今的web服務(wù)、手機(jī)api接口開發(fā)和物聯(lián)網(wǎng)世界中,JSON已經(jīng)成為將信息從客戶端傳送到服務(wù)器的首選協(xié)議。它們已經(jīng)取代了XML,成為以獨(dú)立于平臺(tái)的方式傳輸信息的首選方式。不幸的是,JDK沒有JSON庫。但是,有許多優(yōu)秀的第三方庫允許您解析和創(chuàng)建JSON消息,比如
Jackson和Gson,F(xiàn)astJson。
3,單元測試庫庫
單元測試是區(qū)分普通開發(fā)人員和優(yōu)秀開發(fā)人員的最重要的東西。程序員經(jīng)常被給予不寫單元測試的借口,但是最常見的避免單元測試的借口是缺乏流行的單元測試庫的經(jīng)驗(yàn)和知識(shí),包括
JUnit、Mockito和PowerMock。
4,通用類庫
Java開發(fā)人員可以使用一些優(yōu)秀的通用第三方庫,比如Apache Commons和谷歌Guava
。我總是在我的項(xiàng)目中包含這些庫,因?yàn)樗鼈兒喕嗽S多任務(wù)。正如約書亞?布洛赫(Joshua Bloch)在《Effective
Java》一書中正確指出的那樣,重新發(fā)明輪子是沒有意義的。我們應(yīng)該使用經(jīng)過測試的庫,而不是時(shí)不時(shí)地編寫我們自己的程序。對于開發(fā)人員來說,熟悉Apache
Commons和谷歌Guava是很有用的。
5,HTTP庫
雖然JDK中的 java.net 包也能實(shí)現(xiàn)HTTP連接,以及Http請求,但是它的使用沒有像Apache HttpClient和HttpCore
這樣的開源第三方庫簡單,執(zhí)行HTTP請求都得自己自己重復(fù)寫大量的代碼。雖然JDK 9提供了對HTTP
2.0的支持和對HTTP的更好支持,但我強(qiáng)烈建議所有Java開發(fā)人員熟悉流行的HTTP客戶端請求庫,包括HttpClient和HttpCore。
6,XML解析庫
有許多XML解析庫,包括Xerces、JAXB、JAXP、Dom4j和Xstream。Xerces2是Apache
Xerces家族中下一代高性能、完全兼容的XML解析器。這個(gè)新版本的Xerces引入了Xerces本機(jī)接口(XNI),這是一個(gè)用于構(gòu)建解析器組件和配置的完整框架,非常模塊化,易于編程。Apache
Xerces2解析器是XNI的參考實(shí)現(xiàn),但是可以使用Xerces本機(jī)接口編寫其他解析器組件、配置和解析器。Dom4j是另一個(gè)用于Java應(yīng)用程序的靈活XML框架
。
7,EXCEL庫
信不信由你——所有現(xiàn)實(shí)世界的應(yīng)用程序都必須以某種形式與Microsoft
Office交互。許多應(yīng)用程序需要提供在Excel中導(dǎo)出數(shù)據(jù)的功能,如果必須從Java應(yīng)用程序中導(dǎo)出數(shù)據(jù),則需要Apache POI API
。這是一個(gè)非常豐富的庫,允許您從Java程序讀取和寫入XLS文件。
8,字節(jié)碼庫
如果您正在編寫一個(gè)生成代碼或與字節(jié)碼交互的框架或庫,那么您需要一個(gè)字節(jié)碼庫。它們允許您讀取和修改由應(yīng)用程序生成的字節(jié)碼。
Java世界中流行的一些字節(jié)碼庫是javassist和Cglib Nodep。Javassist
使得JAVA字節(jié)碼操作非常簡單。它是一個(gè)用于編輯Java字節(jié)碼的類庫。ASM是另一個(gè)有用的字節(jié)碼編輯庫。
9,數(shù)據(jù)庫連接池庫
如果您正在與來自Java應(yīng)用程序的數(shù)據(jù)庫進(jìn)行交互,但是沒有使用數(shù)據(jù)庫連接池庫,那么您可能會(huì)遺漏一些內(nèi)容。由于在運(yùn)行時(shí)創(chuàng)建數(shù)據(jù)庫連接需要時(shí)間,并且會(huì)使請求處理速度變慢,因此總是建議使用DB連接庫。其中最流行的是
C3P0和DBCP,以及阿里的德魯伊(Druid)。
在web應(yīng)用程序中,它的web服務(wù)器通常提供這些功能,但是在核心Java應(yīng)用程序中,您需要將這些連接池庫包含到類路徑中,以使用數(shù)據(jù)庫連接池。
10,消息庫
與日志記錄和數(shù)據(jù)庫連接類似,消息傳遞也是許多實(shí)際Java應(yīng)用程序的一個(gè)常見特性。
Java提供JMS,或者Java消息傳遞服務(wù),這不是JDK的一部分。對于這個(gè)組件,您需要包含一個(gè)單獨(dú)的jms.jar。
?類似地,如果您正在使用第三方消息傳遞協(xié)議,比如ActiveMQ,RabbitMQ,那么,您需要在您的應(yīng)用程序類路徑中使用第三方JAR—ActiveMQ,
RabbitMQ的JAR。
11,PDF庫
Microsoft Excel類似,PDF庫是另一種常見的格式。如果需要在應(yīng)用程序中支持PDF功能,比如導(dǎo)出PDF文件中的數(shù)據(jù),可以使用
iText和Apache FOP,PDF Box庫。
兩者都提供了有用的PDF相關(guān)功能,但iText更豐富、更好。
12,日期和時(shí)間庫
在Java 8之前,JDK的數(shù)據(jù)和時(shí)間庫有很多缺陷,因?yàn)樗鼈儾皇蔷€程安全的、不可變的和容易出錯(cuò)的。許多Java開發(fā)人員依賴于JodaTime
來實(shí)現(xiàn)他們的日期和時(shí)間需求。
從JDK 8開始,就沒有理由使用JodaTime?,因?yàn)镴DK 8的新的日期和時(shí)間API提供了所有這些功能,但是如果您使用的是較舊的Java版本,那么
JodaTime是一個(gè)值得學(xué)習(xí)的庫。
13,集合庫
盡管JDK有豐富的集合庫,但也有一些第三方庫提供了更多的選項(xiàng),比如Apache Commons集合、Goldman
Sachs(高盛公司)集合、谷歌集合和Trove。?
Trove庫特別有用,因?yàn)樗鼮镴ava提供了高速的常規(guī)和基本集合。
FastUtil
是另一個(gè)類似的API。它擴(kuò)展了Java集合框架,提供了類型特定的映射、集合、列表和優(yōu)先級隊(duì)列,占用的內(nèi)存很少,訪問和插入也很快;它還提供了大型(64位)數(shù)組、集合和列表,并為二進(jìn)制文件和文本文件提供了快速、實(shí)用的I/O類。
14,郵件API庫
javax.mail和Apache Commons Email都提供了從Java發(fā)送電子郵件的API。它構(gòu)建在JavaMail
API之上,其目的是簡化API。
15,HTML轉(zhuǎn)換庫
與JSON和XML類似,HMTL是許多人必須處理的另一種常見格式。謝天謝地,我們有了JSoup,它極大地簡化了在Java應(yīng)用程序中使用HTML的工作。
它提供了一個(gè)非常方便的API,可以使用DOM、CSS和類似于jquery的方法來提取和操作數(shù)據(jù)。JSoup實(shí)現(xiàn)了HTML5規(guī)范,并像現(xiàn)代瀏覽器那樣將HTML解析為相同的DOM。
16,加密庫
apache Commons Codec包包含用于各種格式(如Base64和十六進(jìn)制)的簡單編碼器和解碼器。
?
除了這些廣泛使用的編碼器和解碼器之外,codec包還維護(hù)了語音編碼實(shí)用程序的集合/
17,嵌入式sql數(shù)據(jù)庫庫
像H2這樣的內(nèi)存數(shù)據(jù)庫,它可以嵌入到Java應(yīng)用程序中。它們非常適合測試SQL腳本和運(yùn)行需要數(shù)據(jù)庫的單元測試。然而,H2并不是唯一的DB,您還可以選擇
Apache Derby和HSQL。
18,JDBC故障排除庫
有一些很好的JDBC擴(kuò)展庫,它們可以簡化調(diào)試,比如P6spy。
這個(gè)庫使數(shù)據(jù)庫數(shù)據(jù)能夠被無縫地?cái)r截和記錄,而不需要對應(yīng)用程序進(jìn)行任何代碼更改。您可以使用它們來記錄SQL查詢及其計(jì)時(shí)。
?例如,如果您在代碼中使用PreparedStatment和CallableStatement,這些庫可以使用參數(shù)記錄準(zhǔn)確的調(diào)用以及執(zhí)行所需的時(shí)間。
19,序列化庫
谷歌Protobuf是一種將結(jié)構(gòu)化數(shù)據(jù)編碼為一種高效且可擴(kuò)展格式的方法。它是Java序列化的更豐富和更好的選擇。建議有經(jīng)驗(yàn)的Java開發(fā)人員可以學(xué)習(xí)一下谷歌
Protobuf。
20,網(wǎng)絡(luò)庫
一些有用的網(wǎng)絡(luò)庫是Netty和Apache MINA。如果您正在編寫一個(gè)需要執(zhí)行低級網(wǎng)絡(luò)任務(wù)的應(yīng)用程序,請考慮使用這些庫。
以上就是每個(gè)Java開發(fā)人員都應(yīng)該使用的一些有用的庫。Java領(lǐng)域非常龐大,您會(huì)發(fā)現(xiàn)有大量的庫可以用來做不同的事情。
?
熱門工具 換一換