首页 > 编程语言 >除了Guava,Java开发者还值得了解的5个谷歌类库

除了Guava,Java开发者还值得了解的5个谷歌类库

时间:2022-08-30 11:02:28浏览次数:77  
标签:类库 Guava Java 能够 谷歌 源代码

  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是我们最喜欢的类库之一,它能够帮助我们把那些复杂元素变得更加简单。

标签:类库,Guava,Java,能够,谷歌,源代码
From: https://www.cnblogs.com/ebuybay/p/16638550.html

相关文章

  • Java正确比较浮点数的方法
    https://www.jb51.net/article/199220.htm 看下面这段代码,将d1和d2两个浮点数进行比较,输出的结果会是什么?123doubled1=.1*3;doubled2=.3;......
  • 降低Java垃圾回收开销的5条建议
    保持GC低开销的窍门有哪些?随着一再拖延而即将发布的Java9,G1(“GarbageFirst”)垃圾回收器将被成为HotSpot虚拟机默认的垃圾回收器。从serial垃圾回收器到C......
  • java枚举
    ......
  • Java中Thread类的常用API以及使用示例
    场景Java语言是支持多线程的,一个正在运行的Java程序可以称之为一个进程(process),在每个进程里面包含多个线程,线程是进程中单一的顺序控制流,CPU在执行计算机指令的时候都是......
  • B/S端界面控件DevExtreme JavaScript—全新的UI模板库 (v22.2)
    DevExtreme拥有高性能的HTML5/JavaScript小部件集合,使您可以利用现代Web开发堆栈(包括React,Angular,ASP.NETCore,jQuery,Knockout等)构建交互式的Web应用程序,该套件附带功能......
  • java计算代码段执行时间
    java里计算代码段执行时间可以有两种方法,一种是毫秒级别的计算,另一种是更精确的纳秒级别的计算。一)毫秒级别计算时间longstartTime=System.currentTimeMillis();/*......
  • Java 学生管理系统
    今天简单练习了一下数组和循环的一些知识,写了一个小游戏,大致如下/***一个小功能:学生管理系统*1、添加学生信息*2、显示学生信息*3、删除学生信息*4、修......
  • 你对 JavaScript 中的变量了解多少?
    你知道多少JavaScript中的变量?昨天,当我搞砸了变量时,我正在研究我的开尔文天气项目。该项目需要声明许多变量以将温度程度从一个更改为另一个。因此对于像我这样的Roo......
  • Javascript 中的内存引用
    Javascript中的内存引用Photoby哈里森布罗德本特on不飞溅在本文中,我将尝试通过一个示例练习来解释Javascript中的内存引用是如何处理的,我认为这可以更好地展示......
  • JAVA SE
    注释//adf单行​/*aadf多行adsfadf*/ 关键字&标识符关键字像voidmainpublic这种固定的单词有特殊含义的编写时会变色不能用作类名,变量名方法名标识符......