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

借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的乐趣。
分享到:
评论
65 楼 hanauta 2008-12-21  
gml520 写道
sunjohn 写道
lgx522 写道
wjs0702cn 写道
"惊喜在于经过多年的等待和失望,Swing居然真正快了起来,启动速度几乎提高了一倍以上。"
到底是Java快了,还是CPU快了?


同一台机器,先装update10以前的版本,试一试,再换成update11,对比一下。

快个头啊,那是因为从 update 10 开始 jre 装了个 “Java Quick Starter”,在系统启动时会搞小动作,下三流的动作,不是技术上的进步,我装了 update 10,就感觉系统慢了,启动 Firefox, IE 都慢好多(我还以为中病毒了,查了好久,还在系统里看到好几个新进程),就为了基本用不到的 Applet?!!

不就是多了一个系统服务嘛(jqs),至于说得那么慢吗?我这里根本就没有感觉。
就算没有安装update10 速度也是很快的。加个系统服务就是下三流的动作,那Windows,SQLServer 那么多服务,google update 等都是下三流了? 还有多了几个新进程,你要注意了,java 只是添加了一个系统服务jqs 还有在现升级进程SunJavaUpdate 在也没有其他的什么行进程了。


要说下3流, M$的Windows API才是真正的下3流,哈哈!谁能开发个跟M$相同功能的软件又比M$的快的?至于JavaFx,它的劣势已经非常明显了,而且SUN显然不如M$和adobe会搞市场。Swing才是正道。

P.S. 国外的swing, applet应用确实比国内多很多很多。
64 楼 gml520 2008-12-21  
sunjohn 写道
lgx522 写道
wjs0702cn 写道
"惊喜在于经过多年的等待和失望,Swing居然真正快了起来,启动速度几乎提高了一倍以上。"
到底是Java快了,还是CPU快了?


同一台机器,先装update10以前的版本,试一试,再换成update11,对比一下。

快个头啊,那是因为从 update 10 开始 jre 装了个 “Java Quick Starter”,在系统启动时会搞小动作,下三流的动作,不是技术上的进步,我装了 update 10,就感觉系统慢了,启动 Firefox, IE 都慢好多(我还以为中病毒了,查了好久,还在系统里看到好几个新进程),就为了基本用不到的 Applet?!!

不就是多了一个系统服务嘛(jqs),至于说得那么慢吗?我这里根本就没有感觉。
就算没有安装update10 速度也是很快的。加个系统服务就是下三流的动作,那Windows,SQLServer 那么多服务,google update 等都是下三流了? 还有多了几个新进程,你要注意了,java 只是添加了一个系统服务jqs 还有在现升级进程SunJavaUpdate 在也没有其他的什么行进程了。
63 楼 sunjohn 2008-12-21  
lgx522 写道
wjs0702cn 写道
"惊喜在于经过多年的等待和失望,Swing居然真正快了起来,启动速度几乎提高了一倍以上。"
到底是Java快了,还是CPU快了?


同一台机器,先装update10以前的版本,试一试,再换成update11,对比一下。

快个头啊,那是因为从 update 10 开始 jre 装了个 “Java Quick Starter”,在系统启动时会搞小动作,下三流的动作,不是技术上的进步,我装了 update 10,就感觉系统慢了,启动 Firefox, IE 都慢好多(我还以为中病毒了,查了好久,还在系统里看到好几个新进程),就为了基本用不到的 Applet?!!
62 楼 blackbat 2008-12-21  
swing熬出头了吗?
61 楼 hero1985 2008-12-20  
Swing?炒冷饭吧,市场大部分都被别人占领了,这时候想起来优化了。Sun的一两年之内能把JavaFX成熟起来就不错了,不过等JavaFX能满足企业级应用的时候,市场都是Flex和Sliverlight的天下了.至于Flex代码丑不丑陋,那就纯粹是一家之言了,我就感觉写Java的程序员学ActionScript3轻车熟路.
60 楼 xiaojiit 2008-12-20  
小弟刚刚入门,支持Swing,也一直想用用JavaFX,但中文的文档太少了
59 楼 gml520 2008-12-20  
free_chilly 写道
javagui 写道
huangshuhong 写道
Swing确实是好东西~一直在弄


我现在在搞医疗设备的研发,涉及到前台的病人信息显示采用swing,在医疗领域,但是像视频这些要求效率的场合Java目前根本不能派上用场。比如图象编解码,RAW格式的图象Swing默认不支持,通过Java2D API读取并解码然后再显示一张Raw格式的X光片,需要400多ms,C实现能控制在30ms之内,还是差距不小的。



05年之年我们做PACS系统,当时采用swing做客户端,核心用c++做dicom图片的处理,外面通过jni调用。
虽然java2d,java3d的demo看着可以,但java在图像领域首先是性能,其次是与OpenGL等基本无交互。


现在的jdk 已经不是以前的jdk 了。和OpenGL 的交互已经有了。
58 楼 gml520 2008-12-20  
sdh5724 写道
用了永中的office, 才知道swing的速度是那么惊奇, 这个是证明, 可以下来体验下, 我也是别人推荐我看看的。


