论坛首页 Java企业应用论坛

Swing为什么不受重视

浏览 146365 次
该帖已经被评为良好帖
作者 正文
   发表时间:2009-04-28   最后修改:2009-04-28
yangke250 写道
当你深入了解swing以后,才知道里面的代码和思想是如此的优美。sun在里面肯定是花费了大把的功夫.你可以通过swing做任何事情。 当你对一件事情一知半解的话就不要乱说.

“可以做”和“容易做到”是不同的。
你可以通过汇编做任何事情,但是不容易。
举些优美的例子看看? 比其它 GUI 工具好在哪? 不怕不识货,就怕货比货。
0 请登录后投票
   发表时间:2009-04-28  
shiren1118 写道

你拿javaFx和swing比,那我不拿groovy吗?

其实只是书写方式不一样,你说呢?底层不还是Swing吗?

你的意思是…… 你在拿 groovy 和 swing 比?

再扩大开去,底层不还是 C 吗? 它们的能力是一样的, 区别就在于写法, 不比写法比什么?
0 请登录后投票
   发表时间:2009-04-28   最后修改:2009-04-28
swing还是有问题的,jedit用的是swing,它的输入法就有问题。
用中文的话,它的inputmethod窗口不跟光标在一起。
于是,你输入中文得看下边的inputmethod窗口,而不是光标所在的地方。
我记得netbeans对输入法的支持也不好,不过好像比jedit要强。
native的就不会有这种问题。
所以,swing绝非完美,sun的力度还是不够!
0 请登录后投票
   发表时间:2009-04-28   最后修改:2009-04-28
Swing并不完美,需要改进和加强的地方很多。而Sun最近把注意力转到JavaFX,从Swing抽调了很多开发力量。问题是:
1、我们做Desktop的需要JavaFX吗?
2、为什么Sun不把注意力集中在Swing上?
3、JavaFX仅仅是Sun对MS、Adobe的应对吗?

看看开发者对Swing改进的呼声吧:http://www.javalobby.org/java/forums/t85782.html?start=0

引用

I'd like the Swing team to take a closer look at the difficulties in building real-world programs with Swing.

One example is threading. I think we all understand why Swing has the EDT and why background threading is important, but in the cases that I've seen, SwingWorker is unmanageable when writing and coordinating a large number of bg-threaded actions. I'd like to see an alternative model, probably based on an event bus, that made working with the EDT in large program easier. Other approaches, like using annotations, might work as well.

I think there should be an explicit understanding that there are fairly common usages of the Swing toolkit, and advanced usages. For example, I often want to make table headers bold, or set the font for all cells in a table, or make all numbers in a table right-aligned and all text left-aligned. I'd like to be able to do this in a single method call, rather than having to poke into contained objects within the table, or adding my own renderer to take care of it.

At the same time, I want access to advanced features, but I feel I'd be willing to pay a cost (in complexity) when I need to do that. Focus on making the kit oriented first of all at simple usages, but making complex stuff possible.

I don't like using untyped maps to set configuration properties, or using integers for enumerated values. A new version which used proper enums would take care of the latter problem.

I think the focus on look-and-feel is more of a distraction than an aid. Following the SwingLabs project, it seems that too often we can't do x, y, or z because it would require implementation in all look-and-feel implementations. There needs to be some way around this.

I'd rather see energy around what Swing should be good at, which is creating new components easily. It should be no problem (say, relatively moderate effort) to create a new mutable button bar as in the new Office release. We should, by this time, have a vast number of high-quality components available for Swing, but it seems that many libraries just have advanced versions of fairly standard components.

I'd like better support for mutable models, for example, I think that the default table model should support copying, moving and inserting rows easily, since I find so many apps (not build with Swing) where this is a useful feature.

Toolkit support for a plugin architecture, an event bus (as above), networked data feeds (for mashups) would all be welcome.

A standard file format (maybe in XML) for delivering Swing apps or component packages/plugins would be great, since one could have a "container" component to which one adds downloadable components at runtime. NetBeans, Eclipse, IDEA and jEdit, for example, allow adding plugins at runtime (sometimes with a restart), but something lightweight, built-in to the toolkit, and based on a standard file format (for packaging and dynamic instantiation) would be welcome.


0 请登录后投票
   发表时间:2009-04-28  
founder 写道
Swing并不完美,需要改进和加强的地方很多。而Sun最近把注意力转到JavaFX,从Swing抽调了很多开发力量。问题是:
1、我们做Desktop的需要JavaFX吗?
2、为什么Sun不把注意力集中在Swing上?
3、JavaFX仅仅是Sun对MS、Adobe的应对吗?


JavaFX 可以做经典 Desktop 的, 拔掉网线就是 Desktop 了。 Silverlight 等同理……
0 请登录后投票
   发表时间:2009-04-28  
