阅读更多

26顶
3踩

编程语言

原创新闻 关于Swing的六个谎言

2008-11-28 09:25 by 见习编辑 Eastsun 评论(60) 有38465人浏览
  你觉得Swing很慢吗?你觉得Swing界面很难看吗?你觉得Swing即将死亡了吗?...Adam Bien 来告诉你:谎言,这一切都是谎言
  Adam Bien在他的博客Six Swing Lies中提到关于Swing的六个不真实的说法:

1。Swing很慢
  我大约从1999/2001年间开发我的第一个Swing项目,那个时候用的还是P4 400 MHz,128 MB - 256 MB RAM配置。很多软件都存在性能问题,但Swing没有。确实,经常有人会造成Swing UI block的情况,但我认为这不能归为Swing性能问题。

2。Swing太过复杂
  在我看来,Swing简单易懂。这儿确实有着各种UI组件以及一些良好设计的事件,但对一个大型的应用来说,这些是必须的。我曾给一些非Java程序员介绍过Swing,在一个较短的时间后他们就能用Swing构建出令人惊讶的复杂的应用。
Eastsun按:说Swing简单易懂我觉得有点过了;不过Swing设计的很优雅这是事实。而且我也认为对于一个可用的UI库来说,复杂是不可避免的。如果Java能够早点支持闭包的话,其事件机制应该可以简化不少。

3。Swing界面很丑陋
  总地来说,Swing界面好不好看,取决于你的设计水平。Swing本身并没有任何限制。况且,这里已经有一些非常棒并且免费的Look&Feel:substance, nimbus,napkin
Eastsun按:这个napkin很好玩:-)

4。Swing与操作系统集成不好,看起来不够native
  Eclipse, Office 2007难道就native了吗?Eclipse看起来确实不错,但并不像Vista。而且,看起来是不是native,在项目中并没有这种需求。此外,与操作系统集成在Java6中已经得到很大的改进。

5。JavaFX将会取代Swing
  JPA 会取代JDBC, Swing Java 2D 或 JSF吗?目前大部分JavaFX组件是基于Swing的,而且现在Swing广泛应用在大公司中。

6。因为Sun不再支持SwingX,Swing将很快死亡
  Swing是JDK的一部分。Java的"deprecated"机制到现在为止事实没有从JDK中移除过任何东西。况且即便在JDK1.6+中出现的JConsole与VisualVM也是基于Swing的。Netbeans也是基于Swing的。还可以参看这篇博客
26
3
评论 共 60 条 请登录后发表评论
20 楼 nextw3 2008-11-28 16:57
不管怎么说,swing确实是慢,慢就是慢,没什么好遮掩的。
19 楼 insiku 2008-11-28 16:20
ray_linn 写道

第二:就拿windows上来看,JVM再怎么提速,也比不上C的速度,JVM再怎么牛B,也得去调用Win API,同样是调用Win API,你多我那么些代码,你怎么可能比我快?


同样的算法实现Java肯定没有C快 甚至没有C++快
这是事实

但是软件的实现算法并不一致
C++当年输给java是因为C++库中的实现bitset的算法很垃圾

就好像大公司宁愿用EJB 也不用比较轻快的spring
18 楼 wangdi 2008-11-28 15:53
http://www.ibm.com/developerworks/cn/opensource/os-swingswt/
这儿有写swing的介绍。。
17 楼 murainwood 2008-11-28 14:31
很多专业软件的UI是用Swing做的。
当然,眼中只有SSH的人,自然不会对Swing放眼里
16 楼 grandpa 2008-11-28 14:06
ray_linn 写道

这项统计肯定是不准确的,否则谈何Swing已死?

这个是原来的链接:
http://weblogs.java.net/blog/hansmuller/archive/2005/10/official_swing.html
另外请你用证据证明这个统计是不准的。
15 楼 tutu1982 2008-11-28 13:31
使用上如果觉得复杂的话,纯属使用人的问题,多么优美架构,不要人云亦云,要用心用用才知道
14 楼 bookong 2008-11-28 13:30
看标题还以为是Swing黑,结果一看是Swing粉
13 楼 je507 2008-11-28 13:25
ray_linn 写道

je507 写道
依靠更快的硬盘速度、更高的cpu计算能力、以及更好的jvm(主要是1.6),swing的速度已经不输于其他GUI技术了。
依靠得这几项怎么可能。

可能
ray_linn 写道

第一: CPU和硬盘对大家都是均等的,假设MFC比你Swing快,前二者的提速,也会让MFC更快,你怎么能追得上?

首先,在局部绝对速度上,windows平台上的mfc当然要比windows上的swing要快了。问题是,软件交付给客户是个整体。软件整体上的性能,不仅仅取决与语言和库,而更多取决与如何协调IO、CPU、并发等。说Swing好,是指在大规模GUI项目开发上,Swing模型更容易做出优良的设计来满足上述目标。

