Ruby on Rails实践(1)---我们需要J2EE吗
如果你作为一个Java 程序员从事j2ee开发的话,你一定会使用到众多应用程序框架。没有任何一个语言会象java 语言社区那样活跃,任何一种新的程序理念都会很快在网上出现相应的开源实现。对应最常用的网站开发模式MVC,每一层都会有很多框架,Struts, Tapestry 属于控制器层(C), Velocity 框架属于视图层(V), 你使用的数据持久层可能是 Hibernate, iBatis, OJB, 或者是 JDO 的众多开源实现中的任何一个,比如 JPOX 。 但是你的选择太多,未必是件好事,并不是任何人都能采用正确的框架来做正确的事情。如果你的开发平台是 .net, 那么你也许会避免这种情况,通常你只要安装一个 Visual Studio .net 作为开发工具,然后安装一个 MSDN 来查找资料就可以了。对于程序开发人员来说,这是非常两难的事情。我本人很喜欢 Java ,无论是学习还是实践,它的确给我们提供了很多。但是为什么我觉得 .net 那样“一站式”解决方案在很多时候是正确的呢?
作为一个Java 程序员,我觉得Java一些比较明显的问题,首先是Java 太复杂,其次Java 太面向程序员了,而不是面向用户。相对 C++ 来说, Java 已经很简单了。现在Java 程序员数量如此多就说明了这点。但是正如有人曾经说过的那样,“在linux 上,你很容易区分出谁是高手”,在 Java 领域中就不那么容易了。我就经常发现身边的同事还在犯很低级的概念性错误,他们甚至在无法准确地区分什么是接口,抽象类和 Servlet的情况下仍然可以从事多年的j2ee 开发。但为什么又说 Java 复杂呢,因为它完成一件事情,需要太多不同的技术来实现了。这样对于那些概念不很清楚的程序员来说,你如何能保证他们作出正确的选择呢?而众多框架中有没有多少提供“一站式”服务的。最近冒头的 Spring 框架提供的服务在众多的框架中算是最多的了,但是它又有个新问题,就是它还是太面向程序员了,而不是用户。为什么这么说呢?框架本来就是面向程序员的,这难道不对吗?Spring 虽然提供了众多选择(但是还是不够多,它本身没有ORM ),但它没有提供简单的使用方式,所以我们只能说它是面向程序员的。绝大多数java框架都存在这个问题,就是学习曲线比较高。我觉得学习曲线的高低是区分一个框架是否是面向程序员还是用户的关键,我想这主要表现在框架的易用性上。其实框架最终的用户还是程序员,之所以用“用户”和“程序员”来区分,是因为一些面向“程序员”的框架比较难以使用,虽然提供了大量的基础设施和零件,但是还是要求程序员自己来组装。而面向“用户”的框架就简单一些,用户只要按照说明书来使用就可以了。
为什么 Ruby on rails 会在 Java 社区引发轰动,我想原因就在于此,它提供了一个“一站式”面向用户的简单易用的框架,这是 java 框架所缺乏的。为什么 Ruby on rails 能做到这点,难道 java 本身做不到吗? 事实是众多 Java 框架的设计者不这么做,可能是他们的思维已经限制在如何用模式设计一个好的框架上了,而没有在框架的易用性上做更多文章。使用过 Spring 的人就知道它的 xml 配置文件会渐渐的膨胀,虽然我们很容易将其分解为更多的小配置文件来解决这个问题。 但是在使用 xml 配置文件上,它沿袭了 Java 编程的习惯性概念:“Java 是最好的编程语言,XML 是最好的描述数据的语言,两者的结合是最完美的。如果一个应用不使用 xml 来描述,那么它就不是好的 java 应用”。
但是 ruby on raiils 就是在这点上和众多 java 框架区别开来,才达到了框架易用性上的一次突破。这个思想贯穿了 Rails 设计的始终:习惯约定优于配置。 举个例子,通常我们写java web 应用程序,都会按照 MVC 来给对应类做区分,我个人喜欢将 Controller 类放在 web 目录中,将 View 类放在 view 目录中,将 model 类放在 domain 目录中。但是不同的人有不同的设置,不同的命名,如何让框架知道这些不同的目录呢, java 框架的解决之道,只能是通过 xml 配置文件让它了解这些信息。而 rails 的解决方式就是: 目录结构我来定义,你只要在我定义好的目录中放东西就可以了。 这也就是为什么 rails 中很少有配置文件(但不是没有)的一个重要原因。虽然思想很简单,但是它带来的好处就是,Rails 的开发效率是 java 开发的 10 倍(这是 rails 的 fans 宣称的,不过我相信这点,相信看完这篇文章你也一定会的)。那么光这点就能让 rails 开发比采用 java 更快了吗?不完全是这样,因为这还得益于 rails 的另外一个设计理念:更少的代码。 并不是任何语言都能那么宣称的,rails 实现这点完全得益于它的设计语言 Ruby 。使用 Ruby 你的确能用很少的语言写很多的功能,这是其他语言所无法实现的。 想要掌握Rails,你一定要了解 Ruby。 曾经有人说:Zope (著名的 python web 框架)是 python 的 killer 级应用,python 是 zope 的秘密武器。
-
-
- Post Body
-
Good point. I agree with you Java is complicated, I have no idea about ruby on rails but it sounds easy than Java.
-
- Quote
- Posted 5 months ago.
Page Author
- Avatar

- Name
- val
Information
- 399 Views
-
Ratings
Likes
1
Negative
0
This work is public domain.