Guava和Apache-Common的官方wiki

Apache Commons项目由三部分组成:

Commons Proper

Commons Proper致力于一个主要目标:创建和维护可重用的Java组件。

 

Commons Proper是一个协作和共享的场所,来自整个Apache社区的开发人员可以共同协作Apache项目和Apache用户共享的项目。

 

Commons开发人员将努力确保他们的组件对其他库具有最小的依赖性,以便可以轻松地部署这些组件。此外,Commons组件将使其接口尽可能保持稳定,以便Apache用户(包括其他Apache项目)可以实现这些组件,而无需担心将来的更改。

 

Commons Sandbox(沙箱)

       Commons项目还包含一个对所有Apache提交者开放的工作空间。这是一个尝试新想法并准备包含在项目的Commons部分或另一个Apache项目中的地方。用户可以自由地试验沙箱中开发的组件,但不一定要维护沙箱组件,特别是在当前状态下。

 

Sandbox是Comversion提交者的Subversion存储库,可用作共享和协作的开放工作空间·

 

如果有一个明确的计划升级到Commons Proper并且有一个活跃的现有提交者组正在处理组件,则认为Sandbox组件是活动的。

 

如果最近几乎没有开发活动,并且没有出现任何个人或一组个人通勤者来支持Commons Proper的最终推广,Commons Sandbox组件被认为处于休眠状态。请参阅Commons 休眠组件 网页,以获取当前被认为处于休眠状态的Commons组件列表。

 

如果在持续的时间段内没有活动开发,则Commons Sandbox组件被视为无效。

Commons Dormant(休眠组件)

这些Commons组件被认为是不活跃的,因为他们最近几乎没有看到开发活动。如果您想使用这些组件中的任何一个,您必须自己构建它们。最好假设这些组件不会在不久的将来发布。

 

如果一个或多个提交者有兴趣获取组件的开发并致力于向Commons Proper的升级,则可以将Commons Dormant组件恢复到Commons Sandbox。

 

 

Guava 介绍

Guava项目包含在基于Java的项目中依赖的几个Google核心库:集合,缓存,基元支持,并发库,通用注释,字符串处理,I / O等。Google员工每天都会在生产服务中使用这些工具。

 

Guava的目标是使Java语言的工作更加愉快和高效。JDK实用程序(例如Collections API)已被广泛采用,并且几乎简化了所有Java代码。

 

GuavaMaven IDcom.google.guava     

工件ID guava

为什么使用GUAVA:

1、Guava已经在谷歌的生产中经过了严峻的考验。

2、番石榴的单元测试数量惊人:截至2012年7月,番石榴测试包中包含超过286,000个单独的测试用例。其中大部分是自动生成的,不是手工编写的,但是Guava的测试覆盖范围非常彻底,特别是对于com.google.common.collect。

3、Guava正在积极开发中,拥有强大,声音和参与的用户群。

 

Guava两种分类:

  1. JRE风格,需要JDK1.8或更高
  2. 如果您需要支持JDK 1.7或Android,请使用Android风格。可以在android目录中找到Android Guava源

 

<dependency>

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

  <artifactId>guava</artifactId>

  <version>27.1-jre</version>

  <!-- or, for Android: -->

  <version>27.1-android</version>

</dependency>

 

给guava用户的重要警告:

1@Beta在类或方法级别使用注释标记的API 可能会更改、甚至删除,使用Guava Beta Checker(可以通过MAVEN放的插件的方式使用)以确保您不使用任何@BetaAPI   https://github.com/google/guava-beta-checker

 

2、会在出现意外情况时(例如严重的安全问题)删除非@Beta API21.0时候出现过一次。

  1. maven中有一个com.google.guava:failureaccess:1.0 ,这个依赖单独提了一下
  2. 未来对象的序列化形式会有变化
  3. 不要恶意使用
  4. 仅在Linux上使用OpenJDK 1.8对库进行单元测试。某些功能(尤其是某些功能)com.google.common.io可能无法在其他环境中正常运行。对于Android风格,我们的单元测试在API级别15上运行。

Guava新增功能遵循的设计原则

       当有疑问时,Guava添加功能方面保守一些。Guava位于底层的堆栈之中,在不破坏用户的情况下删除功能非常困难,因此我们倾向于推迟添加我们不确定的功能。(有时,将试用“Google内部”功能,可以自行将用户从故障功能迁移出去。)

Guava添加的功能是:

1、为您节省大量代码

2、避免强迫你编写难以调试的代码,或者容易出错

3、提高可读性

4、提高速度

Guava一般设计原则是:

1、如果我们不确定这是该工作可能的最佳API,请在我们确定之前再考虑一下。

 

2、方法和类的语义应该从其签名(signatures)中明显和直观,而不是“智能”。在特殊情况下,内部实现可以做聪明的事情,但这些特殊情况的语义应该是相同的。

 

3、在Guava用户中鼓励良好的代码习惯,并在Guava源代码中体现良好的代码习惯。(这有很多推论,包括“快速失败”,“拒绝无效”等。)

 

4、不要试图单独解决每个用例 - 提供可以组成的通用工具来解决我们还没有想到的用例。

5、强调可维护性,并为将来的重构留出空间。(推论:final根据Effective Java第17项,大多数暴露的类应该是暴露“骨架” AbstractXXX类应该非常保守地完成。)

 

Guava迭代

总结:Guava团队会删除原来代码,每个版本都会是最佳版本。

 

与JDK相比 - 即使出现最严重的错误,它仍保持极其严格的向后兼容性 - Guava不赞成,随着时间的推移删除不需要的功能。对我们来说很重要的是,当你在Javadocs中看到一个特征时,它代表了番石榴团队的最佳作品。

但是,我们确实努力确保我们不会肆意破坏用户。如果我们还没准备好某些特定组件的API,无论出于何种原因,我们都会将该组件标记为@Beta。有关这方面的更多细节如下。

Beta API

@ Beta API经过全面测试和支持,并受到了Guava其余部分所接受的所有关心和喜爱。

 

@Beta注释的最大内涵是带注释的类或方法可能会发生变化。它们可以随时以任何方式进行修改,甚至可以删除。若防止Guava删除,可以自己打包使用。

Beta API

没有的API @Beta将无限期地保持二进制兼容。出现严重问题。会在出现意外情况时(例如严重的安全问题)删除非@Beta API,21.0时候出现过一次。

 

      

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值