EdwardWorld 写道
EdwardWorld 写道
vlinux 写道
swing的所有组建都是画出来的,所以我们可以很方便的进行hack,我局限于仅仅知道Java的UI,所以这点不知道算不算他的优势。

话说回来,在RCP衰败的年代,为什么要坚守这个阵地呢?
BOSS的管理界面都在向WEB迈进了,一个短信发送平台为啥还要坚持呢?
工作流用WEB不也一样可以做么,而且更易于使用和维护,如果你不是为了之前的项目,为什么还要坚持呢?

想起JavaEye之前有个帖子是在说:我们讨论XX技术是否NX的时候,一定要统一下双方的需求范围,否则在这个领域Swing很有用,但是到了另外一个领域却一无是处。我觉得他说得是非常有道理的,所以就你所涉及到的短信发送平台而言,我个人认为用Swing是很不划算的哦


如果我需要调用本地的dll来控制硬件,web能做到么?

如果我需要加载硬件驱动程序,控制传真卡发送传真,web能做到么?
如果我需要从FTP上下载几千个文本文件,然后ETL导入本地数据库,web能做到么?
如果我想通过shell控制Linux服务器,web能做到么?
如果我想定时执行存储过程,web能做到么?这一条可能web能做到,但是如果我需要自动向存储过程传递的参数值是通过读取本地文本文件里的内容,web能做到么?
这些功能,在我目前参与的工作流系统里,都是最基本的功能,如果使用web开发,你能做到么?
最后,如果使用纯web,你连画流程那个界面都实现不了,假如你非要用JavaScript来实现,那么我问你,你的JavaScript代码量比Swing少么?恐怕要比Swing复杂程度多出一个数量级。

B/S 和C/S本来就是各有所长,如果你非要把一切都使用web来代替,能代替得了还说得过去,关键是有些功能你根本就代替不了,最简单的例子就是,你使用web来开发一个IDE试试。




兄弟,看了你很多带有问号的帖子,大家上论坛讨论,经常用反问句,别人会觉得不舒服的,
你支持netbeans, swing,这些是你的信仰和习惯;
工作流系统很多兄弟都在做,很多产品都非常成熟,我见过的工作流纯WEB的产品,非常棒,从建模到应用,良好的服务器端解决方案;
不知道你理解的WEB是什么样的概念,可以这么说,我经历的项目别说你上面说的这些问题了,比这更复杂的问题都完全没问题,程序也一样跑的好好的;
桌面应用有它固有的优点,这些优点有很多是WEB所不能拥有的,比如基于HTTP1.0的应用,你要维持连接的状态,显然还是非常困难的,不能拿一个实体的长处和别的实体的缺点去比较;
但是现在程序员的工作大都还是实现公司的商业利益,大规模的应用如果是CS结构的话,一来服务器吃不消,二来升级很困难(如果非要说MS的升级包不是很多吗,那我也没啥好说的,只要一个业务系统能够达到像windows这样的水准,估计程序员用啥都无所谓了);
总体上在现在的企业业务应用里面,一般还是倾向于BS的结构应用,所以JEE大行其道,因为它规范了企业服务器端的应用;
另外,回到桌面应用来看,主流的桌面应用我还没见多少是swing开发的(或许我见识短浅),类似的autocad,adobe,photoshop,office...等耳熟能详的软件好像都是直接基于OS调用级别的产品,而不是后台还跑个JVM去支撑桌面应用;
看看现在的GOOGLE地图,在线office,或许你可以试着看看web的力量;
坚持是好事,但不要失于执着,也不要总是责问论坛的兄弟,大家礼貌待人,和睦相处嘛:)
1 请登录后投票
   发表时间:2009-04-29  
selarey 写道
个人感觉如果没有一定的时间和精力去深入研究的话,桌面应用还是用Winform来做比较快捷简单。主要是现在中小型的企业都在用。


我承认在Windows中使用微软的WinForms开发速度快而且非常专业,但是提到跨平台的话,还是java swing。现在的语言有很多都在说自己跨平台,但是真正实现跨平台的还是java.
0 请登录后投票
   发表时间:2009-04-29  
vearn 写道
我也是swing的fans,公司的电信级网管系统的GUI也是基于swing构建的。但是如果做下一个产品,我不会选择swing

您的文章引发了这么多的回帖,说明广大开发人员对swing还是关心的,对java desktop技术是有话要说的(包括swt)。当然有许多兄弟出于对swing的误解(皮肤难看、耗时操作导致界面无响应),没有深入到swing就放弃了,我想这更多的是SUN的责任。

首先,swing的门槛太高了,使一大批人知难而退。swing只是一个工具包,但开发人员提供的是企业级产品。JavaSE标准包中,docking window system没有(您用的是infonode吧),状态栏没有,bean binding没有,vadilation没有,许多常用组件也没有。您可能会说:3rd party lib,很好很强大,但文档都是E文的,英语不好的被挡在门外了。

