1. 程式人生 > >Java程式設計師應該知道的20個有用的lib開源庫

Java程式設計師應該知道的20個有用的lib開源庫

一般一個經驗豐富的開發者,一般都喜歡使用開源的第三方api庫來進行開發,畢竟這樣能夠提高開發效率,並且能夠簡單快速的整合到專案中去,而不用花更多的時間去在重複造一些無用的輪子,多瞭解一些第三方庫可以提高我們的開發效率,下面就來看一下在開發過程中經常會用到的一些開發第三方庫,也可能不是太全,就列舉一些常見或者常用的吧。

1,日誌庫

日誌庫是最常用的,畢竟在開發專案的過程中都需要使用日誌來記錄專案的執行資訊,從而很快的定位專案的發生的問題。儘管JDK附帶了自己的日誌庫,但是還有更好的選擇,例如Log4jSLF4j和LogBack。一般建議使用SLF4j。比如Alibaba開發手冊上也是這樣說的,畢竟SLF4J使您的程式碼獨立於任何特定的日誌API,就是在專案的其它框架中使用了其它的日誌框架庫也能夠很好的整合。

2,JSON轉換庫

在當今的web服務、手機api介面開發和物聯網世界中,JSON已經成為將資訊從客戶端傳送到伺服器的首選協議。它們已經取代了XML,成為以獨立於平臺的方式傳輸資訊的首選方式。不幸的是,JDK沒有JSON庫。但是,有許多優秀的第三方庫允許您解析和建立JSON訊息,比如JacksonGsonFastJson

3,單元測試庫庫

單元測試是區分普通開發人員和優秀開發人員的最重要的東西。程式設計師經常被給予不寫單元測試的藉口,但是最常見的避免單元測試的藉口是缺乏流行的單元測試庫的經驗和知識,包括JUnitMockito和PowerMock。

4,通用類庫

Java開發人員可以使用一些優秀的通用第三方庫,比如Apache Commons

和谷歌Guava。我總是在我的專案中包含這些庫,因為它們簡化了許多工。正如約書亞•布洛赫(Joshua Bloch)在《Effective Java》一書中正確指出的那樣,重新發明輪子是沒有意義的。我們應該使用經過測試的庫,而不是時不時地編寫我們自己的程式。對於開發人員來說,熟悉Apache Commons和谷歌Guava是很有用的。

5,HTTP庫

雖然JDK中的 java.net 包也能實現HTTP連線,以及Http請求,但是它的使用沒有像Apache HttpClientHttpCore這樣的開源第三方庫簡單,執行HTTP請求都得自己自己重複寫大量的程式碼。雖然JDK 9提供了對HTTP 2.0的支援和對HTTP的更好支援,但我強烈建議所有Java開發人員熟悉流行的HTTP客戶端請求庫,包括HttpClient

HttpCore。

6,XML解析庫

有許多XML解析庫,包括XercesJAXBJAXPDom4jXstreamXerces2是Apache Xerces家族中下一代高效能、完全相容的XML解析器。這個新版本的Xerces引入了Xerces本機介面(XNI),這是一個用於構建解析器元件和配置的完整框架,非常模組化,易於程式設計。Apache Xerces2解析器是XNI的參考實現,但是可以使用Xerces本機介面編寫其他解析器元件、配置和解析器。Dom4j是另一個用於Java應用程式的靈活XML框架。

7,EXCEL庫

信不信由你——所有現實世界的應用程式都必須以某種形式與Microsoft Office互動。許多應用程式需要提供在Excel中匯出資料的功能,如果必須從Java應用程式中匯出資料,則需要Apache POI API。這是一個非常豐富的庫,允許您從Java程式讀取和寫入XLS檔案。

8,位元組碼庫

如果您正在編寫一個生成程式碼或與位元組碼互動的框架或庫,那麼您需要一個位元組碼庫。它們允許您讀取和修改由應用程式生成的位元組碼。

Java世界中流行的一些位元組碼庫是javassistCglib NodepJavassist 使得JAVA位元組碼操作非常簡單。它是一個用於編輯Java位元組碼的類庫。ASM是另一個有用的位元組碼編輯庫。

9,資料庫連線池庫

