Java世界的ruby on rails — rife
http://rifers.org/
大家可以看看他的flash演示,下载example试用一下。给我的感觉是那么的似曾相识,就像我第一次看到ruby on rails网站上面的演示一样。
rife简单来说就像rails一样,是一个包含了各层结构的、简化的开发框架,他包含了web层,IoC容器和持久层开发,等同于 Webwork/Spring/Hibernate的组合。不过rife的好处就是一个完整的框架,以统一的概念和操作方式来整合,并且对于domain model的运用和rails颇有异曲同工之妙。而rife的CRUD也类似于rails,异常简化了持久层开发。
此外,rife自身还包含了很多实用功能,例如异步发送Email,定时执行任务,web services功能,甚至还包含了一个cms框架!
rife从作者描述来看是2001年底开始开发的,此前用perl和PHP开发web项目,曾经自己有过一些框架,这些PHP的框架是rife的原型。rife到现在已经发展很多年了,最近我也是因为webwork2.2集成了rife的continuations子项目才知道rife的,目前 rife还不太知名,不论国内外,google出来的评论都寥寥无几。
rife给我初感觉很惊艳,因为我自己也认为Webwork/Spring/Hibernate组合功能强大确实很强大,但是这么多框架内容太多,整个学习成本颇高,而且每个框架都有自己的哲学,概念并不完全一致,考虑到再整合sitemesh,freemarker等等小框架,这门槛也够高的了。
rails能够这么引人关注,无非就是简化开发,这些特点我从rife身上也看到了。当然,限于Java语言特性,没有办法做到rails那么简化和灵活,但是已经比Webwork/Spring/Hibernate简化得太多了,和rails有得一比了,而且基于Java这种最成熟的语言,也是一大优势。
先说说rife的优点:
1、是一个full-stack的Java框架,所谓full-stack大概指的是集成所需要的所有功能的框架,例如rails也是一个full-stack的框架。因而其学习成本自然比Webwork/Spring/Hibernate要小得多。
2、rife集成了常用的大部分功能,包括了一个组件方式的web框架,IoC支持和持久化框架,此外还有RSS支持,CMF支持,Web Service支持,异步邮件支持,Job schedule等等等等。
3、他有一些扩展的子项目很有意思,例如continuations,CRUD,openlaszlo等等。CRUD框架类似于rails,不需要配置映射,运行期动态生成所有需要的CRUD,continuations就不用多说了,openlaszlo支持输出为laszlo。
总体而言,rife是一个和rails相似度很高的框架。有意思的是,rife作者和rails作者还爆发过争吵,这个可以去search他们各自的blog。大意是这样的:
rails作者David Heinemeier Hansson搞了一个在线todolist网站:
www.tatalist.com
号称只用了600行ruby代码,而rife作者Geert Bevin看了这个网站之后,发现一些很严重的bug,在指出之余,狠狠贬低了一把rails,于是遭到了Hansson的嘲讽和rails爱好者的攻击。
Geert Bevin说写这么个简单的网站竟然用了600行代码,可以想像rails并不像它吹的那么好,于是rails爱好者说,你有本事也自己写一个啊,站着说话不腰疼。Geert Bevin就真的自己写了一个出来,这就是:
http://blablalist.com/
功能和tatlist完全一样。并且把所有代码开源出来,号称用了752行Java代码和100多行XML配置文件。
Hansson看了代码之后,又在自己的blog上面狠狠贬低了一把Geert Bevin的代码和rife框架,最后说Java社区太不诚实了,骗子太多。
针对rails网站的那个15分钟做出来一个simpleblog的视频,Geert Bevin也搞了一个40分钟做出来一个simpleblog的视频,录制的内容更加丰富,所以也比较长,总体来说,两者的开发过程很相似,也都很快捷,但限于语言特性,rife要略微繁复一些。
再说说rife的缺点:
实际上我只是简单的看了几个rife做出来的开源程序和quickstart,可能叙述未必客观。
1、rife的持久层映射不是O/R Mapping,这是我认为最致命的缺陷。rife的映射方式是完全忠实映射table column的方式,没有对象层次图。这种方式在某些情况来说也许很好,降低难度,但是在O/R Mapping如此普及的今天,这样用法多少有点落伍,也让用惯了O/R Mapping的开发人员无法接受。
2、rife的view模板用这样的HTML注释标记来嵌入服务器端逻辑,大量运用这种的HTML注释标记显得非常烦琐,既没有freemarker这样的${}方便,也没有JSP Tag方便。
3、rife虽然有IoC功能,也可以连接Spring,但是显然不那么重视DI这种编程习惯。在作者自己写的bamboo forum里面处处看得到类似程序自己去创建依赖对象的代码,让用惯了IoC的开发人员感觉很不好。
总之,rife确确实实提供了一条快速开发的方式,学习成本也显然比Webwork/Spring/Hibernate要低。不过对于Webwork/Spring/Hibernate掌握非常熟练的开发人员例如我来说,似乎改用rife也不会提供更高的开发效率。
顺便提一句ruby on rails,我觉得大家有些过于被表象吸引。实际上对于逻辑关系比较复杂的项目来说,如果自己对Webwork/Spring/Hibernate掌握熟练,又积累了些加速开发的工具类和模板,其开发速度并不会比rails低。
分享到:
相关推荐
适合初学者的ruby教程
Ruby on Rails实践之路给PHP和Java开发者的书
Ruby on Rails非常强大,但是它不能做所有的事情。有许多特性太过实践化,超出了Rails核心的范畴,或者与Rails的设计理念相左太甚(毕竟Rails是个人理念的软件)。核心团队不能也不会将人们想要的任何东西都包含到...
Agile Web Development With Ruby On Rails
Ruby on Rails for PHP and Java Developers(2007.8).part4.rar
Ruby on Rails for PHP and Java Developers(2007.8).part3.rar
Ruby on Rails for PHP and Java Developers(2007.8).part1.rar
Ruby on Rails for PHP and Java Developers(2007.8).part2.rar
Ruby on Rails Guide:是rails官方教程,本人为了大家学习查阅的方便,制成chm格式。就如同java doc的chm格式一样方便。
1、资源内容:基于ruby on rails的一个blog系统(自己练手使用,可以运行) 2、适用人群:计算机,电子信息工程、数学等专业的学习者,作为java实战项目,课程设计,毕业设计“参考资料”参考学习使用。 3、解压说明...
Ruby.on.Rails.Enterprise.Application.Development
ruby 和 java 的结合。
要学web开发,ruby on rails是必看的!
Ruby on Rails是一个突然流行起来的框架,充当着Ruby编程语言的催化剂。随着Ruby的经验不断成功,开发人员开始寻求把他们的...本文介绍了如何在Ruby on Rails中添加REST风格的Web服务,并从Ruby和Java代码调用服务。
Ruby on Rails (Rails) 是用 Ruby 编写的一个 full-stack Web 应用程序框架,而 Ruby 是一种功能丰富的、免费的、可扩展的、可移植的、面向对象的脚本编制语言。Rails 在 Web 应用程序开发人员之间非常流行。通过它...
NULL 博文链接:https://o0o0o0o.iteye.com/blog/563851
jRuby On Rails WEB 2.0
Ruby on Rails产品组合应用程序 这是我的投资组合中的Ruby on Rails 5应用程序。 特征 实时聊天引擎发表评论 博客 文件夹 拖放界面 技术领域 Ruby on Rails Java脚本 引导程序 动作电缆宝石 适用于照片存储的AWS S3...
Ruby on Rails的即时潜在客户警报 该模板是Twilio CodeExchange的一部分。 如果您在使用此代码时遇到任何问题,请在打开一个问题。 关于 该演示应用程序展示了如何使用Ruby on Rails实施即时潜在顾客警报。 当新的...