讀了Sun中國工程研究院的黃健昌的blog:
與大家分享——JavaEE5與Glassfish應用服務(wù)器感覺(jué)JavaEE仍然忽略了一些非常重要的東西。JavaEE中的Web表現層仍然是與服務(wù)器端牢牢地綁死在一起的,在A(yíng)jax和各種RIA技術(shù)異軍突起的今天,顯得相當落伍。當然我不是想說(shuō)任何Web應用都應該將表現層前推到客戶(hù)端來(lái)做,我們需要具體問(wèn)題具體分析。但是可以肯定,大部分Web應用都可以將表現層完全前推到客戶(hù)端。表現邏輯在客戶(hù)端執行,可以帶來(lái)更好的響應能力、更好的性能、更好的服務(wù)器端可伸縮性、更好的交互設計,這些已經(jīng)是不爭的事實(shí)了。Java在Web表現層開(kāi)發(fā)方面是很弱的,現在已經(jīng)成為了一個(gè)共識。因為Java沒(méi)有辦法統治桌面,所以只能在服務(wù)器端打轉轉,這是他們最無(wú)奈的一件事情。想靠JSF來(lái)救贖,只能是一種幻想,JSF并沒(méi)有這樣神奇的魔力。
JavaEE為何沒(méi)有采納這些業(yè)界的趨勢呢?因為JavaEE傳統的三層架構(在《J2EE核心模式》中有詳細的描述)就是假設所有的工作都應該在服務(wù)器端完成,客戶(hù)端是不具有智能的Thin Client。他們至今仍然頑固地堅持這種假設,只要閉上眼睛,就好像世界上什么都沒(méi)有發(fā)生。
事實(shí)上,世界已經(jīng)變了。比Ajax、RIA更加重要的可能是REST,這種架構風(fēng)格必然將重新塑造Web表現層開(kāi)發(fā)技術(shù)的面貌。RoR已經(jīng)擁抱REST了,JavaEE呢?短期內不可能,因為這個(gè)REST架構風(fēng)格對于傳統的JavaEE的三層架構來(lái)說(shuō)是具有很大的破壞性的。盡管事實(shí)上REST是簡(jiǎn)化Java Web開(kāi)發(fā)的良藥,但是良藥苦口,看來(lái)他們現在還不愿意吃這味良藥。在REST架構風(fēng)格中,服務(wù)器端分層的設計并不是最重要的,最重要的是在資源(用URI來(lái)標識)的定義和HTTP通信語(yǔ)義的定義,也就是在REST風(fēng)格Web服務(wù)的API的設計上面。同時(shí),在REST架構風(fēng)格中,客戶(hù)端并不是Thin Client,而是具有高度智能的Rich Client或RIA應用。
JavaEE仍然在自己的小圈子里面打轉轉,在保持整體架構不變的情況下對自己做一些局部的優(yōu)化和調整。卻忽視了Web開(kāi)發(fā)技術(shù)的發(fā)展趨勢,長(cháng)此以往,被M$玩死是很有可能的。
其實(shí)大部分Web開(kāi)發(fā)者,包括基于B/S方式的企業(yè)應用的開(kāi)發(fā)者,都非??释?jiǎn)化Web表現層的開(kāi)發(fā)、得到令人賞心悅目的交互設計,傳統的Java Web開(kāi)發(fā)技術(shù)對此提供的支持是很初級的。Web表現層開(kāi)發(fā)的工作量,在很多中小型項目中常常會(huì )占到整個(gè)項目開(kāi)發(fā)工作量的一半以上。而后臺往往只是一個(gè)普通的關(guān)系數據庫。顯然,這并不是什么火箭科技,然而,以善于建造火箭科技聞名的一些公司和團體卻無(wú)法解決好這些初級的問(wèn)題。讓使用Java做這些初級的工作變得異常復雜。
Richard Monson-Haefel在去年宣告JavaEE已死,
http://www.infoq.com/cn/news/2007/04/Java-EE-Demise-ReportBruce A. Tate也在《超越Java》對Java的前景發(fā)出了嚴重警告。JavaEE5顯然在簡(jiǎn)化方面還做的遠遠不夠。喪鐘已經(jīng)鳴響,是為誰(shuí)而鳴呢?