论坛首页 Java企业应用论坛

Swing为什么不受重视

浏览 146361 次
该帖已经被评为良好帖
作者 正文
   发表时间:2009-04-26  
vlinux 写道
swing的所有组建都是画出来的,所以我们可以很方便的进行hack,我局限于仅仅知道Java的UI,所以这点不知道算不算他的优势。

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

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


如果我需要调用本地的dll来控制硬件,web能做到么?
0 请登录后投票
   发表时间:2009-04-26  
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 ……



  • 大小: 17.5 KB
0 请登录后投票
   发表时间:2009-04-26   最后修改:2009-04-26
night_stalker 写道
xsc963 写道

1、开ClearType ,这个非常的重要。
2、为netBeans加个快捷方式,放入参数  --laf javax.swing.plaf.metal.MetalLookAndFeel --fontsize 12
    用Swing我觉得比较好看跟快速,如果你喜欢别的观感,当然也可以使用

metal 只是改了个花哨的观感,没有解决 output 窗口字体的问题……

解决这个问题,很容易,请参考http://www.iteye.com/topic/190146,不论是windows还是linux,看起来都可以是赏心悦目。

说SWING慢或者难看,是一种偏见,Java GUI早前给人留下的印象,现在以讹传讹,甚至借题发挥,很少人真正去探寻。我对SWING不冷不热的看法是,这不是因为JAVA GUI本身的原因,而是这个时代早已不是桌面软件的王朝,WEB盘踞市场的局面至少还要持续5年,未来是什么?不知道,但是可以推测GUI在未来2年内不会有什么起色,--不光是JAVA GUI。
0 请登录后投票
   发表时间:2009-04-26  
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试试。
0 请登录后投票
   发表时间:2009-04-26  
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程序占用的内存。
0 请登录后投票
   发表时间:2009-04-26  
EdwardWorld 写道
night_stalker 写道
慢一点就忍了,功能是很不错的,但至少一个字得好好的显示出来吧…… output窗口那些歪歪扭扭的算什么?

netbeans 算是比较优秀的 swing gui 应用吧? 不那么优秀的就更别提了。

netbeans output 锯齿怎么这么厉害…… 这还是调大了的,原本根本看不见……
打开后会做 index 什么的挠一会,狂读硬盘。


visual studio 的 output 窗口字体是可以调的,总体积达数 G,但是启动速度非常快,体验很流畅。而且界面很简洁。


code blocks 的字体虽然小了点,但至少工整清晰。整体非常有 wxWidget 特色。



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本身的类库,当然快了。

至于输出窗口的字体,我觉得现在的样式已经很好了,我完全看不到你说的锯齿,我这边字体显示也正常,在Netbeans 6.7里,输出窗口会有改进,但是我认为那是完全没有必要的,输出窗口提供一个搜索功能就可以了,输出窗口不是Dreamweaver 编辑器,没有必要做那么华丽。



很显然,你也知道swing和其他“native”的类库是没法比的,那正常人应该如何选择?
0 请登录后投票
   发表时间:2009-04-26  
我做过Swing AWT就不要和Swing分家了 同属一门
SWT感觉还行吧 没用过 还有现在的JavaFX好像也不太手重视
学GUI编程最快速有效的办法 是不用集成开发工具 当你明白了底层实现的时候 再用IDE 就非常得心应手了
我对于Swing是有感情的 Swing的组件都是可以修改的 JDK提供的Java 2D和Java 3D包 也绝对够专业 但是有一点的确不好 如果你做的应用不是为了跨平台的话 那Swing的确无法和其他Gui产品相竞争 每个操作系统都有它自己比较好的开发技术 windows平台 .NET技术以后必然成为王道 Linux平台也很多 如GTK等等 Mac平台也有相应的开发工具
并且Java对于系统底层的驾奴能力也不太好 虽然有JNI之类的技术 但是毕竟效率上还是很令人不爽的 至于楼主提到的QT 我是非常喜欢的 我喜欢QT这种类Swing的开发模式 并且语言还是基于C++ 我的最爱 QT取得了Nokia的支持 现在也有了自己的IDE 我看好Qt。
呵呵 仁者见仁的问题
0 请登录后投票
   发表时间:2009-04-26   最后修改:2009-04-26
EdwardWorld 写道

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

你可以把 几百k 看成 几十k,我也很佩服你……
很明显你把 debug dll 和各种文档的体积也算上去了。
QT 开发环境当然很大,但是 QT runtime 完全版打包后体积只有数 M。
如果一个 lib 的运行时需要100 M ,它根本就不可能流行。
0 请登录后投票
   发表时间:2009-04-26  
各有优缺点,各有侧重点,怎么一听到跟自己不同的声音就虚火上升?
喜欢用什么就用什么,哪来那么多废话!
0 请登录后投票
   发表时间:2009-04-26   最后修改:2009-04-26
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程序的速度有明显差别,我们写很耗资源的图像处理程序都用他, Google Earth也用的也是Qt。甚至Qt的Python包装 PyQt 的速度都是可以接受的。
0 请登录后投票
论坛首页 Java企业应用版

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