在过去,即使是非常好的swing设计,由于硬件性能,所带来的优势也会被java执行上的劣势吞噬掉。现在,java在硬件上的执行劣势依然存在。但这种差距已经很小了。而swing在OO上的良好设计已经可以弥补上述劣势。

不是说其他语言不能做出很好的设计,只是说swing在这方面更容易些。必须承认,有些库和语言本身(比如swing)是elegent的,也鼓励你做出elegent的设计。许多人不理解这一点,用swing做出糟糕的设计,运行效果很差,这其实很大责任在开发者自身。

最后还是要强调一点,语言上执行速度差距再大,也不会比IO或网络访问与CPU运算的速度差距大。所以,软件整体上的性能,更多取决与软件本身的设计,在当今高性能的硬件上,语言本身执行效率上的影响已经不是象过去那么显著了。

ray_linn 写道

第二:就拿windows上来看,JVM再怎么提速,也比不上C的速度,JVM再怎么牛B,也得去调用Win API,同样是调用Win API,你多我那么些代码,你怎么可能比我快?

你说的还是语言层面上的,我说的是软件整体层面上的。
12 楼 AllenZhang 2008-11-28 13:02
deprecated基本上认为也就是不会再优化了,更新了。只为兼容性存在。
这个和死了没啥分别。
11 楼 ray_linn 2008-11-28 12:49
je507 写道

依靠更快的硬盘速度、更高的cpu计算能力、以及更好的jvm(主要是1.6),swing的速度已经不输于其他GUI技术了。


依靠得这几项怎么可能。

第一: CPU和硬盘对大家都是均等的,假设MFC比你Swing快,前二者的提速,也会让MFC更快,你怎么能追得上?

第二:就拿windows上来看,JVM再怎么提速,也比不上C的速度,JVM再怎么牛B,也得去调用Win API,同样是调用Win API,你多我那么些代码,你怎么可能比我快?
10 楼 ray_linn 2008-11-28 12:45
是目前使用Swing作为界面开发工具的市场是最大的,记得以前就看到过一个报道,说北美市场上统计的结果是Swing以48%的市场占有率超过WinForm成为市场占有率最大的GUI开发工具。更何况native UI是很多工具很多年来积累的结果,不能单独和Swing本身比较。
grandpa 写道

ray_linn 写道
看了半天还是不看好Swing,从事实上来看, java ui远比native UI (linux下的QT/ 或者windows MFC/win form)少得可怜。Swing开发的应用软件也许比不上传统UI工具多,但是目前使用Swing作为界面开发工具的市场是最大的,记得以前就看到过一个报道,说北美市场上统计的结果是Swing以48%的市场占有率超过WinForm成为市场占有率最大的GUI开发工具。更何况native UI是很多工具很多年来积累的结果,不能单独和Swing本身比较。



这项统计肯定是不准确的,否则谈何Swing已死?
9 楼 xsc963 2008-11-28 12:32
Swing的确非常的不错!非常的不错,非常的不错!
8 楼 Eastsun 2008-11-28 12:27
我觉得JVM上出现的各种动态语言(JRuby,Jyphon,Groovy,etc.)给Swing带来了另一个机会。
在Java中使用Swing有一个很烦人的地方就是Swing的事件机制了:你必须针对每一种事件写相应的事件监听器,而这需要创建大量的class;而动态语言能简化这一操作
在我翻译的Java.next:第二部分——与Java互操作一文中例举了几种动态语言与Swing的集成。而且,这些动态语言中大多有专门针对Swing的API库:对Swing进行了一层包装,可以进一步简化Swing的使用。这一点上,貌似Groovy有一个GUI库做得很不错。
7 楼 Nighthaven 2008-11-28 12:17
swing在开发复杂ui控件上(tree,table)有先天优势。但是,中文输入法是swing在国内市场的致命伤,此外多数电子词典无法对swing控件上的文字取词。这两点(尤其是前者)在企业应用中也许不重要,但是对于通用软件(尤其是游戏)来说是不能接受的。
6 楼 luzl 2008-11-28 12:01
ray_linn 写道

看了半天还是不看好Swing,从事实上来看, java ui远比native UI (linux下的QT/ 或者windows MFC/win form)少得可怜。

过度的良好设计导致不必要的复杂,MVC徒然增加了复杂性。

great
5 楼 je507 2008-11-28 11:29
我和作者类似,是99年开始用swing的。不过我记的当时还处在awt到swing的过渡期。因为我们的项目开始时用的是awt,后来听说swing好,项目才决定全部迁移到swing的。

