用户指南

Guava包含Google在Java项目中用到的一些核心库:collections, caching, primitives support, concurrency 库, common annotations, string 处理, I/O等。Google工程师们在开发中每天都使用这些工具。

但是,要学习如何用好这些库,通读Javadoc并不是最有效的方法。在这里,我们尝试用一种可读性强、轻松愉快的方法来介绍Guava中最常用和最强大的特性。

这个wiki还在编写过程中,一些部分可能还未完成。

  • Basic utilities: 让编写Java更愉快
    • 使用和避免使用nullnull 含义模糊,可能引起莫名其妙的error,而且就是让人讨厌。很多Guava utilities拒绝盲目使用null。
    • 前置条件(preconditions): 更方便地测试方法的前置条件。
    • Common object方法: 简化Object类方法的实现,如hashCode()和toString()。
    • 排序: Guava强大的"fluent Comparator"类.
    • 抛出异常: 简化exception和error的传递和检验。
  • Collections: Guava对JDK collections ecosystem的扩展。这是Guava最成熟和最常用的部分之一。
    • 不可变collection,支持防御性编程、常量集合使用,也可以提高效率。
    • 新的collection类型,补充JDK collection不够完善的应用场景:multisets, multimaps, tables, bidirectional maps等。
    • 强大的collection utilities,补充java.util.Collections缺乏的常用操作。
    • Extension utilities:要写Collection decorator?实现Iterator接口?我们让这些更方便。
  • Caches: 正确实现的本地缓存,支持多种多样的有效期(expiration)设定。
  • Functional idioms: 谨慎使用Guava的functional idiom可以显著简化代码。
  • Concurrency: 强大而简洁的抽象结构让编写并发代码更简单。
    • ListenableFuture: Future模式,结束时调用回调函数。
    • Service: 只需指定开启和终止,替你管理其他复杂的状态逻辑。
  • Strings: 一些极其有用的string utilities:splitting, joining, padding等。
  • Primitives: 补充JDK中没有的,如int和char等基本类型的操作。包括一些类型的unsigned变体。
  • Ranges: Guava's有强大的API来处理Comparable类型的范围问题,包括值为连续和值为离散的类型。
  • I/O: 简化I/O操作,尤其是在I/O流和文件上。支持Java 5和6。
  • Hashing: 比Object.hashCode()更高级的hash工具,包括Bloom filter。
  • EventBus: Publish-subscribe-style的组件交流,无需组件间显式注册。
  • Math: JDK中没有的,优化后的、彻底测试过的math utilities。
  • Reflection: 提供Java的反射功能的Guava utilities。
  • 小提示: 让你得心应手地运用Guava。
    • 理念: Guava是什么/不是什么,及我们的目标。
    • 在你的build中使用Guava,如Maven, Gradle等管理工具。
    • 使用ProGuard来避免在你的JAR中加入冗余的Guava部件。
    • Apache Commons equivalents,帮助你翻译使用了Apache Commons Collections的代码。
    • 兼容性:Guava各个版本的更新细节。
    • 提议坟场,被彻底否决的特性提议。
    • 友情链接,我们欣赏的其他开源项目。

注意: 要讨论本wiki的内容,请发邮件至guava-discuss mailing list。

中文翻译自Guava官方文档:GuavaExplained - Introduction

