posts - 241,  comments - 116,  trackbacks - 0

          如今有很多JRuby的程序庫,通過它們,我們能夠更加容易地使用Java工具進(jìn)行GUI開發(fā)

          我們采訪了Monkeybars團(tuán)隊(duì)的James Britt。James對(duì)Moneybars項(xiàng)目做了一個(gè)簡短的介紹:

          Monkeybars是一個(gè)JRuby的MVC框架,這個(gè)框架基于Swing庫之上。本質(zhì)上來說,它并不是對(duì)Swing的一個(gè)重新封裝,而是使用 Swing類封裝視圖邏輯,從而將其和控制器邏輯和(Ruby中的)模型邏輯分離開。從這方面來說,它提供了免費(fèi)、高質(zhì)量的所見即所得Swing UI設(shè)計(jì)工具,將我們從煩躁的UI設(shè)計(jì)中解脫出來,專注于Ruby開發(fā)。Monkeybars最開始是從一個(gè)現(xiàn)實(shí)的應(yīng)用中抽取出來的,它將專注于測試和維 護(hù)大型應(yīng)用程序的項(xiàng)目。

          James闡述了Monkeybars如何處理交互:

          Monkeybars的目的之一是將視圖和控制器分離開來;一個(gè)控制器從來不需要一個(gè)視圖的直接引用。它使用信號(hào)來間接告訴視圖應(yīng)該要做些什么。這樣的話,對(duì)控制器的測試就會(huì)更加簡單,你無需擔(dān)心UI的問題。

          Monkeybars沒有直接實(shí)現(xiàn)GUI組件,它提供給我們?nèi)我膺x擇GUI組件的機(jī)會(huì):

          Monkeybars期望能夠有表示Swing UI的類。在大部分情況下,我們開開心心地使用Netbeans UI編輯器來描畫和編譯UI組件,然后在應(yīng)用程序中使用Ruby代碼引用這些組件。理論上來說,你可以使用Profigacy、Cherry或者 SwiXML+Builder等等,但是我還沒有看到有代碼這樣做(同樣見我關(guān)于Monkeybars的額外計(jì)劃和簡易編寫內(nèi)聯(lián)Swing代碼的評(píng)論)。

          James解釋了開發(fā)者應(yīng)該如何使用Monkeybars:

          很多用戶都是在編寫一些無謂的JRuby程序時(shí)隨便用用Monkeybars,但是我敢肯定有人在現(xiàn)存的Java應(yīng)用程序中使用了它。目前Monkeybars有g(shù)em和jar的發(fā)布形式(同樣也有源代碼形式)。

          我們希望知道是否可以在已經(jīng)存在的應(yīng)用程序中,使用Monkeybars處理GUI腳本:

          [..] 在Java應(yīng)用程序中,你可以加載和執(zhí)行使用Monkeybars的Ruby代碼,或者在Ruby應(yīng)用程序中(假設(shè)在JRuby下執(zhí)行)希望調(diào)用GUI的時(shí)候使用Monkeybars。

          雖然現(xiàn)在的代碼不支持桌面GUI,但是你的問題讓我考慮是否需要現(xiàn)在使用現(xiàn)在的代碼開發(fā)一個(gè)。例如,當(dāng)開發(fā)一個(gè)Web應(yīng)用的時(shí)候,如果使用一個(gè)優(yōu)雅的 GUI而不是在瀏覽器或者終端中呈現(xiàn)錯(cuò)誤,那么這也許是一個(gè)很優(yōu)秀的解決方案。將Monkeybars集成到Ramaze應(yīng)用中,我們可以在開發(fā)的時(shí)候使 用Swing組件。我們也可以在一個(gè)多窗口GUI控制臺(tái)應(yīng)用程序中使用Monkeybars來查看源代碼和文檔。

          在Monkeybars應(yīng)用開發(fā)中,Rawr是一個(gè)非常有用的工具。James是這么解釋rawr的:

          Rawr是另外一個(gè)從現(xiàn)實(shí)需求中演化出來的項(xiàng)目。它將Monkeybars集成到一個(gè)可執(zhí)行的jar包中,提供了一些有用的Rake任務(wù)。你也可以將其集 成到Windows的exe程序或者M(jìn)ac的app程序中(我們正在努力編寫一個(gè)Linux包)。這個(gè)項(xiàng)目包括圖標(biāo)、媒體和內(nèi)容jar包,還能夠?qū)? Ruby編譯進(jìn)類中,提高載入速度。這就是我們?nèi)绾螌otBot和我們的時(shí)間追蹤程序集成在一起的。我們相信這個(gè)時(shí)間追蹤程序是第一個(gè)商業(yè)JRuby桌 面應(yīng)用程序。

          我們也詢問了一些1.0版之后,Monkeybars未來如何發(fā)展的問題:

          現(xiàn)在的核心是相當(dāng)?shù)姆€(wěn)定,大約一年之內(nèi)都不需要做任何重要的修改。如果我們做了一些重大的改變的話,那么有一些大型應(yīng)用程序?qū)?huì)花費(fèi)大量的代價(jià)來重構(gòu),所以我們將來可能只是在這個(gè)基礎(chǔ)上增量構(gòu)建而不是做出修改。

          但是,正得益于這種穩(wěn)定性,我們可以考慮一些特性。例如,我們希望能夠使用自定義的DSL或者構(gòu)建器語法更加容易地創(chuàng)建Swing UI類。Swing是非常巨大的,所以我們不打算封裝所有的Swing組件,但是使用常規(guī)的Ruby語法,很多基礎(chǔ)的UI形式和組件應(yīng)該更容易使用。

          我們現(xiàn)在還關(guān)注應(yīng)用程序生成器。很多應(yīng)用程序都有同樣的形式和行為:啟動(dòng)畫面(Splash Screen)、系統(tǒng)托盤圖標(biāo)、幫助和“關(guān)于”表格等。通過一些命令行調(diào)用或者Rake任務(wù),程序員應(yīng)該能夠很方便地獲得一個(gè)提供最少功能的桌面程序。然 后這個(gè)應(yīng)用程序可以使用內(nèi)聯(lián)代碼或者已編譯的Java類來添加額外的UI組件。

          Logan已經(jīng)使用了視圖綁定功能,這個(gè)功能使得我們更加容易地在模型和視圖之間建立映射,并且能讓我們看起來數(shù)據(jù)一直是保持同步的。

          另外一個(gè)項(xiàng)目將我們認(rèn)為Swing的一些通用功能組合起來,但是現(xiàn)在我們現(xiàn)在還沒有開始進(jìn)行這個(gè)項(xiàng)目,也許這個(gè)項(xiàng)目并不容易。例如,禁止組合框中特定的元 素或者文本域的上下文菜單。我們也在努力地使Monkeybars能夠更好地和Cucumber和RSpec一起工作;在這方面,我們已經(jīng)做了一些工作。

          最后,James提供了一系列指導(dǎo)Monkeybars開發(fā)的資源,如果仍然不明白的話,那么可以直接詢問Monkeybars的核心團(tuán)隊(duì)(現(xiàn)在是James、Logan Barnett和David Koontz):

          當(dāng)然有Monkeybars.org;我們現(xiàn)在正在更新1.0版本的文檔和截圖。

          也可以通過Freenode聯(lián)系#monkeybars獲取信息,而且還有Monkeybars的Google group:
          http://groups.google.com/group/monkeybars

          Logan Barnett關(guān)于Monkeybars的博客:
          http://www.logustus.com

          在RubyConf 2008上David Knootz的視頻:
          http://rubyconf2008.confreaks.com/monkeybars-easy-cross-platform-guis.html
          Martin Slader在Ruby Manor中使用了Monkeybars: http://rubymanor.org/videos/gui_manor_born/
          開發(fā)者可以下載JotBot,并且請(qǐng)求一個(gè)免費(fèi)的試用key來嘗試商業(yè)版本的Monkeybars應(yīng)用程序:
          http://www.getjotbot.com
          我們也開始將一些東西遷移到Kenai,這個(gè)網(wǎng)站更加穩(wěn)定,這樣能夠?yàn)橛脩舾玫靥峁┪臋n。
          http://kenai.com/projects/monkeybars
           
          一旦這些東西整理好,我們會(huì)很快地在Monkeybars主頁上放出詳細(xì)信息。

          你也可以通過Twitter來聯(lián)系我們:
          @jamesbritt
          @logan_barnett
          @dkoontz
          @thehappycampers

          那么。你會(huì)使用什么工具來構(gòu)建JRuby的GUI呢?

          posted on 2009-02-16 15:37 墻頭草 閱讀(647) 評(píng)論(1)  編輯  收藏

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          人人游戲網(wǎng) 軟件開發(fā)網(wǎng) 貨運(yùn)專家
          主站蜘蛛池模板: 长武县| 平湖市| 嘉兴市| 白沙| 奉新县| 吴川市| 云林县| 南涧| 乐东| 塔城市| 白银市| 昌图县| 敦化市| 保亭| 建平县| 澄江县| 宁津县| 尼勒克县| 金阳县| 永和县| 泸溪县| 公主岭市| 施秉县| 融水| 县级市| 河源市| 东乌| 威宁| 温宿县| 新昌县| 云梦县| 乌鲁木齐县| 东海县| 通河县| 进贤县| 明水县| 舟曲县| 洛浦县| 曲水县| 万载县| 内丘县|