Ruby on Rails 实践
Java 框架到底怎么了?
如果你作为一个 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 应用”。
Digitally signed by Eiffel Qiu
DN: cn=Eiffel Qiu, c=CN,
o=Koalant, ou=www.koalant.
com, email=eiffelqiu@gmail.
com
Reason: I am the author of
this document
Location: beijing
Date: 2005.05.30 21:48:23
+08'00'