Guava作为Java编程的助手,可以提升开发效率,对Guava设计思想的学习则极大的有益于今后的编程之路。故在此对《Getting Started with Google Guava》一书进行翻译并实战,未予审校,错误之处请大家不吝赐教。

全文目录如下:

1.    入门    2

1.1. Guava简介    2

1.2. Guava使用实例    2

1.3. 本书是关于什么的?    3

1.4. Guava安装    3

1.5. 通过Maven或者Gradle管理Guava    3

1.6. 获取书中源码    4

1.7. 总结    5

2.    Guava基本工具    5

2.1. Joiner类    5

2.2. 回顾    7

2.3. Splitter类    7

2.4. 回顾    9

2.5. Guava中使用字符串    9

2.6. Charsets类    9

2.7. Strings类    10

2.8. CharMatcher类    10

2.9. Preconditions类    12

2.10. 对象工具    13

2.11. 总结    15

3.    Guava函数式编程    15

 

Google Guava入门

前言

目前,在软件行业内,Java仍然是最主要的开发语言之一,受欢迎程度依然保持着。Java的一个优势是其开发人员可以获取丰富的第三方库,帮助开发人员更加高效的编码。Guava就是一个很棒的库,在开发活动中给予开发者极大的提升。此外,随着我们开始使用Guava,我们将获得很多灵感,用于自己代码的实现。

本书覆盖的内容

第一章,介绍Guava,此外给出使用Guava的例子;

第二章,基本的Guava工具,包括使用字符串和对象的基本功能;

第三章,Guava函数式变成,介绍Guava提供的函数式编程特性;

第四章,使用集合,包括增强现有Java集合功能的工具和类;

第五章,并发,展示了如何通过使用Guava的并发抽象化帮助我们更好的编写并发代码;

第六章,Guava缓存,介绍Guava缓存,包括一个自加载缓存;

第七章,EventBus类,通过它完成基于事件的编程;

第八章,使用文件类,展示了Guava如何极大地简化文件的读写;

第九章,零碎工作覆盖了规避null的Optional类,哈希函数,BloomFilter数据结构。

 

入门

本章涵盖了一些Guava的历史,然后我们会写一个例子,说明为什么你需要一个成熟的库而不是从头开始自己写。我们会说明在哪可以获得Guava库,如何安装,最好,如何启动本书所带的源码。

Guava简介

什么是Guava?Google Guava源于2007年的"Google Collections Library",提供使用Java集合的工具,已经进化为Java开发者的基础工具箱。Guava拥有对很多人有用的一些东西。如与字符串、集合、并发、I/O和反射的协作的类。Function接口提供了Java函数式编程的能力,并且极大地简化了代码。Suppier接口帮助creational pattern(23种设计模式之一)。但是,Guava不仅仅是从Java中提取的一些样板的抽象化,或者一些我们都认为在Java中自带的便利方法。Guava涉及编写良好的代码,促使代码更有弹性、更加简洁。所有建议不仅仅是使用Guava,更要读一下它的源码,学习运行的原理。然后将同样的准则用于自己所写的代码之中。最后,祝大家学的愉快!

Guava使用实例

作为软件开发者,我们认为可以做所有的事情。我们本能地希望写属于自己的库,这些库用于处理我们日常的事务。当然,我们认为自己写的代码是刀枪不入的,并且我们了解为何写单元测试,并且能够通过。这里,我有些不好的消息告诉大家,我们并没有自己想象的那么优秀。实际上呢,这与聪明程度无关,更多的是我们所写的代码不是不仅仅需要通过单元测试,还要被很多开发者所使用并在代码中将他们的需求衡量进来。Guava被用于数以百计的生产环境应用,截止2012年7月,在guava-tests包里有惊人的28600个独立单元测试。归根结底其实使用像Guava这样的库远远好于自己写。此外,据Larry Wall(Perl的作者)所言,软件工程师最好的品质之一就是"懒惰",不是不想工作的意思,而是在可以良好运行的情况下不去重新改造车轮。真正优秀的程序员在开始自己写程序时会寻找已有的库来解决遇到的问题。

本书是关于什么的?

