posts - 262,  comments - 221,  trackbacks - 0
制定了开发进度计划,接下来就是寻找开发的辅助资料和搭建开发,测试环境了。根据我的初步认识,RSS工具的核心无非就两样:

★解析器(也就是通常所说的解析引擎)
★阅读器(也就是展现解析结果的GUI)

关于解析器,关键在于对RSS规范中XML文件(RSS Feed)的解析,这个倒不难。难就难在你还必须同时支持多个版本,从0.9.x,到1.0,到2.0,还有Atom 0.3.x。这个工作量就比较大了,于是我选择了从开源社区中寻求帮助。关于RSS的相关开源工具其实并不多,从网上搜索的结果来看,主要集中在下面几个工具:

★ROME(https://rome.dev.java.net/)

这是网上使用比较广泛的RSS及Atom工具,是SUN社区下的一个开源项目,从其Java API文档来看比较规范。目前稳定版本是1.0。支持多个版本的协议。其官方网站介绍如下:

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是依赖于JDOM来解析,生成,转换XML文档的,但目前我还没有发现它支持数据库持久化和对RSS Item节点搜索的功能,不得不说是一个遗憾。而且目前JDOM有被Dom4J逐渐取代的趋势。

不得不提的是ROME的官网文档链接目前是不可用的。这对开源项目来说是一个挺大的打击,代码的最新版本是2009-1-9号发布的。

★RSSLIBJ

这个是最小的RSS工具包,体积才25K,不过主页已经不可用了,而且只能下到二进制代码,要自己反编译。

★Informa(http://informa.sourceforge.net/)

Informa的官方网站对其产品的介绍如下:

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).

这是我想重点介绍的一个开源RSS工具。Informa同样也支持多个RSS和Atom版本的协议,同样也提供了解析,转换,生成的功能。除此之外,它还提供了对RSS Item,channel的数据库持久化功能。甚至有节点的全文搜索功能(依赖于Lucenes)。目前Informa的最新版本是Release 0.7.0 Alpha 2。该版本的改进如下:
 ①将编译JDK升级到1.5
 ②将底层的解析引擎工具从JDOM换成Dom4J(Alpha 1还是用JDom的)
 ③增加了对RSS 2.0协议的导出功能
 ④增加了对Atom 0.3~1.0协议的支持
 ⑤首次使用Spring框架来管理持久化工作
 ⑥升级Hibernate到3.1版本
 ⑦去掉了对JDO的支持

Informa的文档很齐全,对于各种使用的方法都有提及,而且用法相当简单明了。这是我最喜欢的地方,但他的API很多都没有写注释,留白。幸好它的源代码比较清晰,不懂的地方直接看代码了。

★RSSOwl(http://www.rssowl.org/overview)

这是一个桌面版的RSS阅读器,目前最新版本是2.0稳定版,2009-11-25才发布的,可谓新鲜出炉。提供了EXE和ZIP两种安装方式,功能相当强大:支持一把的浏览,分类,关键字搜索,过滤器,清除失效的RSS订阅列表,实时提醒,导入导出OMPL的功能,甚至内嵌了一个Web形式的浏览器。几乎你能想到的它都提供了。文档也相当齐全。

它的源代码是通过SVN的形式checkout出来的。命令如下:

svn co https://rssowl.svn.sourceforge.net/svnroot/rssowl rssowl 

建议不要直接下载,体积很吓人的,只下载目前最新的版本就可以了。

★ThinFeeder(http://thinfeeder.sourceforge.net/)

ThinFeeder是一个基于Informa解析器的RSS阅读器。它提供了和RSSOwl差不多的功能

ThinFeeder以支持多国语言和可以换肤为卖点。现有的这些功能对我们来说已经够了,而且有源代码下载。

总结:

选择一个开源框架,我的标准有几条:
★良好的文档和源代码管理:这是最基本的一条,想RSSLibJ这种连文档、官网都没有的一律pass
★持续的改进:这是第二个重要的,像上面某些工具从02年后就不再更新了,出了问题你找谁诉苦
★简单和易上手:在短时间内可以迅速依样画葫芦
★活跃的社区:参与的人越多软件成长得越多,好的软件也是慢慢才出名的


基于以上的原因,我最终选择了两个:

Informa:优秀的框架,简单的用法,全面的功能,持续的改进。
ThinFeeder:内部使用Informa引擎,有利于结合。界面简洁,功能齐全,可以定制,源代码齐全。

选定了核心工具,剩下的就是搭建开发环境和测试环境了。关于环境,离不开的只有这几样:
 ★设计工具:选用StarUML
 ★编程工具:选用Eclipse
 ★版本控制:当然是SVN
 ★项目管理:首选JIRA
 ★测试工具:使用JMetter

佛祖保佑我开工大吉~~。哇咔咔



-------------------------------------------------------------
生活就像打牌,不是要抓一手好牌,而是要尽力打好一手烂牌。
posted on 2009-12-21 11:52 Paul Lin 阅读(1339) 评论(0)  编辑  收藏 所属分类: J2SE

只有注册用户登录后才能发表评论。


网站导航:
 
<2009年12月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

常用链接

留言簿(21)

随笔分类

随笔档案

BlogJava热点博客

好友博客

搜索

  •  

最新评论

阅读排行榜

评论排行榜