论坛首页 Java企业应用论坛

Swing为什么不受重视

浏览 146362 次
该帖已经被评为良好帖
作者 正文
   发表时间:2009-04-26  
fsfish 写道
个人感觉桌面应用不是JAVA的强项,我也做过AWT SWING SWT的项目,感觉确实不如VB.DELPHI等快速开发工具方便和便捷,效率上也没有优势,不过如果看JDK的那些JAVA2D JAVA3D的DEMO确实挺赏心悦目的



linux之父和IBM的一位工程师口水战时,这位工程师说过一句话很适合你:垃圾程序员用什么语言写出来的程序都是垃圾。
1 请登录后投票
   发表时间:2009-04-26  
night_stalker 写道
就是因为受不了难看缓慢的 Netbeans,才讨厌 Swing 的 ……


同样是个垃圾程序员
2 请登录后投票
   发表时间:2009-04-26   最后修改:2009-04-26
xuby 写道
EdwardWorld 写道

如果程序不调用Windows的系统类库来渲染窗口,那么即使C++写的程序,也是能感觉到慢的,比如QT使用自己的GUI渲染技术,一个发布版本的QT,加上QT类库的dll,能有上百兆的体积,即使你只写一个Hello World,也是上百兆,因为QT自己的核心库:mingwm10.dll、QtCore4.dll、QtCored4.dll、QtGui4.dll、QtGuid4.dll加起来就有94.7兆。QT启动速度虽然比Java快,但是也是比VC++编写的程序慢的。


上百兆?太夸张了。Release程序为什么要用带d的库?大多数程序只需要QtCore4.dll和QtGui4.dll,加起来 9兆不到。不知道你是否部署过Qt软件,老实说,你这种讲话的态度不够严谨。
没用过Swing,但我可以肯定Qt的速度足够快,也没觉得和vc程序的速度有明显差别,我们写很耗资源的图像处理程序都用他。甚至Qt的Python包装 PyQt 的速度都是可以接受的。


你的只有9MB?
说实话我9兆运行不起来,是我的QT水平不够吧,真的要受教了。
QT的速度我很认可,我说的它慢是和VC++相比,这种描述是否足够清楚?
0 请登录后投票
   发表时间:2009-04-26  
EdwardWorld 写道
night_stalker 写道
EdwardWorld 写道

Visual Studio所需要的GUI类库,在Windows启动的时候,已经加载完毕,所有的微软的程序都是调用使用Windows本身已经加载到内存中的类库,随意非常快是正常的,就是100G的软件打开,微软也可以让他飞快,况且你说的Visual Studio可能是C语言编写的,根本不能可Java这样的基于虚拟机的语言来比较,就算Visaul Studio也是使用基于虚拟机的.NET框架程序来写的,微软把自己的.NET预加载到内存中,然后和自己开发的软件高度整合优化,也是速度飞快的,作为外人的Java根本就不能和Visual Studio比较。

Eclipse之所以快,是因为它也是调用Windows现成的类库,快不是Eclipse的功劳。

如果程序不调用Windows的系统类库来渲染窗口,那么即使C++写的程序,也是能感觉到慢的,比如QT使用自己的GUI渲染技术,一个发布版本的QT,加上QT类库的dll,能有上百兆的体积,即使你只写一个Hello World,也是上百兆,因为QT自己的核心库:mingwm10.dll、QtCore4.dll、QtCored4.dll、QtGui4.dll、QtGuid4.dll加起来就有94.7兆。QT启动速度虽然比Java快,但是也是比VC++编写的程序慢的。

你现在接触到的Windows下的所谓快的软件,都是调用Windows本身的类库,当然快了。


QT 的运行时不会超过 10 M,你这个 100 M,难道是把 debug 版本的 dll 拿来当 release ?
如果用到的组件不多,甚至可以打包到几百 k。 QT 慢的原因,就是因为采用了和 swing 相似的架构吧……

