制定了開(kāi)發(fā)進(jìn)度計(jì)劃,接下來(lái)就是尋找開(kāi)發(fā)的輔助資料和搭建開(kāi)發(fā),測(cè)試環(huán)境了。根據(jù)我的初步認(rèn)識(shí),RSS工具的核心無(wú)非就兩樣:
★解析器(也就是通常所說(shuō)的解析引擎)
★閱讀器(也就是展現(xiàn)解析結(jié)果的GUI)
關(guān)于解析器,關(guān)鍵在于對(duì)RSS規(guī)范中XML文件(RSS Feed)的解析,這個(gè)倒不難。難就難在你還必須同時(shí)支持多個(gè)版本,從0.9.x,到1.0,到2.0,還有Atom 0.3.x。這個(gè)工作量就比較大了,于是我選擇了從開(kāi)源社區(qū)中尋求幫助。關(guān)于RSS的相關(guān)開(kāi)源工具其實(shí)并不多,從網(wǎng)上搜索的結(jié)果來(lái)看,主要集中在下面幾個(gè)工具:
★ROME(https://rome.dev.java.net/)
這是網(wǎng)上使用比較廣泛的RSS及Atom工具,是SUN社區(qū)下的一個(gè)開(kāi)源項(xiàng)目,從其Java API文檔來(lái)看比較規(guī)范。目前穩(wěn)定版本是1.0。支持多個(gè)版本的協(xié)議。其官方網(wǎng)站介紹如下:
ROME is an set of open source Java tools for parsing, generating and publishing RSS and Atom feeds. The core ROME library depends only on the JDOM XML parser and supports parsing, generating and converting all of the popular RSS and Atom formats including RSS 0.90, RSS 0.91 Netscape, RSS 0.91 Userland, RSS 0.92, RSS 0.93, RSS 0.94, RSS 1.0, RSS 2.0, Atom 0.3, and Atom 1.0. You can parse to an RSS object model, an Atom object model or an abstract SyndFeed model that can model either family of formats.
可以看到ROME是依賴(lài)于JDOM來(lái)解析,生成,轉(zhuǎn)換XML文檔的,但目前我還沒(méi)有發(fā)現(xiàn)它支持?jǐn)?shù)據(jù)庫(kù)持久化和對(duì)RSS Item節(jié)點(diǎn)搜索的功能,不得不說(shuō)是一個(gè)遺憾。而且目前JDOM有被Dom4J逐漸取代的趨勢(shì)。
不得不提的是ROME的官網(wǎng)文檔鏈接目前是不可用的。這對(duì)開(kāi)源項(xiàng)目來(lái)說(shuō)是一個(gè)挺大的打擊,代碼的最新版本是2009-1-9號(hào)發(fā)布的。
★RSSLIBJ
這個(gè)是最小的RSS工具包,體積才25K,不過(guò)主頁(yè)已經(jīng)不可用了,而且只能下到二進(jìn)制代碼,要自己反編譯。
★Informa(http://informa.sourceforge.net/)
Informa的官方網(wǎng)站對(duì)其產(chǎn)品的介紹如下:
With Informa we enable you with a harmonised view on a news channel object model. Both channels and news items do have metadata assigned, it does not make any difference from which channel format they were originally retrieved (RSS 0.9x, RSS 1.0 / RDF, RSS 2.0, Atom 0.3 and Atom 1.0).
To ease finding relevant news items an integration with the full-text search engine (Jakarta's Lucene) may be used optionally.
Besides exporting news channels in a specified XML format there is a persistence backend available using the Hibernate O/R mapping framework. This allows to persist the whole object model into a JDBC-compliant relational database. As default database HypersonicSQL was chosen, because it is very easy to embed. Alternatively you may want to give the other persistent backend based on Castor JDO storage mechanism a try (from Informa release 0.7.0 not any longer supported).
這是我想重點(diǎn)介紹的一個(gè)開(kāi)源RSS工具。Informa同樣也支持多個(gè)RSS和Atom版本的協(xié)議,同樣也提供了解析,轉(zhuǎn)換,生成的功能。除此之外,它還提供了對(duì)RSS Item,channel的數(shù)據(jù)庫(kù)持久化功能。甚至有節(jié)點(diǎn)的全文搜索功能(依賴(lài)于Lucenes)。目前Informa的最新版本是Release 0.7.0 Alpha 2。該版本的改進(jìn)如下:
①將編譯JDK升級(jí)到1.5
②將底層的解析引擎工具從JDOM換成Dom4J(Alpha 1還是用JDom的)
③增加了對(duì)RSS 2.0協(xié)議的導(dǎo)出功能
④增加了對(duì)Atom 0.3~1.0協(xié)議的支持
⑤首次使用Spring框架來(lái)管理持久化工作
⑥升級(jí)Hibernate到3.1版本
⑦去掉了對(duì)JDO的支持
Informa的文檔很齊全,對(duì)于各種使用的方法都有提及,而且用法相當(dāng)簡(jiǎn)單明了。這是我最喜歡的地方,但他的API很多都沒(méi)有寫(xiě)注釋?zhuān)舭住P液盟脑创a比較清晰,不懂的地方直接看代碼了。
★RSSOwl(http://www.rssowl.org/overview)
這是一個(gè)桌面版的RSS閱讀器,目前最新版本是2.0穩(wěn)定版,2009-11-25才發(fā)布的,可謂新鮮出爐。提供了EXE和ZIP兩種安裝方式,功能相當(dāng)強(qiáng)大:支持一把的瀏覽,分類(lèi),關(guān)鍵字搜索,過(guò)濾器,清除失效的RSS訂閱列表,實(shí)時(shí)提醒,導(dǎo)入導(dǎo)出OMPL的功能,甚至內(nèi)嵌了一個(gè)Web形式的瀏覽器。幾乎你能想到的它都提供了。文檔也相當(dāng)齊全。
它的源代碼是通過(guò)SVN的形式checkout出來(lái)的。命令如下:
svn co https://rssowl.svn.sourceforge.net/svnroot/rssowl rssowl
建議不要直接下載,體積很?chē)樔说?,只下載目前最新的版本就可以了。
★ThinFeeder(http://thinfeeder.sourceforge.net/)
ThinFeeder是一個(gè)基于Informa解析器的RSS閱讀器。它提供了和RSSOwl差不多的功能
ThinFeeder以支持多國(guó)語(yǔ)言和可以換膚為賣(mài)點(diǎn)?,F(xiàn)有的這些功能對(duì)我們來(lái)說(shuō)已經(jīng)夠了,而且有源代碼下載。
總結(jié):
選擇一個(gè)開(kāi)源框架,我的標(biāo)準(zhǔn)有幾條:
★良好的文檔和源代碼管理:這是最基本的一條,想RSSLibJ這種連文檔、官網(wǎng)都沒(méi)有的一律pass
★持續(xù)的改進(jìn):這是第二個(gè)重要的,像上面某些工具從02年后就不再更新了,出了問(wèn)題你找誰(shuí)訴苦
★簡(jiǎn)單和易上手:在短時(shí)間內(nèi)可以迅速依樣畫(huà)葫蘆
★活躍的社區(qū):參與的人越多軟件成長(zhǎng)得越多,好的軟件也是慢慢才出名的
基于以上的原因,我最終選擇了兩個(gè):
Informa:優(yōu)秀的框架,簡(jiǎn)單的用法,全面的功能,持續(xù)的改進(jìn)。
ThinFeeder:內(nèi)部使用Informa引擎,有利于結(jié)合。界面簡(jiǎn)潔,功能齊全,可以定制,源代碼齊全。
選定了核心工具,剩下的就是搭建開(kāi)發(fā)環(huán)境和測(cè)試環(huán)境了。關(guān)于環(huán)境,離不開(kāi)的只有這幾樣:
★設(shè)計(jì)工具:選用StarUML
★編程工具:選用Eclipse
★版本控制:當(dāng)然是SVN
★項(xiàng)目管理:首選JIRA
★測(cè)試工具:使用JMetter
佛祖保佑我開(kāi)工大吉~~。哇咔咔
-------------------------------------------------------------
生活就像打牌,不是要抓一手好牌,而是要盡力打好一手爛牌。
posted on 2009-12-21 11:52
Paul Lin 閱讀(1368)
評(píng)論(0) 編輯 收藏 所屬分類(lèi):
J2SE