论坛首页 Java企业应用论坛

Swing为什么不受重视

浏览 146367 次
该帖已经被评为良好帖
作者 正文
   发表时间:2009-04-27  
cxp108 写道
仅用过Swing写过一般桌面应用(也就是用用窗口、按钮、图片、声音视频等组件)的程序员如果你们说Swing慢,只能证明你们对Swing的理解还只是皮毛而已,你们对自己写的程序要求仅仅是“能跑就行”。
除非你使用过Swing写过类似PhotoShop,或者某种对图形渲染要求极高的程序,再来举证Swing慢才有可信度。
我曾经接手过Swing一个程序,我改动不到200行,用户体验从极其抵制,到欣然接受,
就是因为一个程序员在Swing线程中,统计数据库记录。这一操作足足要花5分钟,用户
感觉和死机无异。用户还抱怨我们程序带病毒呢....
某楼说的一点的确要肯定:垃圾程序员用什么语言都只能写出垃圾程序。

要在这里喊一句:不善多线程者还是离Swing远点吧




这句说的太好了,确实有这感觉
2 请登录后投票
   发表时间:2009-04-27  
说一下我的看法:

1 曾经做过一个项目,将SWING写的录音、混音、网络上下传的CS程序转成SWT的,速度嘛,能接受,不慢。

2 SWING对多线程也没有那么多的要求,基本上就是会用SWING WORKER就行了。

3 SWING的教程就是Java Tutorial里的GUI教程,名字总在变,但一直在那里。多好的教程啊,简洁明了,很专业,适合专业新手学习。
0 请登录后投票
   发表时间:2009-04-28  
whaosoft 写道
cs 我会用 vb c# c++ flex 做
java的 swing~ 其实我就是感觉过于难看 而其没用很好的 可视化ide~~

多用用Netbean,然后注意更新JDK版本。
新版本速度快多了。
还有,你可能没有看过Swing做出来的漂亮的东西吧,多找找看看。
Swing是好东西,不过如果是新手用,估计也好看不到哪里。
还有,说java慢,那是因为你的机器太老了。现在随便一个机器,跑个Netbean还能有多慢呢?
0 请登录后投票
   发表时间:2009-04-28  
slaser 写道
cxp108 写道
仅用过Swing写过一般桌面应用(也就是用用窗口、按钮、图片、声音视频等组件)的程序员如果你们说Swing慢,只能证明你们对Swing的理解还只是皮毛而已,你们对自己写的程序要求仅仅是“能跑就行”。
除非你使用过Swing写过类似PhotoShop,或者某种对图形渲染要求极高的程序,再来举证Swing慢才有可信度。
我曾经接手过Swing一个程序,我改动不到200行,用户体验从极其抵制,到欣然接受,
就是因为一个程序员在Swing线程中,统计数据库记录。这一操作足足要花5分钟,用户
感觉和死机无异。用户还抱怨我们程序带病毒呢....
某楼说的一点的确要肯定:垃圾程序员用什么语言都只能写出垃圾程序。

要在这里喊一句:不善多线程者还是离Swing远点吧

你不觉得门槛高是语言本身的缺点么?
垃圾程序员也能用得好的语言才是成功的语言,如当年的VB。
这也就是为什么swing流行不起来的原因。


并不是门槛高的问题,而是有没有认真思考,研究。
我说的垃圾程序员是指那些对自己程序要求极低的程序员,他们的要求仅是“能跑就好了”或是“能
跑一下示例就表示我学会了”。
2 请登录后投票
   发表时间:2009-04-28  
要想Swing快,用jdk6吧
多线程是一门非常高深的课题,但是做web就不会有多线程?
只要有逻辑的地方就有可能出现多线程。
0 请登录后投票
   发表时间:2009-04-28  
AllenZhang 写道
要想Swing快,用jdk6吧
多线程是一门非常高深的课题,但是做web就不会有多线程?
只要有逻辑的地方就有可能出现多线程。


web容器和各种框架,帮你包装了大部分的多线程操作。web的项目,业务逻辑的开发大大多于程序逻辑的开发。
其实这也是件非常好的事。至少大家能集中精力在业务逻辑上。
0 请登录后投票
   发表时间:2009-04-28  
任何的语言都有他适合的环境。
WEB游戏的流行会不会让JAVA界面编程有用武之地?
0 请登录后投票
   发表时间:2009-04-28   最后修改:2009-04-28
swing 里类似下面这两种结构令人很难受:
button1.addListener(new XXListener(){
  public void ActionPerformed(ActionEvent e){
    ...
  }
});


class MyXXListener implements XXListener {
  public void ActionPerformed(ActionEvent e){
    ...
  }
}  
...
button1.addListener(new MyXXListener());


如果能学习一下它们的写法就好了:
button1.onclick = function(e){...}

button1.addListener(function(e){...})

button1.onclick = function1;


GUI 总是有大量事件触发的,由类包装过的函数指针,非常影响性能。
就算是 C++ delegate,都会有性能问题……
http://www.codeproject.com/KB/cpp/FastDelegate.aspx

希望日后改进的硬件、VM 和编译器可以解决这个问题吧。
0 请登录后投票
   发表时间:2009-04-28  
night_stalker 写道
swing 里类似下面这两种结构令人很难受:
button1.addListener(new XXListener{
  public void ActionPerformed(ActionEvent e){
    ...
  }
});


class MyXXListener implements XXListener {
  public void ActionPerformed(ActionEvent e){
    ...
  }
}  
...
button1.addListener(new MyXXListener);


如果能学习一下它们的写法就好了:
button1.onclick = function(e){...}

button1.addListener(function(e){...})

button1.onclick = function1;


GUI 总是有大量事件触发的,由类包装过的函数指针,非常影响性能。
就算是 C++ delegate,都会有性能问题……
http://www.codeproject.com/KB/cpp/FastDelegate.aspx

希望日后改进的硬件、VM 和编译器可以解决这个问题吧。



你可以用注解啊,netbean开发时支持这个类库

为什么一定要和win类似呢?
0 请登录后投票
   发表时间:2009-04-28   最后修改:2009-04-28
shiren1118 写道
你可以用注解啊,netbean开发时支持这个类库
为什么一定要和win类似呢?


Annotation 对性能有影响吧…… 尤其是启动速度,每慢一秒都会失去很多很多用户

哪里看出“要和 win 类似了”……
0 请登录后投票
论坛首页 Java企业应用版

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