说swing简单是有点夸张了。因为比起PB、VB这类工具,Swing没有他们那么简单。但是,单从组件开发方面,swing比他们强大。99年之前我一直用PB。但接触swing后,才意识到原来PB号称的OO概念,基本是噱头,swing才真正是!但swing设计上的好处,不容易让新人运用。但确实能给大型GUI项目带来非常大的好处,是其他PB/VB之类的不能比的。

Swing的性能在那个年代确实慢。表现在两个方面,1是启动。当然这和swing关系不大,是jvm。但谁让你们是一家子呢,怨不得别人抱怨。2是界面响应慢。比起原生的pb、vb界面就是慢,这是事实。

但现在情况已经变了,依靠更快的硬盘速度、更高的cpu计算能力、以及更好的jvm(主要是1.6),swing的速度已经不输于其他GUI技术了。看看netbeans、inteliJ、VisualParadigm,这些用swing做出来的东东,着实让人喜欢。

还有开发的方便性。swing过去没有很好的支持拖拽的GUI构建工具,这点和PB、VB没法比。不过我始终认为,在大型GUI项目中,这不是一个非常critical的技术选择标准。对小型项目这确实重要。不过现在在主要的Java开发工具中都有不错的swing构建工具了,netbeans的metiss就非常不错!
4 楼 insiku 2008-11-28 11:24
Swing UI block
是因为S13在EDT里面写耗时操作
3 楼 jwsh1984 2008-11-28 11:23
反而我更加看好Tk的GUI平台移植应用, Tk绑定的语言可不少
2 楼 grandpa 2008-11-28 11:05
ray_linn 写道

看了半天还是不看好Swing,从事实上来看, java ui远比native UI (linux下的QT/ 或者windows MFC/win form)少得可怜。

Swing开发的应用软件也许比不上传统UI工具多,但是目前使用Swing作为界面开发工具的市场是最大的,记得以前就看到过一个报道,说北美市场上统计的结果是Swing以48%的市场占有率超过WinForm成为市场占有率最大的GUI开发工具。更何况native UI是很多工具很多年来积累的结果,不能单独和Swing本身比较。

1 楼 ray_linn 2008-11-28 10:29
看了半天还是不看好Swing,从事实上来看, java ui远比native UI (linux下的QT/ 或者windows MFC/win form)少得可怜。

