免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Java程序員應該知道的20個有用的庫

一個優(yōu)秀且經驗豐富的Java開發(fā)人員的特點之一是對API的廣泛了解,包括JDK和第三方庫。我花了很多時間學習API,特別是在閱讀Effective Java 3rd Edition之后,Joshua Bloch建議如何使用現(xiàn)有的API進行開發(fā),而不是為常用的東西寫新的代碼。

在本文中,我將分享一些Java開發(fā)人員應該熟悉的最有用和最重要的庫和API。但是,我沒有包含框架,例如Spring和Hibernate,因為它們非常有名且具有特定功能。

總的來說,我在日常項目包含了有用的庫,包括Log4j日志庫,Jackson JSON解析庫,以及JUnit和Mockito等單元測試API。如果需要在項目中使用,則在項目的classpath包含這些JAR,也可以使用Maven進行依賴管理。

當你使用Maven進行依賴管理時,它會自動下載這些庫,包括它們所依賴的庫,稱為傳遞依賴。

例如,如果你下載Spring Framework,它還將下載Spring所依賴的所有其他JAR,例如Log4j。

你可能沒注意到,但有正確版本的JAR是一個令人頭疼的問題。如果是錯誤的JAR版本,那么你將遇到ClassNotFoundException, NoClassDefFoundError或 UnsupportedClassVersionError

Java程序員20個有用的開源庫

這是我收集的一些有用的第三方庫,Java開發(fā)可以使用它們在應用中來完成許多有用的功能。要使用這些庫,Java開發(fā)人員應該熟悉它,這就是本文的重點。如果你覺得有用,你可以研究該庫并使用它。

1.日志庫

日志庫非常常見,因為在每個項目中都需要它們。它們是服務器端應用最重要的東西,因為日志只放在可以看到應用程序當前運行時情況的地方。盡管JDK附帶了自己的日志庫,但還有更好的替代方案,例如Log4j,SLF4j和LogBack。

Java開發(fā)人員應該熟悉日志庫的優(yōu)缺點,并且知道 為什么使用SLF4j比普通Log4j更好

2. JSON解析庫

在當今的Web服務和物聯(lián)網領域,JSON已成為將信息從客戶端傳送到服務器的首選協(xié)議。他們已經替換XML成為在獨立平臺間傳輸信息的最佳方式。

遺憾的是,JDK沒有JSON庫。但是,有許多優(yōu)秀的第三方庫允許你解析和創(chuàng)建JSON消息,如Jackson和Gson。

Java Web開發(fā)人員應該熟悉這些庫中的至少一個。如果你想了解有關Jackson和JSON的更多信息,我建議你看看 Udemy的課程JSON with the Java API

3.單元測試庫

單元測試是將普通開發(fā)人員與優(yōu)秀開發(fā)人員區(qū)分開來的最重要的事情。程序員經常有理由不寫單元測試,但逃避寫單元測試的最常見的借口是缺乏常用單元測試庫的經驗和知識,包括JUnit,Mockito和PowerMock。

我在2018年有一個目標就是提高我對單元測試和集成測試庫的了解,比如JUnit 5,Cucumber,Robot框架和一些其他的。

我還在Udemy注冊了 JUnit and Mockito Crash Course 。即使你了解JUnit和單元測試的基礎知識,可能也希望更新并進階自己的知識。

4.通用庫

Java開發(fā)人員可以使用幾個很好的通用第三方庫,比如Apache Commons和Google Guava。我總是在我的項目中包含這些庫,因為它們簡化了很多功能。

正如Joshua Bloch在Effective Java中所說的那樣,重復造輪子是沒有意義的。我們應該更偏向于使用久經考驗的庫而不是時不時自己來實現(xiàn)。

對Java開發(fā)人員來說,熟悉Google Guava和Apache Commons庫是件好事。

5. HTTP庫

我不喜歡JDK的一點是他們對HTTP支持的缺乏。雖然你可以使用java.net包中的類建立HTTP連接 ,但使用開源的第三方庫(如Apache HttpClient和HttpCore)并不容易或不能無縫結合。

雖然JDK 9帶來了HTTP 2.0的支持和更好的HTTP支持,但我強烈建議所有Java開發(fā)人員熟悉流行的HTTP客戶端庫,包括HttpClient和HttpCore。