[Guava官方文档翻译] 1.Guava简介 (Introduction)的更多相关文章

  1. [Guava官方文档翻译] 7. Guava的Immutable Collection(不可变集合)工具 (Immutable Collections Explained)

    我的技术博客经常被流氓网站恶意爬取转载.请移步原文:http://www.cnblogs.com/hamhog/p/3538666.html ,享受整齐的排版.有效的链接.正确的代码缩进.更好的阅读体 ...

  2. [Guava官方文档翻译] 5. Guava的Object公共方法 (Common Object Utilities Explained)

    我的技术博客经常被流氓网站恶意爬取转载.请移步原文:http://www.cnblogs.com/hamhog/p/3537367.html,享受整齐的排版.有效的链接.正确的代码缩进.更好的阅读体验 ...

  3. [Guava官方文档翻译] 2.使用和避免使用null (Using And Avoiding Null Explained)

    本文地址:http://www.cnblogs.com/hamhog/p/3536647.html "null很恶心." -Doug Lea "这是一个令我追悔莫及的错误 ...

  4. [Guava官方文档翻译] 6. 用Guava辅助Throwable异常处理 (Throwables Explained)

    我的技术博客经常被流氓网站恶意爬取转载.请移步原文:http://www.cnblogs.com/hamhog/p/3537508.html ,享受整齐的排版.有效的链接.正确的代码缩进.更好的阅读体 ...

  5. [Guava官方文档翻译] 4. 使用Guava Ordering排序 (Ordering Explained)

    本文地址:http://www.cnblogs.com/hamhog/p/3537233.html 示例 assertTrue(byLengthOrdering.reverse().isOrdered ...

  6. [Guava官方文档翻译] 3. 前置条件检查(Preconditions Explained)

    本文地址:http://www.cnblogs.com/hamhog/p/3536964.html 前置条件检查 Guava提供了一些检查前置条件的utilities.我们强烈建议静态import这些 ...

  7. Guava文档翻译之 Guava简介

    用户指南 User Guide Guava项目包括了一些Google的核心库,是我们在基于Java的项目中所依赖的,这些库包括:集合,缓存,对基本类型的支持,并发库,通用的注解,字符串处理,I/O,等 ...

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

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

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

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

随机推荐

  1. java常用string inputStream转换

    1.String –> InputStream InputStrem is = new ByteArrayInputStream(str.getBytes()); 或者 ByteArrayInp ...

  2. 教你50招提升ASP.NET性能(十二):在生产环境,仔细考虑你需要记录哪些日志

    (18)When in production, carefully consider what you need to log 招数18: 在生产环境,仔细考虑你需要记录哪些日志 Many peopl ...

  3. 从零学习IOS-VirtualBox-4.3.20-96997-Win

    在virtual box中点击[新建] 发现只有32位的mac可以选择,百度之后才知道需要开启虚拟化,于是重启电脑进入到BOOT,选择高级,然后将虚拟化开启.再重新启动virtual box

  4. liveness 生存性/活性

    翻译了两篇,这篇就不翻译了,自己写吧. 对于线程来说除了安全性,我们还应该重视它的生存性(我认为翻译成三个字说着比較顺). 为了保证线程安全,我们往往须要用到同步,可是同步限制了线程的运行,线程必须为 ...

  5. 《SAS编程与数据挖掘商业案例》学习笔记之十七

    继续读书笔记,本次重点sas sql语句,因为sql内容多且复杂,本文仅仅介绍商业应用中经常使用的而且easy出错的地方,内容包含:单表操作.多表关联.子查询以及merge和join的差别 1.单表操 ...

  6. 50个Android开发技巧(02 延迟载入和避免反复渲染视图)

    当你在Application中创建复杂的布局时.页面的渲染过程也变得更加缓慢. 此时,我们须要利用 <include />标签(避免反复渲染)和 ViewStub类(延迟载入)来优化我们的 ...

  7. 从链接上获取参数值, location.href上获取参数

    /** * 用页面链接上获取参数 * @param {String} name 要获取的参数名 * @return {String} 参数值 */ base.getQueryStringRegExp ...

  8. (手写识别) Zinnia库及其实现方法研究

    Zinnia库及其实现方法研究 (转) zinnia是一个开源的手写识别库.采用C++实现.具有手写识别,学习以及文字模型数据制作转换等功能. 项目地址 [http://zinnia.sourcefo ...

  9. AsyncTask的用法

    在开发Android应用时必须遵守单线程模型的原则: Android UI操作并不是线程安全的并且这些操作必须在UI线程中执行.在单线程模型中始终要记住两条法则: 1. 不要阻塞UI线程 2. 确保只 ...

  10. ping与telnet的区别

    ping 查看某个IP地址是否有效.还可以得出解析IP..评估网络质量.telnet 查看可以PING通IP的机子上的某个端口是否可以进行访问(telnet IP port) ,如果连接失败,可能是防 ...