綜合對比
兩個都是非傳統的b/s框架都是用AJAX來構造動態網站編程過程都和SWT/Swing差不多
區別在於一個運行於客戶端一個運行於服務器
gwt把代碼編譯為html+js 目前只支持java規范echo沒這限制
gwt可以運行於任何web server echo則需要傳統的servlet容器(意義不大現在哪有靜態網站啊後台交互肯定還是需要的)
echo的客戶端引擎通過ajax提交用戶動作對用戶界面增量更新
性能
gwt的頁面logic都在浏覽器上所以很快但是如果需要和中間層交互就會碰到同樣的網絡問題
echo的代碼跑在server上所以所有的交互都需要反饋給serverecho在設計上盡量減少這種交互比如客戶對文本的修改都是延遲發送到服務器而服務器只發送頁面的變化部分到浏覽器
gwt應用被編譯成一個頁面雖然應用的復雜化這個編譯結果也隨之變得可怕……(個人認為隨著編譯器的發展不同的頁面可以做到lazy load)
echo的js模塊是lazy加載到浏覽器的界面上呈現哪些控件才去加載並且緩存對應的js模塊發送到客戶端的不是邏輯代碼只有用戶狀態(個人認為echo現在過於lazy導致初始化階段多次訪問server加載一些基本的js模塊應該揉合到一起另外因為echo邏輯代碼在服務器上相對來說可以防止盜版)
中間層和數據訪問
如果要訪問數據gwt還是要回到傳統的模式通過rpc訪問servletgwt提供把遠程服務透明的包裝起來中間傳送pojo 盡管包裝了中間的安全和和校驗還是必須要開發者考慮
echo支持SOA但是不必須大多數情況下安全不是問題因為數據和邏輯都不會暴露到浏覽器上(以前給echo提過建議浏覽器用戶很可能去模擬一個被disabled按鈕提交這種問題現在無需考慮)
運行環境
gwt運行在浏覽器上並非所有的java類都能編譯成js gwt現在只支持javalang/javautil下面的一個子集(版本 ) classes interfaces and exception(這讓人想起了jme開發) 一些現有的類庫就別想了
調試 gwt調試需要一套和運行時完全不同的環境HOST模式代碼作為真正的java在運行(個人認為這裡因為是純java調試比echo的web調試要稍微方便一些做單元測試也更方便些但不是對最終browser的測試)
echo調試就是傳統的servlet調試
授權
gwt的api是開源的編譯器和host模式浏覽器不公開整體來說free (個人認為如果要擴充gwt可能會遇到麻煩)
echo開源mozilla public license free(個人認為echostudio也free就好了nextapp畢竟要生存)
應用
gwt可以嵌入傳統的靜態html 也能作為一個完整應用做大應用要考慮編譯後的重量本地化庫支持等問題(關於n 可以在gwt支持論壇上搜索in似乎已經有方案)
echo成熟得可以適用各種應用但是不能作為靜態頁面的一部分使用(有點吹牛在大訪問量下服務器的壓力肯定不會小)
個人結論
開發方式都很優秀用純java開發b/s
gwt可用於大型網站把壓力轉嫁給客戶端
echo可用於快速開發復雜的企業應用把壓力丟給服務器(企業裡面最清閒的就是前台和服務器)
兩個產品都很優秀GWT是年的IT飓風波及後面幾年M$的日子要難過了 GOOGLE的確是個令人頭痛的對手
然而還有比gwt/echo更美好的未來嗎?
有!把他們的輸出變成flash用java開發flash應用去年探索過一段時間原型已經出來因為flash開發調試太ugly 沒有繼續下去
另外微軟的WPF(AVALON)相當值得關注
From:http://tw.wingwit.com/Article/program/Java/Javascript/201311/25303.html