java 開發流行的工具庫
我到底需要用到哪些 Java 庫呢?
某些庫再熱門也好,你的專案也未必適用。然而即便如此,大部分專案實際上都還是需要進行單元測試、日誌記錄、序列化、程式碼規範化等工作的,因此用一些相關的 Java 庫去解決問題,還是不錯的選擇。
下面,就讓我來介紹一些可以用來解決常見開發問題的熱門 Java 庫吧。
01. JUnit
JUnit 起源於 xUnit 家族的單元測試框架,目前可以說是最知名及常用的測試框架。通過 JUnit,可以輕鬆地寫出可重複測試的程式碼。早期版本的 JUnit 屬於 junit.framework 包;而從 JUnit 4 開始,便轉移到了 org.junit 包。
JUnit 的一大特色在於給開發者提供了簡潔的圖形介面,如此一來編寫測試程式碼便更為輕鬆,開發的進度也得以顯著加快。
Junit 允許多個測試一個接一個,或是併發同時執行,並且會實時返回測試結果,而且還帶有進度條,提示開發者測試進度如何。一般當測試正常進行時,進度條是綠的;而當遇到了錯誤,就會變紅。
此外,JUnit 還允許開發者建立測試套件 (Test Suite) 來檢視、檢測整體的測試進度及測試期間發生的副作用。
對於很多專案而言,單元測試是非常重要的。JUnit 之所以能夠成為 Java 圈中最熱門的測試庫,正是因為它既簡潔又高效。
02. SLF4J
SLF4J 或 Simple Logging Facade for Java,為不同的框架提供了一個抽象概念,允許開發人員在部署時插入任何框架。SLF4J 的功能在於基於外觀模式的簡單日誌 API,並將客戶端 API 與日誌後端分開。
通過向 classpath 中新增所需的繫結,可以發現其後端。由於客戶端 API 和後端完全解耦,因此它可以整合到任何框架或現有的程式碼片段。
建立這個有用的機制的人是 Ceki Gülcü。 你可以在 SLF4J 下載連結傷下載 SLF4J。
03. Google Guava
Google Guava 是 Java 程式設計的另一個受歡迎的 Java 核心庫,它是開源的,由 Googl 開發的。Google Guava 專案中包含的庫可用於每天在谷歌上開發/升級的 Java 的產品。
Google Guava 軟體包中的庫或多或少是對核心庫的對應部分有增強功能,並使程式設計更加高效和有效。Guava 包括記憶體快取、不可變集合、函式型別、圖形庫和可用於 I/O、雜湊、併發、原語、字串處理、反射等等的 API 實用程式。
04. XStream
當涉及將物件序列化到 XML 中時,XStream 庫是開發人員值得信賴的選擇。 該庫允許開發人員輕鬆地將物件序列化為 XML 並返回。
反射是這裡的關鍵,用於識別在執行時序列化的物件圖的結構。 物件不需要修改。 任何內部欄位都可以使用 XStream 序列化。
說到 XStream 的功能 - 大多數物件可以被序列化,並提供特定的對映,提供高效能和低記憶體佔用,適用於具有較高吞吐量的大型物件圖和系統,資訊不重複,可自定義的轉換策略,安全的框架,異常情況下的詳細診斷等等。
諸如傳輸,配置,持久化和單元測試等廣泛的應用使它成為Java開發人員社群中流行的 Java 庫。
05. Log4j
Log4j 是 Apache 中的一個庫,可用作日誌工具。該工具最初由 Ceki Gülcü 開發。 但是現在,Apache Software Foundation 已經接管了這個專案。
Log4j 恰好是其所在應用領域中最可靠的庫,可以擴充套件到支援自定義元件配置。配置語法非常簡單,支援 XML、YAML 和 JSON。
Log4J 提供對多個API的支援,可以在白名單應用程式中使用不同版本的 Log4j 或 SLF4J。另一個有趣的功能是它支援使用者自定義的訊息物件。最重要的是,它的工作速度相當令人印象深刻。
06. iText
iText 是用於在 Java 中建立和操作 PDF 檔案的 Java 開源庫。這個庫是由包括布魯諾·洛皮傑(Bruno Lowagie)和保羅·蘇亞雷斯(Paulo Soares)在內的團隊建立的。
雖然以前的 iText 版本有很多限制,但最近的版本包括許多新功能,如建立 pdf 的選項,將文件從 XML、HTML、CSS 或資料庫轉換為 PDF。生成的 PDF 符合全球通用標準。它還允許在 PDF 中新增互動性並新增數字簽名。你可以複製、合併文件、匯入、更改結構、在 PDF 中新增水印或條形碼 F。
07. jsoup
jsoup 是一個有用的 Java 庫,用於處理和解析 HTML。Jsoup 提供了一個有用的用於提取資料的 API。jsoup 中實現的標準是 WHATWG HTML5。和最新的瀏覽器作法一樣,jsoup 將 HTML 解析為 DOM。
它允許或解析來自任何 URL 或檔案的 HTML,例如,你可以獲取 http://noeticforce.com 的主頁資訊,解析它,並將所有 H2 標題提取到元素列表中。
它的用途包括清理和操縱 HTML 元素和屬性,以檢索使用者提交的資料並過濾掉 XSS 攻擊屬性,使用 jsoup 還可以完成更多功能。
08. Gson
Gson 是 Google 的另一個庫,它輕而易舉的將 Java Objects 轉換成等效的 JSON 表示形式。
雖然有一些允許將 Java 物件轉換為 JSON 的開源專案,但它們要求您將 Java 註釋放在您使用的類中。 顯然,如果您無法訪問原始碼,則無法執行此操作,此外,大多數開源專案都不支援 Java 泛型。 Gson考慮到這些問題。
它提供了簡單的 toJson()和 fromJson()方法,可用於將 Java 物件和 JSON 互相轉換。 Gson 庫允許將不可修改的物件轉換為 JSON 並返回。 如上所述,它為 Java 泛型提供了極大的支援,並允許物件的自定義表示。
09. Apache PDF box
Apache PDFBox 是另一個可用於操作 PDF 檔案的開源庫。這個專案最初由本·利奇菲爾德(Ben Litchfield)發起的,後來被 Apache 接管。
PDFBox 的主要功能使其成為超級庫,其中包括 PDF 建立、將單個 PDF 分割為多個 PDF 檔案、合併並提取 PDF 文字的 Unicode 文字,填寫 PDF 表單,根據 PDF/A 標準驗證 PDF 檔案,將 PDF 儲存為影象並對 PDF 進行數字簽名。
10. Joda Time
這就是我一直強調的簡單但功能強大的庫,它節省了大量的開發時間。 Joda-Time 是一個 Java 庫,作為 Java 中日期和時間類的一個很好的替代品。
Joda Time 很容易使用,並且像 getYear()或 getDayOfWeek()這樣的屬性訪問器可以直接獲取日期,及其更詳細的資訊。
Joda Time 還提供計算日期和時間的功能,並支援幾乎所有需要的日期格式,而且肯定難以用簡單的 JDK 方法進行復制。
除了上述 10 個庫外,還有許多其他通用於特定領域的 Java 庫應用於一些小型或大型的專案。以下是其中一些庫:
Ok HTTP
用於通過 HTTP 協議有效地在現代應用程式之間交換資料。 Okhttp 在斷網時恢復連線,在多個基於 IP 的服務中切換 IP 地址。 okhttp 的一個有用的功能是與現代 TLS(SNI,ALPN)的自動連線,並且在發生故障時回到 TLS 1.0。
Quartz
這是另一個通用且有用的 Java 庫,它集成了任何規模和大小的 Java 應用程式。 Quartz 庫可用於建立數百,數千或更多的作業,可根據應用需求進行擴充套件。 Quartz 具有諸如 JTA 事務和叢集等功能,可用於企業級應用程式的支援。
JAVA具有龐大的生態圈,所以你可以很容易的找到各種各樣的外掛庫,你需要做的只是從海量的外掛庫中選出哪一個對你的專案更加適合。從頭開發也是一種選擇,但是當你找到了可以自由使用的外掛,為什麼還要花費更多的時間來重新開發構建呢?
為方便更多開發者交流和學習,歡迎為您認為最好用或者最喜歡的 Java 庫投上一票,也可以請通過評論來與我們的讀者分享使用Java庫的一些經驗,謝謝!