Burn Net--燒網(wǎng)

          玩的是電腦,別被電腦玩了。

          統(tǒng)計(jì)

          留言簿(2)

          積分與排名

          Dojo

          閱讀排行榜

          評論排行榜

          2006年8月10日 #

          SwingWeb 1.0.0發(fā)布

          Swingweb是一個(gè)web程序開發(fā)框架,它把AWT/Swing程序裝入一個(gè)web容器,然后轉(zhuǎn)換為純凈HTML/CSS/javascript。在開發(fā)過程中,swing包是沒有任何改變的,開發(fā)者完全可以使用原來寫swing的知識(shí)和習(xí)慣來編寫網(wǎng)頁程序。
          以下是Swingweb項(xiàng)目的主要目的:
          1. 創(chuàng)建真正的基于組件(component)web應(yīng)用程序平臺(tái)?
            Swingweb允許開發(fā)者利用 UI components的概念來開發(fā)web應(yīng)用程序。大大簡化了以前繁復(fù)的頁面管理,seesion創(chuàng)建等等。一旦創(chuàng)建了一個(gè)組件(component), 無論是一個(gè)簡單的textbox,還是一個(gè)復(fù)雜的calender,都是可以重復(fù)使用的(reusable),這減輕了開發(fā)負(fù)擔(dān)。
          2. 在web應(yīng)用程序開發(fā)中使用swing UI model
            Swing component model在java平臺(tái)中應(yīng)用得非常廣泛,所以那些java程序員如果選用swingweb作為開發(fā)框架,將不會(huì)花費(fèi)多少時(shí)間來學(xué)習(xí)。
          3. 允許使用各種GUI開發(fā)工具來簡化開發(fā)
            當(dāng)今已經(jīng)有很多優(yōu)秀的JAVA IDE支持GUI開發(fā),例如eclipse和netbeans,開發(fā)者可以隨意使用就像在開發(fā)一個(gè)java桌面應(yīng)用程序一樣。

          這里有2個(gè)swingweb的演示flash:
          Swingweb官方網(wǎng)站:
          http://swingweb.sourceforge.net/swingweb/

          posted @ 2006-08-10 20:50 Burn Net 閱讀(922) | 評論 (0)編輯 收藏

          將來12個(gè)月內(nèi)java技術(shù)前瞻--來自16位德國java專家

          昨天,16位德國JAVA專家在一起討論“在下面12個(gè)月中,我們應(yīng)該學(xué)習(xí)什么?”,如果你想知道討論的詳細(xì)內(nèi)容,請看這里http://www.firstpartners.net/red-piranha/knowledgebase/VirtualJavaMeetup.

          如果你沒有耐心看下去,那么請看我列出的總結(jié):
          • 網(wǎng)絡(luò)服務(wù)將會(huì)膨脹,但是前提條件是必須保持整潔的情況下。
          • EJB 3 和 Netbeans 是非常值得我們在上面花費(fèi)時(shí)間的, 它們都比以前的版本要完善得多,雖然之前它們的名聲并不是那么好。
          • Middleware (例如 workflow and Rules Engines) 關(guān)注的是團(tuán)隊(duì)開發(fā),但是想進(jìn)入這樣一個(gè)團(tuán)體的障礙是很高的。
          • Struts會(huì)繼續(xù)稱霸JAVA WEB frameworks, 盡管它已經(jīng)不是最優(yōu)秀的技術(shù)了。
          • 非常多的公司將繼續(xù)使用 Java 1.4, 同時(shí)關(guān)注著Java 1.6。
          • Service Orientated Architecuture (SOA)是一個(gè)非常不錯(cuò)的想法,但是目前為止并沒有太多的project在使用它。
          • IDE’s (Netbeans / Eclipse / JDeveloper) 會(huì)給我們帶來很多好處, 前提條件是它們必須被low level工具支持 (例如 Ant 和 Maven).

          posted @ 2006-08-10 20:49 Burn Net 閱讀(1011) | 評論 (1)編輯 收藏

          2006年6月27日 #

          踏上國土。

          經(jīng)過11個(gè)半小時(shí)的長途飛行,還有在韓國的一夜煎熬,終于踏上了祖國的國土。回家的感覺真好。
          不得不提一下在韓國的待遇,因?yàn)橐^夜,機(jī)場提供賓館住宿,飛機(jī)于韓國當(dāng)?shù)貢r(shí)間晚上9點(diǎn)半到達(dá),結(jié)果凌晨2點(diǎn)多我才躺在賓館的床上。
          條件還是不錯(cuò),是個(gè)5星的賓館,于是按計(jì)劃給沒有同行的老婆打個(gè)電話,聊了大概20分鐘,可是第二天退房的時(shí)候竟然要了我1萬多korean wan,合人民幣100左右。我算是張記性了,以后還是買張卡再打電話吧。

          回國稍微休息了一天,把Dojo book第一章補(bǔ)充翻譯了出來。

          posted @ 2006-06-27 17:10 Burn Net 閱讀(324) | 評論 (2)編輯 收藏

          Dojo book第一章補(bǔ)充 I/O

          譯者序:
          Dojo book目前還在不斷更新和補(bǔ)充中,我會(huì)盡量跟上原著的腳步,給大家最新的信息。
          更新我會(huì)用隨筆寫出來,同時(shí)也會(huì)更新原文章。

          I/O

          dojo.io.blind介紹


          在我們制作dojo的時(shí)候,目的是讓用戶和開發(fā)者都能享受到DHTML程序。在很多朋友的支持下,特別是Aaron Boodman和Mark Anderson,我們已經(jīng)找到了解決可用性的方法。我們提供了一個(gè)單獨(dú)的易用的API和一個(gè)包裝類,這個(gè)類只需要兩個(gè)文件。dojo.io包提供了對XMLHTTP和一些其他更復(fù)雜的傳輸結(jié)構(gòu)的支持。

          在dojo.io包中我們一般最常使用的是dojo.io.bind()方法。dojo.io.blind()是一個(gè)標(biāo)準(zhǔn)的異步的請求API,它包含了各種傳輸層(transport layers),包括queues of iFrames,XMLHTTP,mod_pubsub,LivePage等等。Dojo會(huì)試圖為當(dāng)前的請求選擇最合適的傳輸方法,因?yàn)樵谧鼍W(wǎng)站時(shí)一般不會(huì)使用到其他傳輸,所以我們只用到XMLHTTP。dojo接受一個(gè)匿名的類,但是在知道這個(gè)類的屬性的情況下,把它作為方法參數(shù)(function argument)。下面的代碼是創(chuàng)建一個(gè)請求(request),這個(gè)請求會(huì)從URL返回原始的字符串。
          dojo.io.bind({
          ????url:?
          "http://foo.bar.com/sampleData.txt",
          ????load:?
          function(type,?data,?evt){?/*do?something?w/?the?data?*/?},
          ????mimetype:?
          "text/plain"
          });

          這就是全部,你提供了一個(gè)數(shù)據(jù)地址,還有一個(gè)當(dāng)你得到返回值時(shí)要執(zhí)行的function。但是如果在請求過程中出錯(cuò)了怎么辦呢?我們再來創(chuàng)建一個(gè)register來解決:

          dojo.io.bind({
          ????url:?
          "http://foo.bar.com/sampleData.txt",
          ????load:?
          function(type,?data,?evt){?/*do?something?w/?the?data?*/?},
          ????error:?
          function(type,?error){?/*do?something?w/?the?error*/?},
          ????mimetype:?
          "text/plain"
          });

          同樣也可以只創(chuàng)建一個(gè)單獨(dú)的handler來解決:
          dojo.io.bind({
          ????url:?
          "http://foo.bar.com/sampleData.txt",
          ????handle:?
          function(type,?data,?evt){
          ????????
          if(type?==?"load"){
          ????????????
          //?do?something?with?the?data?object
          ????????}else?if(type?==?"error"){
          ????????????
          //?here,?"data"?is?our?error?object
          ????????????//?respond?to?the?error?here
          ????????}else{
          ????????????
          //?other?types?of?events?might?get?passed,?handle?them?here
          ????????}
          ????},
          ????mimetype:?
          "text/plain"
          });

          下面的代碼提交一段javascript程序段,然后讓服務(wù)器運(yùn)行它,一般我們這么做是為了加速程序運(yùn)行,注意mimetype:
          dojo.io.bind({
          ????url:?
          "http://foo.bar.com/sampleData.js",
          ????load:?
          function(type,?evaldObj){?/*?do?something?*/?},
          ????mimetype:?
          "text/javascript"
          });

          如果你想確保程序使用XMLHTTP,可以這樣寫:
          dojo.io.bind({
          ????url:?
          "http://foo.bar.com/sampleData.js",
          ????load:?
          function(type,?evaldObj){?/*?do?something?*/?},
          ????mimetype:?
          "text/plain",?//?get?plain?text,?don't?eval()
          ????transport:?"XMLHTTPTransport"
          });
          Being a jack-of-all-trades, bind() also supports the submission of forms via a request (with the single caveat that it won't do file upload over XMLHTTP):
          作為一個(gè)jack-of-all-trades(萬事通),bind()同樣支持來自于表單提交的數(shù)據(jù)。
          dojo.io.bind({
          ????url:?
          "http://foo.bar.com/processForm.cgi",
          ????load:?
          function(type,?evaldObj){?/*?do?something?*/?},
          ????formNode:?document.getElementById(
          "formToSubmit")
          });
          以上只是一些最基本的,其實(shí)這些可以不用全部由開發(fā)者自定義。

          RPC
          你可以看到,Dojo通過dojo.io.bind提供了簡單,強(qiáng)大的方法使用多種多樣的I/O functions。但是在開發(fā)過程中,程序員會(huì)調(diào)用很多很多I/O,這同時(shí)會(huì)給服務(wù)器和客戶端加重負(fù)擔(dān)。Dojo的RPC服務(wù)就是為了減少負(fù)擔(dān),易用,精簡代碼而生的。

          RPC的全名是Remote Procedre Calls,或者Remote Method Invocation,(譯者:遠(yuǎn)程method調(diào)用)。最基本的,RPC允許開發(fā)者調(diào)用在遠(yuǎn)程服務(wù)器上的方法(method)。Dojo不僅提供了基本的RPC client包,而且還擴(kuò)展了它,使它支持JSON-RPC服務(wù)和YAHOO服務(wù)。同時(shí)你也可以自己寫出相對于其他服務(wù)的類。

          我們假定有一個(gè)需要調(diào)用服務(wù)器端程序的小程序,假設(shè)要調(diào)用add(x,y)和subtract(x,y)。在沒有特殊情況的條件下,我們的客戶端會(huì)這樣寫:
          add?=?function(x,y)?{

          ????request?
          =?{x:?x,?y:?y};

          ????dojo.io.bind({
          ????????????url:?
          "add.php",
          ????????????load:?onAddResults,
          ????????????mimetype:?
          "text/plain",
          ????????content:?request
          ????});
          }

          subtract?
          =?function(x,y)?{

          ????request?
          =?{x:?x,?y:?y};
          ????
          ????dojo.io.bind({
          ????????????url:?
          "subract",
          ????????????load:?onSubtractResults,
          ????????????mimetype:?
          "text/plain"
          ????????content:?request
          ????});
          }


          你看,這不是很難。但是無論是我們讓服務(wù)器運(yùn)行add和subtract還是讓客戶端自己計(jì)算,這只是一個(gè)非常簡單的程序。如果我們要調(diào)用在服務(wù)器上30個(gè)不同method會(huì)怎么樣呢?我猜我們可能要重復(fù)的寫幾乎一樣的代碼一遍又一遍,每次都要?jiǎng)?chuàng)建一個(gè)請求類(request object),設(shè)定URL,設(shè)定變量等等。這不僅容易出錯(cuò),而且還很枯燥。
          Dojo的RPC客戶端簡化了這個(gè)過程:

          {
          ????
          "serviceType":?"JSON-RPC",?
          ????
          "serviceURL":?"rpcProcessor.php",?
          ????
          "methods":[?
          ????????{
          ????????????
          "name":?"add",?
          ????????????
          "parameters":[
          ????????????????{
          "name":?"x"},
          ????????????????{
          "name":?"y"}????
          ????????????]
          ????????},
          ????????{
          ????????????
          "name":?"subtract",?
          ????????????
          "parameters":[
          ????????????????{
          "name":?"x"},
          ????????????????{
          "name":?"y"}????
          ????????????]
          ????????}

          ????]
          }

          以上就是對于服務(wù)器的定義。一旦定義創(chuàng)建完畢,其他的事情就簡單了,我們還可以創(chuàng)建一個(gè)類:
          var?myObject?=?new?dojo.rpc.JsonService?(defintion);
          要使用服務(wù)器的方法:
          myObject.add(3,5);

          我敢打賭你會(huì)在想“我不是只調(diào)用方法就夠了,我還有得到計(jì)算的結(jié)果。”你是對的,但這也是非常容易的。服務(wù)器端的myObject.add()會(huì)返回一個(gè)延緩類(deferred object)。Twisted Python用戶可能對延緩類(deferred object)很熟悉,延緩類(deferred object)允許開發(fā)者根據(jù)返回?cái)?shù)據(jù)的類型附加一個(gè)或更多的回叫(callbacks)和錯(cuò)誤處理(errbacks)。這里有一個(gè)簡單的例子:
          var?myDeferred?=?myObject.add(3,5);
          myDeferred.addCallback(myCallbackMethod);

          我們把mycallbackmethod作為回叫添加到我們的延緩類mydeferred。這時(shí),8會(huì)被傳遞進(jìn)mycallbackmethod。另一方面,我們也可以添加一個(gè)errback method來處理服務(wù)器返回的出錯(cuò)信息。我們隨意添加回叫方法(callback),多少都可以,它們會(huì)按照我們定義的順序被調(diào)用。

          以上的例子都是圍繞dojo.rpc.JsonService展開的。我們還可以使用dojo.rpc.YahooService,規(guī)范和結(jié)構(gòu)都是一樣的。這兩個(gè)類都是繼承了dojo.rpc.RpcService。要?jiǎng)?chuàng)建自己的類會(huì)在第二章中詳細(xì)介紹。(譯者:第二章原著還沒有完成)

          posted @ 2006-06-27 16:56 Burn Net 閱讀(2484) | 評論 (7)編輯 收藏

          2006年6月23日 #

          旅途

          明天中午12點(diǎn)我將坐上飛往祖國的航班。
          想想11個(gè)半小時(shí)的飛行就煩。計(jì)劃在飛機(jī)上完成Dojo.Book第二章的翻譯。
          幻想10年后的飛機(jī)會(huì)有多么舒適,有床,可以上網(wǎng)我就滿足了。
          現(xiàn)在我都快有恐飛癥了。

          posted @ 2006-06-23 20:55 Burn Net 閱讀(279) | 評論 (0)編輯 收藏

          2006年6月22日 #

          一個(gè)“笑話”引發(fā)的思考

          抱歉引用了“饅頭”的經(jīng)典格式
          技術(shù)是枯燥的,如果我們玩技術(shù)的再不自娛自樂一下,那可真沒救兒了。
          言歸正傳,“笑話”是這樣的:

          當(dāng)美國人第一次成功發(fā)射載人衛(wèi)星后,美國宇航員發(fā)現(xiàn)因?yàn)樘杖鄙俚厍蛞Γ瓉矸奖愕膱A珠筆不能用了。于是美國花巨資組成了一個(gè)研發(fā)小組,經(jīng)過半年后終于研制出了一種可以不受引力限制的圓珠筆,美國宇航局(NASA)非常滿意。
          與此同時(shí),俄羅斯宇航員也遇到了同樣難題,圓珠筆不好用了!
          結(jié)果俄羅斯宇航員決定使用鉛筆。


          我突然想起了我在不久之前研究ajax的時(shí)候,為了使用Net Beans+GWT來開發(fā)ajax,查閱了很多文檔,找了很多資料,就是沒想起來其實(shí)可以用textpad寫class的。

          這也是我為什么喜歡上dojo的原因,本來簡潔的東西就讓它簡潔下去,何必讓它那么復(fù)雜?

          當(dāng)然,如果能熟練的用Net Beans+GWT或者DWR開發(fā)ajax也不乏是件美事。

          但是也許有的時(shí)候我們沒有象“美國”那樣的實(shí)力或者精力,在想簡單的作一個(gè)小項(xiàng)目的時(shí)候不妨試試“俄羅斯”的辦事方法,該簡單的事情別搞復(fù)雜了。

          posted @ 2006-06-22 19:11 Burn Net 閱讀(248) | 評論 (0)編輯 收藏

          最近愛上Dojo

          也許是因?yàn)镈ojo的簡潔,強(qiáng)大,或者是我真的沒有耐心自己一點(diǎn)一點(diǎn)寫javascript。

          以前研究過gwt,dwr,最后還是感覺dojo用得最舒服,dojo不會(huì)象dwr限制我的server side。

          以后我會(huì)寫很多關(guān)于dojo的文章,當(dāng)然還包括如何自由使用dojo鏈接到servlet/jsp/php/sql。

          posted @ 2006-06-22 19:10 Burn Net 閱讀(639) | 評論 (1)編輯 收藏

          2006年6月21日 #

          Dojo.Book第一章翻譯完成。(鏈接修正,抱歉)

          今天突然發(fā)現(xiàn)原來wordpress.com的blog在中國訪問有問題,為了能跟更多的朋友一起學(xué)習(xí),于是決定轉(zhuǎn)到這個(gè)blog,開始我的新研究旅程。

          這里的第一感覺是氣氛很好,沒有程序員的牢騷,只有技術(shù),技術(shù)第一。

          把剛剛完成的Dojo.Book第一章翻譯轉(zhuǎn)過來,給有需要的朋友一些幫助,我會(huì)抓緊把下兩章翻譯出來。
          Dojo.Book第一章
          以后我還會(huì)寫更多關(guān)于Dojo的文章。
          我個(gè)人比較看好Dojo,簡潔,強(qiáng)大,最近Sun也加入了Dojo開發(fā)組。

          抱歉,剛剛修正鏈接。

          posted @ 2006-06-21 13:09 Burn Net 閱讀(1628) | 評論 (4)編輯 收藏

          僅列出標(biāo)題  
          主站蜘蛛池模板: 宝清县| 巩留县| 沈阳市| 遂平县| 新竹县| 通许县| 宝应县| 同心县| 治县。| 阳山县| 同德县| 乌苏市| 灯塔市| 沁阳市| 湘乡市| 义马市| 邵武市| 武义县| 文安县| 靖州| 苍溪县| 贺兰县| 和平县| 陆河县| 邹城市| 逊克县| 合阳县| 遂平县| 湟中县| 集贤县| 镇雄县| 平陆县| 中山市| 应用必备| 习水县| 陇南市| 阿坝| 磐石市| 盱眙县| 东莞市| 临清市|