swing 调用 java2D 和 java3D, java2D 和 java3D 在底下做了什么事情呢? 还不是调用系统本身的库 ??

再给你纠正一个错误: windows 本身带的库,不是类库。

GTK 也是自绘的, GTK 运行时加载速度怎么没见慢? FOX 、 wxWidget 怎么没见慢? 更不用说其它轻量级的库了。
在 gnome 下面写 GTK,甚至不用将运行时打包,虽然打包出来也是 10 M 不到。

GUI 最重要的是用户体验,一天到晚在扯呼“架构”能提升用户体验么?
swing 慢到甚至比不上网页上的 flex ……





给你纠正一个错误,如果你机器上没有安装QT,你使用release 那几十kb的dll和exe,根本无法运行。
看来你根本没有部署过QT,可能是本地调试过QT,离开你的环境,你还保证QT几十KB,我还真佩服你了。
我说的100MB是QT未压缩之前的发布体积,并不是QT程序占用的内存。


QT 4 后 似乎没有100m 这么夸张。我裁剪过一些.dll 。 发布的大约体积是 10-20m。压缩后 4-5m 所有。
100m 估计是全部的库都用上了。
0 请登录后投票
   发表时间:2009-04-26  
EdwardWorld 写道
EdwardWorld 写道
vlinux 写道
swing的所有组建都是画出来的,所以我们可以很方便的进行hack,我局限于仅仅知道Java的UI,所以这点不知道算不算他的优势。

话说回来,在RCP衰败的年代,为什么要坚守这个阵地呢?
BOSS的管理界面都在向WEB迈进了,一个短信发送平台为啥还要坚持呢?
工作流用WEB不也一样可以做么,而且更易于使用和维护,如果你不是为了之前的项目,为什么还要坚持呢?

想起JavaEye之前有个帖子是在说:我们讨论XX技术是否NX的时候,一定要统一下双方的需求范围,否则在这个领域Swing很有用,但是到了另外一个领域却一无是处。我觉得他说得是非常有道理的,所以就你所涉及到的短信发送平台而言,我个人认为用Swing是很不划算的哦


如果我需要调用本地的dll来控制硬件,web能做到么?

如果我需要加载硬件驱动程序,控制传真卡发送传真,web能做到么?
如果我需要从FTP上下载几千个文本文件,然后ETL导入本地数据库,web能做到么?
如果我想通过shell控制Linux服务器,web能做到么?
如果我想定时执行存储过程,web能做到么?这一条可能web能做到,但是如果我需要自动向存储过程传递的参数值是通过读取本地文本文件里的内容,web能做到么?
这些功能,在我目前参与的工作流系统里,都是最基本的功能,如果使用web开发,你能做到么?
最后,如果使用纯web,你连画流程那个界面都实现不了,假如你非要用JavaScript来实现,那么我问你,你的JavaScript代码量比Swing少么?恐怕要比Swing复杂程度多出一个数量级。

B/S 和C/S本来就是各有所长,如果你非要把一切都使用web来代替,能代替得了还说得过去,关键是有些功能你根本就代替不了,最简单的例子就是,你使用web来开发一个IDE试试。



恩,原来你还有这些需求。不过你说的这些都是可以做到的,而且也有很多成功的例子。鉴于这里不是讨论技术的帖子我就不一一列举。其实还是老话,脱离实际的需求争论技术优劣是没有意义的。

不过我同意你对JavaEye增开Java UI版块的观点, 虽然SUN公司自己都不打算主推Swing转而支持再封装了一层的JavaFX,我也依然支持Swing。
1 请登录后投票
   发表时间:2009-04-26   最后修改:2009-04-26
EdwardWorld 写道

...说实话我9兆运行不起来...

试试这个集合:(压缩后不超过 6 M)
Qt3Support4.dll
QtAssistantClient4.dll
QtCore4.dll
QtDesigner4.dll
QtDesignerComponents4.dll
QtGui4.dll
QtNetwork4.dll
QtOpenGL4.dll
QtScript4.dll
QtSql4.dll
QtSvg4.dll
QtTest4.dll
QtXml4.dll

