读了Sun中国工程研究院的黄健昌的blog:
与大家分享——JavaEE5与Glassfish应用服务器感觉JavaEE仍然忽略了一些非常重要的东西。JavaEE中的Web表现层仍然是与服务器端牢牢地绑死在一起的,在Ajax和各种RIA技术异军突起的今天,显得相当落伍。当然我不是想说任何Web应用都应该将表现层前推到客户端来做,我们需要具体问题具体分析。但是可以肯定,大部分Web应用都可以将表现层完全前推到客户端。表现逻辑在客户端执行,可以带来更好的响应能力、更好的性能、更好的服务器端可伸缩性、更好的交互设计,这些已经是不争的事实了。Java在Web表现层开发方面是很弱的,现在已经成为了一个共识。因为Java没有办法统治桌面,所以只能在服务器端打转转,这是他们最无奈的一件事情。想靠JSF来救赎,只能是一种幻想,JSF并没有这样神奇的魔力。
JavaEE为何没有采纳这些业界的趋势呢?因为JavaEE传统的三层架构(在《J2EE核心模式》中有详细的描述)就是假设所有的工作都应该在服务器端完成,客户端是不具有智能的Thin Client。他们至今仍然顽固地坚持这种假设,只要闭上眼睛,就好像世界上什么都没有发生。
事实上,世界已经变了。比Ajax、RIA更加重要的可能是REST,这种架构风格必然将重新塑造Web表现层开发技术的面貌。RoR已经拥抱REST了,JavaEE呢?短期内不可能,因为这个REST架构风格对于传统的JavaEE的三层架构来说是具有很大的破坏性的。尽管事实上REST是简化Java Web开发的良药,但是良药苦口,看来他们现在还不愿意吃这味良药。在REST架构风格中,服务器端分层的设计并不是最重要的,最重要的是在资源(用URI来标识)的定义和HTTP通信语义的定义,也就是在REST风格Web服务的API的设计上面。同时,在REST架构风格中,客户端并不是Thin Client,而是具有高度智能的Rich Client或RIA应用。
JavaEE仍然在自己的小圈子里面打转转,在保持整体架构不变的情况下对自己做一些局部的优化和调整。却忽视了Web开发技术的发展趋势,长此以往,被M$玩死是很有可能的。
其实大部分Web开发者,包括基于B/S方式的企业应用的开发者,都非常渴望简化Web表现层的开发、得到令人赏心悦目的交互设计,传统的Java Web开发技术对此提供的支持是很初级的。Web表现层开发的工作量,在很多中小型项目中常常会占到整个项目开发工作量的一半以上。而后台往往只是一个普通的关系数据库。显然,这并不是什么火箭科技,然而,以善于建造火箭科技闻名的一些公司和团体却无法解决好这些初级的问题。让使用Java做这些初级的工作变得异常复杂。
Richard Monson-Haefel在去年宣告JavaEE已死,
http://www.infoq.com/cn/news/2007/04/Java-EE-Demise-ReportBruce A. Tate也在《超越Java》对Java的前景发出了严重警告。JavaEE5显然在简化方面还做的远远不够。丧钟已经鸣响,是为谁而鸣呢?
查看本文来源