如果您正在與來自Java應用程式的資料庫進行互動,但是沒有使用資料庫連線池庫,那麼您可能會遺漏一些內容。由於在執行時建立資料庫連線需要時間,並且會使請求處理速度變慢,因此總是建議使用DB連線庫。其中最流行的是C3P0DBCP,以及阿里的德魯伊(Druid)

在web應用程式中,它的web伺服器通常提供這些功能,但是在核心Java應用程式中,您需要將這些連線池庫包含到類路徑中,以使用資料庫連線池。

10,訊息庫

與日誌記錄和資料庫連線類似,訊息傳遞也是許多實際Java應用程式的一個常見特性。

Java提供JMS,或者Java訊息傳遞服務,這不是JDK的一部分。對於這個元件,您需要包含一個單獨的jms.jar

 類似地,如果您正在使用第三方訊息傳遞協議,比如ActiveMQ,RabbitMQ,那麼,您需要在您的應用程式類路徑中使用第三方JAR—ActiveMQ,RabbitMQ的JAR。

11,PDF庫

Microsoft Excel類似,PDF庫是另一種常見的格式。如果需要在應用程式中支援PDF功能,比如匯出PDF檔案中的資料,可以使用iText和Apache FOP,PDF Box庫。

兩者都提供了有用的PDF相關功能,但iText更豐富、更好。

12,日期和時間庫

在Java 8之前,JDK的資料和時間庫有很多缺陷,因為它們不是執行緒安全的、不可變的和容易出錯的。許多Java開發人員依賴於JodaTime來實現他們的日期和時間需求。

從JDK 8開始,就沒有理由使用JodaTime ,因為JDK 8的新的日期和時間API提供了所有這些功能,但是如果您使用的是較舊的Java版本,那麼JodaTime是一個值得學習的庫。

13,集合庫

儘管JDK有豐富的集合庫,但也有一些第三方庫提供了更多的選項,比如Apache Commons集合、Goldman Sachs(高盛公司)集合、谷歌集合和Trove。 

Trove庫特別有用,因為它為Java提供了高速的常規和基本集合。

FastUtil是另一個類似的API。它擴充套件了Java集合框架,提供了型別特定的對映、集合、列表和優先順序佇列,佔用的記憶體很少,訪問和插入也很快;它還提供了大型(64位)陣列、集合和列表,併為二進位制檔案和文字檔案提供了快速、實用的I/O類。

14,郵件API庫

javax.mail和Apache Commons Email都提供了從Java傳送電子郵件的API。它構建在JavaMail API之上,其目的是簡化API。

15,HTML轉換庫

與JSON和XML類似,HMTL是許多人必須處理的另一種常見格式。謝天謝地,我們有了JSoup,它極大地簡化了在Java應用程式中使用HTML的工作。

它提供了一個非常方便的API,可以使用DOM、CSS和類似於jquery的方法來提取和操作資料。JSoup實現了HTML5規範,並像現代瀏覽器那樣將HTML解析為相同的DOM。

16,加密庫

apache Commons Codec包包含用於各種格式(如Base64和十六進位制)的簡單編碼器和解碼器。

 

除了這些廣泛使用的編碼器和解碼器之外,codec包還維護了語音編碼實用程式的集合/

17,嵌入式sql資料庫庫

H2這樣的記憶體資料庫,它可以嵌入到Java應用程式中。它們非常適合測試SQL指令碼和執行需要資料庫的單元測試。然而,H2並不是唯一的DB,您還可以選擇Apache DerbyHSQL。

18,JDBC故障排除庫

有一些很好的JDBC擴充套件庫,它們可以簡化除錯,比如P6spy

這個庫使資料庫資料能夠被無縫地攔截和記錄,而不需要對應用程式進行任何程式碼更改。您可以使用它們來記錄SQL查詢及其計時。

 例如,如果您在程式碼中使用PreparedStatment和CallableStatement,這些庫可以使用引數記錄準確的呼叫以及執行所需的時間。

19,序列化庫

谷歌Protobuf是一種將結構化資料編碼為一種高效且可擴充套件格式的方法。它是Java序列化的更豐富和更好的選擇。建議有經驗的Java開發人員可以學習一下谷歌Protobuf

20,網路庫

一些有用的網路庫是NettyApache MINA。如果您正在編寫一個需要執行低階網路任務的應用程式,請考慮使用這些庫。

以上就是每個Java開發人員都應該使用的一些有用的庫。Java領域非常龐大,您會發現有大量的庫可以用來做不同的事情。