Guava之简介

1.介绍

  Guava最初是在2007年作为“Google Collection  Library” 出现的,这个项目在处理Java集合时提供了一些有用的工具,Google的这个guava项目已经成为了java开发人员已经必需的工具包了。这里面含有处理字符串、稽核、并发、I/O和反射的类,Function 接口让我们能够在java中进行函数式编程而且能够简化我们的代码。Supplier接口能够在创建式模式(creational patterns)中起到作用。但是Guava并不仅仅是抽象出了java的引用以及方法,这些我们可以在java编程中用到的。它是能够让我们写出好的代码并且更加的具有弹性更加的明了。所以我们需要做的是不仅仅是使用Guava而且还需要看源代码感受他们是怎么实现的,让后将你学到的引用到自己的代码中去。

2.获取Guava的途径

  如果我们需要在项目中引用Guava,我们可以通过直接添加Jar包,使用Maven工程或者是Gradle工程。(最新的版本是18.0,所以以下都是采用这个版本作为学习的版本)

  获取java包:

http://code.google.com/p/guava-libraries/downloads/list

  maven获取

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>18.0</version>
</dependency>

  gradle获取方式

dependencies {
compile group: 'com.google.guava' name: 'guava' version: '18.0'
}

相关站点:

  Guava在Github上的站点,

https://github.com/google/guava

 Guava官方网站,

http://code.google.com/p/guava-libraries

 Guava API,

http://docs.guava-libraries.googlecode.com/git/javadoc
                    http://www.ostools.net/apidocs/apidoc?api=guava

对于找梯子困难的同学可以使用开元在线提供的API文档

http://tool.oschina.net/apidocs/apidoc?api=guava

 

3.源码包的简单说明

  

com.google.common.annotations:普通注解类型。 
com.google.common.base:基本工具类库和接口。 
com.google.common.cache:缓存工具包,非常简单易用且功能强大的JVM内缓存。 
com.google.common.collect:带泛型的集合接口扩展和实现,以及工具类,这里你会发现很多好玩的集合com.google.common.eventbus:发布订阅风格的事件总线。 
com.google.common.hash: 哈希工具包。 
com.google.common.io:I/O工具包I/O:主要针对jdk中的I/O异常可能会导致数据写失败问题,针对输入源Sources和输出地Sinks构建了更安全的读写及数据流关闭接口 
com.google.common.math:原始算术类型和超大数的运算工具包。 
com.google.common.net:网络工具包。 
com.google.common.primitives:八种原始类型和无符号类型的静态工具包。 
com.google.common.reflect:反射工具包。 
com.google.common.util.concurrent:多线程工具包。

4.选择Guava的原因(更优化、更安全、更丰富)

  

*高效设计良好的API.
*被google的开发者设计,实现和使用。
*遵循高效的java这本书的好的语法实践。
*使代码更刻度,简洁,简单。
*使用java相关的特性,
*它提供了大量相关的应用类,集合,多线程,比较,字符串,输入输出,缓存,网络,原生类型,数学,反射等等
*百分百的单元测试,被很多的项目使用,帮助开发者专注业务逻辑而不是写java应用类
*节省时间,资源,提高生产力
*为基本的java特征提供开源代码的支持,而不是自己再写一个
*Apache Common库-Apache是一个很好的成熟的库,但是不支持泛型,Apache对早起的java版本很有用,(1.5之前的)
*函数式编程functional programming

  

5.通过这些功能的使用的确可以减少我们很多重复的工作量而且可以提交我们的开发效率,接下来我将针对每个包的使用和具体的引用来认真学习下。

  

posted on 2014-11-14 11:11  叼烟斗的纤夫  阅读(1006)  评论(0编辑  收藏  举报