如果没用到相应部分,可以进一步裁剪。
XXXd.dll 系列是 debug 用,发布版不需要。
0 请登录后投票
   发表时间:2009-04-26  
night_stalker 写道
EdwardWorld 写道

...说实话我9兆运行不起来...

试试这个集合:
Qt3Support4.dll
QtAssistantClient4.dll
QtCore4.dll
QtDesigner4.dll
QtDesignerComponents4.dll
QtGui4.dll
QtNetwork4.dll
QtOpenGL4.dll
QtScript4.dll
QtSql4.dll
QtSvg4.dll
QtTest4.dll
QtXml4.dll

如果没用到相应部分,可以进一步裁剪。
XXXd.dll 系列是 debug 用,发布版不需要。

谢谢分享,下一步按这个清单试试。
0 请登录后投票
   发表时间:2009-04-26  
建议增加一个版叫Java Desktop吧,然后再分几个小版块:swing、swt、javafx、rcp

vlinux 写道
EdwardWorld 写道
EdwardWorld 写道
vlinux 写道
swing的所有组建都是画出来的,所以我们可以很方便的进行hack,我局限于仅仅知道Java的UI,所以这点不知道算不算他的优势。

话说回来,在RCP衰败的年代,为什么要坚守这个阵地呢?
BOSS的管理界面都在向WEB迈进了,一个短信发送平台为啥还要坚持呢?
工作流用WEB不也一样可以做么,而且更易于使用和维护,如果你不是为了之前的项目,为什么还要坚持呢?

想起JavaEye之前有个帖子是在说:我们讨论XX技术是否NX的时候,一定要统一下双方的需求范围,否则在这个领域Swing很有用,但是到了另外一个领域却一无是处。我觉得他说得是非常有道理的,所以就你所涉及到的短信发送平台而言,我个人认为用Swing是很不划算的哦


如果我需要调用本地的dll来控制硬件,web能做到么?

如果我需要加载硬件驱动程序,控制传真卡发送传真,web能做到么?
如果我需要从FTP上下载几千个文本文件,然后ETL导入本地数据库,web能做到么?
如果我想通过shell控制Linux服务器,web能做到么?
如果我想定时执行存储过程,web能做到么?这一条可能web能做到,但是如果我需要自动向存储过程传递的参数值是通过读取本地文本文件里的内容,web能做到么?
这些功能,在我目前参与的工作流系统里,都是最基本的功能,如果使用web开发,你能做到么?
最后,如果使用纯web,你连画流程那个界面都实现不了,假如你非要用JavaScript来实现,那么我问你,你的JavaScript代码量比Swing少么?恐怕要比Swing复杂程度多出一个数量级。

B/S 和C/S本来就是各有所长,如果你非要把一切都使用web来代替,能代替得了还说得过去,关键是有些功能你根本就代替不了,最简单的例子就是,你使用web来开发一个IDE试试。



恩,原来你还有这些需求。不过你说的这些都是可以做到的,而且也有很多成功的例子。鉴于这里不是讨论技术的帖子我就不一一列举。其实还是老话,脱离实际的需求争论技术优劣是没有意义的。

不过我同意你对JavaEye增开Java UI版块的观点, 虽然SUN公司自己都不打算主推Swing转而支持再封装了一层的JavaFX,我也依然支持Swing。

0 请登录后投票
   发表时间:2009-04-26  
勇敢的心 写道
SWING败在架构,出现ECLIPSE那么好的集成开发平台,只能是既生瑜,何生亮了


哈哈,这是我见过的最滑稽的一句话了!!!
2 请登录后投票
   发表时间:2009-04-26  
看看永中office,完全用swing开发的,性能比用c开发的openoffice和wps好多了,swing慢不是借口,大型产品架构是关键,对语言熟悉程度也很重要
1 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics