如何提高架构的稳定性、可扩展性和易用性等能力?点击看大咖分享 了解详情
写点什么

GS Collections 迁移到了 Eclipse 基金会

  • 2016 年 1 月 26 日
  • 本文字数:2257 字

    阅读完需:约 7 分钟

Eclipse 基金会和 Goldman Sachs 已经宣布联合经营,将流行的 GS Collections 开源框架开发迁移到 Eclipse。该迁移预期早在 2015 年 12 月下旬完成,当时在 Maven Central 出现了前者 com.gs.collections 的克隆,拥有一个重新命名的称呼 org.eclipse.collections eclipse-collections-api

InfoQ 就两者之间的新关系采访了 GS Collections 创作者 Donald Raab。

InfoQ:做出这一迁移的原因是什么?

Raab:过去四年我们已经看到 GS Collections 的应用得到了稳定的增长。自从在 GitHub 上发布 GS Collections 后我们已经被多次问到是否接受外部对此框架的贡献。在这之前,答案都是“不接受”。随着 Eclipse Collections 的到来,现在这个问题得到了一个确切的答案,“接受”。如果开发人员想贡献 Eclipse Collections,对此我们有一个良好定义的流程。就在 JavaOne 2015 会议前,我们在我们的 gs.com/engineering 网站上宣布了向 Eclipse 基金会的迁移。通过与 Eclipse 基金会的合作,我们希望围绕 Eclipse Collections 项目发展一个充满活力、开放的贡献者和提交者社区。为帮助我们实现这一目标,Eclipse 基金会提供了一套成熟的流程和工具。

InfoQ:你能给我们说说这次迁移的进展吗?

Raab:Goldman Sachs 作为解决方案成员加入 Eclipse 基金会,我们在 2015 年 10 月提交了 Eclipse Collections 的项目建议。我们在2015 年12 月完成了 GS Collections 向 Eclipse 基金会的迁移,并更名为 Eclipse Collections 。我们将包从 com.gs.collections 更名为 org.eclipse.collections,但是保留了版本号,因此 GS Collections 7.0 迁移成为 Eclipse Collections 7.0。

InfoQ:它们完全一样吗?

Raab:是的,GS Collections 7.0 和 Eclipse Collections 7.0 之间的特性完全一样。

InfoQ:跟我们谈谈集合,什么使得 Eclipse Collections 不同于其它流行的集合框架,比如 java.util Collections、Google Guava 或者 Apache Commons Collections?

Raab:Eclipse Collections 具有其他每个框架一样的共同特性,同时,也有它独一无二的特性。适用范围和完整性是 Eclipse Collection 独特的地方。

受 Smalltalk Collections 协议的启发,Eclipse Collections 提供了丰富的功能 API。在我们的父接口 RichIterable 有超过 100 种可用的方法,大部分都是我们的类型扩展。

Eclipse Collections 提供标准 JDK Collections 类的优化替代,比如 ArrayList、HashSet 和 HashMap。除了丰富的功能 API,我们还希望为这些类提供更高内存使用率和更高性能的版本。我们也希望提供内存使用率不可变的集合和原生集合(primitive collections)。

Eclipse Collections 7.0 支持 Java 5 及以上版本,因此你现在就可以使用 Eclipse Collections,并且,升级到 Java 8 就可以在当前的 Java IDE 中使用自动重构了。

InfoQ:最引人注目的集合和特性有哪些,你给大家举一些例子吧

  • 我们对 Map、Set、Bag(一种无序列表)和 Multimaps 有更高内存使用率的实现。
  • 直接在集合使用贪婪迭代模式的丰富的 API。(无“小面包式”的操作,因为一块肉总需要两片面包来夹,所以我们这么来叫它)
  • 具有丰富的 API 的原生集合。
  • 优化的并行的惰性和贪婪 API。
  • 具有约定了不可变接口的不可变集合(无可变方法)。
  • 适用于所有容器类型的简洁一致的工厂。
  • 可多次使用的惰性迭代器。
  • 我们 kata 风格的教程,通过不断重复的实践帮助磨练我们的技能。

因为我们实现的是 java.util 的 Collection 接口,因此可以自由获取 Streams。Eclipse Collections 欢迎任何社区来做出贡献。

InfoQ: GSC 是何时开始的?

