Guava 是谷歌基于Java1.6的一个类库集合的扩展项目,包含了许多谷歌核心的 Java 常用库。除开Guava,还有一些谷歌的常用Java类库也值得我们关注,本文列出了其中的五个类库。
Guice是一个轻量级的依赖注入(DI)Java框架,它扮演着与Spring的内核控制反转(IOC)库作用相似的角色。它和Guava一样流行,它能够缓解对工厂模式(factories)的需求并简化代码中new的使用。用谷歌自己的话说,Guice的注入是为new进行new操作。
这个库无法让你彻底摆脱工厂模式,但是它能够确保你的代码可以不直接依赖于它们。通过这种方式,你能够更加方便的进行单元测试和代码重用。
闪光点:
这个库旨在使开发和调试的过程更快更容易,使你能够更好的理解自己的代码。此外,Guice还提供了一个很酷的功能:当错误发生时,它会生成一段有用的信息,告诉你到底发生了什么问题以及该如何解决这些问题。
这个开源库是用于Java的静态分析工具,它能够让你在编译的时间捕捉普通的程序错误。团队中再优秀的成员也有可能因为其它的事情分心而导致错误出现,而这个工具可以帮助你在程序错误扰乱应用程序之前就及时捕捉到它。
比如,它能够检测到设计模式的所出现的Bug:CannotMockFinalClass——显示Mockito无法模拟最终类。
闪光点:
在官方的类库页面你可以找到一些常见错误和它们的建议修复的列表。这意味着每个错误都已经有了一个成熟的解决方案,因此,你可以在自己的代码中轻松的实现它。
Truth是一个可帮助你增加关于测试和错误信息可读性及可发现性的测试框架。它能够生成一些关于错误的有意义的信息,报告测试失败的原因并将信息扩展到新的对象类型中。就好像是自带一段警句:“我们曾在这个问题上犯了一个策略上的错误”。
你可以使用Truth来替代JUnit的断言(assertions),FEST框架以及Hamcrest的matchers类,或者简单的用于你代码需要的地方,还可以用来声明JUnit风格的假设(跳过失败的测试)、断言和异常。
Kythe提供支持工具和标准来鼓励(可控制源代码的)程序集间的互操作性(包括分享,交流,使用系统间的信息)。简而言之就是这个库能够提供一个(作用于源代码的)构建工具的生态系统。
这个库的主要目的是提供一个能够作用于任何源代码上的,标准的,与语言无关的交换机制,它包含了构建系统、编译器、解释器、静态分析、编辑器、代码复审程序等东西。因此,你可以与任何其它系统分享信息。
闪光点:
Kythe拥有一个能够回答你任何相关问题的资源丰富的社区。如果你想获取Kythe在Python、JavaScript和Java方面的帮助或者是想知道如何建立Python的模块,再或者只是简单的想了解一下Kythe,你都可以访问这个社区。
Protobuf,这个库也被称为Protocol Buffers,是谷歌用于结构数据序列化与语言、平台无关的可扩展机制。如果你不能了解它的含义,谷歌向你类比:Protobuf就像XML,只不过更小,更快更简单。
如果我们选择一句口号来形容这个库,就是“一次构建,随处可用”,这也是形容它最贴切的方式。一旦你定义想要的数据结构,你可以使用特殊生成的源代码来读写各种数据流和语言。
闪光点:
protobuf是我们最喜欢的类库之一,它能够帮助我们把那些复杂元素变得更加简单。