看过Python,偶确实已经对 Java GUI 灰心了。
=========================================================================
Python上面的图形开发wxPython 最近正在研究Flash RIA,经人推荐到sf上面下载了一个开源免费的AS IDE,叫做SEPY,不经意之间发现SEPY竟然是用Python写的!于是又下载了SEPY的源代码观摩了一下,结果更吃惊,惊叹Python做图形桌面应用程序代码竟然如此简洁,表现力竟然如此丰富,如果不是特别留意,绝想不到SEPY竟然不是Windows本地代码编写的软件。就此关注了一下 Python的桌面应用程序开发,这一下更加吃惊,发现现在使用python写的桌面应用程序已经非常丰富了,sf上面一抓一大把。然后还找到了 Python的几个IDE,其中BOA给我极大的震撼,安装跑起来一看,俨然就是Delphi!可视化的托拽方式放置桌面控件,完全面向对象的编程。 经过半天时间简单的了解,我得到了如下的结论:Python做桌面应用程序的前景非常好,而相形之下,已经事实上宣判了Java做桌面应用程序的死刑! Java 做桌面应用程序,无法脱离JRE,这是一个很大的限制,你必须下载安装很大的一个JRE运行环境,并且一旦安装那就涉及到了JRE版本的问题,你基于 JDK5.0开发的应用就没有办法在人家JRE1.4上面正常的跑。虽然JWS可以做到应用程序的Online update,但是终究无法做到JRE的online update! 此外,Java的图形API严重分裂为Swing和SWT。 Swing是一个扶不起的阿斗,bug很多,做出来的界面不伦不类,而且无法处理一些类似系统托盘之类和操作系统关系比较大的功能,并且性能非常糟糕,可以这样说,Java成也Sun,败也Sun;SWT要比Swing好得多了,但是可惜的是, Sun拒绝接受SWT,这样就使得SWT始终处在地下状态,得不到良好的发展。并且SWT也无法脱离JRE运行,而且API直接封装操作系统调用,很多地方有MFC痕迹,没有办法OO起来,受到很大的限制,但不管怎么说,SWT总算是给Java图形编程留下了一线希望。 而Python从一开始就是走SWT的思路,绝不愚蠢的自己去构建桌面组件,而是用C++编写组件,用Python去调用,这样的思路走到现在,已经有了良好的回报。现在 Python编写的应用软件,可以脱离Pthon运行环境,单独编译为pyd(Python DLL)和exe直接运行在Windows操作系统上。其速度表现和内存占用两个方面都要比Java好,就我现在的用下来的感觉,和VB开发的桌面应用程序,或者和dotnet开发的桌面应用程序处在同一个级别。 其实现在Windows桌面应用程序开发处在一个告别旧的时代,但是又没有迎来新的时代的尴尬时期:MS力主推出的dotnet winforms并没有取得预期中的成功,至今仍然使用者寥寥,推了那么多年都没有普及开来,并且又是注定的一个过渡时期技术,这些都说明 winforms不会有更好的前途;而MS下一代桌面应用技术尚未拉开神秘的面纱,至于普及,也是n年以后的事情了;所以现在就很尴尬,经过几年 Internet Application和dotnet winforms的喧嚣之后,传统的Desktop Developer又重拾昔日的Delphi利器,然而连Borland自己都不再对自己保存足够的信心,而去搞Delphi.net去了,于是大家只好拿出来怀旧的Delphi7,VB6,VC6来应付桌面应用技术开发。 在有像BOA这样IDE的强力支持下,Python也当仁不让的加入了这一行列,以现在的桌面应用开发技术来说,Python在开发效率,执行性能,学习曲线方面全面不落下风,甚至在很多方面有优势,特别是在跨平台这一点上,做到了Java多年都做不好的方面。由于Python的出色表现,我已经找不出来用Java编写桌面应用程序的任何理由了。我可以理直气壮的宣布, Java桌面应用开发已死! Python在服务器应用开发方面,也同样非常强大,不过考虑到Java在服务器领域多年的成绩和诸多大公司的投入,显然还无法取代Java的地位,但是我可以预言,将来淘汰Java的必定是Python,而不是dotnet! -------------------------------------------------------------
转贴自:http://www.cnblogs.com/sirsunny/archive/2005/07/18/194998.html

