Guava 1:概覽

1、引言

都說java是開源的,可是除了JDK外,能堅持更新且被普遍承認的開源jar包實在是不可多得。其中最顯眼的天然是guava了,背靠google天然底氣十足,今天就來解開guava的面紗,初探一下這個美妙的傢伙。html

附上自學guava網址:官方github  本文以guava-22.0.jar爲源碼分析。java

2、概述

1.包名速讀 

com.google.common.annotations:普通註解類型。
com.google.common.base:基本工具類庫和接口。
com.google.common.cache:緩存工具包,很是簡單易用且功能強大的JVM內緩存。
com.google.common.collect:帶泛型的集合接口擴展和實現,以及工具類,這裏你會發現不少好玩的集合。
com.google.common.eventbus:發佈訂閱風格的事件總線。
com.google.common.graph:對「圖」數據結構的支持。
com.google.common.hash: 哈希工具包。
com.google.common.io:I/O工具包。
com.google.common.math:原始算術類型和超大數的運算工具包。
com.google.common.net:網絡工具包。
com.google.common.primitives:八種原始類型和無符號類型的靜態工具包。
com.google.common.reflect:反射工具包。
com.google.common.util.concurrent:多線程工具包。
com.google.common.escape:提供了對字符串內容中特殊字符進行替換的框架,幷包括了Xml和Html的兩個實現。
com.google.common.html:HtmlEscapers封裝了對html中特殊字符的替換。
com.google.common.xml:XmlEscapers封裝了對xml中特殊字符的替換。git

其中比較經典的有cache,collect,eventbus,concurrent。其它的是比較簡單易懂的工具類,不用深讀。github

 

2.官方介紹(wiki)

目前一共14個小模塊,後續慢慢添加源碼剖析連接。編程

1. 基本工具 [Basic utilities]

讓使用Java語言變得更溫馨緩存

1.1 使用和避免null:null是模棱兩可的,會引發使人困惑的錯誤,有些時候它讓人很不舒服。不少Guava工具類用快速失敗拒絕null值,而不是盲目地接受網絡

1.2 前置條件: 讓方法中的條件檢查更簡單數據結構

1.3 常見Object方法: 簡化Object方法實現,如hashCode()和toString()多線程

1.4 排序: Guava強大的」流暢風格比較器」併發

1.5 Throwables:簡化了異常和錯誤的傳播與檢查

2. 集合[Collections]

Guava對JDK集合的擴展,這是Guava最成熟和爲人所知的部分

2.1 不可變集合: 用不變的集合進行防護性編程和性能提高。

2.2 新集合類型: multisets, multimaps, tables, bidirectional maps等

2.3 強大的集合工具類: 提供java.util.Collections中沒有的集合工具

2.4 擴展工具類:讓實現和擴展集合類變得更容易,好比建立Collection的裝飾器,或實現迭代器

3. 圖[Graphs]

 圖數據結構相關的支持

4. 緩存[Caches]

Guava Cache:本地緩存實現,支持多種緩存過時策略

5. 函數式風格[Functional idioms]

Guava的函數式支持能夠顯著簡化代碼,但請謹慎使用它

6. 併發[Concurrency]

強大而簡單的抽象,讓編寫正確的併發代碼更簡單

5.1 ListenableFuture:完成後觸發回調的Future

5.2 Service框架:抽象可開啓和關閉的服務,幫助你維護服務的狀態邏輯

7. 字符串處理[Strings]

很是有用的字符串工具,包括分割、鏈接、填充等操做

8. 原生類型[Primitives]

擴展 JDK 未提供的原生類型(如int、char)操做, 包括某些類型的無符號形式

9. 區間[Ranges]

可比較類型的區間API,包括連續和離散類型

10. I/O

簡化I/O尤爲是I/O流和文件的操做,針對Java5和6版本

11. 散列[Hash]

提供比Object.hashCode()更復雜的散列實現,並提供布魯姆過濾器的實現

12. 事件總線[EventBus]

發佈-訂閱模式的組件通訊,但組件不須要顯式地註冊到其餘組件中

13. 數學運算[Math]

優化的、充分測試的數學工具類

14. 反射[Reflection]

Guava 的 Java 反射機制工具類

 

 

==參考==

https://github.com/google/guava/wiki

https://www.cnblogs.com/peida/archive/2013/06/08/3120820.html

相關文章
相關標籤/搜索