新聞中心
當(dāng)Abacus Research AG,一家商業(yè)軟件開(kāi)發(fā)公司,決定將開(kāi)發(fā)平臺(tái)從 Borland 的 Delphi 轉(zhuǎn)向Java Swing時(shí),它發(fā)現(xiàn)自己站在了軟件開(kāi)發(fā)的十字路口。

站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到江口網(wǎng)站設(shè)計(jì)與江口網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、主機(jī)域名、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋江口地區(qū)。
我們大量的應(yīng)用程序開(kāi)發(fā)團(tuán)隊(duì)擁有多年的Delphi GUI開(kāi)發(fā)經(jīng)驗(yàn),卻沒(méi)有任何的Java Swing經(jīng)驗(yàn),并且我們需要在極短的時(shí)間內(nèi)將大量的Delphi應(yīng)用程序轉(zhuǎn)換為Swing。在研究了當(dāng)時(shí)可用的GUI工具后,我們覺(jué)得我們應(yīng)該通過(guò)贊助一個(gè)GPL開(kāi)源Java GUI編譯器來(lái)達(dá)到自己的目標(biāo),而且這個(gè)編譯器還可以幫助其他的應(yīng)用程序開(kāi)發(fā)者面對(duì)相同的挑戰(zhàn)。
AbaGUIBuilder ,Abacus Java GUI編譯器被設(shè)計(jì)用來(lái)實(shí)現(xiàn)輕松地從VB或Delphi開(kāi)發(fā)轉(zhuǎn)向Java Swing。這一策略幫助Abacus Research實(shí)現(xiàn)了其Java版應(yīng)用程序的交付,縮短了開(kāi)發(fā)時(shí)間,使其開(kāi)發(fā)人員把精力投向商業(yè)應(yīng)用,而不是Swing框架的錯(cuò)綜復(fù)雜。
如圖1所示,AbaGUIBuilder有能夠在許多其他開(kāi)發(fā)環(huán)境如VB和Delphi找到的要素。位于視窗左上角是活動(dòng)對(duì)象樹(shù),其下是Swing組件選擇區(qū)。位于視窗的中上部是開(kāi)發(fā)面板,或者說(shuō)是“畫布”,在這里放入Swing組件將其實(shí)例化。在右上部是屬性編輯器。下部是事件面板,包括兩個(gè)制表符頁(yè),分別是事件代碼編輯器,為每個(gè)單獨(dú)的可視對(duì)象添加事件代碼,和消息面板,顯示AbaGUIBuilder的狀態(tài)消息。
Abacus GUI編譯器
為什么做我們自己的GUI工具?
為什么我們選擇寫自己的工具?開(kāi)始,我們決定我們的工具應(yīng)該包括以下五個(gè)要求:
1. 容易使用
2.不需要布局管理器的使用經(jīng)驗(yàn)
3. 不需要Swing的使用經(jīng)驗(yàn)
4. 不需要輸出Swing代碼
5. 實(shí)現(xiàn)商業(yè)邏輯與UI的分離
我們?cè)谠u(píng)估當(dāng)時(shí)可用的GUI開(kāi)發(fā)工具時(shí)發(fā)現(xiàn)好的IDE都是手寫Swing代碼,這就不符合我們的***個(gè)和最關(guān)鍵要求。
我們定義的容易使用是指任一開(kāi)發(fā)者不管他/她的Java Swing經(jīng)驗(yàn),都具有在幾分鐘而不是幾小時(shí)內(nèi)開(kāi)發(fā)一個(gè)可運(yùn)行的GUI表單,因此就要是開(kāi)發(fā)者的精力集中在商業(yè)邏輯上而不是框架的細(xì)節(jié)。一開(kāi)始我們的開(kāi)發(fā)者就需要所見(jiàn)即所得的環(huán)境,以便能夠真實(shí)地感知當(dāng)應(yīng)用程序發(fā)布的時(shí)候的情況。這一功能的實(shí)現(xiàn)節(jié)省了開(kāi)發(fā)者的大量時(shí)間。但當(dāng)時(shí)我們?cè)u(píng)估的工具沒(méi)有一個(gè)能夠?qū)崿F(xiàn)這個(gè)功能;設(shè)計(jì)的屏幕與輸出的屏幕并不一樣還有糟糕的調(diào)度算法,對(duì)我們來(lái)說(shuō)簡(jiǎn)直就是巨大的倒退。AbaGUIBuilder通過(guò)預(yù)覽模式來(lái)實(shí)現(xiàn)這一功能,你可以在開(kāi)發(fā)時(shí)看到它運(yùn)行起來(lái)的樣子。
為什么Abacus Research要求UI和商業(yè)邏輯的分離?因?yàn)槠髽I(yè)要處理不斷變換的政府規(guī)則,例如稅收和工資計(jì)算;我們需要在一個(gè)獨(dú)立的包裝模塊里維護(hù)規(guī)則和公式時(shí)保持UI不變的能力,使得當(dāng)公式改變時(shí),應(yīng)用程序JAR(UI)并不需要變化。因此只有改變的公式需要測(cè)試,使得發(fā)布的進(jìn)程簡(jiǎn)單化。
為了滿足這個(gè)需求,我們?cè)O(shè)計(jì)的GUI編譯器將應(yīng)用程序和事件匯編到一個(gè)應(yīng)用程序JAR,JAR隱藏了所有的GUI Swing 代碼并且通過(guò)一個(gè)renderer類(AdaRenderer)在運(yùn)行時(shí)來(lái)執(zhí)行應(yīng)用程序。
Java Swing經(jīng)驗(yàn)
為了確保開(kāi)發(fā)工具能夠做到真正的所見(jiàn)即所得,我們決定采用類似Delphi和VB中用XY坐標(biāo)來(lái)定位的布局管理方式。采用這種方式,Swing JFrame就是一個(gè)畫布,開(kāi)發(fā)者可以將Swing組件放入JFrame的XY布局中。有了XY布局管理器,我們的開(kāi)發(fā)者不需要理解Swing中并不熟悉的,復(fù)雜的布局管理器,這樣我們的應(yīng)用程序開(kāi)發(fā)者就可以把精力集中到應(yīng)用程序UI和它的商業(yè)邏輯中。
事實(shí)上,AbaGUIBuilder包含了大部分的Swing可視組件,從面板到制表符頁(yè),還有對(duì)菜單﹑菜單項(xiàng),帶有Java數(shù)據(jù)庫(kù)連接的數(shù)據(jù)庫(kù)感知組件,JFreeChart組件的支持,和導(dǎo)入第三方可視類庫(kù)的能力。所有這些組件都可以從組件選擇區(qū)拖入一個(gè)空框架來(lái)開(kāi)發(fā)你的GUI應(yīng)用程序。
網(wǎng)頁(yè)題目:對(duì)JavaSwing經(jīng)驗(yàn)的討論
瀏覽路徑:http://fisionsoft.com.cn/article/ccscjed.html


咨詢
建站咨詢
