论坛首页 Java企业应用论坛

谁说Swing不适合做End Users Desktop应用来着?

浏览 51662 次
该帖已经被评为隐藏帖
作者 正文
   发表时间:2010-09-02   最后修改:2010-09-15

(楼主添加于:2010-09-14

     没有想到过这个帖子会带来这么多的讨论、异议、无休止的争吵。还有更多“喜欢看打仗”的喷友们。

     这也让我见识到了一些事情,不记得是谁说过:Wen Ge 过去那么多年,可现在人们的思想比那个时候还可怕。)

 

很多人批评Swing做的东西很丑陋,并且需要需要jre才能运行,因此Swing不适合做桌面应用了!

 

在人们都在疯狂的崇拜web,除了生孩子之外所有的事情都放到了web上的时候,有这么一部分人,他们依旧对桌面应用情有独钟。我即使这么一个人。

 

Swing怎么玩?一个Frame,几个常用的组件,几个皮肤?不,这远远不是Swing的全部。如果你搞通了什么是MVC,你就会明白Swing的设计其实,是最经典的也是非常聪明的设计。当然,这里就不需要罗嗦这些了。有兴趣的童鞋们,除了看一些Swing布局和组件相关的书籍之外,强烈推荐<Swing Hacks>。在这里可以找到它相关的内容:http://oreilly.com/catalog/9780596009076/。

 

除此之外,今天来这里当然是想说说自己的东东,也算是一个广告吧。

 

快三个月之前老板给了一个任务:写文档并与其他同事分享。考虑过在公司内部搭建文档服务器,但是被抛弃了。不是有Google Docs可以使用吗?而且还支持在线编辑文档,能够与其他朋友分享维护,而且Google Docs还提供了版本控制。于是乎,便跑去Google Docs了。但是每次需要上传或者下载,或者分享文档的时候都需要打开浏览器,灰常的不方便。因此就满世界去找Google Docs的桌面版(也有一开始讲的那个原因在里面)。黄天不负苦心人,确实找到了一个很好用的软件,叫做Memeo Connect。但是那玩意儿竟然需要购买才可以使用。看看界面,也没什么了不起的。既然我用不起你的,我自己写一个还不行么!于是乎,经过两个月多一点的时间,就有了我这个100% Swing手写代码软件:iGoSyncDocs .(当当当当,善良登场。)

 

在Sourceforge上的位置:http://igosyncdocs.sourceforge.net/


在Google Code上的位置:http://code.google.com/p/igosyncdocs/

 

有兴趣的童鞋可以去看看,我把它给开源了,并写了一封email给Memeo Connect告诉他们,我的免费请使用我的。哈哈哈。

 

谈谈这个过程当中的一些收获。

 

Swing很完美。毫无置疑的是,在Swing中写代码你完全可以按照MVC的原则去看待所有的东西。组件本身、组件中的数据、数据的渲染,这三个部分被完完整整的分离了。数据来自于Model而需要显示不同的效果就去找相应的Renderer,实在是太方便啦。在这个过程当中才能体会到MVC的分离原则,是多么的伟大。

 

在界面方面,选择了大名鼎鼎的QuaquaLookAndFeel,因为我一直觉得防Mac的那个皮肤,确实让我看着很舒服。后来软件写成了之后有一个日本的网友在Mac上跑,抓了几张图出来给我看到,那玩意儿真的不错,嘿。

 

数据完全来自于Google Docs Service。里面使用了Google Document List API的一些jar,因为自己再去底层封装那些atom和feed实在太麻烦了,而且里面还要牵扯到共享文档,就是ACL的那些破东西,很是烦躁。因为一开始的时候就找到了Google已经封装好的东西直接拿来用,感觉功能很强大。但是,文档就差的要死。那注释写的估计写完了自己也没看懂是什么意思。哎。

 

得到了GoogleDocsService的数据之后,在本地显示。并且提供了上传、下载各种格式、和好友分享、并且直接点击文档即可打开浏览器访问相应的文档内容等功能。基本上,这些功能都是模仿那个收费的软件。

 

