kukooBlog

          look to the master, follow the master, walk with the master, see through the master, become the master.

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            213 隨筆 :: 0 文章 :: 285 評論 :: 0 Trackbacks

          Eclipse RCP平臺真的是一個非常好的平臺,但是在用RCP的過程中,一定有一個大問題: SWT的UI widgets。 了解Swing的人知道,Swing下面有相當(dāng)多的widgets,而且Sun還贊助著一個SwingLab,為Swing開發(fā)更多的客戶化的UI widgets。 但是SWT目前有這么一個問題,SWT的元件,不能直接繼承來開發(fā)一個新的UI組件,Eclipse雖然提供了大量的widgets,但是卻還不夠豐富,或者使用上有局限性(比如table這個組件)。 所以我們面臨的問題就是: 要么自己開發(fā)適合自己需求的widgets,要么在網(wǎng)上找。 而目前,還沒有像Swing那樣存在大量的custom widgets,這有點像``雞"和``蛋"的問題。

          昨天在EclipseZone里看到一篇文章,進而找到了這篇blog: Custom SWT widgets List,里面給出了一個提供SWT widgets的列表,相當(dāng)有幫助,像KTable這樣功能更強的table組件。 當(dāng)然,Eclipse也注意到這點了,所以Eclipse有一個孵化項目: Nebula,開始關(guān)注custom SWT widgets,并在每一個組件成熟以后,加到SWT平臺里面。

          【相關(guān)鏈接】
          Custom SWT widgets List
          Eclipse Nebula 項目


          Technorati : , ,

          posted on 2006-09-01 17:23 kukooBlog 閱讀(2803) 評論(17)  編輯  收藏 所屬分類: EclipseJava

          評論

          # re: Custom SWT widgets ? 2006-09-22 11:22 david.z
          你好,一直關(guān)注你的blog。
          對你們的東西非常感興趣,請和我聯(lián)系。msn:zwangli@hotmail.com  回復(fù)  更多評論
            

          # re: Custom SWT widgets ? 2006-10-24 22:11 ken[匿名]
          eclipse插件站點:http://www.eclipsepowered.net/  回復(fù)  更多評論
            

          # re: Custom SWT widgets ? 2007-01-03 16:03 hhh[匿名]
          其實swing的目標(biāo)就是建立一個獨立的GUI系統(tǒng)(獨立于OS),所以GUI的繪制都是自己實現(xiàn)(建立在java 2D上)。這樣帶來的好處就是可以拋開歷史包袱,從頭開始實現(xiàn)一個靈活,現(xiàn)代,面向?qū)ο螅嬲缙脚_的 GUI框架。
              
           當(dāng)初swing設(shè)計思想是卓越的,Swing有著無與倫比的擴展性和靈活性,它采用了很多現(xiàn)代的UI理論,如renderer/editor等。只是礙于實現(xiàn)性能。
           但隨著swing實現(xiàn)的性能越來越高,硬件環(huán)境越來越好。swing的發(fā)展一定更好!
              
           要說sun對于swing的失敗,不是swing設(shè)計思想和架構(gòu)有問題。而是他們?yōu)閟wing實現(xiàn)的默認(rèn)look & feel是糟糕的!
            回復(fù)  更多評論
            

          # re: Custom SWT widgets ? 2007-01-03 16:05 hhh[匿名]
          再次強調(diào)一下,
          swing的優(yōu)秀在于它的架構(gòu)和思想!如果你不從這些角度審視一下swing的話,你當(dāng)然很難發(fā)現(xiàn)它的美!因為swing的設(shè)計充滿了OO的藝術(shù)!

          在"Swing是MVC設(shè)計的典范"一文中有這樣一段話:
          仔細(xì)研究Swing中事件監(jiān)聽、Model-View分離、Renderer/Editor機制、可插拔的LookAndFeel等機制,簡直就是一門藝術(shù),充滿了美感。而如果你非常痛恨這些設(shè)計并覺得他們怪異,很可能你是剛從VB或者Delphi轉(zhuǎn)過來,這些快速開發(fā)工具幫助了你也“害”了你。
            回復(fù)  更多評論
            

          # re: Custom SWT widgets ? 2007-01-03 16:08 hhh[匿名]
          我欣賞優(yōu)雅和一致的設(shè)計,一致性反應(yīng)了設(shè)計者極高的抽象水平,優(yōu)秀的概念表達.
            
            我們現(xiàn)在來看MFC和swing.
            MFC是如何表達GUI的,首先對于GUI元素沒有一個共性抽象,使得無法進行任意的遞歸組合.
            MFC認(rèn)為 GUI元素是原子的,GUI元素自身提供了設(shè)置它屬性的API基本決定了這個GUI元素給外部定制它的能力.低靈活性!
            
            MFC認(rèn)為GUI元素自身應(yīng)該處理事件,并且使用消息映射來實現(xiàn)這一點.
            所以通常如果你要處理某個GUI元素的事件,你需要寫一個繼承這個GUI元素的類.
            但殊不知很多情況下事件處理者和GUI元素是分離的!
            
            MFC的MVC是實現(xiàn)是不一致的,他并沒有將這一理念貫穿于整個框架.而只是單獨搞了個doc/view.
            
            所以如果我以今天的思路來看MFC,我覺得它對GUI的抽象是糟糕的,差勁概念表達.
            回復(fù)  更多評論
            

          # re: Custom SWT widgets ? 2007-01-03 16:09 hhh[匿名]
          MFC認(rèn)為 GUI元素是原子的,GUI元素自身提供了設(shè)置它屬性的API基本決定了這個GUI元素給外部定制它的能力.低靈活性!
            ______________________________________________________
            
            這一條是很多win下GUI框架的通病,swt也好不到哪里去.

          swing的組件都是四兩撥千斤,模型和繪圖都是分離的,如表格
            JTable 就有TableModel ---->JTable<-----TableUI,從結(jié)構(gòu)來說JTable完全扮演著控制器的角色.從API的使用者角度來說它是一個MVC體系的外觀,讓人想起了設(shè)計模式中的外觀模式.
            
            因為swing中一個GUI元素就是一個MVC體系,而不原子的.
            除此之外還可以為組件自定義renderer/editor.
            回復(fù)  更多評論
            

          # re: Custom SWT widgets ? 2007-01-03 16:15 hhh[匿名]
          eclipse構(gòu)建在swt而不是swing上,現(xiàn)在看來是個錯誤,如果不是這樣,sun可能早放棄nb了。

          我很喜歡Eclipse,可就這個swt讓人不快!

            回復(fù)  更多評論
            

          # re: Custom SWT widgets ? 2007-01-03 16:16 hhh[匿名]
           SWT從實質(zhì)上說是頭疼醫(yī)頭,腳疼醫(yī)腳,這種本質(zhì)決定的它的架構(gòu)不好,當(dāng)需求增加時,當(dāng)面臨現(xiàn)實的Customization時,當(dāng)面臨各種不同操作系統(tǒng)時,它的缺點就暴露出來了,簡單的說:
            
             對Java 界面涉及不深的人往往偏好SWT,對Java界面設(shè)計非常熟悉才能真正洞悉Swing的內(nèi)涵。人們對于SWT的喜愛是同他對SWT的了解深刻度成反比的, Swing恰好相反。對于SWT了解越淺的人,越對他的光鮮外表(主要是Eclipse的表現(xiàn)比較好,但畢竟Eclipse的漂亮程度歸公于他的界面設(shè)計藝術(shù),實質(zhì)并不在SWT的高級)。隨著開發(fā)者對于SWT的深入了解,就會發(fā)現(xiàn)越來越多的問題和局限性,了解不深的人,或者從傳統(tǒng)C/C++, WinForm以及MFC等東東轉(zhuǎn)過了的人,往往被SWT的表面所迷惑。可以不客氣的說SWT是AWT早已拋棄的努力。
            
             SWT憑著它對Windows平臺的優(yōu)化迷惑很多人,又以它的編程簡單性忽悠了很多人。其實SWT它在Linux的效率和Mac OS上的錯誤簡直要讓人發(fā)瘋。如果你真的想需要Windows平臺的界面,干嘛要用Java? C#豈不是更好?
            
             SWT 一個迷惑人的地方是所謂平臺保真(Fidelity),其實這也造成它不能輕易擴展和Customization的根源,而且,開發(fā)者往往喜歡平臺保真的界面,而用戶卻不一定,相當(dāng)?shù)挠脩糇罱K喜歡WinAMP等類似可以更換皮膚和LookAndFeel的功能。即使是平臺保真度,Java6已經(jīng)完完全全的實現(xiàn)平臺一致性。SWT已經(jīng)沒有優(yōu)勢可言。
            
             SWT的另一個迷惑人的地方就是所謂速度,人們往往認(rèn)為本地組件就比模擬組件要快,其實不然,由于 Java虛擬機和運行時速度的提高,Java編寫的程序已經(jīng)可以與C的速度相媲美,加上Swing內(nèi)在有虛擬機內(nèi)嵌代碼和熱編譯的等功能支持,Java實現(xiàn)的Swing代碼已經(jīng)和操作系統(tǒng)本身的組件沒有什么兩樣了。最近有JavaLobby上論壇貼出了一個名字叫MiGLayout,關(guān)于測試GUI界面的 BenchMark,測試的結(jié)果是:
            
             Windows平臺上Swing的啟動速度稍慢于SWT,運行速度幾乎一樣。
             Linux平臺上Swing的速度高于SWT,無論是啟動速度還是運行速度。GTK2上的速度差別就更大。
             MacOS上Swing的速度高于SWT,無論是啟動速度還是運行速度。
            
             IBM當(dāng)時開發(fā)Eclipse時,Swing的確不爭氣,所以才有了SWT的出現(xiàn),但是如果當(dāng)時Sun就把Swing打磨成現(xiàn)在這個樣子,估計IBM也不會輕易開發(fā)SWT,但也多虧SWT的出現(xiàn),促使Sun將Swing進行改革。
            
             最近一個國外叫EvansData的咨詢公司調(diào)查的GUI工具結(jié)果是:
             swing占有率47%,名列第一,WinForm名列第二,SWT不超過8%
            
             結(jié)論是:
             SWT不會消亡,因為有Eclipse的存在,如果想為它開發(fā)插件,就必須使用SWT。另外和AWT相似,SWT可以應(yīng)用到Mobile開發(fā)界面上,因為Swing畢竟太大了。
             Swing因為Java5和6的推動將席卷Java Desktop市場。
            
             畢竟任何的東西的存在都是合理,存在即合理,合理就不可能消逝。80/20的關(guān)系。
            
             對我的話持懷疑態(tài)度的人,尤其是Swing的速度可以去看看JavaLobby的這個帖子:
            http://www.javalobby.org/java/forums/t78884.html
             如果對Swing占有市場率有懷疑的人可以去看看這條新聞:
            http://www.clientjava.com/blog/2005/10/18/1129665205787.html




          SWT從實質(zhì)上說是頭疼醫(yī)頭,腳疼醫(yī)腳,這種本質(zhì)決定的它的架構(gòu)不好。
            ——————————————————————
            一針見血


            回復(fù)  更多評論
            

          # re: Custom SWT widgets ? 2007-01-03 16:21 hhh[匿名]
          熱炒Swing,重塑C/S輝煌(轉(zhuǎn))

          最近對Web有點倦了,正趕上很多程序員又開始反思C/S的好處,開始熱炒Smart Client及Flex之類的東西。加之接觸到一兩個基于.NET winForm的系統(tǒng),感覺還是相當(dāng)棒的,不由得開始重思C/S系統(tǒng)。
            其實話說回來,在局域網(wǎng)和intranet領(lǐng)域,還是C/S好使。所以在業(yè)界瘋炒Web2.0的時代,并不能阻止無數(shù)基于Win32API的老掉牙系統(tǒng)繼續(xù)統(tǒng)治各單位的主要業(yè)務(wù),妨礙以此為生的公司與程序員們大撈鈔票。這充分說明了C/S的價值與必要性。畢竟很多C/S下簡單的界面功能,換到B/S下可得費不少心血,響應(yīng)也遠不及C/S。各企事業(yè)單位的大多數(shù)業(yè)務(wù)系統(tǒng),也并不需要internet。由此可見祖先的“中庸之道”是何等明智。以筆者愚見,B/S 適用于必須以internet為傳輸媒介的系統(tǒng),換言之也就是各組織的外部系統(tǒng);而內(nèi)部業(yè)務(wù)系統(tǒng),多數(shù)情況下仍應(yīng)以C/S為佳。
            以上論點并非要我們回到上一個基于Win32API的時代,而是需要開辟一個全新的C/S時代。上一代C/S系統(tǒng),至今仍難以解決諸如客戶端部署、信息孤島,過分依賴數(shù)據(jù)庫,訪問容量低,擴展性與可維護性差等等“硬傷”。原因至少有三,一是以數(shù)據(jù)庫系統(tǒng)為核心,無法適應(yīng)數(shù)據(jù)交換標(biāo)準(zhǔn)化與多媒介的要求;二是因 Win32API的壟斷造成各平臺與軟件不兼容;三是未能應(yīng)用OOP的方式進行開發(fā),未進行分層設(shè)計,代碼高度耦合。
            那么我們的新C/S時代應(yīng)該以怎樣的方式解決問題?首先,數(shù)據(jù)不應(yīng)再采用以數(shù)據(jù)庫、文檔廠商自行其事的標(biāo)準(zhǔn)(如Oracle、SQL Server、WinWord),而應(yīng)采用統(tǒng)一的標(biāo)準(zhǔn)(現(xiàn)在主要是XML);其次,應(yīng)脫離專屬平臺與壟斷技術(shù);第三,深入研究OOP,清晰地分層設(shè)計,降低代碼的耦合度,使系統(tǒng)具有良好的可維護性與擴展性。只有這樣,我們才能在客戶業(yè)務(wù)與IT技術(shù)飛速發(fā)展的時代,充分保護與發(fā)展好我們的即有設(shè)計與代碼,快速滿足客戶的需求。像上個時代不斷重建那種“做好就扔”的快速原型系統(tǒng)之悲劇不應(yīng)一再重演。
            標(biāo)準(zhǔn)是有了,那么有這樣的技術(shù)嗎?有,而且近在眼前,那就是Swing。其實這技術(shù)Sun老早就提供給大家了,可惜在國內(nèi)一直火不起來。其中原因及筆者力推的原因有三:一、Swing這種基于虛擬機的技術(shù),比之Win32 Form慢多了。這在三五年前的確是個大問題。但現(xiàn)在的機器快得太多,連MS也力推基于虛擬機的winForm,這說明虛擬機的時代全面到來是確定無疑了。但MS因其壟斷政策,導(dǎo)致.NET成了瘸腿的虛擬機,跨平臺的要求短期內(nèi)是不可能的。與平臺脫耦合的要求只有Swing才能擔(dān)當(dāng)。二、Swing的設(shè)計要求高。Swing將經(jīng)典的MVC可謂發(fā)揮得淋漓盡致。而由于歷史原因,國內(nèi)絕大多數(shù)C/S程序員一直于缺乏OOP習(xí)慣及經(jīng)驗。對Swing這種經(jīng)典設(shè)計方式是難以接受的,無法領(lǐng)會由分層所帶來的巨大長遠優(yōu)勢。故寧可死守VB、PB、Delphi這些失去前途的東西,或者抵不住MS winForm快餐的誘惑,再次投入MS過程式編程的泥潭。不深入理解OOP,不深入領(lǐng)會分層思想,幾乎無法有效使用Swing,這正是Sun的嚴(yán)格與苦心,大家要用心體會啊。三、MS與國內(nèi)很多程序員自Swing誕生以來,就無時不對其冷嘲熱諷。以致于有志于C/S的Java程序員(筆者曾經(jīng)的狀態(tài))甚至絕望地?zé)岢雌餝wt這種不成熟的東西。于是在無處不在的中傷與分裂中,Swing在國內(nèi)一直開不了花。前一陣子聽說Swing在國外其實是很火的,上網(wǎng)用google一搜"Swing"-95,700,000,再一比"winForm"-4,980,000。大家沒想到吧!如果是在國內(nèi)的C/S市場,只 Swing只怕連winForm的十分之一都不及。這不得不提上面所說的“歷史原因”。國外的C/S程序員,大都有豐富的C++經(jīng)歷,早已體會了OOP與分層的好處,故Swing必然成為虛擬機時代最好的選擇;而國內(nèi)的C/S程序員,基本上是在RAD的浪潮中投入行業(yè)的,非常缺乏OOP的經(jīng)驗。導(dǎo)致今天不但在C/S領(lǐng)域,就算在B/S領(lǐng)域,也不斷地以ASP模式制造無前途的系統(tǒng)。所以包括Swing、EJB、JSF等等這些東西被很多人瞎搞與亂罵也就不足為怪了。
            
            順便提一個最近熱炒的Flex、MS Expression。Flex不過是Adobe的專屬技術(shù),最多落個Flash的結(jié)局就不錯了。MS的東西風(fēng)格與前途一向如此,不再多論。而身處于編程世界最廣泛、最成熟的Java體系,Swing無疑是最有前途與通用性的。
            
            應(yīng)當(dāng)說,現(xiàn)在國內(nèi)大部分程序員,是曾經(jīng)并且將要繼續(xù)靠C/S吃飯的。那么,但愿此文能讓大家重新認(rèn)真地、負(fù)責(zé)任地審視并應(yīng)用Swing,體會那純正的OOP與分層設(shè)計,再塑國內(nèi)又一個高度繁榮并且高質(zhì)量的C/S時代。  回復(fù)  更多評論
            

          # re: Custom SWT widgets ? 2007-01-03 16:23 hhh[匿名]
          說了這么多,請問LZ有何感想!


          人們對于swing的誤解太多了!
          殊不知它是一個有著優(yōu)秀架構(gòu)的框架!  回復(fù)  更多評論
            

          # re: Custom SWT widgets ? 2007-02-12 09:35 abba
          swing做出來的東西要比bs的嚴(yán)謹(jǐn)多了,嚴(yán)重支持  回復(fù)  更多評論
            

          # re: Custom SWT widgets ?[未登錄] 2007-03-12 16:42 xy
          SWING做出來的東西看起來與本地操作系統(tǒng)格格不入,是敗筆之一。
          另外若長時間后返回SWING界面,打開選文件或目錄的窗體,窗體一片灰,難道這就是一個好程式或軟件嗎?  回復(fù)  更多評論
            

          # re: Custom SWT widgets ?[未登錄] 2007-03-12 16:48 xy
          SWING所謂的MVC設(shè)計,對于一兩年經(jīng)驗的大多數(shù)程序員來說,使用的難度可不小,如客制JTABLE,SOURCE用的設(shè)計模式多多,可卻效果SOSO,令人失望。說白了就是脫褲子放屁,多此一舉。  回復(fù)  更多評論
            

          # re: Custom SWT widgets ?[未登錄] 2007-03-12 17:00 xy
          對于SWT大眾級應(yīng)用軟件用過好幾個,最執(zhí)行的BT,RSS都見SWT程序的影子,另外也暫不提GOOGLE的即將出籠的P2P客戶端(基于SWT,跨平臺),而SWING大眾軟件卻沒用過,對SWING失望呀,不知hhh[匿名] 對此有何感想?  回復(fù)  更多評論
            

          # re: Custom SWT widgets ? 2007-03-22 16:59 yeko
          http://www.autoscatto-erotico.ffclan.it
          http://www.bottiglie-nel-culo.ffclan.it
          http://www.culi-e-fighe.ffclan.it
          http://www.donne-ninfomani.ffclan.it
          http://www.eros-bologna.ffclan.it
          http://www.gli-uomini-preferiscono-le-bionde.ffclan.it
          http://www.fumetti-manga-porno-gratis.ffclan.it
          http://www.intl-xx-hacker.ffclan.it
          http://www.honda-cbr-xx.ffclan.it
          http://www.lunghezza-vagina.ffclan.it
          http://www.musica-andina.ffclan.it
          http://www.nere-sexy.ffclan.it
          http://www.oroscopo-erotico.ffclan.it
          http://www.portobello-annunci.ffclan.it
          http://www.real-boobs.ffclan.it
          http://www.storie-erotiche-vissute.ffclan.it
          http://www.turkish-air.ffclan.it
          http://www.uomini-nudi-per-donne.ffclan.it
          http://www.z-pornostar.ffclan.it
          http://www.voglia-di-sesso.ffclan.it
          http://www.www-vogliose-org.ffclan.it
          http://www.kut-nl.ffclan.it
          http://www.qui-mamme-it.ffclan.it
          http://www.300-video-gratis.ffclan.it
          http://www.jessica-rizzo-free.ffclan.it
          http://www.yahoo-giochi.ffclan.it
          http://www.xbox-giochi.ffclan.it
          http://www.899-erotico.ffclan.it  回復(fù)  更多評論
            

          # re: Custom SWT widgets ? 2007-04-23 22:56 kingsure
          無意間看到了該主題,無論SWING還是SWT,對于一個做GUI的程序員來說都是非常棒的庫。本人多年來一直處于SWING和SWT的開發(fā),當(dāng)年拋棄SWING轉(zhuǎn)入SWT實在是SWING的速度太糟糕,而SWT憑著Eclipse的出色表現(xiàn),確實令很多開發(fā)真傾倒,雖然SWING的速度一直在提高,一直在努力而且其出色的框架及真正的做到一次編譯到處運行[SWT是一次編譯,到處修改:) ]。
          但話說回來SWT并沒有象樓上說的那么差勁,深入了解過Eclipse的程序都了解,Eclipse中使用的最出色的并不是直接都SWT進行操作,SWT只是為JFACE進行了底層操作,在Eclpise中基本上使用了JFACE對數(shù)據(jù)及ACTION進行了封裝(JFACE是可以單獨使用的)。所以其在界面中對數(shù)據(jù)對象的操作及設(shè)計思想并不亞于SWING的Model,可能單純的SWT和SWING確實無法抗衡。但加上JFACE的封裝,所謂對SWING的OOP設(shè)計傾倒的同胞可以嘗試下JFACE,可能會改變您的想法。  回復(fù)  更多評論
            

          # re: Custom SWT widgets ? 2007-08-04 08:29 睡教覺主
          Jface/swt,我覺得很2。
          沒有太想清楚哪里2,但是就是覺得很2。

          swing......設(shè)計完美,太完美了以至于有點迂腐。

          mfc......就是shit一坨。不提也罷。不過現(xiàn)在不都用.net了么?  回復(fù)  更多評論
            

          主站蜘蛛池模板: 招远市| 玉树县| 观塘区| 汾西县| 甘洛县| 平湖市| 南溪县| 阿坝| 五大连池市| 涿鹿县| 伊川县| 团风县| 浪卡子县| 平顺县| 和平区| 石河子市| 城市| 德昌县| 邵武市| 长春市| 东乡| 大足县| 铜鼓县| 兴海县| 濮阳县| 七台河市| 商南县| 淳安县| 清徐县| 筠连县| 成安县| 莲花县| 雅江县| 哈巴河县| 施秉县| 玛沁县| 唐海县| 乌兰浩特市| 隆安县| 泸州市| 黎平县|