热炒Swing,重塑C/S辉煌

06-12-30 lgx522
         

热炒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时代。