在我们的技术社区里面,Ruby 和 Rails 从一开始就因为广为传颂的高开发效率而受到人们追捧,有文章为证,也有图片为证,更有图书为证,国内的社区对此反应强烈。这里不得不提的是 Bill Walton 和 Curt Hibbs 一篇文章《 Rolling with Ruby on Rails Revisited 》,这篇文章里面提到“用 Rails 开发一个 web 应用的速度至少是用典型 Java 框架开发的十倍”。
但 Javier Paniza 并不这么认为,他第一次读到这篇文章时非常吃惊:“哇!十倍的速度!?”他决定开始学习使用 Rails 来开发,期望能够发现高效率和程序员感到幸福的原因所在。
很快,他发现 RoR 是个很经典的框架,但使用了并不时新的技术:
为了证明他的观点,他开始用带 JPA 注解的 POJO,以及模型驱动框架 OpenXava ,实现了 Ruby 文章中的一个应用,结果是用了更少的代码,更少的时间却获得一个更加强大的应用。在用户界面、负责 CRUD 的 controller、实体关系维护等方面,Java 方案均表现突出。
由此他总结道:
Java 开发的效率只是文化问题,而不是技术问题。这不是 Java 的错,错在 Java 开发者自身。Java 开发者太专注于设计非常漂亮的架构,滥用 GoF 的设计模 式,过分追求重用,实施三层结构并过度使用 web service。独独忽略了简单性。其实 Java 是一门非常优雅的语言,足以简化软件开发。
Javier Paniza 没有忘记他使用的是模型驱动框架 OpenXava:
RoR 和 OpenXava 的主要区别在于,RoR 是个 MVC 框架,开发者必须编写 model、view 和 controller,而 OX 是个模型驱动框架,开发者 只需要编写 model 即可。结果自然就是更少量的代码但更好的应用实现了。另外一个不同在于,RoR 使用了被动的代码生成,也就是说它会为开发者生成代 码,但之后如果开发想要扩展或提炼代码,就不得不编辑生成好的代码。OpenXava 没有使用代码生成,唯一的代码就是开发者自己写的代码。
所以选择了好的工具和模式,确定自己的目标,在 Java 的世界同样可以实现高效率。
评论