Java开发人员应该知道的前20个库和API
優秀且經驗豐富的Java開發人員的特征之一是對API的廣泛了解,包括JDK和第三方庫。 我花了很多時間來學習API,尤其是在閱讀了Effective Java 3rd Edition之后 ,Joshua Bloch建議在Java 3rd Edition中使用現有的API進行開發,而不是為常見的東西編寫新的代碼。 這對我來說很有意義,因為這些第二方庫都經過了測試。 在本文中,我將分享Java開發人員應該熟悉的一些最有用和最基本的庫和API。 順便說一句,我沒有包括Spring和Hibernate這樣的框架,因為它們是眾所周知的并且具有特定的功能。
我通常會提供用于日常工作的有用庫,例如??Log4j等日志記錄庫,Jackson等JSON解析庫以及JUnit和Mockito等單元測試API。 如果需要在項目中使用它們,則可以在項目的類路徑中包含這些庫的JAR以開始使用它們,也可以使用Maven進行依賴項管理。
當使用Maven進行依賴管理時,它將自動下載這些庫,包括它們依賴的庫,稱為傳遞依賴。
例如,如果您下載Spring Framework,那么它還將下載Spring依賴的所有其他JAR,例如Log4j等。
您可能沒有意識到,但是擁有正確版本的依賴JAR令人頭疼。 如果您使用的JAR版本錯誤,則將收到ClassNotFoundException或NoClassDefFoundError或UnsupportedClassVersionError 。
這是我收集的一些有用的第三方庫,Java開發人員可以在其應用程序中使用它們來完成許多有用的任務。 為了使用這些庫,Java開發人員也應該熟悉這些,這是本文的重點。 如果您有想法,可以研究該庫并加以使用。
1. 記錄庫
日志記錄庫很常見,因為在每個項目中都需要它們。 對于服務器端應用程序而言,它們是最重要的事情,因為日志僅放置在您可以看到應用程序運行狀況的位置。 即使JDK附帶了自己的日志記錄庫,也有許多更好的選擇,例如Log4j,SLF4j和LogBack。
Java開發人員應該熟悉日志記錄庫的優缺點,并且知道為什么使用SLF4j比普通的Log4j更好 。 如果您不知道為什么我建議您閱讀我以前關于同一主題的文章。
2. JSON解析庫
在當今的Web服務和物聯網(IoT)世界中,JSON已成為將信息從客戶端傳送到服務器的首選協議。 他們已經將XML替換為以平臺無關的方式傳輸信息的最優選方式。 不幸的是,JDK還沒有JSON庫,但是幸運的是,有很多優秀的第三方庫可以讓您解析和創建JSON消息,例如Jackson和Gson。
Java Web開發人員應至少熟悉這些庫之一。 如果您想了解更多有關Jackson和JSON的信息,建議您通過Udemy進行JSON with Java API課程,他們在新年促銷中僅售$ 10.99。
3.單元測試庫
單元測試是將普通開發人員與優秀開發人員區分開的最重要的事情。 經常給程序員借口,而不是編寫單元測試,而是最常見的借口
避免單元測試的借口是缺乏流行的單元測試庫(例如JUnit,Mockito和PowerMock)的經驗和知識。
我的目標是在2018年提高對單元測試和集成測試庫(例如JUnit 5,Cucumber,Robot框架等)的了解。
我還注冊了Udemy的JUnit和Mockito Crash課程 。 即使您了解JUnit和單元測試的基礎知識,您也可能希望在2018年刷新和升級您的知識。
4.通用庫
Java開發人員可以使用幾個非常好的通用第三方庫,例如Apache Commons和Google Guava。 我總是將這些庫包含在我的項目中,因為它們簡化了許多任務。 正如約書亞·布洛赫(Joshua Bloch)在《 有效的Java》 (現在已經有第3版)中正確說的那樣,重新發明輪子沒有意義,我們應該寧愿使用經過考驗的庫,也不要時不時編寫自己的例程。
這只是一個優秀的Java開發人員熟悉Google的Guava和Apache commons庫。
5. Http庫
我對JDK不太喜歡的一件事是他們缺乏對HTTP的支持。 盡管可以使用java.net包中的類進行HTTP連接,但它不像使用開放源代碼,第三方庫(如Apache HttpClient和HttpCore)那樣簡單無縫。
盡管JDK 9帶來了HTTP 2.0的支持以及對HTTP的更好支持,但我強烈建議所有Java開發人員熟悉流行的HTTP客戶端庫,例如HttpClient和HttpCore。
您還可以查看Java 9的新增功能-模塊等,以了解有關JDK 9的HTTP 2支持的更多信息。
6. XML解析庫
存在許多XML解析庫,例如Xerces,JAXB,JAXP,Dom4j,Xstream等。Xerces2是Apache Xerces系列中的下一代高性能,完全兼容的XML解析器。 Xerces的這個新版本引入了Xerces本機接口(XNI),這是一個用于構建解析器組件和配置的完整框架,該框架非常模塊化且易于編程。
Apache Xerces2解析器是XNI的參考實現,但其他解析器組件,配置和解析器也可以使用Xerces本機接口編寫。 Dom4j是另一個適用于Java應用程序的靈活XML框架。 如果您想了解有關Java中XML解析的更多信息,那么我建議您看一看Udemy上的Java Web Services和XML在線課程。 目前僅售10.99美元。
7. Excel閱讀庫
信不信由你,但所有實際應用程序都必須以某種形式與Microsoft Office進行交互。 許多應用程序都需要提供在Excel中導出數據的功能,如果必須從Java應用程序中導出數據,則需要Apache POI API。
這是一個非常豐富的庫,它使您可以從Java程序讀取和寫入XLS文件 。 您可以看到該鏈接,以獲取在Core Java應用程序中讀取Excel文件的工作示例。
8.字節碼庫
如果您正在編寫生成代碼或與字節碼交互的框架或庫,則需要一個字節碼庫。 它們使您可以讀取和修改應用程序生成的字節碼。 Java世界中一些流行的字節碼庫是javassist和Cglib Nodep。
Javassist(JAVA編程ASSISTant)使Java字節碼操作非常簡單。 它是用于在Java中編輯字節碼的類庫。 ASM是另一個有用的字節碼編輯庫。
9.數據庫連接池庫
如果要通過Java應用程序與數據庫進行交互,但不使用數據庫連接池庫,那么您將丟失某些內容。 由于在運行時創建連接會花費時間,并使請求處理變慢,因此始終建議使用DB連接庫。 最受歡迎的是Commons Pool和DBCP 。
在Web應用程序中,通常是Web服務器提供這些功能,但是在核心Java應用程序中,您需要將這些連接池庫包括到類路徑中才能使用數據庫連接池。 如果您想了解有關Web應用程序中JDBC和連接池的更多信息,建議您閱讀Udemy中的JSP,Servlet和JDBC for Beginners課程。
10.消息庫
與日志記錄和數據庫連接類似,消息傳遞也是許多實際Java應用程序的共同功能。 Java提供了JMS,Java Messaging Service,但這不是JDK的一部分,您需要包括單獨的jms.jar。 同樣,如果您使用的是第三方消息傳遞協議,例如Tibco RV,則需要在應用程序類路徑中使用第三方JAR,例如tibrv.jar。
11. PDF庫
與Microsoft Excel和World相似,PDF是另一種普遍存在的格式。 如果您需要在應用程序中支持PDF功能,例如將數據導出為PDF文件,則可以使用iText和Apache FOP庫。 兩者都提供有用的PDF相關功能,但是iText變得越來越豐富和完善,我一直偏愛那種。 請參閱此處以了解有關iText的更多信息。
12.日期和時間庫
在Java 8之前,JDK的數據和時間庫存在許多缺陷,例如它們不是線程安全的,不可變的,并且容易出錯,許多Java開發人員都依靠JodaTime來實現其日期和時間要求。 從JDK 8開始,沒有理由使用Joda,因為您可以在JDK 8的新Date and Time API本身中獲得所有功能,但是如果您使用的是較舊的Java版本,則JodaTime是一個值得學習的庫。
如果您想了解有關新的日期和時間API的更多信息,建議您查看Pluralsight的Java 8新增功能課程。 它很好地概述了Java 8的所有重要功能,包括日期和時間API。
13,收藏庫
盡管JDK具有豐富的集合庫,但仍有一些第三方庫提供了更多選項,例如Apache Commons集合,Goldman Sachs集合,Google集合和Trove。 Trove庫特別有用,因為它為Java提供了高速的常規和原始集合。
FastUtil是另一個類似的API,它通過提供特定于類型的映射,集合,列表和優先級隊列來擴展Java Collections Framework,而這些隊列,內存,占用空間小并且可以快速訪問和插入。 還為二進制文件和文本文件提供了大型(64位) arrays , sets和lists以及快速,實用的I / O類。
14.電子郵件API
javax.mail和Apache Commons Email –提供用于發送電子郵件的API。 它建立在旨在簡化的JavaMail API之上。
15. HTML解析庫
與JSON和XML相似,HMTL是我們許多人必須處理的另一種常見格式。 值得慶幸的是,我們擁有jsoup,它大大簡化了在Java應用程序中使用HTML的工作。 您可以使用JSoup不僅解析HTML,還可以創建HTML文檔
它提供了使用DOM,CSS和類似jquery的最好方法提取和處理數據的非常方便的API。 jsoup實現WHATWG HTML5規范,并將HTML解析為與現代瀏覽器相同的DOM。
16,密碼庫
Apache Commons Codec軟件包包含用于各種格式(例如Base64和Hexadecimal)的簡單編碼器和解碼器。 除了這些廣泛使用的編碼器和解碼器之外,編解碼器包還維護了語音編碼實用程序的集合。
17.嵌入式SQL數據庫庫
我真的很喜歡H2這樣的內存數據庫,您可以將其嵌入Java應用程序中。 它們非常適合測試SQL腳本和運行需要數據庫的單元測試。 順便說一句,H2不是唯一的數據庫,您也可以選擇Apache Derby和HSQL。
18. JDBC故障排除庫
有一些很好的JDBC擴展庫可以使調試更加容易,例如P6spy。 它是一個庫,可在不更改應用程序代碼的情況下無縫地攔截和記錄數據庫數據。 您可以使用它們來記錄SQL查詢及其時間。 例如,如果您在代碼中使用PreparedStatment和CallableStatement ,則這些庫可以記錄帶有參數的確切調用以及執行所需的時間。
19.序列化庫
Google協議緩沖區協議緩沖區是一種以有效但可擴展的格式對結構化數據進行編碼的方法。 它是Java序列化的更豐富,更好的替代方法,我強烈建議有經驗的Java開發人員學習Google Protobuf。 您可以查看本文以了解有關Google協議緩沖區的更多信息。
20.網絡庫
一些有用的網絡庫是Netty和Apache MINA。 如果您在編寫需要執行低級網絡任務的應用程序,請考慮使用這些庫。
這就是每個Java開發人員都應該熟悉的一些有用的庫 。 Java生態系統非常龐大,您會發現大量用于執行不同操作的庫。 您考慮了一下,就會發現存在一個可以執行此操作的庫。 與往常一樣,Google是您找到有用的Java庫的最佳朋友,但是您也可以查看Maven中央存儲庫,以找到一些適合您手頭任務的有用庫。
如果您喜歡這篇文章,您可能還會發現我的其他文章也很有用:
- Java開發人員在2018年應該學習的10件事
- 2018年探索的10種編程語言
- Java和Web開發人員應在2018年學習的10個框架
- 2018年您可以閱讀的20本書
- 2018年學習新技術的10種方法
- 針對Java和Web開發人員的10個PluralSight課程
- 學習Java 8的10個教程
感謝您到目前為止閱讀本文。 如果您喜歡本文,也請與您的朋友和同事分享。 如果您有任何反饋意見或問題,請留下筆記。
PS 。 –如果您想以出色的表現開始2018年,那么我建議您閱讀
有效的Java 3rd Edition ,對于每個開發人員來說都是必讀的書。 它沒有針對Java 7、8和9進行更新,并且大多數項目都已更新,并牢記新的變化。
翻譯自: https://www.javacodegeeks.com/2018/01/top-20-libraries-apis-java-developer-know.html
總結
以上是生活随笔為你收集整理的Java开发人员应该知道的前20个库和API的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 王者荣耀苹果迁移安卓(苹果迁移安卓)
- 下一篇: 有效的Java第三版有哪些新功能?