Java 庫:爲 Java 程序員而生的 10 + 最佳庫

衆所周知,Java 的生態環境至關龐大,包含了數量至關可觀的官方及第三方庫。利用這些庫,能夠解決在用 Java 開發時遇到的各種問題,讓開發效率獲得顯著提高。java

舉些例子,最經常使用的官方庫有 java.lang、java.util、java.io、java.sql、java.net 等;而至於目前最流行的第三方庫,就有 Junit、SLF4J、Google Guava、XStream、JSoup、Gson、Joda Time 等,能夠說是不勝枚舉。sql

file

我到底須要用到哪些 Java 庫呢?

某些庫再熱門也好,你的項目也未必適用。然而即使如此,大部分項目實際上都仍是須要進行單元測試、日誌記錄、序列化、代碼規範化等工做的,所以用一些相關的 Java 庫去解決問題,仍是不錯的選擇。數據庫

下面,就讓我來介紹一些能夠用來解決常見開發問題的熱門 Java 庫吧。編程

1. JUnit

JUnit 起源於 xUnit 家族的單元測試框架,目前能夠說是最知名及經常使用的測試框架。經過 JUnit,能夠輕鬆地寫出可重複測試的代碼。早期版本的 JUnit 屬於 junit.framework 包;而從 JUnit 4 開始,便轉移到了 org.junit 包。segmentfault

JUnit 的一大特點在於給開發者提供了簡潔的圖形界面,如此一來編寫測試代碼便更爲輕鬆,開發的進度也得以顯著加快。後端

Junit 容許多個測試一個接一個,或是併發同時執行,而且會實時返回測試結果,並且還帶有進度條,提示開發者測試進度如何。通常當測試正常進行時,進度條是綠的;而當遇到了錯誤,就會變紅。瀏覽器

此外,JUnit 還容許開發者建立測試套件 (Test Suite) 來查看、檢測總體的測試進度及測試期間發生的反作用。緩存

對於不少項目而言,單元測試是很是重要的。JUnit 之因此可以成爲 Java 圈中最熱門的測試庫,正是由於它既簡潔又高效。安全

2. SLF4J

SLF4J 或 Simple Logging Facade for Java,爲不一樣的框架提供了一個抽象概念,容許開發人員在部署時插入任何框架。SLF4J 的功能在於基於外觀模式的簡單日誌 API,並將客戶端 API 與日誌後端分開。併發

經過向 classpath 中添加所需的綁定,能夠發現其後端。因爲客戶端 API 和後端徹底解耦,所以它能夠集成到任何框架或現有的代碼片斷。

建立這個有用的機制的人是 Ceki Gülcü。

3. Google Guava

Google Guava 是 Java 編程的另外一個受歡迎的 Java 核心庫,它是開源的,由 Googl 開發的。Google Guava 項目中包含的庫可用於天天在谷歌上開發/升級的 Java 的產品。

Google Guava 軟件包中的庫或多或少是對核心庫的對應部分有加強功能,並使編程更加高效和有效。Guava 包括內存緩存、不可變集合、函數類型、圖形庫和可用於 I/O、散列、併發、原語、字符串處理、反射等等的 API 實用程序。

4. XStream

當涉及將對象序列化到 XML 中時,XStream 庫是開發人員值得信賴的選擇。 該庫容許開發人員輕鬆地將對象序列化爲 XML 並返回。

反射是這裏的關鍵,用於識別在運行時序列化的對象圖的結構。 對象不須要修改。 任何內部字段均可以使用 XStream 序列化。

說到 XStream 的功能 - 大多數對象能夠被序列化,並提供特定的映射,提供高性能和低內存佔用,適用於具備較高吞吐量的大型對象圖和系統,信息不重複,可自定義的轉換策略,安全的框架,異常狀況下的詳細診斷等等。

諸如傳輸,配置,持久化和單元測試等普遍的應用使它成爲Java開發人員社區中流行的 Java 庫。

5. Log4j

Log4j 是 Apache 中的一個庫,可用做日誌工具。該工具最初由 Ceki Gülcü 開發。 可是如今,Apache Software Foundation 已經接管了這個項目。

Log4j 剛好是其所在應用領域中最可靠的庫,能夠擴展到支持自定義組件配置。配置語法很是簡單,支持 XML、YAML 和 JSON。

Log4J 提供對多個API的支持,能夠在白名單應用程序中使用不一樣版本的 Log4j 或 SLF4J。另外一個有趣的功能是它支持用戶自定義的消息對象。最重要的是,它的工做速度至關使人印象深入。

6. iText

iText 是用於在 Java 中建立和操做 PDF 文件的 Java 開源庫。這個庫是由包括布魯諾·洛皮傑(Bruno Lowagie)和保羅·蘇亞雷斯(Paulo Soares)在內的團隊建立的。

雖然之前的 iText 版本有不少限制,但最近的版本包括許多新功能,如建立 pdf 的選項,將文檔從 XML、HTML、CSS 或數據庫轉換爲 PDF。生成的 PDF 符合全球通用標準。它還容許在 PDF 中添加交互性並添加數字簽名。你能夠複製、合併文檔、導入、更改結構、在 PDF 中添加水印或條形碼 F。

7. jsoup

jsoup 是一個有用的 Java 庫,用於處理和解析 HTML。Jsoup 提供了一個有用的用於提取數據的 API。jsoup 中實現的標準是 WHATWG HTML5。和最新的瀏覽器做法同樣,jsoup 將 HTML 解析爲 DOM。

它容許或解析來自任何 URL 或文件的 HTML,例如,你能夠獲取 http://noeticforce.com 的主頁信息,解析它,並將全部 H2 標題提取到元素列表中。

它的用途包括清理和操縱 HTML 元素和屬性,以檢索用戶提交的數據並過濾掉 XSS 攻擊屬性,使用 jsoup 還能夠完成更多功能。

8. Gson

Gson 是 Google 的另外一個庫,它垂手可得的將 Java Objects 轉換成等效的 JSON 表示形式。

雖然有一些容許將 Java 對象轉換爲 JSON 的開源項目,但它們要求您將 Java 註釋放在您使用的類中。 顯然,若是您沒法訪問源代碼,則沒法執行此操做,此外,大多數開源項目都不支持 Java 泛型。 Gson考慮到這些問題。

它提供了簡單的 toJson()和 fromJson()方法,可用於將 Java 對象和 JSON 互相轉換。 Gson 庫容許將不可修改的對象轉換爲 JSON 並返回。 如上所述,它爲 Java 泛型提供了極大的支持,並容許對象的自定義表示。

9. 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 具備龐大的生態圈,因此你能夠很容易的找到各類各樣的插件庫,你須要作的只是從海量的插件庫中選出哪個對你的項目更加適合。從零開始開發也是能夠的,可是若是已經有現成的,並且被證實有效的庫組件存在時,爲何要去重複造輪子呢。

本文由博客一文多發平臺 OpenWrite 發佈!
相關文章
相關標籤/搜索