# JAVA 之 我們都要熟悉的基礎功能類庫

襄垣發表於2019-01-29

述說幾個JAVA程式設計中經常使用的類庫。

日誌

SLF4J 是個很好的選擇,比 Log4J 要好一些。

JSON解析庫

JacksonGson 是比較好的選擇。當然,如果是簡單使用的話,fastjson 也不錯。

  • Jackson所依賴的jar包較少,簡單易用並且效能也要相對高些。
  • Jackson社群相對比較活躍,更新速度也比較快。
  • Jackson對於複雜型別的json轉換bean會出現問題,一些集合Map,List的轉換出現問題。
  • Jackson對於複雜型別的bean轉換Json,轉換的json格式不是標準的Json格式。
  • Gson是目前功能最全的Json解析神器,Gson當初是為因應Google公司內部需求而由Google自行研發而來。
  • Gson的應用主要為toJson與fromJson兩個轉換函式,無依賴,不需要例外額外的jar,能夠直接跑在JDK上。
  • Gson在功能上面無可挑剔,但是效能上面比FastJson有所差距。
  • Fastjson是一個Java語言編寫的高效能的JSON處理器,由阿里巴巴公司開發。
  • Fastjson無依賴,不需要例外額外的jar,能夠直接跑在JDK上。
  • FastJson在複雜型別的Bean轉換Json上會出現一些問題,可能會出現引用的型別,導致Json轉換出錯,需要制定引用。
  • FastJson採用獨創的演算法,將parse的速度提升到極致,超過所有json庫。

綜上4種Json技術的比較,在專案選型的時候可以使用Google的Gson和阿里巴巴的FastJson兩種並行使用。
如果只是功能要求,沒有效能要求,可以使用google的Gson。
如果有效能上面的要求可以使用Gson將bean轉換json確保資料的正確,使用FastJson將Json轉換Bean。

單元測試庫

常見的單測框架有 JUnit , MockitoPowerMock

Http 庫

HttpClientokHttp 都不錯。JDK11 已經有client的基礎庫,不需要Http庫了。

XML解析庫

Xerces2是下一代高效能,完全相容的XML解析工具,並提供了一個完整、相容標準的 XNI 規範實現。

Excel讀寫庫

Apache POI API 是個很好的選擇。

位元組碼庫

javassistASMCglib Nodep 可以供你選擇。Javassist使得JAVA位元組碼操作非常簡單,建議使用。

資料庫連線池庫

  • 第二代連線池HikariCP 在springboot中已經成為預設選擇,起源於BoneCP,精簡到極致,適合微服務使用。
  • DRUID 是阿里巴巴開源的,擴充套件性比較好,支援SQL攔截,內建監控比較強大,在大型複雜專案中比較建議使用。
  • BoneCP可以備選,不建議用。

訊息傳遞庫

Java提供了JMS Java訊息服務,但這不是JDK的一部分,你需要單獨的引入jms.jar 。如果準備使用第三方訊息傳遞協議, Tibco RV 是個不錯的選擇。

PDF處理庫

iTextApache FOP 類庫來處理。

日期和時間庫

JDK8 之後已經不需要這個了。

集合類庫

Trove可以使用。

郵件API

javax.mailApache Commons Email 提供了傳送郵件的api。它們建立在JavaMail API的基礎上,提供簡化的用法。

HTML解析庫

jsoup吧。

加密庫

Apache Commons家族中的Commons Codec 就提供了一些公共的編解碼實現。比如 Base64, Hex, MD5,Phonetic and URLs

嵌入式SQL資料庫庫

H2Apache DerbyHSQL

JDBC故障診斷庫

P6spy

序列化庫

Google Protocol Buffer

底層網路庫

NettyApache MINA

Jwt

com.auth0 / java-jwt / 3.3.0io.jsonwebtoken / jjwt / 0.9.0 都不錯!

相關文章