永中的office 给我的感觉比OpenOffice  还要快。我在Linux 下用的就是他。他里面的编辑器模块用的是netbeans 的。

57 楼 onmeiei 2008-12-20  
lgx522 写道
连MS都不好使了

东北人。。。
56 楼 luoba 2008-12-20  
不如享受一下All in Java的乐趣。
55 楼 sdh5724 2008-12-19  
用了永中的office, 才知道swing的速度是那么惊奇, 这个是证明, 可以下来体验下, 我也是别人推荐我看看的。
54 楼 free_chilly 2008-12-19  
javagui 写道
huangshuhong 写道
Swing确实是好东西~一直在弄


我现在在搞医疗设备的研发,涉及到前台的病人信息显示采用swing,在医疗领域,但是像视频这些要求效率的场合Java目前根本不能派上用场。比如图象编解码,RAW格式的图象Swing默认不支持,通过Java2D API读取并解码然后再显示一张Raw格式的X光片,需要400多ms,C实现能控制在30ms之内,还是差距不小的。



05年之年我们做PACS系统,当时采用swing做客户端,核心用c++做dicom图片的处理,外面通过jni调用。
虽然java2d,java3d的demo看着可以,但java在图像领域首先是性能,其次是与OpenGL等基本无交互。

53 楼 free_chilly 2008-12-19  
目前的系统动辄b/s架构,swing的应用机会逐渐少了。
这不是个人好恶决定的。
52 楼 javagui 2008-12-19  
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技术再一次的机会,绝对会让你惊喜的。


rehte,很久没更新过blog了啊。实话我也好久没更新过了。
我现在在搞医疗设备的研发,涉及到前台的病人信息显示采用swing,在医疗领域,但是像视频这些要求效率的场合Java目前根本不能派上用场。比如图象编解码,RAW格式的图象Swing默认不支持,通过Java2D API读取并解码然后再显示一张Raw格式的X光片,需要400多ms,C实现能控制在30ms之内,还是差距不小的。

关于swing解决gif图片刷新频率的那篇贴子发表了,
http://www.blogjava.net/javagui/archive/2008/12/07/244891.html。同时也希望各位也给出点意见。
虽然现在涉及swing,但是用到的只是超基本的那些。
51 楼 javagui 2008-12-19  
huangshuhong 写道
Swing确实是好东西~一直在弄

rehte,很久没更新过blog了啊。实话我也好久没更新过了。
我现在在搞医疗设备的研发,涉及到前台的病人信息显示采用swing,在医疗领域,但是像视频这些要求效率的场合Java目前根本不能派上用场。比如图象编解码,RAW格式的图象Swing默认不支持,通过Java2D API读取并解码然后再显示一张Raw格式的X光片,需要400多ms,C实现能控制在30ms之内,还是差距不小的。

关于swing解决gif图片刷新频率的那篇贴子发表了,
http://www.blogjava.net/javagui/archive/2008/12/07/244891.html。同时也希望各位也给出点意见。
50 楼 lgx522 2008-12-19  
fight_bird 写道

Swing的短肋不仅是技术层面,更多的是由于其开发成本,在C/S的时代是绝对的劣势,在RIA时代还是没有优势。


Swing由于其高度的优雅和灵活,并不是像winform那种上手极快的技术。但现在NetBeans成熟的GUI设计器,已经可以让初学者接受了。加之Swing的设计优势,深入之后会日渐显现。
49 楼 lgx522 2008-12-19  
wjs0702cn 写道
"惊喜在于经过多年的等待和失望,Swing居然真正快了起来,启动速度几乎提高了一倍以上。"
到底是Java快了,还是CPU快了?


同一台机器,先装update10以前的版本,试一试,再换成update11,对比一下。
48 楼 fight_bird 2008-12-19  
Flex现在的开发效率是Swing、JFX没法比的,虽说ActionScript确实是比较丑陋,也不够成熟,在动态和静态语言的融合上还很生硬,语法上也不敢恭维,但足以高效设计企业级应用的客户端。

其实在8年前jdk1.2的时候,Oracle就已经有基于Applet的RIA应用:直接将Oracle D2k开发的C/S应用直接转化为基于Applet的RIA,开发者无需写任何Java代码,速度还是相当的快,用户的体验只是比C/S下稍慢而已,完全可以接受,当时对我个人的冲击绝对是震撼!这项技术Oracle现在应该还在用。

Swing的短肋不仅是技术层面,更多的是由于其开发成本,在C/S的时代是绝对的劣势,在RIA时代还是没有优势。
47 楼 softcat 2008-12-19  
魔兽精神 写道
terranhao 写道
魔兽精神 写道
swing 的 jtable 实在是不好用...
不知道有没有不改原码的解决方案?

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


拆分合并单元格,一搞我就觉得烦.

jdk 1.6 已经对JTable做了改进,但是使用灵活性和复杂性,有时候是矛盾的,呵呵!
46 楼 greencoffee 2008-12-19  
喜欢swing,但不知道去哪用

相关推荐

Global site tag (gtag.js) - Google Analytics