Java 和 Web 应用开发:太多的抽象会是坏事么?

阅读数:116 2007 年 7 月 31 日

话题:JavaRubyWeb框架Ruby on Rails架构语言 & 开发

RedMonk 的分析师 Michael Coté写了一篇长文,在文章中,他把 Java Web 应用开发和用 Rails 和 Django 这种把构建 web 应用的思想与其本身的设计理念紧密结合的框架所进行的 Web 开发进行了对比。这则评论源于 Bill de hÓra 的博客上一篇文章中的内容:

……我觉得在 Java 世界里有很多框架——比如 JSF 或者 Struts 1.x——都把 Web 看成了使用软件模式来解决的问题。它们的目的就是把 Web 扔到一边,回到中间件上去。但是像 Django 或 Rails 这样的框架就是为了 Web 而生的,与内部企业应用的集成根本就不是它们准星瞄准的对象……

Coté接着又用略带辛辣的口吻描述了一个典型的 Java Web 应用的抽象级别。他的观点概括如下:

    - VM 本身就是 OS 的一个抽象。

    - 诸如 JNDI 和 JAAS 这样的库就是一些对可能性进行建模的类。

    - UI 将来也可能需要被换掉,所以要对它进行抽象。

接下来,Coté确实还是承认诸如文件系统、排序算法和容器框架这些抽象对于 Java 是非常有用的,但他总体的想法则是:

  • 在写好你自己的抽象层以后,在本质上你也就写好了一个自己的框架雏形。但如果你不是一个好的框架开发者,那这个框架用起来就很难受,更新一两个版本以后你就会意识到这一点,然后把它重写。
  • 新的框架和构建应用的方式会层出不穷(Web 应用,集群,Ajax,移动访问等),而它们很难直接与你的抽象层中的表达方式、惯用法和期望相对应。这个时候,你就会感到脑子快要炸开,因为你想做的新东西全都死死的绑在了你的抽象层上。
  • 按照 Bill 的想法,你所做出来的框架基本没啥用处的原因就在于你总是想要完全用上你所抽象出来的东西,却不管这会使你付出多大的代价;或者继续做进一步的抽象,让它变得更加难用。

他认为,使用 LAMP、Ruby 和 Django 等技术的程序员就是认为自己是在构建 Web 应用的,而 Java 程序员在心底总是觉得自己是在构建一个应用,只是碰巧这个应用中包含有一个 Web“视图”而已。

查看英文原文:Java and Web Application Development: Is Too Much Abstract A Bad Thing?