本书的目标是当你coding时总是会将它放在"手"边。当遇到需要使用Guava中的内容解决的状况或者Guava可能拥有解决你遇到的问题的方法时,我们期望本书能够给你答案。如果美誉哦,最少能够指引你到对的方向上。本书涵盖的所有话题都有源码。多数时候,源码是单元测试的形式。有时提出的一些有意义的例子可能是不同的形式,单元测试可以快速地展示代码工作的原理。并且随着Guava发布计划趋于频繁,单元测试是无价的,如果内容与之前的版本相比有变化,运行这些测试给你快速的指示。然而覆盖所有Guava库所有的部分几乎不可能,我们尽可能使本书全面并且覆盖典型的程序员认为有用的内容。最后我们希望本书易于阅读、提供乐趣、实用性强。

Guava安装

开始使用Guava之前,需要安装Java 1.6或更高的版本。本书使用的Guava是版本14,是撰写时最新的版本。下面是开始Guava的执行步骤:

  1. Guava在https://code.google.com/p/guava-libraries/ 上可以下载到guava-14.jar。
  2. 如果使用GWT(Google Web Toolkit,Java编写AJAX前端)并且希望在代码中应用Guava,可以下载GWT兼容版本guava-gwt-14.jar。因为标准版本不会通过GWT编译器编译成JavaScript。
  3. JAR文件下载之后,作为第三方库添加进IDE(IntelliJ, NetBeans, Eclipse)。如果使用的是文本编辑器(Sublime Text2或者TextMate),添加JAR文件路径进classpath。
  1. API文档位于http://docs.guava-libraries.googlecode.com/git-history/release/javadoc/index.html。

现在准备工作就做好了,可以开始使用Guava了。

通过Maven或者Gradle管理Guava

可以使用Maven或者Gradle这样的构建工具来使用Guava。

在Maven项目中使用Guava,在pom.xml中添加如下的依赖:

<dependency>

    <groupId>com.google.guava</groupId>

    <artifactId>guava</artifactId>

    <version>14.0</version>

</dependency>

如果使用的是Gradle,首先添加Maven中心仓库(如果还没有添加的话),即在build.gradle文件中添加如下内容:

repositories {

mavenCentral()

}

然后,在build.gradle文件添加以下的依赖节点:

dependencies {

compile group: 'com.google.guava' name: 'guava' version: '14.0'

}

获取更多关于Maven的信息,参考http://maven.apache.org/,Gradle信息请参考http://www.gradle.org/。

十分有必要提到,Guava仅有一个依赖,JSR-305。

【JSR-305是Java语言中定义用于检测缺陷的注解的规范。更多内容参考http://jcp.org/en/jsr/detail?id=305。】

如果你不打算直接使用JSR-305JAR,可以不用在依赖中包含。如果打算使用JSR-305,必须显示地声明这一依赖,因为它不会自动地被拉进来。如果你打算在Scala中使用,必须包含JSR-305JAR文件。Java编译器在编译时不需要这个库包含注解,但是Scala编译器需要。将来这一现象可能会变化,截至目前,如果打算在Scala中使用Guava,必须在classpath中包含JSR-305JAR文件。

获取书中源码

书中源码以Java工程进行组织,符合Gradle或者Maven的结构。之前提到过,大部分源码是单元测试的形式。如果没有安装Gradle或者Maven,强烈建议安装其中一个,运行单元测试会变得轻松,拉取Guava和工程所需的一切依赖。

以下是获取和使用源码的步骤:

  1. 下载源码http://www.packtpub.com/support;
  2. 解压缩;
  3. 进入guava-book-code文件夹下;
  4. 如果安装了Gradle,运行gradle install;
  5. 如果安装了Maven,运行mvn install。

上述步骤会安装源码所需的Guava和依赖。如果一切顺利,你会看到一大波单元测试被执行并通过。强烈建议使用之前提到的构建工具。这样在修改Guava版本和运行书中测试的时候会很轻松,看看是否有变化。如果没有安装构建工具,你需要下载一下的依赖才能运行书中列出的例子。

  • Lucence v4.2: http://lucene.apache.org/
  • Spring Java Version 3.2: http://www.springsource.org/springframework
  • H2(embedded database) v1.3.170: http://www.h2database.com/html/main.html
  • JUnit v4.11: https://github.com/junit-team/junit/wiki/Downloadand-Install

书中源码在MacBook Pro v10.7.5,Java 7,Gradle构建系统,IntelliJ IDE环境下完成。

总结

到目前为止,我们重温了一下Guava简短的历史和它如何提高代码质量、简化工作。我们认识到使用一个测试充分的库而不是自己从头开发的重要性。最后,我们提到从哪获得Guava,如何安装,如何下载源码。下一章,我们开始探索Guavacom.google.common.base包中的工具类和com.google.common.collect包的ComparisonChain类。

