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 on Rails 101:深入理解与实践 #### 引言 《Ruby on Rails 101》是一本介绍Ruby on Rails(简称RoR或ROR)的基础书籍,旨在为初学者提供一个全面而深入的学习框架。本书由Peter Marklund编写,包含了五天...
至于.NET、C#、Java和VB等标签,它们代表了其他编程语言和技术栈,可能在书中作为对比,帮助读者理解Ruby on Rails的独特优势和适应场景。例如,Ruby的动态性和敏捷性相对于.NET和Java的静态类型系统,或者Rails的...
### Ruby on Rails与Java框架对比分析 #### 一、引言 随着互联网技术的迅猛发展,Web开发领域也迎来了各种各样的开发框架和技术栈。在众多的开发框架中,Ruby on Rails (RoR) 和 Java 的相关框架尤其受到关注。本文...
Ruby on Rails,简称Rails,是一种基于Ruby语言的开源Web应用框架,它遵循敏捷开发原则,致力于简化Web开发过程。Rails的核心理念是“Convention over Configuration”(约定优于配置),这意味着开发者可以减少大量...
该项目是采用Java语言实现的Ruby on Rails ActiveRecord设计理念的源码,总计包含46个文件,其中40个为Java源文件,其他包括Git忽略文件、许可证、Markdown文件、XML配置文件、数据库方言和驱动文件等。该设计旨在...
在文档中,作者Chris Adamson探讨了Ruby on Rails如何挑战Java在企业开发领域的主导地位,特别是通过Bruce Tate的观点进行深入分析。 1. **Ruby的优势**:Ruby在语言设计上注重表达性和简洁性,使得代码更易读、...
### 敏捷Web开发与Ruby on Rails:深入解析与实践指南 #### 标题解析:“Agile Web Development With Ruby On Rails” 此标题明确指出本书的主题是利用Ruby on Rails框架进行敏捷Web开发。Ruby on Rails(简称...
标题与描述中的“Ruby on Rails 实践”及“ruby 和 java 的结合”,暗示了一种对两种截然不同的编程环境——Ruby on Rails与Java——进行对比分析的视角。Ruby on Rails,以其简洁、高效且遵循“约定优于配置”的...
### Ruby on Rails企业应用开发详解 #### 一、引言 《Ruby on Rails Enterprise Application Development》这本书由Elliot Smith和Rob Nichols共同编写,由Packt Publishing出版。该书旨在为读者提供一个完整的...
**标题解析:**“ruby on rails 教程”直指文档内容旨在教授Ruby on Rails框架的基础知识和应用技巧,Ruby on Rails(RoR)是一种用于Web开发的开源框架,基于Ruby语言,它遵循MVC(模型-视图-控制器)架构模式,...
**Ruby on Rails 开发环境构建:Eclipse与RadRails 插件详解** 在现代软件开发领域,Ruby on Rails(简称Rails)作为一个强大的Web应用程序框架,因其简洁、高效的特性深受开发者喜爱。而Eclipse,作为一款功能强大...
通过这本书,PHP和Java开发者可以了解到RoR如何提供一个高效且优雅的开发环境,理解其核心理念,从而更好地融入到Ruby on Rails的开发世界中。同时,书中还可能包含实际项目案例,帮助读者将理论知识应用于实践,...
### Ruby on Rails与J2EE:两者之间是否有共存的空间? #### 什么是Ruby on Rails? Ruby on Rails(简称Rails)是一种基于Ruby语言构建的相对新兴的Web应用框架。该框架被设计为现有企业级框架的一种替代方案,其...
### Ruby on Rails 入门级简介 #### 一、Ruby on Rails 概述 **Ruby on Rails**(简称 Rails 或 RoR)是一种基于 Ruby 语言的 Web 应用框架,它采用了模型-视图-控制器(MVC)架构模式。Rails 由 David Heinemeier...
《jRuby on Rails WEB2.0》:将Ruby on Rails融入Java平台的实践指南 《jRuby on Rails WEB2.0》是一部由Ola Bini撰写的书籍,深入探讨了如何将Ruby on Rails这一敏捷开源框架与Java平台相结合,以构建高效、灵活的...
Ruby on Rails插件是Rails框架的核心扩展机制,用于弥补Rails本身功能的不足,提供开发者所需的额外特性或功能。Rails插件允许开发人员自定义和增强Rails的任何部分,并且能够以封装和重用的方式与其他开发者共享。...
【标题】:“结合使用 Oracle 和 Ruby on Rails 教程” 在 IT 领域,数据库管理和Web开发是两个至关重要的方面。Oracle 是一款强大的关系型数据库管理系统,而 Ruby on Rails(简称 Rails)则是一个流行的开源Web...
Ruby on Rails 应用程序,为 OpenStreetMap 网站和 API 提供支持。这是 The Rails Port,一个为 OpenStreetMap 网站和 API 提供支持的 Ruby on Rails 应用程序。 该软件也被称为“openstreetmap-website”。网站,...
Ruby on Rails for PHP and Java Developers(2007.8).part4.rar
Ruby on Rails for PHP and Java Developers(2007.8).part3.rar