但也有几个头疼的地方:

1、写出来的代码完全硬代码,可维护性太差。如果需要更换界面的布局或者界面内容,需要重写一个类了。如果能够换成android那种方式多好啊。页面布局使用xml文件,需要修改的时候,只需要修改xml文件内容就好了。最近正在考虑这个事情,去下android的源代码看看这部分内容,自己写一个Swing的框架出来。有兴趣的童鞋可以一起来玩。

2、如何能够真正做到End User程序。也就是说,如果用户电脑中没有安装jre你也需要运行。如果要实现这功能只能把程序和jre一起打包才可以。程序本身只有4M左右,一个jre有80M,总不至于这样做吧?因此,就想到了给jre减肥。这几天正在想办法使用GreenJVM打包。GreenJVM是一个国产的很牛X的东东,才开始玩过段时间看看如何吧。除此之外,如果大家还有其他开源的或者免费的能够实现类似功能的东西,多多推荐。

 

最后,来一张特写给它:

 

iGoSyncDocs

 

Swing其实是可以很美的。哈哈哈哈哈。

 

 

   发表时间:2010-09-02  
JE近来掀起了一阵Swing的寒流
0 请登录后投票
   发表时间:2010-09-02  
这种界面就不要出来现了,其它平台几分钟就做出来的东西
0 请登录后投票
   发表时间:2010-09-02  
鱼言风语 写道
这种界面就不要出来现了,其它平台几分钟就做出来的东西


楼主主要说的不是界面问题,而是end users desktop问题,请你搞清楚后再说话。
0 请登录后投票
   发表时间:2010-09-02  
gml520 写道
鱼言风语 写道
这种界面就不要出来现了,其它平台几分钟就做出来的东西


楼主主要说的不是界面问题,而是end users desktop问题,请你搞清楚后再说话。



你自己先看看lz在主贴里说了几个“美”字,你中文没学好吗?
0 请登录后投票
   发表时间:2010-09-02  
鱼言风语 写道
这种界面就不要出来现了,其它平台几分钟就做出来的东西


其他平台几分钟做出来,没错。
现在的问题是,我要用Swing去做,为啥?Java跨平台,其他“几分钟”就能做出来的平台,可以做到吗?
0 请登录后投票
   发表时间:2010-09-02  
BarryWei 写道
鱼言风语 写道
这种界面就不要出来现了,其它平台几分钟就做出来的东西


其他平台几分钟做出来,没错。
现在的问题是,我要用Swing去做,为啥?Java跨平台,其他“几分钟”就能做出来的平台,可以做到吗?



可以啊,mono
0 请登录后投票
   发表时间:2010-09-02  
经过两个月多一点的时间

---- 这就是为什么大家烦swing的原因
0 请登录后投票
   发表时间:2010-09-02  
鱼言风语 写道
BarryWei 写道
鱼言风语 写道
这种界面就不要出来现了,其它平台几分钟就做出来的东西


其他平台几分钟做出来,没错。
现在的问题是,我要用Swing去做,为啥?Java跨平台,其他“几分钟”就能做出来的平台,可以做到吗?



可以啊,mono


说道Mono我就要笑了。那玩意儿根本不是Microsoft自家的产物,而且第三方软件公司的。
虽然广告上号称如何如何的好,实际用起来那简直是受罪。
我不认为Mono具有可比性。或者建议阁下做一个关于Mono的测试吧,我们也可以看清楚了。
0 请登录后投票
   发表时间:2010-09-02  
BarryWei 写道
鱼言风语 写道
这种界面就不要出来现了,其它平台几分钟就做出来的东西


其他平台几分钟做出来,没错。
现在的问题是,我要用Swing去做,为啥?Java跨平台,其他“几分钟”就能做出来的平台,可以做到吗?



mono, QT, GTK,信手哪一个都可以“跨”平台。
0 请登录后投票
论坛首页 Java企业应用版

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