论坛首页 Java企业应用论坛

UI技术大总结

浏览 22411 次
精华帖 (1) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-03-05  
 

这几天看了好多用户界面的资料,小结一下。主要比较Java 的各种UI技术。

起因是我要用Java 做个UI 出来,虽然以前捣鼓过swing ,但好久不用了,已经生疏了。不知道Java UI 技术现在发展到何种程度了。于是便用google 对常去的站点狂搜一通。经历了痛苦的厚此薄彼的选择后于是便有了此文。

老式的UI我用过的有MFC wxWidgets,现在用过Flex WPF后,对照感太强烈了,便感叹当初学MFC TMD不值了,浪费了那么宝贵的时间结果却一下被微软给淘汰了,而且还留下了一大堆坏的思维习惯。比如MFC 的事件处理是消息-映射模型,现在的事件处理基本上都是类似事件监听模型了,SWT, Swing, Flex, WPF,JSF的事件处理机制都很相似,都是先设计好界面,然后在代码里面写上事件监听器。

目前根据Vista WPF 来看,UI 的趋势是将来界面一定都是以标记语言来描述的,而且桌面应用和Web应用 将统一起来,不再有C/SB/S之分,虽然这在java 界看来遥遥无期,不过Vista 貌似接近了。SF 上也有xml 描述java 界面的项目。

当然,其实用不用xml 描述界面无所谓,重要的是要有好的UI设计器。比如swing 就有netbeans ,在java 中应该算是最好的界面设计器了,而SWT 中最好是SWT Designer 却收费还不好用,自己长得也不怎么样设计的界面也丑,跟Matisse 有天壤之别。现在XAML 就有express blend ,达到了既是XML描述又有好的设计器(虽然它还没有和VS 整合),堪称完美,微软果然是可怕的集团军。

Java 桌面现在声名最响的恐怕就是eclipse SWT 了,各个技术论坛都在谈SWTRCP,不过也有声音说swing 现在性能超过了SWT,而且有文章说Swing 现在已经是GUI 主流工具了,看Swing is dominant GUI tool kit ,而在我看来国内现在大家似乎都在用SWT eclipse rcp,有了蓝色巨人的推广,跟着eclipse 没错。传闻Swing 既丑又慢,而SWT直接原生的操作系统控件, 跟本地操作系统外观一致。看看eclipse 就知道SWT 确实要漂亮,虽然netbeans 5.5 也很漂亮,但还是得承认比不上eclipse。不过有大牛说Swing 丑是因为SUN把它做得默认外观不好,真正的好的UI 还是要自己设计的,你要是真正设计起来其实SWT Swing 没有丑美之分,关键在人的设计。嗯,这话我赞同。 目前还有个难下决断的是如果纯从技术上讲eclipse 的核心和netbeans的核心到底谁的架构好,网上很少有关于eclipse netbeans 核心的资料,eclipse 是基于OSGI标准的,netbeans是基于J2SEMETA-INF/services的,估计二者都一样吧,都是插件体系结构。

综上所述,Java桌面现在的情况是:SWT 默认比Swing 漂亮,不过这在人的设计,平手;SWT没有好的UI 设计器,SwingnetbeansSwing胜出;SWT跨平台性比Swing差,但可以利用操作系统的特性,可能比Swing快一点,Swing绝对WORA,平手; eclipse 已经牢牢占领了市场,SWT RCP的市场需求比Swingnetbeans RCP 要大,这是致命的,SWT胜一大截; SWT 架构不如Swing 优美,其中还有一点类似MFC 消息循环,令人反感,而Swing 则是”MVC 的典范,代码优雅漂亮,平手。

目前eclipse RCP嵌入式版本,e RCP, 对应的,就有嵌入式版本的SWT, eSWT,netbeans似乎还没有嵌入式版本,但是在一篇文章看到预言netbeans 将分成三个版本,其中就包含一个嵌入式版本。

web UIjava 的框架可太多了,我只看中两个:StrutsJSFStruts现在已经成功和webwork整合,不同往日了,而JSF JSR标准,很多厂商都直接支持这两个框架,还真分不出优劣。不过看了flex做的网站我真的觉得这些框架都不理想,界面既不是用XML描述的还做不出什么好效果,即使做出来了也很费劲。国内还有一家公司在做web 版的SWTsmartSWT,想法不错但也有很多无法容忍的弊端。SF上也有SwingS SwingWeb,是用Swing 在服务端描述界面,向客户端浏览器输出HTML界面,但都是小东西,很少人关注。唉,都说J2EE成功,但在Web UI 上怎么就难得有一个让人称心的工具呢?现在有一种思路是用Flex 做客户端,后端用J2EE,我实在不敢恭维,用不同的技术体系做一件事,增加学习成本,而且ActionScript的脚本风格实在不合我的胃口。我更倾向与一个纯java 的解决方案。看来web 界面上java 没什么出彩的东西。

Flex XML 描述界面,后台用actionscript3.0 写后台逻辑,能够实现界面和逻辑完全分离。Flash相信大家都已经认同它的效果吧,Flex 就可以做出和Flash同样炫的效果,要多好看有多好看。Flex Flex Builder 工具,开发起来很方便,而且即将出来的Apollo也很令人期待,所以看来Flex 不经要占领Web 还要占领桌面,很有希望。唯一我不舒服的是ActionSript 3.0 的语法,总是像在写脚本,而不是编程,让人不放心,也许它的语法太灵活我还没有熟练驾驭吧。