其次,个人觉得java不适合描述UI。看看netbeans生成的GroupLayout代码,您回帖中说“但是Netbeans生成的Swing代码很规范,没有一点冗余,说Netbeans生成的代码冗余的人,多半是写不出来规范的Swing的”,我不敢苟同,相比jgoodie FormLayout、javafx、groovy的声明式描述,GroupLayout的java API式描述不但冗余,而且不直观难以理解。

最后,我对SUN深深地失望。SUN一直没有很好的利用社区的强大力量,整合资源。他不去搞JSR295、JSR296以降低swing的门槛,而是在2007年高调宣布了javafx,诚然javafx是很好,但它不适合我。公司需要的是企业级应用,而不是渐入渐出、反射、溶解等等effect。

swing是很优秀的UI技术,从它身上我学到了很多。。。

EdwardWorld 写道
勇敢的心 写道
SWING败在架构,出现ECLIPSE那么好的集成开发平台,只能是既生瑜,何生亮了

我恰恰觉得Swing最大的有点是架构,架构清晰而且严密。
Eclipse我06年-07年用过,并没有觉得他是多么好的集成开发平台,Netbeans有Visual Library图形化库,有Netbeans platform 开发框架平台,而且这些都是由现在sun(现在的Oracle)这样的大公司来维护更新,解决方案比Eclipse好。

如果你用过MFC 开发,那么你会觉得Swing的架构不是一般的清晰。
现在QT的UI库,我感觉就是在模仿Swing,为什么QT不模仿SWT呢?


同行啊, 与我心有77焉
swing成为非主流,都是sun惹的祸, 据说还有什么金发美女在里面乱搞.
netbeans现在倒是提供了绑定和winform风格的布局,都不是swing缺省的,说明sun自己都觉得swing那玩意拿不出手. 从成熟度来看, netbeans比vs还差原了. 很难cover大多数商业应用.

另外, swing如果想有所超越, 一定要吸收web UI的一些优点.
0 请登录后投票
   发表时间:2009-04-29  
scott.s 写道


兄弟,看了你很多带有问号的帖子,大家上论坛讨论,经常用反问句,别人会觉得不舒服的,
你支持netbeans, swing,这些是你的信仰和习惯;
工作流系统很多兄弟都在做,很多产品都非常成熟,我见过的工作流纯WEB的产品,非常棒,从建模到应用,良好的服务器端解决方案;
不知道你理解的WEB是什么样的概念,可以这么说,我经历的项目别说你上面说的这些问题了,比这更复杂的问题都完全没问题,程序也一样跑的好好的;
桌面应用有它固有的优点,这些优点有很多是WEB所不能拥有的,比如基于HTTP1.0的应用,你要维持连接的状态,显然还是非常困难的,不能拿一个实体的长处和别的实体的缺点去比较;
但是现在程序员的工作大都还是实现公司的商业利益,大规模的应用如果是CS结构的话,一来服务器吃不消,二来升级很困难(如果非要说MS的升级包不是很多吗,那我也没啥好说的,只要一个业务系统能够达到像windows这样的水准,估计程序员用啥都无所谓了);
总体上在现在的企业业务应用里面,一般还是倾向于BS的结构应用,所以JEE大行其道,因为它规范了企业服务器端的应用;
另外,回到桌面应用来看,主流的桌面应用我还没见多少是swing开发的(或许我见识短浅),类似的autocad,adobe,photoshop,office...等耳熟能详的软件好像都是直接基于OS调用级别的产品,而不是后台还跑个JVM去支撑桌面应用;
看看现在的GOOGLE地图,在线office,或许你可以试着看看web的力量;
坚持是好事,但不要失于执着,也不要总是责问论坛的兄弟,大家礼貌待人,和睦相处嘛:)


安装升级问题有个变通方法, java web start, 有点像.net的解决方案, 比较好用. 企业应用jre可以放到内网下载, 开销不大.
另外, 主流应用和企业应用不同, 客户体验相对不是特别重要.

swing在做图/消息处理方面还是要强于web, 不管是效率还是开发难度上. 用jms会方便很多.
0 请登录后投票
   发表时间:2009-04-29  
楼主也不要过分吹swing啦, 必应还是有很多限制的. 比如你的界面里面都是swing的一揽子解决方案吗? 到处找控件/look&feel/layoutve, 没有强大的IDE, 没有验证/绑定等等, 这些都是swing自身的硬伤, 看看winform就知道为啥很多企业选择winform+java 来做c/s结构.

人都是逼出来的啊~~

每种技术都有它的适用范围, 该用啥用啥.

swing交付的是毛坯房, 想住的舒服, 自己装修.
0 请登录后投票
论坛首页 Java企业应用版

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