你還可以查看此文章<u>What's New in Java 9 - Modules and More</u>以了解有關JDK 9對HTTP 2支持的更多信息。

6. XML解析庫

有許多XML解析庫,包括Xerces,JAXB,JAXP,Dom4j和Xstream。Xerces2是Apache Xerces下一高性能版本,完全兼容的XML解析器。這個新版本的Xerces引入了Xerces Native Interface(XNI),這是一個完整的框架,用于構建非常模塊化且易于編程的解析器組件和配置。

image

Apache Xerces2解析器是XNI的參考實現(xiàn),但是其他解析器組件,配置和解析器可以使用Xerces Native Interface編寫。Dom4j是另一個適用于Java應用程序的靈活XML框架。如果你想了解有關Java中XML解析的更多信息,建議你查看Udemy 上的 Java Web Services and XML 在線課程。

7. Excel庫

信不信由你 - 所有現(xiàn)實世界的應用程序都必須以某種形式與Microsoft Office進行交互。許多應用程序需要提供在Excel中導出數(shù)據的功能,如果必須從Java應用程序執(zhí)行相同操作,則需要Apache POI API。

這是一個非常豐富的庫,允許你 從Java程序讀取和寫入XLS文件。你可以看到該鏈接(http://www.java67.com/2014/09/how-to-read-write-xlsx-file-in-java-apache-poi-example.html),以獲取在核心Java應用程序中讀取Excel文件的工作示例。

8.字節(jié)碼庫

如果你正在編寫生成代碼或與字節(jié)碼交互的框架,那么你需要一個字節(jié)碼庫。

它們允許你讀取和修改應用程序生成的字節(jié)碼。Java世界中一些流行的字節(jié)碼庫是javassist和Cglib Nodep。

Javassist(Java programming assistant)使Java字節(jié)碼操作變得非常簡單。它是一個用于在Java中編輯字節(jié)碼的類庫。ASM是另一個有用的字節(jié)碼編輯庫。如果你不熟悉字節(jié)碼,我建議你查看Introduction to Java Programmers以了解有關它的更多信息。

9.數(shù)據庫連接池庫

如果你正在從Java應用程序與數(shù)據庫交互但不使用數(shù)據庫連接池庫,那么你將丟失一些內容。

由于在運行時創(chuàng)建數(shù)據庫連接需要花費時間并使請求處理速度變慢,因此始終建議使用數(shù)據庫連接庫。一些流行的是Commons Pool和DBCP。

在Web應用程序中,它的Web服務器通常提供這些功能,但在核心Java應用程序中,你需要將這些連接池庫包含在類路徑中以使用數(shù)據庫連接池。

如果你想了解有關JDBC和Web應用程序中的連接池的更多信息,我建議你查看Udemy 中的JSP, Servlet, and JDBC for Beginners課程。

10.消息傳遞庫

與日志記錄和數(shù)據庫連接類似,消息傳遞也是許多現(xiàn)實世界Java應用程序的常見功能。

Java提供的JMS,Java Messaging Service不屬于JDK。對于此組件,你需要包含一個單獨的組件 jms.jar。

同樣,如果你正在使用第三方消息傳遞協(xié)議(如Tibco RV),則需要使用第三方JAR tibrv.jar 放在應用程序類路徑中。

11. PDF庫

與Microsoft Excel類似,PDF庫是另一種普遍存在的格式。如果你需要在應用程序中支持PDF功能,例如 導出數(shù)據到PDF文件,則可以使用iText和Apache FOP庫。

兩者都提供有用的PDF相關功能,但iText更豐富,更好。請參閱此處以了解有關iText的更多信息。

12.日期和時間庫

在Java 8之前,JDK的數(shù)據和時間庫有很多缺陷,因為它們不是線程安全的,不可變的,并且容易出錯。許多Java開發(fā)人員依靠JodaTime來實現(xiàn)他們的日期和時間要求。

從JDK 8開始,沒有理由使用Joda,因為你在JDK 8的新日期和時間API中獲得了所有功能,但如果你使用的是較舊的Java版本,那么JodaTime是一個值得學習的庫。

如果你想了解有關新的日期和時間API的更多信息,我建議你查看Udemy上的What's new in Java 8課程。它提供了Java 8所有重要功能的精彩概述,包括日期和時間API。

13.Collection庫

盡管JDK擁有豐富的集合庫,但仍有一些第三方庫提供了更多選項,例如Apache Commons集合,Goldman Sachs集合,Google集合和Trove。

Trove庫特別有用,因為它為Java提供了高速的常規(guī)和原始集合。

FastUtil是另一個類似的API。它通過提供特定類型的映射,集合,列表和優(yōu)先級隊列來擴展Java集合框架,較小的內存占用,快速訪問和插入; 它還提供大型(64位)數(shù)組,列表,以及用于二進制和文本文件快速實用的I / O類。

14.Email API

javax.mail和Apache Commons Email都提供了一個用于從Java發(fā)送電子郵件的API 。它建立在JavaMail API的基礎之上,旨在簡化它。

15. HTML解析庫

JSONXML類似,HMTL是我們許多人必須處理的另一種常見格式。值得慶幸的是,我們有JSoup,它極大地簡化了在Java應用程序中使用HTML的過程。

你不僅可以使用JSoup解析HTML,還可以創(chuàng)建HTML文檔

它提供了一個非常方便的API,用于提取和操作數(shù)據,使用DOM,CSS和類似jquery的方法。JSoup實現(xiàn)了WHATWG HTML5規(guī)范,并將HTML解析到同一個DOM,就像現(xiàn)代瀏覽器一樣。

16.Cryptographic庫

Apache Commons Codec軟件包包含各種格式的簡單編碼器和解碼器,如Base64和Hexadecimal。

除了這些廣泛使用的編碼器和解碼器之外,編解碼器包還維護一組語音編碼實用程序。

17.Embedded SQL Database庫

我真的很喜歡像H2這樣的內存數(shù)據庫,你可以將它嵌入你的Java應用程序中。它們非常適合測試SQL腳本和運行需要數(shù)據庫的單元測試。但是,H2并不是唯一的DB,你也可以選擇Apache Derby和HSQL。

18. JDBC問題排查庫

存在一些很好的JDBC擴展庫,可以使調試更容易,比如P6spy。

這是一個庫,可以無縫地攔截和記錄數(shù)據庫數(shù)據,而無需對應用程序進行代碼更改。你可以使用它們來記錄SQL查詢及其計時。

例如,如果你在代碼中使用PreparedStatmentCallableStatement,則這些庫可以記錄一次完全調用的參數(shù)和執(zhí)行所花費的時間。

如果你想了解有關JDBC的更多信息,可以查看JDBC for Beginners

19.序列化庫

Google Protocol Buffers是一種以高效可擴展的格式編碼結構化數(shù)據的方法。它是Java序列化的更豐富,更好的替代品。我強烈建議有經驗的Java開發(fā)人員學習Google Protobuf。你可以查看此文章以了解有關Google協(xié)議緩沖區(qū)的更多信息 。

20.網絡庫

一些有用的網絡庫是Netty和Apache MINA。如果你正在編寫需要執(zhí)行底層網絡任務的應用程序,請考慮使用這些庫。如果你想了解有關Java網絡編程的更多信息,請查看 <u>Java Network Programming - TCP/IP Socket Programming</u>。

****這些就是對于每個Java開發(fā)人員都應該使用的****一些****有用的庫****。Java的世界是浩瀚無窮的,你會發(fā)現(xiàn)數(shù)不勝數(shù)的庫用于做不同的事情。

如果你想用Java做任何事情,很可能你會找到一個如何實現(xiàn)的庫。與往常一樣,Google是你找到有用的Java庫的最好朋友,但你也可以查看Maven中央存儲庫,找到適合你手頭任務的一些有用的庫。

[原文英文鏈接](https://link.juejin.im/?target=https%3A%2F%2Fdzone.com%2Farticles%2F20-useful-open-source-libraries-for-java-programme

? 著作權歸作者所有,轉載或內容合作請聯(lián)系作者
本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
頂級Javaer都在使用的類庫,真香!
高效 Java 程序員不能錯過的 10 個最佳庫
Java XML API 漫談
高效Java程序員不能錯過的10 個最佳庫
十個非常有用的第三方Java庫
java中最常用jar包的用途
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服