WPF Flex 一样,也是用XML描述界面,目前 还只能用C#写后台逻辑,不过WPF有重量级的.net 3.0 部署在客户端,如果Vista 真的普及了,Flash 的末日就到了(估计还可以在手机上占据一席之地)。不过就目前情况看,flash player 远比.net 的普及率高,加上flash 的轻量级和跨平台性,Flex 是目前最实际的RIA方案。

    不管怎样,将来UI 都将用XML 描述,B/S C/S统一,目前.net 快要做到了,Apollo也在努力,唯独还没见Java 有对应的技术,让我们继续期待吧。

    原文链接:http://hi.baidu.com/soulmachine/blog/item/dc04c139c2acc9f33b87cee1.html,欢迎大家给我指点。

3月六号增补:

   swt 真的比swing 快吗?看看Swing为什么能比SWT快?Swing和SWT性能测试比较

       eclipse 用户确实比netbeans 多,那为什么swt 用的人却比swing 少呢?看Swing is dominant GUI tool kit ? SWT 架构不如Swing 是事实,易用性却比Swing 好,上手快,这是我的体验,而且和本地操作系统外观一致,省了我不少功夫。不过有观点说SWT bug 无数,比swing 晚7 年,不成熟。看这篇文章:SWT已经是日薄西山了

      用java 开发大型软件,到底改用  eclipse rcp 还是netbeans rcp?javaeye 上有人说由于eclipse 有GEF 和 EMF ,所以如果开发图形建模工具,用eclipse ,如果开发普通桌面程序,用swing 和netbeas rcp。看来我是要开发普通的,该用netbeans 喽?但是eclipse 有很多开源库可以用,资源很丰富,用netbeans rcp 似乎势单力薄.....

      目前我只用过swing 和JSF,RCP 正打算学,听说做大软件它能省不少功夫。目前eclipse 市场比netbeans 要大,似乎大家学RCP 也都是在eclipse 这边,而我已经习惯了netbeans 和swing ,所以对自己没有信心,想多学点东西,于是现在在观望着eclipse 的东西。希望大家继续给于指点。微软阵营真是太整齐了,最理想的是等vista 普及了,xaml 同时搞定web 和桌面,目前可以选择asp.net +asp.net ajax,wpf/e 将来可以可以作为asp.net 的辅助。将来 WPF 和asp.net + asp.net ajax +wpf/e同时存在。嗯,选择不是很多,没有java 这么痛苦啊


   发表时间:2007-03-05  
你可以看看GWT。
0 请登录后投票
   发表时间:2007-03-06  
GWT的客户端代码限制好多,控件也不是太多,比如可编辑的表格...
做一些ERP应用还是比较困难的..
0 请登录后投票
   发表时间:2007-03-06  
我们用html+js控件来做界面的,html主要用来布局,js控件有表单控件、可编辑表格控件、分页打印控件和目录结构控件等。事件响应当然也是由js实现的。一年的时间我们已经用这个作了4个行业版本的进销存了。
0 请登录后投票
   发表时间:2007-03-06  
jvincent 写道
GWT的客户端代码限制好多,控件也不是太多,比如可编辑的表格...
做一些ERP应用还是比较困难的..


GWT灵活性好像又太小了点

像SWT可弄个RCP, swing也在弄, RSP不知前景怎样?

Flex没用过,但用过与之类似的Laszlo,界面是没得说,但文件大,组件少,tricky很多...

奇怪的是JSF这么多大款在捧,但就是不能深入人心. 不知web bean能否改善之.
0 请登录后投票
   发表时间:2007-03-06  
to robbin:
GWT  是做web 界面的,能不能用来做桌面界面?似乎不能吧,它只是把java 代码翻译为js,我了解得不深。我写这篇文章是是希望出现java 界中类似WPF  的东西,xml 描述,web 和 桌面融合.....

to hexiaodong:
你们太强了!我暴不喜欢JS

to shaucle:
swt 的RCP  是很不错,又有EMF,GEF及其他库,跟着eclipse 资源丰富,可是swt 架构不如swing,而且据说swing 现在速度跟上了swt ,不知netbeans 有没有efm,gef 之类的东东,有的话我立马投奔netbeans 的RCP...
0 请登录后投票
   发表时间:2007-03-06  
想起来Spring也在搞RCP(除了eclipse RCP, Netbeans platform)

Command/Event Framework, Data Binding, Validation Framework, View Management, e.t.c
这些东东都很不错,不想说投奔who or who,许多思想都是很有价值的.而且在各厂商和各产品之间也在相互借鉴.
两(多)种类似的技术一起学有很多好处,而且通常还是必要的.


0 请登录后投票
   发表时间:2007-03-06  
Red Hat, Exadel partner around open source tools for JBoss
http://www.theserverside.com/news/thread.tss?thread_id=44506


seems Red Hat/JBoss has a big ambition on that too.

think about the integration environment of Ajax4JSF + RichFaces + Seam.


ps: there are a lot of comments about JSF vs GWT (recommended)
0 请登录后投票
   发表时间:2007-03-06  
Java 的F3非常棒,很有前途!
http://blogs.sun.com/chrisoliver/entry/f3
0 请登录后投票
   发表时间:2007-03-06  
我天天去chrisoliver 看他的demo ,可惜不能亲手一试啊。chrisoliver 曾说2007 年2 月会放出来,可是现在还不见影儿
0 请登录后投票
论坛首页 Java企业应用版

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