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