Raab:在 2004 年,GS Collections 作为一种框架于 Goldman Sachs 内部开始开发,名字叫做 Caramel。

InfoQ:何时对外开放的?

Raab:GS Collections 于 2012 年 1 月在 GitHub 上发布。GS Collections 于 2015 年 12 月在 GitHub 上发布。

InfoQ:有多少 GS 开发人员此框架做出了贡献

Raab:这么多年大约有 40 名 Goldman Sachs 开发人员对 Caramel 做出了贡献。

InfoQ:这种合作对 GS Collections 未来的方向有何影响?

Raab:GS Collections 7.0 版本是 GS Collections 最新的特性版本,在 Apache 2.0 协议下,Goldman Sachs GitHub 账户和 Maven Central 的 GS Collections 仍然可用,但是只会修复些 bug 了。未来所有的特性开发和版本都将放在 GihHub 上的 Eclipse 基金会的 Eclipse Collections 上。如今我们已经成功迁移到了 Eclipse 基金会,所有的开发工作都将在 GitHub 上开放地完成,Eclipse Collections 之后版本的 规划路线图也将向大家保持透明。在 Eclipse Collections 8.0 版本中,我们将开始直接在类库中利用 Java 8 的特性。Eclipse Collections 7.x 的版本将是最后支持 Java 5-7 的版本。

InfoQ:你能分享一些使用现状吗?

Raab:它在 Goldman Sachs 的使用非常频繁。在公司我们有三到四千名 Java 开发人员。随着 2015 年 12 月底 7.0 版本在 Maven Central 的发布,GS 团队已经开始升级到 Eclipse Collections 了。

在公司之外,很难度量使用量,但是在 GS Collections GitHub 库中,目前我们已经收到 1430 多个赞了,并且在 Maven Central 上每月有 20K 的下载量。

查看英文原文: GS Collections Moves to Eclipse foundation


感谢夏雪对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群InfoQ 好读者(已满),InfoQ 读者交流群(#2)InfoQ 好读者)。

2016 年 1 月 26 日 18:001587
用户头像

发布了 92 篇内容, 共 18.5 次阅读, 收获喜欢 4 次。

关注

评论

发布
暂无评论
发现更多内容

作业

张荣召

第 1 周 架构方法 学习总结

心在那片海

5.1分布式缓存架构:架构原理与注意事项

张荣召

第一周作业

孤星

架构师训练营第五周 技术选型缓存、消息队列、一致性 hash

郎哲158

学习 极客大学架构师训练营

第五周总结

架构师训练营第 1 期 - 第 5 周 - 学习总结

wgl

极客大学架构师训练营

架构师训练营第五周作业

Shunyi

极客大学架构师训练营

第五周 技术选型(1)学习总结

钟杰

极客大学架构师训练营

架构师训练营第五周作业

xs-geek

架构师训练营第一周作业-周总结

张浩

【架构师训练营第 1 期 05 周】 作业

Bear

极客大学架构师训练营

架构师训练营二期 1周总结

月下独酌

极客大学架构师训练营

week1作业

幸福小子

架构师训练营第 1 期 -- 第五周学习总结

发酵的死神

极客大学架构师训练营

hash一致性算法

橘子皮嚼着不脆

架构2期第1周作业及总结

supersky6

食堂就餐卡系统

Xuenqlve

第五周 技术选型 作业一

应鹏

极客大学架构师训练营 课程作业

第1周作业-学习总结

jingx

Week_05 作业

golangboy

极客大学架构师训练营

第一周学习总结

孤星

第 01 周——食堂就餐卡系统设计

Airship

极客大学架构师训练营

AirPods过河,苹果拆桥:被“钞能力”征服的Beats何以至此?

脑极体

食堂就餐卡系统设计-week1

Mr_No爱学习

架构师训练营第 5 周:技术选型(一)

子青

架构方法-学习总结笔记

Xuenqlve

第五周作业

fmouse

极客大学架构师训练营

架构师训练营 1 期第 5 周:技术选型(一) - 作业

灵霄

极客大学架构师训练营

第五周 作业1

Yangjing

极客大学架构师训练营

第一周10/25

张冬冬

总结

“芯”有灵“蜥” 走进 Intel MeetUp

“芯”有灵“蜥” 走进 Intel MeetUp

GS Collections迁移到了 Eclipse基金会_Java_Victor Grazi_InfoQ精选文章