【问题标题】:Why isn't google api client library built on top of Apache's Abdera framework?为什么 google api 客户端库不建立在 Apache 的 Abdera 框架之上?
【发布时间】:2011-03-15 15:15:06
【问题描述】:

首先我要非常感谢 Google GData API 的工程师所做的出色工作,我想提一下,这个问题并不是要批评任何事情。它只是指出一些事情。

谁能给我解释一下?据我所知,java 的 google api 客户端库的开发人员正在重新发明轮子。这就像为 Java 项目编写新的 JDK,因为 abdera 客户端执行 google api 客户端库所做的工作,并且 abdera 服务器功能和适配器也可以用于许多事情,例如条目持久性和许多其他事情。

我知道 google 数据协议是一种特定的 atom 发布,但如果需要使用 Apache Abdera 项目为此协议提供的一些花哨的扩展和功能,最好不要使用 google api 客户端库并使用 Abdera 从头开始​​实现客户端...而且我确信在很多情况下,它的功能(例如 Abdera 的 JCR 适配器)对于谷歌文档、谷歌翻译工具包以及其他大多数人来说都非常方便.

现在很高兴有一个 google api 客户端库可用于 google 文档,但是我将如何处理文档和 atom 提要响应?我相信在一半以上的情况下,另一边还有一个存储库或数据库。在这种情况下,需要 abdera,而不是仅编组/解组提要的简单 google api 客户端......

事实上,所有的 google API 都有一些东西要坚持。如果谷歌决定将精力投入到 Abdera 的增强或集成上,这将是有道理的……这不是……尤其是考虑到软件开发中一个众所周知的事实,第二个版本通常是从头开始重写的。 Apache Abdera 是一个已经存在 5 年的成熟项目,被大量应用程序使用。

如果有原因,我没有看到并且只使用拉解析器来实现客户端是非常必要的,我至少会使用不推荐使用的 xml 拉解析器。 Xmlpull.org 已有 6 年历史,但处于非活动状态,甚至没有实现 StAX api。 stax.codehaus.org 参考实现、JRE 默认 stax 实现、Apache Axiom 实现和主要的 woodstox.codehaus.org 实现会更好,为什么要避免规范和有支持和社区的活动项目?

我向 google api 客户端 java 库的开发人员对此批评表示歉意,但我真的很喜欢 google api,但是使用该客户端的第一个版本真的很痛苦,当前版本很好。但是实际上浪费了很多时间,这主要是由于重新发明轮子以及从版本 0 通过 gdata-java-client 到 google-api-client-java 的极端版本​​间更改。

最后,在人们投入时间和金钱之后,谷歌对 API 进行了限制,所以为什么要关心,对吧? :-)

我收回我说的话,从那以后软件和协议发生了很大变化......现在当 GData 也支持 JSON 时,使用它甚至没有意义!

【问题讨论】:

  • Google 对其基础设施所基于的任何代码的质量(可能还有许可证)都非常非常挑剔。在某种程度上,它有时看起来像not-invented-here syndrom。他们宁愿重新实现一个库,也不愿使用不符合他们需求的东西。这很好,否则我们不会有 Google Collections/Guava ;-)

标签: java google-data-api atompub apache-abdera


【解决方案1】:

我遇到了同样的问题。您可以从google-feedserver 项目中获得灵感。它使用谷歌客户端库的旧 gdata 版本,但该项目处理它与 Apache Abdera 的组合。他们正在通过 ibatis 做数据库持久化。

但是,我做了什么:我花了 2 天时间学习并使用 google api 客户端库实现我的客户端应用程序,希望该库能够继续开发并添加新功能。但不幸的是,很长一段时间以来它几乎都是一样的。所以我最近使用了 Abdera 客户端,并为 google data api 创建了一些扩展 org.apache.abdera.examples.extension.*,我完全使用了 Abdera。仔细想想,没有必要使用google api客户端库。您只需要设置授权标头

clientLogin.authenticate().setAuthorizationHeader(Util.getTransport());

至于为什么 google 不使用 Abdera 框架,我也在问自己同样的问题。这是Java世界的问题之一。浪费在很多地方。 Abdera 框架是一个非常好的项目,并且非常尊重 Google,如果他们决定创建自己的客户端库,他们应该做得更强大。 (这是我的看法)简单地说,如果 Abdera 框架很糟糕,我会接受它,但它做得很好,功能也很丰富。

另一方面,Abdera 框架所具有的功能,是由于项目的性质而存在的。它主要是一个 atompub 服务器,因此它应该处理客户端提供的数据。但是 google API 客户端也需要处理,尽管 google 客户端库不提供这种可能性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-27
    • 1970-01-01
    相关资源
    最近更新 更多