BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

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

| 作者 Scott Delap 关注 0 他的粉丝 ,译者 李剑 关注 1 他的粉丝 发布于 2007年8月2日. 估计阅读时间: 2 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

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?

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

工具!工具!!工具!!! by Zhang Richard

我觉得,抽象不是坏事,我们有时候所做的很多事都是重复劳动。我们缺乏工具的支持。

重视解耦 by Guo Xiaogang

加入抽象层次是为了降低复杂度,因此限制了灵活性确实有可能。但为了能够分工,就需要解耦,为了解耦,就必须增加抽象层次。Java阵营确实很重视解耦。

问题是要看工程的大小。 by Leon Kennedy

如果要砍很多柴,那么磨刀是会有可能不误砍柴工。可是只要砍几个柴,那么有必要话半小时磨刀吗?
-----
■袋鼠蛋是国内第一个开源的动态web服务器,其拥有自己的开发语言DQM及容器(类似于Servlet/JSP)
www.kangaroo-egg.com

Re: 重视解耦 by Yuan Shayne

其实还是受限于语言自身。

Re: 重视解耦 by 田 乐

重视解耦是好的,但要防止过度设计。Java Web框架很多都是预先考虑到了抽象,而忘记了它是为Web而生的,这种隔离有时真的影响了效率。

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

5 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT