2011-03-15 24 views
5

首先,我想非常感謝Google GData API的工程師們的出色工作,我想提一提,這個問題並不是要批評任何事情。它只是指出一些事情。爲什麼沒有在Apache的Abdera框架之上構建Google API客戶端庫?

有人可以請我解釋一下嗎?據我所知,java的google api客戶端庫的開發人員正在重新發明輪子。這就像爲Java項目編寫新的JDK一樣,因爲abdera客戶端執行的是谷歌api客戶端庫的功能,abdera服務器功能和適配器也可用於很多事情,例如條目持久性和其他許多功能。

我意識到谷歌數據協議是一個小特定原子發佈的事實,但如果需要使用Apache Abdera項目爲此協議提供的一些奇特的擴展和功能,最好不要使用google api客戶端庫,並從頭開始實施客戶端與Abdera ...我敢肯定,在很多情況下,它的功能,如Abdera的JCR適配器將變得非常方便的谷歌文檔,谷歌翻譯工具包,實際上對於大多數其他。

現在有一個谷歌API客戶端庫用於谷歌文檔是偉大的,但我將如何處理文檔和原子提要響應?我認爲,在另外一半以上的情況下,還有一個存儲庫或數據庫。在這種情況下,abdera是必要的,而不是簡單的谷歌API客戶端,只是編組/反饋編組...

事實上,有一些東西要堅持在所有的谷歌API。如果谷歌決定將努力投入到Abdera增強或集成中,這將是有道理的......這並不是......特別是考慮到軟件開發中一個非常着名的事實,第二個版本通常是從頭開始重寫的。 Apache Abdera是一個成熟的項目,已有5年的歷史,被大量應用程序所使用。

如果有原因,我沒有看到與使用拉解析器的實現客戶端只有確有必要,我會至少使用未棄用XML pull解析器。 Xmlpull.org已有6年的歷史,但並不活躍,甚至沒有實施StAX API。 stax.codehaus.org參考實現,JRE默認stax實現,Apache Axiom實現和主要woodstox.codehaus.org實現會更好,爲什麼要避免規範和支持和社區的活動項目?

我對這個批評的google api客戶端java庫的開發者表示歉意,但我真的很喜歡google apis,但是與這個客戶端的第一個版本一起工作真是苦澀的經歷,目前的版本很不錯。但是實際上浪費了很多時間,主要是由於重新開發了輪子以及從版本0通過gdata-java-client到google-api-client-java的這些極度版本間變化。

最後,谷歌在人們投入時間和金錢之後使得API受到限制,所以爲什麼要關心,對吧? :-)

我收回了我說的話,自那時以來軟件和協議發生了很大的變化......現在當GData支持JSON時,甚至沒有意義使用它!

+1

谷歌對其基礎架構所基於的任何代碼的質量(以及可能的許可證)都非常非常挑剔。在某種程度上,它有時看起來像[not-invented-here syndrom](http://en.wikipedia.org/wiki/Not_Invented_Here)。他們寧願重新實施一個圖書館,而不願意與不符合他們需求的東西生活在一起。這很好,否則我們就沒有Google Collections/Guava ;-) – 2011-03-15 15:48:19

回答

2

我有同樣的問題。您可以從google-feedserver項目中獲取靈感。它採用了谷歌的客戶端庫的舊版本GDATA,但該項目用了Apache Abdera它組合交易。他們通過ibatis進行數據庫持久化。

不過,我所做的:我了2天的學習和執行我與谷歌的API客戶端庫希望圖書館的發展將繼續和新功能將被添加客戶端應用程序。但不幸的是,很長一段時間它幾乎是一樣的。所以我最近使用了Abdera客戶端,併爲Google數據API創建了一些擴展org.apache.abdera.examples.extension.*,並且我完全使用了Abdera。如果你仔細想想,就不需要使用google api客戶端庫。你只需要設置授權標題

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

至於爲什麼谷歌不使用Abdera框架,我問自己同樣的問題。這是Java世界的問題之一。浪費在許多地方。 Abdera框架是一個非常好的項目,並且對谷歌的所有應有的尊重,如果他們決定創建自己的客戶端庫,他們應該更強大。 (這是我的觀點)簡而言之,如果Abdera框架很糟糕,我會得到它,但它做得非常好,功能非常豐富。

另一方面,由於項目的性質,存在Abdera框架所具有的功能。它主要是一個atompub服務器,所以它應該處理客戶端提供的數據。但谷歌API客戶端還需要處理,儘管谷歌客戶端庫不提供這種可能性。

相關問題