前面轉(zhuǎn)貼Liebeck(echo的主要開發(fā)者,我的偶像)關(guān)于echo2和gwt的對(duì)比:http://www.aygfsteel.com/steeven/archive/2006/06/01/49379.html
今天仔細(xì)做了一些筆記,并且加入了一些自己的想法,供選型者參考:
綜合對(duì)比:
1. 兩個(gè)都是非傳統(tǒng)的b/s框架,都是用AJAX來(lái)構(gòu)造動(dòng)態(tài)網(wǎng)站。編程過(guò)程都和SWT/Swing差不多。
2. 區(qū)別在于一個(gè)運(yùn)行于客戶端,一個(gè)運(yùn)行于服務(wù)器
3. gwt把代碼編譯為html+js, 目前只支持java1.4規(guī)范。echo沒(méi)這限制。
4. gwt可以運(yùn)行于任何web server, echo則需要傳統(tǒng)的servlet容器。(意義不大,現(xiàn)在哪有靜態(tài)網(wǎng)站啊,后臺(tái)交互肯定還是需要的)
5. echo2的客戶端引擎通過(guò)ajax提交用戶動(dòng)作,對(duì)用戶界面增量更新。
?
性能:
1. gwt的頁(yè)面logic都在瀏覽器上,所以很快。但是如果需要和中間層交互,就會(huì)碰到同樣的網(wǎng)絡(luò)問(wèn)題。
2. echo2的代碼跑在server上,所以所有的交互都需要反饋給server。echo2在設(shè)計(jì)上盡量減少這種交互,比如客戶對(duì)文本的修改都是延遲發(fā)送到服務(wù)器,而服務(wù)器只發(fā)送頁(yè)面的變化部分到瀏覽器。
3. gwt應(yīng)用被編譯成一個(gè)頁(yè)面,雖然應(yīng)用的復(fù)雜化,這個(gè)編譯結(jié)果也隨之變得可怕。。。(個(gè)人認(rèn)為隨著編譯器的發(fā)展,不同的頁(yè)面可以做到lazy load)
4. echo的js模塊是lazy加載到瀏覽器的,界面上呈現(xiàn)哪些控件才去加載并且緩存對(duì)應(yīng)的js模塊。發(fā)送到客戶端的不是邏輯代碼,只有用戶狀態(tài)(個(gè)人認(rèn)為echo2現(xiàn)在過(guò)于lazy,導(dǎo)致初始化階段多次訪問(wèn)server加載一些基本的js模塊,應(yīng)該揉合到一起。另外,因?yàn)閑cho邏輯代碼在服務(wù)器上,相對(duì)來(lái)說(shuō)可以防止盜版)
?
中間層和數(shù)據(jù)訪問(wèn):
1. 如果要訪問(wèn)數(shù)據(jù),gwt還是要回到傳統(tǒng)的模式,通過(guò)rpc訪問(wèn)servlet。gwt提供把遠(yuǎn)程服務(wù)透明的包裝起來(lái),中間傳送pojo. 盡管包裝了,中間的安全和和校驗(yàn)還是必須要開發(fā)者考慮。
2. echo支持SOA,但是不必須。大多數(shù)情況下安全不是問(wèn)題,因?yàn)閿?shù)據(jù)和邏輯都不會(huì)暴露到瀏覽器上。(以前給echo提過(guò)建議,瀏覽器用戶很可能去模擬一個(gè)被disabled按鈕提交,這種問(wèn)題現(xiàn)在無(wú)需考慮)
?
運(yùn)行環(huán)境:
1. gwt運(yùn)行在瀏覽器上,并非所有的java類都能編譯成js. gwt現(xiàn)在只支持java.lang/java.util下面的一個(gè)子集(版本?1.0.21):27 classes, 11 interfaces, and 18 exception(這讓人想起了j2me開發(fā)). 一些現(xiàn)有的類庫(kù)就別想了。
?
調(diào)試:
1. gwt調(diào)試需要一套和運(yùn)行時(shí)完全不同的環(huán)境:HOST模式,代碼作為真正的java在運(yùn)行。(個(gè)人認(rèn)為這里因?yàn)槭羌僯ava調(diào)試,比echo的web調(diào)試要稍微方便一些。做單元測(cè)試也更方便些,但不是對(duì)最終browser的測(cè)試)
2. echo調(diào)試就是傳統(tǒng)的servlet調(diào)試。
?
授權(quán):
1. gwt的api是開源的,編譯器和host模式瀏覽器不公開。整體來(lái)說(shuō):free. (個(gè)人認(rèn)為,如果要擴(kuò)充gwt可能會(huì)遇到麻煩)
2. echo2開源,mozilla public license. free(個(gè)人認(rèn)為:echostudio也free就好了。nextapp畢竟要生存)
?
應(yīng)用:
1. gwt可以嵌入傳統(tǒng)的靜態(tài)html, 也能作為一個(gè)完整應(yīng)用。做大應(yīng)用要考慮編譯后的重量、本地化、庫(kù)支持等問(wèn)題(關(guān)于18n, 可以在gwt支持論壇上搜索i18n,似乎已經(jīng)有方案)
2. echo2成熟得可以適用各種應(yīng)用,但是不能作為靜態(tài)頁(yè)面的一部分使用。(有點(diǎn)吹牛,在大訪問(wèn)量下,服務(wù)器的壓力肯定不會(huì)小)
?
?
?
個(gè)人結(jié)論:
1. 開發(fā)方式都很優(yōu)秀,用純java開發(fā)b/s
2. gwt可用于大型網(wǎng)站,把壓力轉(zhuǎn)嫁給客戶端。
3. echo可用于快速開發(fā)復(fù)雜的企業(yè)應(yīng)用,把壓力丟給服務(wù)器(企業(yè)里面最清閑的就是前臺(tái)和服務(wù)器)
兩個(gè)產(chǎn)品都很優(yōu)秀,GWT是2006年的IT颶風(fēng),波及后面幾年。M$的日子要難過(guò)了, GOOGLE的確是個(gè)令人頭痛的對(duì)手。
然而,還有比gwt/echo2更美好的未來(lái)嗎?
1. 開發(fā)方式都很優(yōu)秀,用純java開發(fā)b/s
2. gwt可用于大型網(wǎng)站,把壓力轉(zhuǎn)嫁給客戶端。
3. echo可用于快速開發(fā)復(fù)雜的企業(yè)應(yīng)用,把壓力丟給服務(wù)器(企業(yè)里面最清閑的就是前臺(tái)和服務(wù)器)
兩個(gè)產(chǎn)品都很優(yōu)秀,GWT是2006年的IT颶風(fēng),波及后面幾年。M$的日子要難過(guò)了, GOOGLE的確是個(gè)令人頭痛的對(duì)手。
然而,還有比gwt/echo2更美好的未來(lái)嗎?
有!把他們的輸出變成flash,用java開發(fā)flash應(yīng)用。去年探索過(guò)一段時(shí)間,原型已經(jīng)出來(lái),因?yàn)閒lash開發(fā)調(diào)試太ugly, 沒(méi)有繼續(xù)下去。
另外,微軟的WPF(AVALON)相當(dāng)值得關(guān)注。
另外,微軟的WPF(AVALON)相當(dāng)值得關(guān)注。
Google Web Toolkit 代表著什麼?
http://ria.richtechmedia.com/2006/05/18/google-web-toolkit-代表者什麼
ps:記得前幾天看到篇調(diào)侃的文章說(shuō)web2.0網(wǎng)蟲的特點(diǎn)之一就是看到flash的頁(yè)面就關(guān),呵呵
如果把應(yīng)用做成游戲一樣的界面,web很難實(shí)現(xiàn),flash相對(duì)容易一些.
以前看過(guò)幾個(gè)純flash網(wǎng)站,有一個(gè)還是ibm上面的(好像)印象很深.比較討厭的是不知道網(wǎng)絡(luò)訪問(wèn)進(jìn)度,不能后退等等...