过度的良好设计导致不必要的复杂,MVC徒然增加了复杂性。

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • Java swing 搭建图形用户界面一:(窗口与菜单)

    java 的优势在于网络编程与多线程,但其作为一门全场景语言,依然提供了强大的GUI开发API,这·些API封装在jaivax.swing中,通过命令javax.swing.*导入包中。 这一系列通过3~5篇文章,以可运行代码为例简单介绍...

  • sun和java_Sun和Java Swing 2.0的故事

    【IT168 评论】这是一个很长的话题,自从“Sun:放弃Swing,主推JavaFX”,“Sun...在关于Swing的争论中,要求Sun继续支持Swing的声音不断,一些开发者也澄清了大众对Swing的错觉,详见“关于Swing的六个谎言”。...

  • Swing程序设计(1)

    import javax.swing.*; public class Demo extends JDialog { public Demo(JFrame frame) { super (frame,"对话框标题",true);//父窗体对象,对话框标题,是否阻塞父窗体 Container c=getContentPane();//获取...

  • Swing程序设计(2)

    // 初始化一个面板,设置2行2列的网格布局 c.setLayout(new GridLayout(2, 2, 10, 10)); //设置小面板里的布局 JPanel p1 = new JPanel(new GridLayout(1, 3, 10, 10)); p1.add(new JButton("1"));// 在面板中添加...

  • 跨平台到底是不是谎言?

    前几天是个神奇的日子,博客园里咣咣咣地出现了三篇文章,都包含了“跨平台”和“谎言”这两个关键字。...关于“跨平台”这个问题,我感觉还是要分“客户端”和“服务器端”两个方面来谈,或者说“表现层”或“服务层

  • 深入理解深度学习——GPT(Generative Pre-Trained Transformer):GPT-3与Few-shot Learning

    下面通过虚构一个动词词性的新单词,看看GPT-3能否很好地把握新单词的含义: To “screeg” something is to swing a sword at it. An example of a sentence that uses the word screeg is: We screeghed at each ...

  • 专访顾伟:从机械工程师到资深软件工程师、再到微软MVP的蜕变

    用Swing做过一些简单的桌面软件,后来也利用JSP、Servlet、JavaBean、JDBC、Tomcat等开发过一些MIS系统,再后来用JavaEE领域著名的轻量级框架SSH(Structs 1.x、Spring、Hibernate)做过一个稍大规模的业务系统。...

  • 多家权威机构、几十篇权威证据证明:Java比C++更快。如果反对,请举反证。

    驳“.net比java快”的谎言 http://nuclearjava.blogchina.com/1902610.html 摘要: C++的速度是由C++编译器在程序员开发时编译出来的机器语言的优化程度决定的。 Java的速度是由Java的JIT和HotSpot编译器将java ...

  • 海龟交易法则笔记

    结果偏好:人们倾向于根据一个决策的结果而不是本身的质量来判断它的好坏 2.2海龟交易策略: 交易风格: 趋势跟踪:几个月内大趋势 反趋势交易:市场的支撑与阻力机制 波段交易 swing trading:短期市场动向 当日...

  • 编程学习日志

    之所以会选择学习编程来就业,其实也是因为现在是某211的经济管理学院的学生,上网查了一下自己这个专业将来的薪资,很低。因为家里穷,而且我是一个男人,我将来要养家,我根本不敢去赌。    现在在大学...

  • BOSS战的设计与架构

    每个人心里都有自己最喜欢的BOSS,类似“10大顶尖首领战”这样的话题总是能成为引发许多讨论。 根据维基百科,最早的BOSS是1975年的RPG游戏龙与地下城中的金龙,此后这种玩法日益丰富。 而对于游戏设计者而言...

  • Java游戏编程技术-1

    不过,呵呵,相信大家也知道这是一个谎言!我上了大学后发现别人告诉我的东西根本没有不存在,差一点被害得在毕业时都入不了IT行业,还谈什么游戏开发了。结果搞了10年的EPR应用开发--因为得先填饱自己肚子实现了...

  • 中国本土化编程 汉语编程 之我见

    或者说,6个版本还真要让我准备6个ide吗?!天,若当真世界上有朝一日普及了易语言,除了易语言公司之外,恐怕没什么人会高兴起来吧? 我一直认为,文字的作用,即“在最段时间内,准确且清晰地记录最大量信息的工具...

  • 我购买的第一本技术课外书:《Excel图表之道》

    摘自:http://blog.zhaojie.me/2010/06/is-cross-platform-a-lie-or-not.html<br />前几天是个神奇的日子,博客园里咣咣咣地出现了三篇文章,都包含了“跨平台”和“谎言”这两个关键字。从Java开始谈到.NET,...

  • Java VS C/C++ 运行速度的对比

    http://blog.sina.com.cn/s/blog_99baab530102wj4e.htmlJava与C++相比的优点在于:u ...而不像C++中数组是一个指针。所以访问数组,Java都会进行边界检查,更安全,但牺牲了速度。同时因为Java中所有类都会继承O...

  • 东营市乡镇边界,矢量边界,shp格式

    矢量边界,行政区域边界,精确到乡镇街道,可直接导入arcgis使用

  • Java SSM 商户管理系统 客户管理 库存管理 销售报表 项目源码 本商品卖的是源码,合适的地方.zip

    毕业设计

  • 075.JSP+SQL宿舍管理系统.zip

    毕业设计

  • 经验贝叶斯EB的简单例子

    经验贝叶斯EB的简单例子

  • 69页-智慧园区综合管理平台解决方案.pdf

    智慧园区,作为现代城市发展的新形态,旨在通过高度集成的信息化系统,实现园区的智能化管理与服务。该方案提出,利用智能手环、定制APP、园区管理系统及物联网技术,将园区的各类设施与设备紧密相连,形成一个高效、便捷、安全的智能网络。从智慧社区到智慧酒店,从智慧景区到智慧康养,再到智慧生态,五大应用板块覆盖了园区的每一个角落,为居民、游客及工作人员提供了全方位、个性化的服务体验。例如,智能手环不仅能实现定位、支付、求助等功能,还能监测用户健康状况,让科技真正服务于生活。而智慧景区的建设,更是通过大数据分析、智能票务、电子围栏等先进技术,提升了游客的游玩体验,确保了景区的安全有序。 尤为值得一提的是,方案中的智慧康养服务,展现了科技对人文关怀的深刻体现。通过智慧手环与传感器,自动感知老人身体状态,及时通知家属或医疗机构,有效解决了“空巢老人”的照护难题。同时,智慧生态管理系统的应用,实现了对大气、水、植被等环境要素的实时监测与智能调控,为园区的绿色发展提供了有力保障。此外,方案还提出了建立全域旅游营销平台,整合区域旅游资源,推动旅游业与其他产业的深度融合,为区域经济的转型升级注入了新的活力。 总而言之,这份智慧园区建设方案以其前瞻性的理念、创新性的技术和人性化的服务设计,为我们展示了一个充满智慧与活力的未来园区图景。它不仅提升了园区的运营效率和服务质量,更让科技真正融入了人们的生活,带来了前所未有的便捷与舒适。对于正在规划或实施智慧园区建设的决策者而言,这份方案无疑提供了一份宝贵的参考与启示,激发了他们对于未来智慧生活的无限遐想与憧憬。

Global site tag (gtag.js) - Google Analytics