更新時(shí)間:2019-10-28 17:19:56 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽3056次
眾所周知,Java 的生態(tài)環(huán)境相當(dāng)龐大,包含了數(shù)量相當(dāng)可觀的官方及第三方庫(kù)。利用這些庫(kù),可以解決在用 Java 開(kāi)發(fā)時(shí)遇到的各類(lèi)問(wèn)題,讓開(kāi)發(fā)效率得到顯著提升。
舉些例子,最常用的官方庫(kù)有 java.lang、java.util、java.io、java.sql、java.net 等;而至于目前最流行的第三方庫(kù),就有 Junit、SLF4J、Google Guava、XStream、JSoup、Gson、Joda Time 等,可以說(shuō)是不勝枚舉。
到底需要用到哪些 Java 庫(kù)呢?
某些庫(kù)再熱門(mén)也好,你的項(xiàng)目也未必適用。然而即便如此,大部分項(xiàng)目實(shí)際上都還是需要進(jìn)行單元測(cè)試、日志記錄、序列化、代碼規(guī)范化等工作的,因此用一些相關(guān)的 Java 庫(kù)去解決問(wèn)題,還是不錯(cuò)的選擇。
下面動(dòng)力節(jié)點(diǎn)java學(xué)院小編來(lái)介紹一些可以用來(lái)解決常見(jiàn)開(kāi)發(fā)問(wèn)題的熱門(mén)Java庫(kù)吧。
一、JUnit
JUnit 起源于 xUnit 家族的單元測(cè)試框架,目前可以說(shuō)是最知名及常用的測(cè)試框架。通過(guò) JUnit,可以輕松地寫(xiě)出可重復(fù)測(cè)試的代碼。早期版本的 JUnit 屬于 junit.framework 包;而從 JUnit 4 開(kāi)始,便轉(zhuǎn)移到了 org.junit 包。
JUnit 的一大特色在于給開(kāi)發(fā)者提供了簡(jiǎn)潔的圖形界面,如此一來(lái)編寫(xiě)測(cè)試代碼便更為輕松,開(kāi)發(fā)的進(jìn)度也得以顯著加快。
Junit 允許多個(gè)測(cè)試一個(gè)接一個(gè),或是并發(fā)同時(shí)執(zhí)行,并且會(huì)實(shí)時(shí)返回測(cè)試結(jié)果,而且還帶有進(jìn)度條,提示開(kāi)發(fā)者測(cè)試進(jìn)度如何。一般當(dāng)測(cè)試正常進(jìn)行時(shí),進(jìn)度條是綠的;而當(dāng)遇到了錯(cuò)誤,就會(huì)變紅。
此外,JUnit 還允許開(kāi)發(fā)者創(chuàng)建測(cè)試套件 (Test Suite) 來(lái)查看、檢測(cè)整體的測(cè)試進(jìn)度及測(cè)試期間發(fā)生的副作用。
對(duì)于很多項(xiàng)目而言,單元測(cè)試是非常重要的。JUnit 之所以能夠成為 Java 圈中最熱門(mén)的測(cè)試庫(kù),正是因?yàn)樗群?jiǎn)潔又高效。
二、SLF4J
SLF4J 或 Simple Logging Facade for Java,為不同的框架提供了一個(gè)抽象概念,允許開(kāi)發(fā)人員在部署時(shí)插入任何框架。SLF4J 的功能在于基于外觀模式的簡(jiǎn)單日志 API,并將客戶端 API 與日志后端分開(kāi)。
通過(guò)向 classpath 中添加所需的綁定,可以發(fā)現(xiàn)其后端。由于客戶端 API 和后端完全解耦,因此它可以集成到任何框架或現(xiàn)有的代碼片段。
創(chuàng)建這個(gè)有用的機(jī)制的人是 Ceki Gülcü。 你可以在 SLF4J 下載鏈接傷下載 SLF4J。
三、Google Guava
Google Guava 是 Java 編程的另一個(gè)受歡迎的 Java 核心庫(kù),它是開(kāi)源的,由 Googl 開(kāi)發(fā)的。Google Guava 項(xiàng)目中包含的庫(kù)可用于每天在谷歌上開(kāi)發(fā)/升級(jí)的 Java 的產(chǎn)品。
Google Guava 軟件包中的庫(kù)或多或少是對(duì)核心庫(kù)的對(duì)應(yīng)部分有增強(qiáng)功能,并使編程更加高效和有效。Guava 包括內(nèi)存緩存、不可變集合、函數(shù)類(lèi)型、圖形庫(kù)和可用于 I/O、散列、并發(fā)、原語(yǔ)、字符串處理、反射等等的 API 實(shí)用程序。
四、XStream
當(dāng)涉及將對(duì)象序列化到 XML 中時(shí),XStream 庫(kù)是開(kāi)發(fā)人員值得信賴的選擇。 該庫(kù)允許開(kāi)發(fā)人員輕松地將對(duì)象序列化為 XML 并返回。
反射是這里的關(guān)鍵,用于識(shí)別在運(yùn)行時(shí)序列化的對(duì)象圖的結(jié)構(gòu)。 對(duì)象不需要修改。 任何內(nèi)部字段都可以使用 XStream 序列化。
說(shuō)到 XStream 的功能 - 大多數(shù)對(duì)象可以被序列化,并提供特定的映射,提供高性能和低內(nèi)存占用,適用于具有較高吞吐量的大型對(duì)象圖和系統(tǒng),信息不重復(fù),可自定義的轉(zhuǎn)換策略,安全的框架,異常情況下的詳細(xì)診斷等等。
諸如傳輸,配置,持久化和單元測(cè)試等廣泛的應(yīng)用使它成為Java開(kāi)發(fā)人員社區(qū)中流行的 Java 庫(kù)。
五、Log4j
Log4j 是 Apache 中的一個(gè)庫(kù),可用作日志工具。該工具最初由 Ceki Gülcü 開(kāi)發(fā)。 但是現(xiàn)在,Apache Software Foundation 已經(jīng)接管了這個(gè)項(xiàng)目。
Log4j 恰好是其所在應(yīng)用領(lǐng)域中最可靠的庫(kù),可以擴(kuò)展到支持自定義組件配置。配置語(yǔ)法非常簡(jiǎn)單,支持 XML、YAML 和 JSON。
Log4J 提供對(duì)多個(gè)API的支持,可以在白名單應(yīng)用程序中使用不同版本的 Log4j 或 SLF4J。另一個(gè)有趣的功能是它支持用戶自定義的消息對(duì)象。最重要的是,它的工作速度相當(dāng)令人印象深刻。
六、iText
iText 是用于在 Java 中創(chuàng)建和操作 PDF 文件的 Java 開(kāi)源庫(kù)。這個(gè)庫(kù)是由包括布魯諾·洛皮杰(Bruno Lowagie)和保羅·蘇亞雷斯(Paulo Soares)在內(nèi)的團(tuán)隊(duì)創(chuàng)建的。
雖然以前的 iText 版本有很多限制,但最近的版本包括許多新功能,如創(chuàng)建 pdf 的選項(xiàng),將文檔從 XML、HTML、CSS 或數(shù)據(jù)庫(kù)轉(zhuǎn)換為 PDF。生成的 PDF 符合全球通用標(biāo)準(zhǔn)。它還允許在 PDF 中添加交互性并添加數(shù)字簽名。你可以復(fù)制、合并文檔、導(dǎo)入、更改結(jié)構(gòu)、在 PDF 中添加水印或條形碼 F。
七、jsoup
jsoup 是一個(gè)有用的 Java 庫(kù),用于處理和解析 HTML。Jsoup 提供了一個(gè)有用的用于提取數(shù)據(jù)的 API。jsoup 中實(shí)現(xiàn)的標(biāo)準(zhǔn)是 WHATWG HTML5。和最新的瀏覽器作法一樣,jsoup 將 HTML 解析為 DOM。
它允許或解析來(lái)自任何 URL 或文件的 HTML,例如,你可以獲取 http://noeticforce.com 的主頁(yè)信息,解析它,并將所有 H2 標(biāo)題提取到元素列表中。
它的用途包括清理和操縱 HTML 元素和屬性,以檢索用戶提交的數(shù)據(jù)并過(guò)濾掉 XSS 攻擊屬性,使用 jsoup 還可以完成更多功能。
八、Gson
Gson 是 Google 的另一個(gè)庫(kù),它輕而易舉的將 Java Objects 轉(zhuǎn)換成等效的 JSON 表示形式。
雖然有一些允許將 Java 對(duì)象轉(zhuǎn)換為 JSON 的開(kāi)源項(xiàng)目,但它們要求您將 Java 注釋放在您使用的類(lèi)中。 顯然,如果您無(wú)法訪問(wèn)源代碼,則無(wú)法執(zhí)行此操作,此外,大多數(shù)開(kāi)源項(xiàng)目都不支持 Java 泛型。 Gson考慮到這些問(wèn)題。
它提供了簡(jiǎn)單的 toJson和 fromJson方法,可用于將 Java 對(duì)象和 JSON 互相轉(zhuǎn)換。 Gson 庫(kù)允許將不可修改的對(duì)象轉(zhuǎn)換為 JSON 并返回。 如上所述,它為 Java 泛型提供了極大的支持,并允許對(duì)象的自定義表示。
九、Apache PDF box
Apache PDFBox 是另一個(gè)可用于操作 PDF 文件的開(kāi)源庫(kù)。這個(gè)項(xiàng)目最初由本·利奇菲爾德(Ben Litchfield)發(fā)起的,后來(lái)被 Apache 接管。
PDFBox 的主要功能使其成為超級(jí)庫(kù),其中包括 PDF 創(chuàng)建、將單個(gè) PDF 分割為多個(gè) PDF 文件、合并并提取 PDF 文本的 Unicode 文本,填寫(xiě) PDF 表單,根據(jù) PDF/A 標(biāo)準(zhǔn)驗(yàn)證 PDF 文件,將 PDF 保存為圖像并對(duì) PDF 進(jìn)行數(shù)字簽名。
十、Joda Time
這就是小編一直強(qiáng)調(diào)的簡(jiǎn)單但功能強(qiáng)大的庫(kù),它節(jié)省了大量的開(kāi)發(fā)時(shí)間。 Joda-Time 是一個(gè) Java 庫(kù),作為 Java 中日期和時(shí)間類(lèi)的一個(gè)很好的替代品。
Joda Time 很容易使用,并且像 getYear或 getDayOfWeek這樣的屬性訪問(wèn)器可以直接獲取日期,及其更詳細(xì)的信息。
Joda Time 還提供計(jì)算日期和時(shí)間的功能,并支持幾乎所有需要的日期格式,而且肯定難以用簡(jiǎn)單的 JDK 方法進(jìn)行復(fù)制。
除了上述 10 個(gè)庫(kù)外,還有許多其他通用于特定領(lǐng)域的 Java 庫(kù)應(yīng)用于一些小型或大型的項(xiàng)目。以下是其中一些庫(kù):
Ok HTTP
用于通過(guò) HTTP 協(xié)議有效地在現(xiàn)代應(yīng)用程序之間交換數(shù)據(jù)。 Okhttp 在斷網(wǎng)時(shí)恢復(fù)連接,在多個(gè)基于 IP 的服務(wù)中切換 IP 地址。 okhttp 的一個(gè)有用的功能是與現(xiàn)代 TLS(SNI,ALPN)的自動(dòng)連接,并且在發(fā)生故障時(shí)回到 TLS 1.0。
Quartz
這是另一個(gè)通用且有用的 Java 庫(kù),它集成了任何規(guī)模和大小的 Java 應(yīng)用程序。
Quartz 庫(kù)可用于創(chuàng)建數(shù)百,數(shù)千或更多的作業(yè),可根據(jù)應(yīng)用需求進(jìn)行擴(kuò)展。 Quartz 具有諸如 JTA 事務(wù)和集群等功能,可用于企業(yè)級(jí)應(yīng)用程序的支持。
JAVA具有龐大的生態(tài)圈,所以你可以很容易的找到各種各樣的插件庫(kù),你需要做的只是從海量的插件庫(kù)中選出哪一個(gè)對(duì)你的項(xiàng)目更加適合。
以上就是動(dòng)力節(jié)點(diǎn)java學(xué)院小編介紹的“java程序員必須掌握的技術(shù)(10個(gè)最佳庫(kù))”內(nèi)容,希望能夠幫助到大家,更多java最新資訊請(qǐng)繼續(xù)關(guān)注動(dòng)力節(jié)點(diǎn)java學(xué)院官網(wǎng),每天會(huì)有精彩內(nèi)容分享與你。
相關(guān)推薦
優(yōu)秀的Java程序員應(yīng)具備哪些編程技術(shù)
Java程序員應(yīng)該有的技術(shù)和職業(yè)規(guī)劃
優(yōu)秀的Java程序員是否需要掌握多種語(yǔ)言呢?
Java程序員不斷提升,要學(xué)習(xí)哪些前沿技術(shù)
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743