熱炒Swing,重塑C/S輝煌

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

順便提一個最近熱炒的Flex、MS Expression。Flex不過是Adobe的專屬技術,最多落個Flash的結局就不錯了。MS的東西風格與前途一向如此,不再多論。而身處於編程世界最廣泛、最成熟的Java體系,Swing無疑是最有前途與通用性的。

應當說,現在國內大部分程序員,是曾經並且將要繼續靠C/S吃飯的。那麼,但願此文能讓大家重新認真地、負責任地審視並應用Swing,體會那純正的OOP與分層設計,再塑國內又一個高度繁榮並且高質量的C/S時代。 
 
發佈了30 篇原創文章 · 獲贊 2 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章