前面轉貼Liebeck(echo的主要開發者,我的偶像)關于echo2和gwt的對比:http://m.tkk7.com/steeven/archive/2006/06/01/49379.html
今天仔細做了一些筆記,并且加入了一些自己的想法,供選型者參考:
綜合對比:
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成熟得可以適用各種應用,但是不能作為靜態頁面的一部分使用。(有點吹牛,在大訪問量下,服務器的壓力肯定不會小)
?
?
?
個人結論:
1. 開發方式都很優秀,用純java開發b/s
2. gwt可用于大型網站,把壓力轉嫁給客戶端。
3. echo可用于快速開發復雜的企業應用,把壓力丟給服務器(企業里面最清閑的就是前臺和服務器)
兩個產品都很優秀,GWT是2006年的IT颶風,波及后面幾年。M$的日子要難過了, GOOGLE的確是個令人頭痛的對手。
然而,還有比gwt/echo2更美好的未來嗎?
有!把他們的輸出變成flash,用java開發flash應用。去年探索過一段時間,原型已經出來,因為flash開發調試太ugly, 沒有繼續下去。
另外,微軟的WPF(AVALON)相當值得關注。