解决方案 »

  1.   

    既然说的JAVAGUI相对有些欠缺,SUN为什么不来改进一下,难道SUN根本就没重视GUI方面,还是技术上JAVA技术在GUI几乎就很难改良,很不希望GUI的欠缺成为JAVA的遗憾!
      

  2.   

    SUN 连 SWT 都不接受,并不是说SUN做不到。这就是 政治
      

  3.   

    喜欢楼上的表述
    swt在window和linux等主流系统不会有问题
    但是不代表他没有问题
      

  4.   

    Python 在图形图像方面的表现怎么样?
      

  5.   

    java GUI本来就是败笔,他最突出的在于多线程,通信,
      

  6.   

    我觉得Swing的设计很好,不了解他就不要评价他。
      

  7.   

    去看看5.0的演示程序,SwingSet吧!
      

  8.   

    一条绿色小内裤, SwingSet 能说明什么?
      

  9.   

    SWing确实不强大,功能待增强,但我觉得强大的是java这个语言,因为java语言的强大,使swing很好用。我写swing程序常用到匿名类和内部类,确实使我倍受鼓励.
      

  10.   

    python有运行时环境吧?它是个脚本语言,怎么可能独立运行?
      

  11.   

    以前在学校学JAVA的时候,就是从GUI入手的
    以前感觉java的GUI开发好麻烦,在UltraEdit下,光是输入组件名就要输入半天,--没用过蝰蛇,不过手头有一本介绍蝰蛇的书,以后有空好好读读。
      

  12.   

    你们别叉开话题啊,这里值讨论 Java 的 GUIto:lllllllllluoyi(罗毅) Swing 很强大,虽然很多系统相关的功能无法完成,但在它自己的领地里可以说是无所不能。但它怪异的风格和致命的性能缺陷以及Java本身带来的不便利性导致 Java GUI 的前途黯淡到看不清方向
      

  13.   

    你们这帮人,自己不会编程就不要怪Swing 好不好. 我看这里没几个会编程的.
    居然有人说什么Python来取代Java,这个人大概在夜游吧. 连MS 都不敢说这句话.
      

  14.   

    to:ichbinich() 夜游的是你吧,你会编程??有作品么?大家看看
      

  15.   

    嗯,偶的用意是比较一下 Java 的桌面开发与 Python 的桌面开发到底有多少差异,Python 的虚拟机环境安装包是9M左右
      

  16.   

    JRE 5.0 Update 4 Windows版的离线安装文件是15.5M,你觉得这和9M差很多么?http://java.com/zh_CN/download/manual.jsp
      

  17.   

    JRE 1.5 我可以缩到 11.4M, 但是有用么?一个脱离Python的包含wxPython库的最小GUI程序只有 12M,压缩后只有2.9M而且速度比Java GUI 快 N 倍,一样的平台无关性,Python可以做到 Java 真的做不到?归根结底是 SUN 在背后捣鬼,为了避免 Java 这个孩子被别人拐走,宁可干些昧心事。
      

  18.   

    指脱离 Python 虚拟机环境且包含wxPython
      

  19.   

    onefox 先生,你的作品拿来看看,我们看过你的作品就知道你的水平了,我想
    告诉你的是,当今两大主流语言, C/C++ 和  Java, 你所认可的那个Python是排不上
    主流语言的. 你就是叫破嘴皮子都是没用的. 
    当然作为程序员是不应该轻视任何一门语言的. 我也不想轻视Python, 还有程序员也
    不应该在乎什么语言, 程序员要做的是在逻辑层面考虑问题,而不是对语言品头论足. 如果
    你很喜欢对语言品头论足,本身说明你在一个比较低的档次.
      

  20.   

    对于Java的 GUI开发,除了容易与其他Java程序相呼应,还有什么实质性用处么?你有能耐那你别玩虚的,来说点实在的我可没有攻击Java,我攻击的是 Java GUI ,不要搞错
      

  21.   

    新事物总会被旧事物所打压,Python 跟 Java 有不少共同之处,可以做类比。但 Java GUI 明显不及 Python GUI。虚拟机是其中最主要的原因之一。如果 SUN 不拿出跟 Python 一样的VM脱离方案就永远解决不好 Java GUI 的问题。我想SUN是不会主动这么做的,可能涉及利益上和面子上的问题。卑劣之处就在这里
      

  22.   

    Python 的 VM 也并不是完全脱离,其实是对它打包拆离。Java 就这么难实现??
      

  23.   

    如果JAVA脱离VM运行
    那么跨平台还容易实现吗?
      

  24.   

    to:glorywine(已非當年)Java 就是太拿跨平台当回事了,不是任何程序都适合保留跨平台特性特别是客户端GUI程序,Java GUI 的软肋就在于此。