隨筆 - 21  文章 - 12  trackbacks - 0
          <2011年1月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          常用鏈接

          留言簿(4)

          隨筆檔案

          文章檔案

          新聞檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          這些年大家都在說:Swing學起來費勁,用的也不多,見到的應用也不多,能做大型應用么?最近還有朋友看了幾刀之后就說,哎呀快去學Swing吧,做東西好漂亮!其實這不僅讓人哭笑不得:幾年前大家還是一邊倒的打罵Swing太丑,都說Flex啥的漂亮,突然有人夸起Swing做東西漂亮來了,還真很不適應。還有人說,Swing快不行了,Sun也不行了,Oracle也不行了....其實在他們眼里,也許Java也不行了,軟件開發也不行了....那到底Swing做大應用能行嗎?通過自己參與的項目經驗來說:這個真的行!

           

          這幾年一直在做Swing的開發,有幸參與了公司一個大型的ERP項目。這個ERP項目規模很大,我的NetBeans工程里就有150多萬行代碼,還不包括其他小組的分支模塊。前端除了桌面客戶端外,還有瀏覽器和手機終端,不過最重要的還是Swing版的桌面客戶端。這個Swing版的ERP客戶端開發了已經7年多了,JDK從1.3一直升級到現在的1.6,IDE也從IDEA、JBuilder到Eclipse、NetBeans。不過核心框架一直沒有什么大變化,應用也比較成熟。

           

          這是一個大型的ERP系統,典型的C/S結構,也混合了一些B/S結構和手機終端的模塊,不過主要內容還是在龐大的后端和Swing的前端。后端主要用J2EE架構搭建,通過JBoss應用服務器和MySQL數據庫,Hibernate做O/R,自己封裝DAO層以及Business層控制業務邏輯,再用Ejb進行業務API封裝。最后,通過一個Facade層的EJB(后來改造成Servlet)對外提供統一的訪問接口。這個接口也是整個后臺唯一的訪問接口,這個“一夫當關、萬夫莫開”的入口處,再插入登錄和會話管理、安全控制、日志記錄、請求分發等機制,干凈簡潔。通訊協議,以前通過EJB和IIOP的協議開放API提供遠程調用,后來發現EJB的通訊非常異常繁瑣和“重”,各種控制比較復雜,效率也不好。后期版本改造為用一個Servlet封裝對外提供接口,協議也變成了HTTP。這樣,后臺通過一個80端口,以類似WEB的方式統一提供前端的API訪問。對很多人來講,這個方式可能有點奇怪:Swing的胖客戶端,還用HTTP的WEB協議來訪問后臺。嘿嘿,其實這一招不錯哦,仔細琢磨一下會體會到其妙處。

           

          前臺是一個完整的Swing程序,也是通過層層封裝,提供了一層與服務器一一對應的API訪問層,最后通過一個統一的代理類,對后臺進行訪問。通過HTTP如何傳輸Java對象呢?我們沒有使用Web Services之類的技術,而是直接把要調用的方法以及參數等信息序列化,以HTTP方式提交后臺,后臺通過模塊分發、反射的方式執行函數后, 把結果數據進行序列化,再經過壓縮,通過HTTP返回客戶端。客戶端將數據解壓、反序列化,將對象再返回API的調用者(如各個界面、按鈕等)。這個結構非常高效、可靠。甚至包括函數的異常等,都可以通過序列化進行傳遞。

           

          通過HTTP的方式,服務器不再需要防火墻開放更多端口,和web應用一樣,一個80就行了。另外,和web傳遞html等信息不同,這種結構下,中間傳遞的就是壓縮過的Java對象序列化后的字節流,其效率是很高的。客戶端是胖結構,自然可以處理更多的數據處理和呈現,比瀏覽器也有優勢,很合適ERP這種企業應用。輕量、高效的結構也提供了很好的業務支撐能力:一臺普通的臺式機可以提供100個ERP用戶同時在線、比較流暢的使用。這對于沒有專門預算購買專業服務器和建設機房的企業來說,是非常給力的。

           

          至于Swing的客戶端是否能做的好看,這個就要看是否用心了。只要用心,什么UI技術其實都無所謂,都可以做出漂亮的應用。這里提供兩張貼圖,是否好看還是仁者見仁、智者見智了。

           


           

           

          通過這兩年的Swing開發,也總結了一點經驗,和大家分享:

           

          • Swing入門較高,有一定的學習曲線。企業在選擇是否采用Swing技術之前,一定要分析是否合適自己的團隊。如果沒有一個半個Swing比較好的骨干帶領,Swing的復雜度很容易讓整個項目代碼失控,最后變成一個“好大好大好大的垃圾堆”。
          • 代碼要盡量一層一層的搭框架,不斷的重構、優化、復用,不可每個人按照自己喜好自搞一套,否則很容易失控;代碼和風格甚至開發工具都要盡量一致,避免維護的麻煩。
          • 找一個好的美工。美工設計很重要,他(她)會從不同于程序員的眼光來創建和設計UI,我們一定要尊重美工的設計思路,不要輕易指手畫腳、大放厥詞。術業有專攻,要知道,在美術方面咱們程序員大多是小學生水平。一旦設計風格確定,就嚴格按照統一的風格進行開發,每一個對話框、每個按鈕、每個圖標。讓一個ERP中成千上萬的對話框都“如出一轍”確實不易,不過應當是目標。
          • 永遠從“用戶”角度設計UI。開發UI也是設計的過程,美工沒可能把一個ERP系統中成千上萬的對話框都設計出來,程序員這時候就是半個美工、半個用戶。讓大腦里時刻存在一個“用戶”并時刻敲打自己:這個界面好用嗎?這個報表能看懂嗎?這個按鈕位置合適么?做軟件就像蓋大樓,地基結實固然重要,窗戶密封性就不重要了嗎,外墻涂料就不重要了嗎?要做百年屹立的優質工程,就得處處關注細節。別忘了房子是用來住的,軟件是用來用的。
          再對這個ERP簡單介紹一下。這是一個專門針對制造行業設計的大型ERP,模塊涵蓋工程設計控制、圖紙、物料、物料清單、采購、銷售、庫存、MRP、生產、工單、質量、財務、客戶服務、人事、安全等等。尤其適合“按單生產”類型的離散型制造企業。用戶有Wexford、Whetherford等國際巨頭,也有中海油這樣的大型國企,更多的是中小企業,我還碰到過只有一臺電腦的私人老板,也在用我們的ERP,而且用的還很不錯,很匪夷!
          最后再說一個難以置信的事實:這是一個免費軟件。呵呵,這年頭,ERP軟件都可以免費,沒錯,完全徹底的免費,自己玩、商用、學習.......隨便啦。
          感興趣的朋友到網站拖一個下來耍耍,希望會對Swing的能力信心爆棚。不過中文版還在緊張翻譯中,需要一段時間才能提供下載。先玩玩英文版吧,相信大家的英文都可以應付。網站是:www.2bizbox.com,點擊就能下,不需要注冊。

           

          補充:上面有兩個下載:一個是exe的setup安裝,一個是直接解壓即可運行的zip包。后臺其實也可以跑在linux等上面,啟動腳本需要自己寫一下了。

           

          歡迎喜歡Swing和ERP的朋友一起探討,祝大家元旦快樂!

          前幾天菜市場買了一個風信子,開始水培。


          posted on 2011-01-18 15:12 zhangchuanzheng 閱讀(2240) 評論(2)  編輯  收藏

          FeedBack:
          # re: 免費ERP第一錘:用Swing這個可以 2011-01-19 10:43 heyang
          Great!  回復  更多評論
            
          # re: 免費ERP第一錘:用Swing這個可以 2011-01-26 15:10 xlay
          太強了  回復  更多評論
            

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 应用必备| 那曲县| 津南区| 霍山县| 卢龙县| 屯门区| 邳州市| 大余县| 商南县| 米林县| 三原县| 彩票| 吉隆县| 南投县| 同江市| 洞头县| 清徐县| 乌兰察布市| 新郑市| 常熟市| 东港市| 东光县| 嵩明县| 澎湖县| 保山市| 诸暨市| 尖扎县| 会同县| 太仆寺旗| 江达县| 石柱| 钦州市| 沾化县| 靖远县| 休宁县| 铅山县| 柳州市| 中卫市| 桦川县| 东港市| 兴安盟|