Java下好用的開源庫推薦


作者:Jack47

轉載請保留作者和原文出處

歡迎關注我的微信公眾賬號程序員傑克,兩邊的文章會同步,也可以添加我的RSS訂閱源

2017-4-6 更新: Google搜索 awesome java, 你會看到眾多程序員參與維護的優秀Java編程庫列表。學好英語,用Google搜索,否則我們就只能在中文的局域網里翻閱別人寫的二手資料了。

本文想介紹下自己在Java下做開發使用到的一些開源的優秀編程庫,會不定期更新。

使用這些開源的類庫,幫助非常大,能夠節約你的寶貴時間,減少你出錯的可能,讓你把時間都集中在處理自己獨特的業務邏輯上。同時可以多看看這些優秀的開源庫,向他們學習,能夠幫助你設計更好的API,讓你的代碼更易讀,更整潔,更簡單,因為這些API自身就是很好的例子。

Guava##

Guava[ˈgwɑːvə]。它包含了Google在Java項目中使用一些核心庫,包含集合(Collections),緩存(Caching),並發編程庫(Concurrency),常用注解(Common annotations),String操作,I/O操作方面的眾多非常實用的函數。Guava需要JDK1.6及以上版本。

Guava庫是按照Joshua Bloch的 <<Effective Java: 2nd Edition>>來寫的,不可變性(不可變的集合,CharMatcher,Joiner, Splitter等),構造者模式(ImmutableList.builder(), Joiner, Ordering等),范型等隨處可見,使用工廠而不是構造函數(Maps.newHashMap()),鍾情於組合而不是繼承(ForwardXXX這類集合)。

我專門寫過 Google Java編程庫Guava介紹

5 Reasons use Guava

Guava和Apache庫之間的對比

Friends of Guava

Joda Time

Joda-Time:
Java 8之前提供的標准的日期(Date)和時間(Time)類非常爛。現在Java下Joda Time已經成為了標准,進入了 Java 8中的java.time。Joda-Time的API相當簡單,支持很多日歷系統,對時區(time zone),時間間隔(duration),格式(format)和解析(parsing)的支持也相當贊。

Joda Time 5分鍾上手手冊

Apache Commons

Apache Commons項目目的是從各個方面提供可復用的Java編程組件。里面包含了很多很多組件,我用到的主要有:

Codec
	提供了常用編碼和解碼的函數實現,例如Base64, Hex
		
CLI
	提供了一個非常方便的命令行參數解析器,幾行API調用就可以搞定命令行參數解析

Metrics

Metrics以前叫Coda Hale Metrics。如果你需要關注程序內部的一些性能或業務指標,需要統計數據,Coda Hale Metrics都可以幫你搞定,包括JDBI,Jersey,Jetty,Log4j,JVM內部性能指標。如果需要定制自己的指標,你所需要做的就是兩件事情:

  1. 注冊你的監控數據的類型
  2. 加入監控的埋點

Metrics支持5種數據類型:Meter(事件發生的頻率,例如QPS), Gauge(值的大小), Counters(計數器), Histogram(計算值的統計分布), Timer(耗時)。其中 Meter支持 1min,5min,15min內平均值,由於是通過采樣來統計的,所以性能開銷很小。Gauge支持最大值,最小值,平均值和標准差,同時也支持5種分點數據:75,90,98,99,99.9分點。

Metrics支持JMX匯報,HTTP匯報(自帶了一個簡單的Servlet,可以提供JSON表示注冊的所有監控數據),也可以使用終端,文件來輸出CSV格式的數據,也可以支持Ganglia和Graphite所需的格式類型。

Kafka消息隊列,流式處理數據的Storm,都在用Metrics作為監控數據的收集系統。

SLF4J

SLF4J

SLF4J全稱是Simple Logging Facade for Java,即簡單日志門面。它對眾多的日志框架做了抽象,提供統一的日志API,用戶可以通過classpath指定SLF4J最終使用的日志框架,這樣就可以在運行時才決定使用哪個日志后端,例如Logback,log4j等。這樣做的好處是讓應用程序和特定的日志框架之間解耦合。當你需要和第三方代碼庫或者已經決定了日志框架選型的項目做集成時,這個特性會非常方便。

SLF4J使用手冊只有區區兩頁。

PowerMock

PowerMock

單測Mock工具庫PowerMock與同類的工具Mockito, EasyMock, jMock都很相似,都是為了簡化單元測試過程中測試上下文的搭建而開發的工具。可以極大地簡化單元測試的書寫過程,可以實現對靜態函數、構造函數、私有函數、Final函數一季系統函數的模擬。這樣可以大大提高單測的效率及單測代碼的可讀性。
PowerMock使用定制化的類加載器(class loader)和字節碼(bytecode)操作技術,而不是用反射的機制。

Byte Buddy

Drawing

Byte Buddy是一個用來在Java應用程序運行過程中產生Java class的代碼生成庫。Byte Buddy的目的是通過領域專用語言(DSL)來把生成字節碼的過程隱藏起來。這樣使用Byte Buddy時就不需要知道底層的Java字節碼和類文件的格式了。


如果您看了本篇博客,覺得對您有所收獲,請點擊右下角的“推薦”,讓更多人看到!
資助Jack47寫作,打賞一個雞蛋灌餅吧
pay_weixin
微信打賞
pay_alipay
支付寶打賞


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM