5

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

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

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

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

事实上,所有的谷歌 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 时,使用它甚至没有意义!

4

1 回答 1

2

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

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

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

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

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

于 2011-03-15T16:38:06.087 回答