前面轉(zhuǎn)貼Liebeck(echo的主要開發(fā)者,我的偶像)關(guān)于echo2和gwt的對比:http://m.tkk7.com/steeven/archive/2006/06/01/49379.html

今天仔細做了一些筆記,并且加入了一些自己的想法,供選型者參考:

綜合對比:
1. 兩個都是非傳統(tǒng)的b/s框架,都是用AJAX來構(gòu)造動態(tài)網(wǎng)站。編程過程都和SWT/Swing差不多。
2. 區(qū)別在于一個運行于客戶端,一個運行于服務(wù)器

3. gwt把代碼編譯為html+js, 目前只支持java1.4規(guī)范。echo沒這限制。
4. gwt可以運行于任何web server, echo則需要傳統(tǒng)的servlet容器。(意義不大,現(xiàn)在哪有靜態(tài)網(wǎng)站啊,后臺交互肯定還是需要的)
5. echo2的客戶端引擎通過ajax提交用戶動作,對用戶界面增量更新。
?
性能:
1. gwt的頁面logic都在瀏覽器上,所以很快。但是如果需要和中間層交互,就會碰到同樣的網(wǎng)絡(luò)問題。
2. echo2的代碼跑在server上,所以所有的交互都需要反饋給server。echo2在設(shè)計上盡量減少這種交互,比如客戶對文本的修改都是延遲發(fā)送到服務(wù)器,而服務(wù)器只發(fā)送頁面的變化部分到瀏覽器。
3. gwt應(yīng)用被編譯成一個頁面,雖然應(yīng)用的復(fù)雜化,這個編譯結(jié)果也隨之變得可怕。。。(個人認(rèn)為隨著編譯器的發(fā)展,不同的頁面可以做到lazy load)
4. echo的js模塊是lazy加載到瀏覽器的,界面上呈現(xiàn)哪些控件才去加載并且緩存對應(yīng)的js模塊。發(fā)送到客戶端的不是邏輯代碼,只有用戶狀態(tài)(個人認(rèn)為echo2現(xiàn)在過于lazy,導(dǎo)致初始化階段多次訪問server加載一些基本的js模塊,應(yīng)該揉合到一起。另外,因為echo邏輯代碼在服務(wù)器上,相對來說可以防止盜版)
?
中間層和數(shù)據(jù)訪問:
1. 如果要訪問數(shù)據(jù),gwt還是要回到傳統(tǒng)的模式,通過rpc訪問servlet。gwt提供把遠程服務(wù)透明的包裝起來,中間傳送pojo. 盡管包裝了,中間的安全和和校驗還是必須要開發(fā)者考慮。
2. echo支持SOA,但是不必須。大多數(shù)情況下安全不是問題,因為數(shù)據(jù)和邏輯都不會暴露到瀏覽器上。(以前給echo提過建議,瀏覽器用戶很可能去模擬一個被disabled按鈕提交,這種問題現(xiàn)在無需考慮)
?
運行環(huán)境:
1. gwt運行在瀏覽器上,并非所有的java類都能編譯成js. gwt現(xiàn)在只支持java.lang/java.util下面的一個子集(版本?1.0.21):27 classes, 11 interfaces, and 18 exception(這讓人想起了j2me開發(fā)). 一些現(xiàn)有的類庫就別想了。
?
調(diào)試:
1. gwt調(diào)試需要一套和運行時完全不同的環(huán)境:HOST模式,代碼作為真正的java在運行。(個人認(rèn)為這里因為是純java調(diào)試,比echo的web調(diào)試要稍微方便一些。做單元測試也更方便些,但不是對最終browser的測試)
2. echo調(diào)試就是傳統(tǒng)的servlet調(diào)試。
?
授權(quán):
1. gwt的api是開源的,編譯器和host模式瀏覽器不公開。整體來說:free. (個人認(rèn)為,如果要擴充gwt可能會遇到麻煩)
2. echo2開源,mozilla public license. free(個人認(rèn)為:echostudio也free就好了。nextapp畢竟要生存)
?
應(yīng)用:
1. gwt可以嵌入傳統(tǒng)的靜態(tài)html, 也能作為一個完整應(yīng)用。做大應(yīng)用要考慮編譯后的重量、本地化、庫支持等問題(關(guān)于18n, 可以在gwt支持論壇上搜索i18n,似乎已經(jīng)有方案)
2. echo2成熟得可以適用各種應(yīng)用,但是不能作為靜態(tài)頁面的一部分使用。(有點吹牛,在大訪問量下,服務(wù)器的壓力肯定不會?。?/div>
?
?
?
個人結(jié)論:
1. 開發(fā)方式都很優(yōu)秀,用純java開發(fā)b/s
2. gwt可用于大型網(wǎng)站,把壓力轉(zhuǎn)嫁給客戶端。
3. echo可用于快速開發(fā)復(fù)雜的企業(yè)應(yīng)用,把壓力丟給服務(wù)器(企業(yè)里面最清閑的就是前臺和服務(wù)器)

兩個產(chǎn)品都很優(yōu)秀,GWT是2006年的IT颶風(fēng),波及后面幾年。M$的日子要難過了, GOOGLE的確是個令人頭痛的對手。

然而,還有比gwt/echo2更美好的未來嗎?
有!把他們的輸出變成flash,用java開發(fā)flash應(yīng)用。去年探索過一段時間,原型已經(jīng)出來,因為flash開發(fā)調(diào)試太ugly, 沒有繼續(xù)下去。
另外,微軟的WPF(AVALON)相當(dāng)值得關(guān)注。
發(fā)表于 2006-06-01 11:32 steeven 閱讀(1946) 評論(3)  編輯  收藏 所屬分類: 胡思亂想學(xué)習(xí)筆記