`
lgx522
  • 浏览: 125793 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

借JavaFX之风,Swing终于熬到了出头之日

    博客分类:
  • Java
阅读更多
前几天看了点新闻,一是说JavaFX1.0的推出,二是是说Sun停止了对SwingX的资助,由此激怒了社区。
由此一些人推论Sun已经全力押宝JavaFX,Swing将沦为鸡肋。而后Sun的高管自然出面表态,Swing和JavaFX两手都要硬。

由于本人一直从事企业信息系统的管理和研发,平日对Swing还是多有涉猎,看到这些传闻不免要探个究竟。其实最近忙于管理工作,技术上已多日不熟了。于是下载了NetBeans6.5 JavaFX版,顺便装了个JDK1.6 update11,这一试却是大获惊喜,同时对Sun的JavaFX策略深感怀疑。

惊喜在于经过多年的等待和失望,Swing居然真正快了起来,启动速度几乎提高了一倍以上。这对于Swing的爱好者们无异打了一针鸡血!老实说,Swing一直以来是设计精品、性能垃圾,从Applet时代开始,大家就一直是恨铁不成钢,期待了很多年了,直到期待到绝望。以至于本人怀疑Swing的性能也“只能如此了”。于是大家才会去折腾设计上莫名其妙的Swt,才会毅然决然地把Applet扔到一边,硬啃代码丑陋的Flex。经过多年的批判,很多初学者早已习惯把“Swing很烂”当做公理。其实经过多年发展和实践,Swing的架构设计是超优秀,跨平台也是目前最完善的,“慢”才是Swing的真正硬伤。可惜Sun一直对这个问题视而不见,才导致了这种明珠暗藏的局面。

也许Sun还是要靠买高端的服务器挣钱吧,所以从来对“慢”这个问题相当麻木。以至于众多从Java时代成长起来的程序员已经逐渐习惯了“慢”,甚至找出各种借口说“慢”已经不是问题。结果如何呢,EJB渐成笑柄,而Swing这种超经典GUI(除MS的各大系统级厂商由于要跨平台,故Swing是GUI首选)总是令人不满,根本性的问题其实还是“慢”,这甚至让爱好者都难于启齿。与之相对的是,MS恰恰是最重视“ 快、慢”问题的,君不见Windows的GUI就是快,MS的软件上手也是快,随之是滚滚而来的钞票。等Vista一“慢”,连MS都不好使了,大家不买帐了。所以对于用户而言,“使用快”永远是个硬道理。其实对于程序员而言,“开发快”也永远是个硬道理,只不过在这方面是相对的,面对不同规模和生命周期的系统,各种技术是难有定论的。几经折腾,笔者还是坚守中庸主义的Java。

这几年RIA之风日渐疯狂,人们早起习惯大谈Flex、 Ajax,甚至新出炉的SliverLight,全然忘记了Java起家时的Applet在十多年前早已是RIA的先行者。作为后起之秀的Flex强在哪里,其实最主要是“快”,运行快、安装快、开发快。或许迟钝的Sun终于感到了耻辱,才开始下决心解决这个“慢”的问题。NetBeans的GUI设计器算是解决了开发“慢”的问题,更重要的是JRE update10之后终于可以让爱好者享受一下不输于winform和swt的速度感了。以Swing经典的架构设计、完善的跨平台特性,优秀的可扩展性,笔者实在找不到不用Swing的理由了。以现在而论,针对Internet的JavaFX尚不完善(连NetBeans都不能可视化设计,且标记化的语言实在是够乱的),大家不必胡乱跟风。但企业应用则可以好好考虑一下JApplet或者Swing Application,与其死磕乱糟糟的JS和Flex(对于习惯了Java的程序员来说),不如享受一下All in Java的乐趣。
分享到:
评论
45 楼 abcx 2008-12-19  
All in Java这句话,说得太绝对,过于纯粹的追求用Java去实现所有的东西,这个命题本身从逻辑上就是错误的。楼主脱离技术一线比较久了,身处一线,讲的是解决问题,而且时间迫切,很多问题也只能给一个过渡方案,在这种情况下,哪里还会去在乎用什么语言。
44 楼 insiku 2008-12-19  
如果javaFX可以成功
那JRE能成为电脑上必备的软件之一
那么Swing就能成功
包括RCP也会更加成功


如果Sun想javaFX成功 就得推出专门针对javaFX的IDE
而不是在Nb上装个插件
43 楼 abcx 2008-12-19  
在当前环境下我觉得Swing还是有所作为的,运行速度与开发效率虽然不是最好,但也算很好了,但一般的企业应用也只是在有限的地方使用SWing(Applet,Java Web Start也算Swing,只是部署方式有改变),运行速度和开发效率不是主要关注点。对于JavaFX,看上去它的目标市场和SWing好像不一样,所以现在还是观望。如果让我来开发一个桌面应用,我还是会考虑Java的,正如前面提到的,SWing的设计还可以,在加上核心Java里面设计优良的数据结构及数据处理方法,以及第三方的库和产品,这些远远超过了之前的Windows桌面开发语言工具,如VC++/MFC,如果实在需要调用底层的操作系统或访问硬件设备,可以用C/C++去读取数据,然后通过JNI将数据传给Java做数据处理,然后用Swing做数据展示。我们部门最近为业务部门开发的打印系统,客户端采用的是Applet,运行在Sun JRE 6u7上,Applet的启动速度,运行速度,打印速度都非常不错。如果不采用Applet,那么我们的打印系统就要与业务系统分离,那样业务部门的操作流程与我们的开发都会变得繁琐,且不利于以后打印系统的更新。
42 楼 wjs0702cn 2008-12-19  
"惊喜在于经过多年的等待和失望,Swing居然真正快了起来,启动速度几乎提高了一倍以上。"
到底是Java快了,还是CPU快了?
41 楼 tapestry 2008-12-19  
我就纳闷了,javafx是建立在swing上边的,既然javafx能做的这么眩,为什么当初不把swing也做成这个效果呢,如果一开始就有javafx的那种效果,估计swing的接受程度就不是现在这个样子了。
40 楼 魔兽精神 2008-12-19  
terranhao 写道
魔兽精神 写道
swing 的 jtable 实在是不好用...
不知道有没有不改原码的解决方案?

JTable是我见过的table控件中最灵活的。


拆分合并单元格,一搞我就觉得烦.
39 楼 guoshiguan 2008-12-19  
碧海山城 写道
设计上莫名其妙的Swt,代码丑陋的Flex   ....Fle代码怎么丑陋?swt莫名其妙?


flex我也觉得有点丑,面向对象的脚本,写起来很怪,而且,还有一些莫名的实现,比如annotation
38 楼 lgx522 2008-12-19  
sunnymoon 写道
我给楼主的帖子加精了,但是完整的看过之后真的后悔了。最多只能给个良好。
1.
Swing的设计优秀很同意楼主的观点,但是没有流行恐怕不是一个慢字可以概括。
最跟本原因是Sun主导的Swing缺少对终端设备使用的感观。比速度更致命的是默认界面丑陋。也许你会说,我不是一个好的设计者。但是我会说在相同的工程量下,Swing表现的确实很一般。这一点也不是最主要的,热爱Java的人很多不会因为这一点原因被打败。但大的阻碍是Windows默认不支持Java。这损失了几乎所以的终端用户,当然企业用户是不在乎这一点的。Windows在世界的垄断阴挡了Java Swing在终端设备产品上的应用。如果MS真的以前错误的完全支持Java,那估计也没有今天.net的什么事儿了。
2.
些外Java标准的优秀的静态语言。和动态语言比很不高效。这什么Ruby这么流行呢?
Sun想改变这种现状。可能楼主是静态语言用久了,或是对动态语言不够了解。
难了不会,会了不难。因为不够熟悉才会觉得很“乱”。如果和C相比谁更乱呢请问。又有几个人说C很乱呢?
3.
最后,在我的实践和观察中总结出,Java Swing 在终端产品中不是很流行的最大原因是系统默认不支持它,或是不完全支持它。每一个系统的发行者都不会主动的去支持Java或是完全支持,如果苹果,支持Java不是技术问题,比如Windos vista,
再比如Windos 7,再比如 ......


良好、精华无所谓,认真回帖讨论问题已经够给面子了,谢过。

1、布署当然是个大原因,不过这是在用户层面了,但也并非绝对。Flash不也没有预装吗?可现在上网半数以上的Windows还不是可以跑Flash。下载快、运行快、效果酷啊。JRE如果沿此正确策略,达到这种效果也是可能的,那么多Java小游戏,都放到Applet上,用户量会上去的。关键还是要本身够强。
以个人体会,过去Swing/JApplet不叫座,主要还是连开发者自己都难以认同的慢速度,始作俑者底气都不足,接下来MS轻轻一挡就退下去了。当年MS还想劫持Java呢,设想如果Sun招安了,也就不会有.NET,那如今半个编程世界就都是Java了。

2、这两年还都是搞动态语言去了,PHP、Ruby甚至Python都有涉猎,PHP和Ruby都还有实践的系统。为什么会转回Java,主要还是觉得Java够成熟,够放心。静态语言用久了,大家都有很多不满;但动态语言也有它们的问题,大家多用用就清楚了。其实这两大体系,字面上就已经指明了适用范围。一方适用在“静”的系统,一方适用在“动”的系统。本人身在需要长治久安的企业领域,坚守“静态”的Java其实是必然的。

Java从设计角度来看最大的优点,在于高度的标准化和兼容性,可以大规模长期持续扩展。所以最近斗胆提倡企业应用“All in Java”这样的理念,不是有意挑衅,乃是有感于当前企业应用的混乱局面而发,并给国内Java界貌似低迷沉闷的同道们鼓鼓气。
37 楼 lewhwa 2008-12-18  
      Java swing 之所以不流行(正如M$的MFC那样),是因为Sun公司原来始终未有一个像模像样的IDE做支撑。但今非昔比,NetBeans将为Sun公司的任一技术和Idea保驾护航。
      正如大家所见,Groovy,JRuby,Jython在Sun的强力推行下,借助NetBeans的帮助,真是普及很快。
      可以预料,也是经验所言,今后任何一个平台必须包含开发(或设计时)环境,还有运行时环境。两种缺一不可,两手都要硬,才能推动技术的发展,成为主流。
36 楼 allenny 2008-12-18  
sunnymoon 写道
我给楼主的帖子加精了,但是完整的看过之后真的后悔了。最多只能给个良好。
1.
Swing的设计优秀很同意楼主的观点,但是没有流行恐怕不是一个慢字可以概括。
最跟本原因是Sun主导的Swing缺少对终端设备使用的感观。比速度更致命的是默认界面丑陋。也许你会说,我不是一个好的设计者。但是我会说在相同的工程量下,Swing表现的确实很一般。这一点也不是最主要的,热爱Java的人很多不会因为这一点原因被打败。但大的阻碍是Windows默认不支持Java。这损失了几乎所以的终端用户,当然企业用户是不在乎这一点的。Windows在世界的垄断阴挡了Java Swing在终端设备产品上的应用。如果MS真的以前错误的完全支持Java,那估计也没有今天.net的什么事儿了。
2.
些外Java标准的优秀的静态语言。和动态语言比很不高效。这什么Ruby这么流行呢?
Sun想改变这种现状。可能楼主是静态语言用久了,或是对动态语言不够了解。
难了不会,会了不难。因为不够熟悉才会觉得很“乱”。如果和C相比谁更乱呢请问。又有几个人说C很乱呢?
3.
最后,在我的实践和观察中总结出,Java Swing 在终端产品中不是很流行的最大原因是系统默认不支持它,或是不完全支持它。每一个系统的发行者都不会主动的去支持Java或是完全支持,如果苹果,支持Java不是技术问题,比如Windos vista,
再比如Windos 7,再比如 ......



有一点不太同意,如果M$以前一直支持Java的话,那么以M$的做事风格,会产生出两种不兼容的Java,并且M$那个只能在Windows上运行。
35 楼 heroczx 2008-12-18  
<div class='quote_title'>rehte 写道</div>
<div class='quote_div'>本人多年来一直力挺Swing,死不悔改,至今仍想为Swing的普及做努力,我为Ecipse平台开发了一款类似于NetBeans界面设计工具的插件,虽然目前稳定和质量上不是太好,但是功能上已经相当好用了,可以用来替换VE了,这款工具在: <br/><a href='http://code.google.com/p/visualswing4eclipse/' target='_blank'>http://code.google.com/p/visualswing4eclipse/</a> <br/>我在JavaEye写了一篇文章介绍: <br/><a href='/topic/208787' target='_blank'>http://www.iteye.com/topic/208787</a> <br/>在EclipseZone也写了篇文章介绍: <br/><a href='http://eclipse.dzone.com/announcements/visual-swing-designer-eclipse' target='_blank'>http://eclipse.dzone.com/announcements/visual-swing-designer-eclipse</a> <br/>都获得不少好评。 <br/>另外现在的Swing绝对不是你想象丑、慢、功能弱,真是和开发者对于Swing的掌握程度有关,我写过一些博客介绍Swing技术,虽然已经很长时间不更新了,但是我觉得有助于消除大家对于Swing的偏见: <br/><a href='http://blog.sina.com.cn/swingjava' target='_blank'>http://blog.sina.com.cn/swingjava</a> <br/><a href='http://blogs.sun.com/swing' target='_blank'>http://blogs.sun.com/swing</a> <br/>但是可惜的是,很少Java开发者关注使用Swing开发,尤其是国内,尽管现在的Swing的已经今非昔比了,这真是让人心寒。 <br/>希望大家回头看一下现在的Swing,尤其是Java 6 Update 10之后的Swing,配合NetBeans的界面设计工具,或者Eclispe上的界面设计工具(包括我的),看一看,给Swing和Applet技术再一次的机会,绝对会让你惊喜的。 <br/></div>
<p><br/>大哥,怎么不写博了啊,以前常看你的博,还以为你出国了呢。。。。<br/></p>
<p> </p>
34 楼 sunnymoon 2008-12-18  
我给楼主的帖子加精了,但是完整的看过之后真的后悔了。最多只能给个良好。
1.
Swing的设计优秀很同意楼主的观点,但是没有流行恐怕不是一个慢字可以概括。
最跟本原因是Sun主导的Swing缺少对终端设备使用的感观。比速度更致命的是默认界面丑陋。也许你会说,我不是一个好的设计者。但是我会说在相同的工程量下,Swing表现的确实很一般。这一点也不是最主要的,热爱Java的人很多不会因为这一点原因被打败。但大的阻碍是Windows默认不支持Java。这损失了几乎所以的终端用户,当然企业用户是不在乎这一点的。Windows在世界的垄断阴挡了Java Swing在终端设备产品上的应用。如果MS真的以前错误的完全支持Java,那估计也没有今天.net的什么事儿了。
2.
些外Java标准的优秀的静态语言。和动态语言比很不高效。这什么Ruby这么流行呢?
Sun想改变这种现状。可能楼主是静态语言用久了,或是对动态语言不够了解。
难了不会,会了不难。因为不够熟悉才会觉得很“乱”。如果和C相比谁更乱呢请问。又有几个人说C很乱呢?
3.
最后,在我的实践和观察中总结出,Java Swing 在终端产品中不是很流行的最大原因是系统默认不支持它,或是不完全支持它。每一个系统的发行者都不会主动的去支持Java或是完全支持,如果苹果,支持Java不是技术问题,比如Windos vista,
再比如Windos 7,再比如 ......
33 楼 mathgl 2008-12-18  
swing在 linux下的中文问题 似乎1.6后 不能自动识别
怎么也要改一下才能用。
比较麻烦
32 楼 Jekey 2008-12-18  
rehte 写道
本人多年来一直力挺Swing,死不悔改,至今仍想为Swing的普及做努力,我为Ecipse平台开发了一款类似于NetBeans界面设计工具的插件,虽然目前稳定和质量上不是太好,但是功能上已经相当好用了,可以用来替换VE了,这款工具在:
http://code.google.com/p/visualswing4eclipse/
我在JavaEye写了一篇文章介绍:
http://www.iteye.com/topic/208787
在EclipseZone也写了篇文章介绍:
http://eclipse.dzone.com/announcements/visual-swing-designer-eclipse
都获得不少好评。
另外现在的Swing绝对不是你想象丑、慢、功能弱,真是和开发者对于Swing的掌握程度有关,我写过一些博客介绍Swing技术,虽然已经很长时间不更新了,但是我觉得有助于消除大家对于Swing的偏见:
http://blog.sina.com.cn/swingjava
http://blogs.sun.com/swing
但是可惜的是,很少Java开发者关注使用Swing开发,尤其是国内,尽管现在的Swing的已经今非昔比了,这真是让人心寒。
希望大家回头看一下现在的Swing,尤其是Java 6 Update 10之后的Swing,配合NetBeans的界面设计工具,或者Eclispe上的界面设计工具(包括我的),看一看,给Swing和Applet技术再一次的机会,绝对会让你惊喜的。

支持一下,虽然我刚用swt做了个小工具。呵呵!
31 楼 careprad 2008-12-18  
我觉得swt挺好的
30 楼 xpf7622 2008-12-18  
leiv 写道
Java Fx速度真不是一般的慢,而且看它那个demo的时候浏览器死了两次还没看完。Flex也没有你说的这么不堪吧,Android和Flex用的这种XML语法我还挺喜欢的。

这可能是你没有设置好的原因,我把FireFox ,IE中老版本的JRE Plugin卸掉后,就不出现你所说的情况了。
29 楼 lgx522 2008-12-18  
碧海山城 写道
设计上莫名其妙的Swt,代码丑陋的Flex   ....Fle代码怎么丑陋?swt莫名其妙?


分别拿这三种技术写写代码就会有体会了。当然所谓体会是很个性化的东西。
28 楼 碧海山城 2008-12-18  
设计上莫名其妙的Swt,代码丑陋的Flex   ....Fle代码怎么丑陋?swt莫名其妙?
27 楼 terranhao 2008-12-18  
魔兽精神 写道
swing 的 jtable 实在是不好用...
不知道有没有不改原码的解决方案?

JTable是我见过的table控件中最灵活的。
26 楼 kangxdw 2008-12-18  
个人觉得整合才是王道...
让手中的工具各展所长...
没必要跟自己和项目过不去```
非要all in one

相关推荐

Global site tag (gtag.js) - Google Analytics