Google Guava入门(一)的更多相关文章

  1. Google Guava入门教程

    以下资料整理自网络 一.Google Guava入门介绍 引言 Guava 工程包含了若干被Google的 Java项目广泛依赖 的核心库,例如:集合 [collections] .缓存 [cachi ...

  2. Google Guava新手教程

         以下资料整理自网络 一.Google Guava入门介绍 引言 Guavaproject包括了若干被Google的 Java项目广泛依赖 的核心库,比如:集合 [collections] . ...

  3. Guava入门使用教程

    Guava入门使用教程 Guava Maven dependency In our examples, we use the following Maven dependency. <depen ...

  4. java开发人员,最应该学习和熟练使用的工具类。google guava.(谷歌 瓜娃)

    学习参考文章: http://blog.csdn.net/wisgood/article/details/13297535 http://ifeve.com/google-guava/ http:// ...

  5. [转]Google Guava官方教程(中文版)

    Google Guava官方教程(中文版) http://ifeve.com/google-guava/

  6. Google Guava官方教程(中文版)

    Google Guava官方教程(中文版) 原文链接  译文链接 译者: 沈义扬,罗立树,何一昕,武祖  校对:方腾飞 引言 Guava工程包含了若干被Google的 Java项目广泛依赖 的核心库, ...

  7. Google Guava vs Apache Commons for Argument Validation

    It is an established good practice to validate method arguments at the beginning of the method body. ...

  8. 使用 Google Guava 美化你的 Java 代码

    文章转载自:http://my.oschina.net/leejun2005/blog/172328 目录:[ - ] 1-使用 GOOGLE COLLECTIONS,GUAVA,STATIC IMP ...

  9. Google Guava之--cache

    一.简介 Google Guava包含了Google的Java项目许多依赖的库,如:集合 [collections] .缓存 [caching] .原生类型支持 [primitives support ...

随机推荐

  1. Bind,Options读取配置到C#实例

    首先创建一个网站 Asp.net Core Mvc 空网站 起名叫做OptionsBindSample 通过Option和Bind将Json文件里面的配置转成C#里面的一个实体,相互之间映射起来 Bi ...

  2. vs2013使用git报错

    之前使用的是个人git账号,先转换为公司git账号,在同步时报Response status code does not indicate success: 403 (Forbidden) 上述问题是 ...

  3. thinkphp5使用第三方没有使用命名空间的类库

    特别注意的是,如果你需要调用PHP内置的类库,或者第三方没有使用命名空间的类库,记得在实例化类库的时候加上 \ // 错误的用法 $class = new stdClass(); $xml = new ...

  4. 微信授权登录(OAuth2.0)-- 随记

    1.OAuth2.0简介 OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. 允许用户 ...

  5. OpenCV3的配置(VS2015)

    1:首先下载和解压到给定的目录 2:设置环境变量...\build\x64\vc14\bin 3:打开VS,新建一个项目,再添加一个代码,刚开始当然是报错的 #include<opencv2\o ...

  6. docker镜像的分层结构三

    docker的镜像分层 docker里的镜像绝大部分都是在别的镜像的基础上去进行创建的,也就是使用镜像的分层结构. 实验 比如说使用dockerfile去创建一个最简单的hello镜像.创建好对应的d ...

  7. JS——制作简单的网页计算器

    用JS做了一个简易的网页计算器 <!DOCTYPE html> <html lang="en"> <head> <meta charset ...

  8. Siverlight5 3D 中文环境搭建

    一.测试环境 vs2010旗舰版 win7 64位旗舰版 二.必备工具 1.vs2010 旗舰版 2.vs2010 sp1 补丁 3.silverlight5 tools 也可以去silverligh ...

  9. 一次Zookeeper 扩展之殇

    一.背景 基于公司发展硬性需求,生产VM服务器要统一迁移到ZStack 虚拟化服务器.检查自己项目使用的服务器,其中zookeeper集群中招,所以需要进行迁移. 二.迁移计划 为了使迁移不对业务产生 ...

  10. Java实例学习——企业进销存管理系统(3)

    Java实例学习--企业进销存管理系统(3) (本实例为书上实例,我所记录的是我的学习过程) 开始时间:2月12日 完成时间:暂未完成 2月16日-公共类(Item公共类,数据模型公共类,Dao公共类 ...