JavaEE到底忽略了什麼?

讀了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-Report
Bruce A. Tate也在《超越Java》對Java的前景發出了嚴重警告。JavaEE5顯然在簡化方面還做的遠遠不夠。喪鐘已經鳴響,是爲誰而鳴呢?
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章