<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    拾貝殼

    走過的路
    隨筆 - 39, 文章 - 1, 評(píng)論 - 14, 引用 - 0
    數(shù)據(jù)加載中……

    關(guān)于GWT的第一手經(jīng)驗(yàn)

    譯者安:你敢大膽采用最新的技術(shù)嗎?你顧慮哪些方面?下面的采訪將給我們提供一個(gè)參考。
    ?原文:
    ? ?? 在java中,對(duì)技術(shù)的采用是一件讓人心煩的事情,因?yàn)槲覀儷@得通知的途徑太多。不同的會(huì)議,不同的站點(diǎn)如slashdot和theserverside,而且還有數(shù)不清的個(gè)人博客如dhh和o'Reilly's Radar.
    一個(gè)讓人感興趣的技術(shù)總是讓業(yè)界議論紛紛,正如人們所意識(shí)到的,這個(gè)產(chǎn)品并不是成熟期。
    ??? 為了讓一個(gè)產(chǎn)品成為主流,早期的采用者必須足夠喜歡這項(xiàng)產(chǎn)品來承擔(dān)很多非常的任務(wù)以便
    讓更為膽怯的開發(fā)者相信這項(xiàng)新技術(shù)值得采用。像Hibernate和Spring Framework這樣的技術(shù)花了好幾年
    才成為一個(gè)成熟產(chǎn)品。許多產(chǎn)品,比如maven,在版本確定之前經(jīng)歷了痛苦的時(shí)期因?yàn)樗麄冊(cè)缙谌狈?br />足夠的文檔或者有不同的足夠強(qiáng)大的挑戰(zhàn)者比如ant.本人對(duì)這個(gè)過程中的盲點(diǎn)很感興趣,從議論這個(gè)產(chǎn)品的介紹到大范圍的采用往往要經(jīng)歷成月上年,而且很難指定時(shí)間表。hibernate并不是暴雨似的到來,而是通過大量用戶自我采用.一個(gè)失敗的項(xiàng)目比如ojb出來的時(shí)候也是引起轟動(dòng),但是它最終沒有承諾的那么好.在這種情況下,早期的hibernate使用者其實(shí)信心不足.
    ? 讓我們來看Google Web Toolkit (GWT)…
    GWT在這個(gè)進(jìn)程中處于什么位置?
    gwt看起來是在早期使用(early-adopter)的中期。一開始的議論聲已經(jīng)消去,現(xiàn)在陸續(xù)出現(xiàn)了許多關(guān)于gwt的文章和博客,表明了人們正在期待關(guān)于gwt的第一個(gè)helloworld的反饋報(bào)告。我的很多謹(jǐn)慎的同行都在回避他,事實(shí)上認(rèn)為它是個(gè)不好的主意。風(fēng)險(xiǎn)阻礙了開發(fā)者對(duì)大多數(shù)新技術(shù)的評(píng)估直到他們?cè)诂F(xiàn)實(shí)中看到了一個(gè)活生生的實(shí)例解決方案--就像maven被ibm使用一樣。那些有能力來嘗試風(fēng)險(xiǎn)的開發(fā)者正在對(duì)這個(gè)框架進(jìn)行測(cè)試。他們中的某一個(gè)或許宣稱gwt不適合它的組織。另外一個(gè)同行已經(jīng)原則上接受了gwt的觀點(diǎn),但是沒有時(shí)間來在他的應(yīng)用中集成。所以,到底gwt處于什么時(shí)期?早期的使用人群有哪些經(jīng)驗(yàn)?zāi)兀?br />?? 關(guān)于這個(gè)問題,我專門采訪了Grassroots Technologies公司的Michael Podrazik。Grassroots Technologies是一個(gè)在紐約的咨詢小組。通過在Grassroots的工作,michael已經(jīng)正在把gwt應(yīng)用在他們的一個(gè)新的正在開發(fā)的web應(yīng)用當(dāng)中。在下面的采訪里面,我要求他來交流他的產(chǎn)品經(jīng)驗(yàn)來幫助其他人去理解gwt.我特別要求他給一些gwt客觀的意見,而且細(xì)致的描述他在用gwt開發(fā)過程中遇到的挑戰(zhàn)。幸運(yùn)的是,他的信息將會(huì)幫助你決定是否gwt是你項(xiàng)目的正確選擇。
    采訪內(nèi)容:
    q:什么使你選擇了gwt?
    a:我訂閱了google的blog,所以我聽說了gwt當(dāng)他發(fā)布到j(luò)avaone的時(shí)候。在閱讀了他的文檔之后我開始對(duì)這種方式很好奇,因此我把它down了下來而且開始使用它(play with it).我剛剛開始了一個(gè)項(xiàng)目,這個(gè)項(xiàng)目是把遺留的 Access/VBA的桌面應(yīng)用升級(jí)為一個(gè)web應(yīng)用。在UI方面有許多ajaxian特性所以我想我可以讓gwt一展身手。我認(rèn)為(figure)只要我保持我的架構(gòu)足夠抽象,我就有能力用更為傳統(tǒng)的web應(yīng)用框架來替換gwt層。gwt會(huì)很傷腦筋嗎?至少目前為止我很開心。
    q:gwt出現(xiàn)了那些挑戰(zhàn)?你圍繞著gwt設(shè)計(jì)的web框架嗎?gwt是否挑戰(zhàn)了你關(guān)于web應(yīng)用開發(fā)的觀點(diǎn)?
    a:你確實(shí)不能簡(jiǎn)單的認(rèn)為gwt是一個(gè)webapp的框架,他更是一個(gè)有著rpc和對(duì)象序列化的ui類庫。因?yàn)槟阈枰淖兡沩?xiàng)目組織的assumptions以及包的結(jié)構(gòu)。在java服務(wù)端開發(fā)rich-client用戶界面我們有大量的經(jīng)驗(yàn),比如flash/actionscript.gwt和他們十分類似,因此可以想象有這些元素的項(xiàng)目--分隔的服務(wù)端和客戶端而不是同一的webapp--很爽。
    ? 朝著這個(gè)方向,你需要明確區(qū)分服務(wù)端和客戶端的功能。我相信一個(gè)好的哲學(xué)就是使你的客戶端僅僅用于展示。
    ? 你需要思考你服務(wù)接口的設(shè)計(jì),比如每個(gè)操作的粒度
    ? 你不能在客戶端代碼上用java5得語法
    Q:你的意思是不能再gwt的具體類或者普通的web應(yīng)用里面用java5的語法?
    a:你不能在客戶代碼里面使用java5的語法。我們?cè)诜?wù)端代碼中使用了許多java5的特性,但是所有將要被轉(zhuǎn)換成javascript的代碼必須是1.4的規(guī)范。
    這個(gè)也包括許多事實(shí)上你用在服務(wù)端的類。因?yàn)閞pc框架允許用戶定義的數(shù)據(jù)類型的序列化,意思是你將在瀏覽器端得到一個(gè)已經(jīng)被轉(zhuǎn)化為javascript實(shí)例的類,這個(gè)類作為一個(gè)參數(shù)傳遞到服務(wù)端的實(shí)現(xiàn)中。在你的服務(wù)端代碼中,你將操縱同一個(gè)class而且是編譯過的字節(jié)碼。
    ?這個(gè)時(shí)候就出現(xiàn)了一個(gè)選擇,domain module和gwt的耦合度怎樣才合適呢?
    What we decided was to keep value objects implementation-agnostic so as to avoid “infecting” the API and persistence layers with beans implementing GWT’s IsSerializable interface.
    舉個(gè)例子,在服務(wù)端我們有個(gè)IUser接口的用戶模塊,這個(gè)借口繼承自IPersistable.gwt的實(shí)現(xiàn)接受和返回實(shí)現(xiàn)IsSerializable接口的GwtUser的實(shí)例并把這些實(shí)例利用commons-beanutils發(fā)送到服務(wù)端。
    ?對(duì)于這一點(diǎn)可能有些爭(zhēng)論,這樣做并不非必要。但是我覺得這點(diǎn)額外的工作將帶給你更為清晰的層次劃分。我們可以嵌入gwt到任何一點(diǎn),而且可以轉(zhuǎn)換到springmvc或者struct或者其他的地方,而不需要擔(dān)心代碼上?的反應(yīng)。
    q:你發(fā)現(xiàn)gwt產(chǎn)生的javascript不能垮瀏覽器的地方了嗎?你發(fā)現(xiàn)gwt產(chǎn)生的javascript包含一些錯(cuò)誤需要手動(dòng)調(diào)試了嗎?
    a:都沒有,這正是令我們驚訝的地方。跨瀏覽器javascript的開發(fā)是PITA,而且GWT真正的把你從他那里隔離開來。
    我發(fā)現(xiàn)了大量的在FIREFOX和IE不同的地方,但是這些最后被確認(rèn)都是CSS支持的問題而于GWT無關(guān)。
    我也遇到了一大隊(duì)JAVASCRIPT錯(cuò)誤,但是這些錯(cuò)誤都是應(yīng)為變量而不在初始化,這些問題很快就會(huì)找到并且不需要大量的調(diào)試。目前已經(jīng)完成的大多數(shù)工作并不全是ui控件的問題,或許隨著我們的深入,我們會(huì)遇到一些問題,但是目前為止,我們還沒有多少麻煩。
    q:你的工作組的成員是更喜歡java還是javascript呢?
    顯然是java,哈哈。但是我們有人對(duì)javascript和actionscript也很精通。就像譯者本人。
    q:一句話,對(duì)正在考慮gwt的人,你有什么建議?你會(huì)推薦他嗎?你對(duì)這項(xiàng)技術(shù)的客觀觀點(diǎn)是什么?thumbs up or thumbs down?
    a:目前是thumbs up.我們目前仍然在開發(fā)的早期,而且我還不想說在它是完美的或者在以后的進(jìn)程中不會(huì)咬我們一口。意思是說,你的建構(gòu)要搭好。 它真的像是在作swing或者其他UI的桌面應(yīng)用。
    ?我們用基于Controller和IView實(shí)現(xiàn)的GWT生成了全部的ui.除了gwt模塊引入以外,那里沒有html。
    ? 這是對(duì)幾乎所有主流web應(yīng)用范例的違背,但是如果你喜歡ui編程,他完美的抽象了ajax/dhtml的行為到一個(gè)十分友好和可擴(kuò)展的api.
    ? 我或許會(huì)說如果你的工作是php,asp或者其他語言,你或許需要花更多的功夫。如果你已經(jīng)是一個(gè)有經(jīng)驗(yàn)的java程序員,那么你可以很快投入其中。

    posted on 2006-07-08 13:47 binge 閱讀(1170) 評(píng)論(0)  編輯  收藏 所屬分類: OPEN SOURCE

    主站蜘蛛池模板: 校园亚洲春色另类小说合集| 亚洲AV综合色区无码二区偷拍| 国产精品亚洲综合网站| 亚洲国产精品免费观看| 亚洲a级成人片在线观看| 丁香花免费完整高清观看| 亚洲一区中文字幕在线电影网| 一级女人18毛片免费| 亚洲AV男人的天堂在线观看| 成人免费a级毛片| 亚洲AV无码一区二区三区久久精品| 在线A级毛片无码免费真人 | 国产亚洲AV手机在线观看| 美女黄网站人色视频免费| 亚洲国产精品综合久久网络| 九九九国产精品成人免费视频| 亚洲一区无码中文字幕| 免费在线看黄的网站| 亚洲图片激情小说| 成人免费毛片内射美女-百度| 亚洲国产一区二区三区在线观看| 国产嫩草影院精品免费网址| 人人爽人人爽人人片av免费 | 亚洲码和欧洲码一码二码三码| 女人18毛片水真多免费播放| 青草青草视频2免费观看| 亚洲一区二区女搞男| 在线免费观看你懂的| 亚洲欧美国产国产综合一区| 亚洲人成无码网站久久99热国产| 国产一区二区免费| 亚洲一区二区影视| 亚洲A丁香五香天堂网| 免费A级毛片无码视频| 亚洲youwu永久无码精品| 亚洲夜夜欢A∨一区二区三区| 国产高清不卡免费在线| 免费国产草莓视频在线观看黄| 久久夜色精品国产噜噜噜亚洲AV| 国产美女做a免费视频软件| a级毛片视频免费观看|