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