Python上面的图形开发wxPython(转贴)

| 1 Comment | No TrackBacks

最近正在研究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,而不是.NET。

注:文章仅代表原作者个人看法,不代表本站立场。

No TrackBacks

TrackBack URL: http://www.wujianrong.com/mt-tb.cgi/2900

1 Comment

不懂java不要大放厥词

Leave a comment

About this Entry

This page contains a single entry by kevinwu published on July 25, 2007 11:26 PM.

Python IDE was the previous entry in this blog.

About Django is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.