免費ERP第一錘:用Swing這個可以

前面幾篇《Swing大刀》的探討,引起了大家對Swing技術的興趣,也引來了不少的口水和磚頭。最 近在JavaEye上已經可以看到不少高質量的Swing討論和應用介紹,這已經是很大的變化。不過更多的同學對Swing的應用還是比較茫然甚至懷 疑:Swing能做大型應用麼?今後我想討論一些Swing在大項目中實踐,是更有意義的事情,總比單純的技術口水要有聊一些。

 

這些年大家都在說: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的朋友一起探討,祝大家元旦快樂!


前幾天菜市場買了一個風信子,開始水培。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章