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

借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的乐趣。
分享到:
评论
85 楼 windywany 2008-12-30  
由JAVA转作PHP,再写JAVA,还是那么亲切!
84 楼 hoorace 2008-12-27  
现在还是感觉flex的组件不够成熟,而且个人速度也不是很快,它解决的问题只是jre过大而已,正在快的还是用javascript写出的网页。所以我个人认为google的选择是对的。
83 楼 efanstudio 2008-12-27  
其实swing是很优秀的架构了,只不过刚开始上手比较难一点(以前的版本+开发工具),所以导致很多人望而生畏而已。另外严重同意楼主对applet的看法,真是可惜啊,这么好的东西,居然被那个语法莫名其妙的JavaScript打得几乎没有立足之地了(针对国内而言)……
82 楼 shiren1118 2008-12-27  
希望大家看看groovy的swingbuilder

真的很简单
81 楼 java.lang.Object 2008-12-27  
我也很喜欢SWING,看到楼主的文章很高兴,哈哈,希望中国希望SWING的人慢慢多起来
80 楼 creasure 2008-12-26  
rehte真是大牛
79 楼 steeven 2008-12-26  
偶也玩swing很久了,几个龌龊的地方:
1. 布局,自带的几个丑陋家伙很难让人上手。NB最后也另外自带布局。
2. 颜色,灰不拉几的一辈子了,谁看了都觉得土
3. java.awt, javax.swing然人迷糊,感觉就是个阑尾
4. applet,本来也不难,如果能直接运行并且不需要签名就更爽了。
5. 另外,jre庞大的身躯也让人望而生畏,如果所有lib能像ubuntu的apt一样根据需要下载会更好。

sun一直在想各种idea, 但是总不提供一个好用的基本实现。你能想想在医院看病,但是要到别的地方手术吗?
78 楼 ruilei05 2008-12-26  
java6后 的确让Swing强大了不少。支持Swing
77 楼 aotori 2008-12-24  
一直都很喜欢Swing,但很少有用到,不知道进程中增加的那个jqs能不真的可以带来起色呢?
76 楼 icewubin 2008-12-24  
meatloaf 写道
Applet是个大笑话,我一直很奇怪,以SUN的技术能力,竟然就是做不出一个和FLASH一样稳定的浏览器插件。


我觉得你才是笑话,北美有不少Applet做的在线3D游戏,在线人数几十万,都能盈利。Flash试试看。
75 楼 javagui 2008-12-24  
rainsilence 写道
......再多跑几年可能都比不上flex的图形运算速度。

Java2D性能要远超Flash。这是有人宁愿用Applet不用Flex的一个主要原因
74 楼 meatloaf 2008-12-23  
Applet是个大笑话,我一直很奇怪,以SUN的技术能力,竟然就是做不出一个和FLASH一样稳定的浏览器插件。

06年的时候,部门需要做一个WEB上的流程图可视化工具,选型的时候咨询我,我选择了Applet,很多小朋友反对,但我坚持了,后来那个后悔啊。没办法,后来我用dojo的gfx把这个流程图形引擎重写了,20000多行js代码啊,没什么好说的,效果好多了。

Applet加载那个慢,问题那个多,老是有用户反应无法使用系统。

Swing是非常好的技术,Javafx更棒,不过我觉得Sun如果还不彻底改进Applet的话,Applet将是Javafx推广最大的障碍。

另外,单纯考虑技术的话,希望大家不要纠缠Applet了,就当他不存在。我觉得WebStart是非常不错的技术。

WebStart目前也是Swing在企业应用中的主流,Web Start搭配JavaFx,一点也不慢的。

另外,Swing是非常棒的UI框架,那就是一个UI框架模式的集中营,非常之经典。VCL相对于MFC是一个大进步,Swing相对于VCL又是一个大进步。

以我从业的经历看,当年很多用vb/pb/delphi开发的桌面企业应用,很多份额都是swing的了,不过swing桌面企业应用的寿命太短暂,很快就被B/S应用替代了。swing桌面企业应用在02~03年的时候,一度在国内挺火的,可惜就只有一年多的时间。
73 楼 centgo 2008-12-23  
java的特长在于服务端,flex特长在于桌面。这有点像linux和windows,当然linux也想在桌面上争得一席之地,确实也有了一席之地,现实是桌面系统的霸主是windows。虽然现在还不敢说flex就是做桌面开发的霸主,但他有那个潜质,并且已经有半个屁股靠近了霸主地位。
All in java需要java有那个银弹的能力,至少我认为他在桌面开发上还是有所欠缺。
个人认为java与flex结合开发RIA系统最值的推荐。
72 楼 rainsilence 2008-12-22  
我非常理解lz的想法。但是光是运行在没有运行环境的机器上这一点。javafx就落后flex不止一点
我装了最新的jdk,运行官方网站上的demo,先是等了好久,我在日本,网速是adsl的10倍。然后问我要不要装最新的jre...
罢了,我装好了,看了demo,关闭页面,再开同样的页面,他又报要不要装jre.......
而且每开一个新页面都会报:***要运行吗?不要烦死了阿。而且还有一个demo叫applet的回归。就是运行了以后,可以直接从网页里拖动到桌面。哈哈,真是一大败笔阿。安全性怎么办?本来是限制在网页里的东西,现在能够运行在桌面上了。本来applet的砂箱机制就是可以破解的。现在。。。
而且这个javafx的速度真是。。。。再多跑几年可能都比不上flex的图形运算速度。
71 楼 raojl 2008-12-22  
sun一直处于搞JB科研状态,走中国社会主义经济路线迟早得吃亏!
70 楼 cyberblue 2008-12-22  
我用Core2 Duo 3.0,没感觉Swing慢。
69 楼 laiseeme 2008-12-22  
桌面开发什么时候出头了  可能还能时兴一阵子
68 楼 cddcdd 2008-12-22  
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技术再一次的机会,绝对会让你惊喜的。



就你啊,被我找到了。离开sun之后干嘛去了呢兄弟?
嘿嘿。这里JavaEye以前的域名是Hibernate.cn,所以这里讨论Swing是很少的
以前经常上你的Blog看看,但是现在不做Swing这些东西了。有空聊
67 楼 sunnymoon 2008-12-22  
lgx522 写道
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界貌似低迷沉闷的同道们鼓鼓气。


有一点很同意楼主,就是Java的成熟和稳定,这是无可厚非的。

有一点我不同意,就是Flash没有集成进Windows,也很流行。
在以前Sun没有Flash这样的技术,或是说没有能和Flash相竞争的技术。Applet只是RIA的雏形。
Sun当今推出了JavaFX平台,官方的解释说是对RIA的一种回应。很明显,主要针对的Flash,当然也包括MS。
Flash的运行环境是多少?以前的Java运行时环境是多少? Java以前可以像Flash那样做吗?很明显,不能!
当然Sun做出了很多的努力改变了以前的状态,特别是jre6 upda10

运行速度Sun一直在努力,都论在服务器端还是客户端都有了长足的进步。
速度不是阻止应用普及的最大阻力,Linux市场也没有Windows Vista多。Vista is very poor是被公认的。

66 楼 sunnymoon 2008-12-22  
allenny 写道
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上运行。


你说的是MS以前的J#。后来被Sun告了
我说的是MS的Window支持不支持Java是指其的运行环境。请了解。

相关推荐

Global site tag (gtag.js) - Google Analytics