李广新ID:lgx522
37492次访问,排名2841好友0人,关注者6
说实话,做实事
lgx522的文章
原创 29 篇
翻译 0 篇
转载 0 篇
评论 801 篇
最近评论
jamesyu123:我不是很聪明,那就是说PHP、RoR、Java都要掌握是吗?等待中。。。。
lynx1111:写得不错。支持!
请参考: http://www.mydwbi.com/forums/show/3.page
redex:假,大,空

想想IBM经常玩的那些复杂难用毫无效率但经常吹嘘的天花乱坠的
垃圾技术就感到好笑(再想想IBM的thinkpad x60, 吹嘘成世界上
第一台宽屏thinkpad!! 令人超级乍舌!! 再想想m$的所谓跨平台:
就是跨win98,me,2000,xp,2003的平台, 真是TMD超级搞笑!!)

脱离人们的……
aca_jingru:看来你还不了解啥叫linux, 内核而已,装了GONE以后,red hat也可以有gone的桌面, ubuntu只是linux的一种发行版本而已,
而关于软件有一种说法是,windows下的很多都是成熟软件,开源的也不是最好的,ubuntu现在还是不能和windows成熟的桌面相比的
lgx522:这是大半年前的体会,当时笔者正处于OOP的进阶阶段。也就是说,一直用OOP,但没有真正领会OOP。

这半年投入了对PHP等函数式编程的实践中,这才真正认识到OOP的好处。函数式编程也可以做到部分封装与重用,但比起OOP,还是困难得多。

最近台阶终于上来了,学会写自己应用中通用的类,学会了扩展已有的Java类库,这才充分体会到OOP对代码质量提高的重……
文章分类
收藏
    相册
    Java
    Java技术 深度历险
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 热炒Swing,重塑C/S辉煌收藏

    新一篇: 何必非要OOP? | 旧一篇: NetBeans5.5新体验

    最近对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时代。 
     

    发表于 @ 2006年12月30日 17:55:00|评论(loading...)|编辑

    新一篇: 何必非要OOP? | 旧一篇: NetBeans5.5新体验

    评论

    #carlkkx 发表于2006-12-31 09:47:37  IP: 220.248.40.*
    二、Swing的设计要求高。Swing将经典的MVC可谓发挥得淋漓尽致。而由于历史原因,国内绝大多数C/S程序员一直于缺乏OOP习惯及经验。对Swing这种经典设计方式是难以接受的,无法领会由分层所带来的巨大长远优势。故宁可死守VB、PB、Delphi这些失去前途的东西,或者抵不住MS winForm快餐的诱惑,再次投入MS过程式编程的泥潭。不深入理解OOP,不深入领会分层思想,几乎无法有效使用Swing,这正是Sun的严格与苦心,大家要用心体会啊

    ——————————————————

    一针见血。
    #lgx522 发表于2006-12-31 10:49:01  IP: 220.163.39.*
    费了不少时间写这篇文章,是不想让Swing这样的经典在国内沉底。不想看到C/S程序员长期无法步入OOP的殿堂,以至于其开发的系统及职业生涯在数年之内灰飞烟灭。国内程序员经常担忧的35岁职业问题很大程度上是过份依赖IDE的RAD后遗症。那样的技术与系统,大家都能很快学会,且系统代码质量太低,自然经不起时间的考验。
    #carlkkx 发表于2006-12-31 22:29:42  IP:
    以前看MVC,面向对象,设计模式,然而当用VB,powerbuilder等GUI程序时难以表达MVC,因为它们的架构完全不鼓励模型视图的分离。
      像MFC对于GUI的抽象也是很糟糕,直到我看到swing的时候,才算真的看到了一个面向对象的GUI框架。

     swing的很多优雅设计真的让我眼前一亮。很多以前书上看到的理论,都在这里找到了影子。

    如果你熟悉MVC,面向对象理论,GOF设计模式,那么对于swing你会感觉到很亲切。
    #carlkkx 发表于2006-12-31 22:32:49  IP:
    我欣赏优雅和一致的设计,一致性反应了设计者极高的抽象水平,优秀的概念表达.
      
      我们现在来看MFC和swing.
      MFC是如何表达GUI的,首先对于GUI元素没有一个共性抽象,使得无法进行任意的递归组合.
      MFC认为 GUI元素是原子的,GUI元素自身提供了设置它属性的API基本决定了这个GUI元素给外部定制它的能力.低灵活性!
      
      MFC认为GUI元素自身应该处理事件,并且使用消息映射来实现这一点.
      所以通常如果你要处理某个GUI元素的事件,你需要写一个继承这个GUI元素的类.
      但殊不知很多情况下事件处理者和GUI元素是分离的!
      
      MFC的MVC是实现是不一致的,他并没有将这一理念贯穿于整个框架.而只是单独搞了个doc/view.
      
      所以如果我以今天的思路来看MFC,我觉得它对GUI的抽象是糟糕的,差劲概念表达.



    swing的组件都是四两拨千斤,模型和绘图都是分离的,如表格
      JTable 就有TableModel ---->JTable<-----TableUI,从结构来说JTable完全扮演着控制器的角色.从API的使用者角度来说它是一个MVC体系的外观,让人想起了设计模式中的外观模式.
      
      因为swing中一个GUI元素就是一个MVC体系,而不原子的.
      除此之外还可以为组件自定义renderer/editor.
    #wzb13 发表于2007-06-10 04:54:37  IP: 219.134.236.*
    “MFC是如何表达GUI的,首先对于GUI元素没有一个共性抽象,使得无法进行任意的递归组合.”

    窗口不就是抽象,直接调API创建的窗口控件等都能递归组合,何况是MFC。只是布局成问题,消息映射没有Swing里使用观察都模式那样灵活。
    #thinkinjavax 发表于2007-07-05 00:03:22  IP: 10.122.80.*
    我坚持使用Swing已经N年了,相信它会有大放异彩的一天!我现在用得很爽。别人担心的问题我早就解决了。不下功夫解决一些关键问题,java很难驾驭的。很欣赏它的纯对象模型,这点最适合做企业应用软件了。我坚信,JAVA是做企业应用软件的最佳选择。
    #thinkinjavax 发表于2007-07-05 00:06:55  IP: 10.122.80.*
    N年前,当我的应用在linux上运行起来,并且界面跟windows下一样的时候,我真感觉出来java的跨平台的优势来了。就为这,慢一点也值得。
    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © lgx522