`
EdwardWorld
  • 浏览: 28372 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Swing为什么不受重视

阅读更多

我想在JavaEye发表一些Swing的技术文章,都不知道发布到哪个板里去,JavaEye好像完全无视Java GUI的存在,连一个专门的板块都没有。

我觉得Swing还是非常值得学习和应用的,比如我现在的工作,就是做工作流系统,GUI部分就是使用Swing做的。
 
国外Swing应用很广泛,NetBeans是使用Swing做的,Oracle9i的管理平台应该也是基于Swing的。

Java不只是用来做web的,Java的GUI技术也很成熟,非常值得提倡和应用,一提到Java GUI,大家普遍感觉就是慢,是的,比起C++的QT之类的GUI技术,Java是慢了,但是如果想采用跨平台的GUI界面,其实我们可以选择的并不多,QT开放协议刚刚有所放开,SWT跨平台性,事实证明并不理想,所以除了Swing,如果想做跨平台GUI,还真没多少可选择的方案,不过最重要的是,Swing并不像你想象的那么不堪,Swing其实也可以做出很复杂的界面。
所以建议JavaEye开一个Java GUI的板块,以供我们这些做Java Desktop软件的人来参与到JavaEye之中。

纠错:我在跟帖中说QT编写的软件release版体积近百兆,这么表述是错误的,因为我把调试的QtCored4.dll(17.8兆)和QtGuid4.dll(64.3兆)也计算在内了,这两个动态链接库不是必须的,特此纠正,感谢各位朋友的热烈讨论。

 

  • 大小: 549.5 KB
分享到:
评论
83 楼 insiku 2009-04-26  
另外 QT的协议 是不是不能用于商业用途?
否则要收费?
82 楼 insiku 2009-04-26  
swing输在缺少一本权威的教材
MFC那么搓的设计 都弄本深入浅出MFC来 结果就是所有的缺点不是MFC的错 而是你不懂MFC
swing就输在这里 没有权威教程 而java又低门槛 结果让一帮根本就不应该入门的人瞎写 最后就变成所有的缺点都是swing的 刚好让SWT占了便宜

Swing已经错过了天时,消费型jre又一直没出.
跟SUN一样,不是败在技术,而是败在宣传.
81 楼 shiren1118 2009-04-26  
murainwood 写道
jjcang 写道
勇敢的心 写道
SWING败在架构,出现ECLIPSE那么好的集成开发平台,只能是既生瑜,何生亮了


swing再烂,架构绝对是它的最大优点,98年出的东西。里面oo的思想令人赞叹。

还不是从SmallTalk里的OO借鉴过来的?



看好了http://java.sun.com/products/jfc/tsc/articles/architecture/


是借鉴的不假,但是modified,不是简单的copy
80 楼 murainwood 2009-04-26  
jjcang 写道
勇敢的心 写道
SWING败在架构,出现ECLIPSE那么好的集成开发平台,只能是既生瑜,何生亮了


swing再烂,架构绝对是它的最大优点,98年出的东西。里面oo的思想令人赞叹。

还不是从SmallTalk里的OO借鉴过来的?
79 楼 jjcang 2009-04-26  
勇敢的心 写道
SWING败在架构,出现ECLIPSE那么好的集成开发平台,只能是既生瑜,何生亮了


swing再烂,架构绝对是它的最大优点,98年出的东西。里面oo的思想令人赞叹。
78 楼 yangke250 2009-04-26  
如果你只懂点皮毛就另当别论了
77 楼 yangke250 2009-04-26  
第一虽然swing是单线程的,但swing不慢!如果你把应该多线程的事情让一个线程做肯定慢。
第二swing很漂亮。
第三当你要做一个很大的项目,而且可能遇见很多难点的时候,c/s肯定比b/s解决问题的范围要广,你不用担心用c/s有什么解决不了的。
这3点要你理解java很深的情况下。
76 楼 mreay 2009-04-26  
EdwardWorld 写道
night_stalker 写道
就是因为受不了难看缓慢的 Netbeans,才讨厌 Swing 的 ……

我觉得NetBeans的布局最适合,我喜欢中规中矩的布局,Eclipse那种圆角Panel,我觉得过于华而不实,IDE是用来使用的,不是用来观赏的。


现在的Netbeans并不是很慢。
Eclipse也可以设置成直角。
75 楼 rainv 2009-04-26  
Swing的根本原因就是慢.
74 楼 shiren1118 2009-04-26  
Else 写道
Swing是没有什么搞头的了,推出了这么久,被SWT完全抢了风头.

速度,外观都是主观感受,我觉得慢,我觉得难看,你们非要说我的感觉是错的,这合理么?

Swing再怎么弄都会是半死不活的,用户的选择说明了一切.



jdk6以后你用过swing吗?怀疑中·······
73 楼 Else 2009-04-26  
Swing是没有什么搞头的了,推出了这么久,被SWT完全抢了风头.

速度,外观都是主观感受,我觉得慢,我觉得难看,你们非要说我的感觉是错的,这合理么?

Swing再怎么弄都会是半死不活的,用户的选择说明了一切.
72 楼 murainwood 2009-04-26  
永中用Swing是没错,但是你知道永中花了多大的代价在这套UI上?
71 楼 hallenzzz 2009-04-26  
zhuanggl 写道
看看永中office,完全用swing开发的,性能比用c开发的openoffice和wps好多了,swing慢不是借口,大型产品架构是关键,对语言熟悉程度也很重要


别用永中做例子,永中被swing折腾得够呛!
70 楼 xuby 2009-04-26  
EdwardWorld 写道
xuby 写道
EdwardWorld 写道

如果程序不调用Windows的系统类库来渲染窗口,那么即使C++写的程序,也是能感觉到慢的,比如QT使用自己的GUI渲染技术,一个发布版本的QT,加上QT类库的dll,能有上百兆的体积,即使你只写一个Hello World,也是上百兆,因为QT自己的核心库:mingwm10.dll、QtCore4.dll、QtCored4.dll、QtGui4.dll、QtGuid4.dll加起来就有94.7兆。QT启动速度虽然比Java快,但是也是比VC++编写的程序慢的。


上百兆?太夸张了。Release程序为什么要用带d的库?大多数程序只需要QtCore4.dll和QtGui4.dll,加起来 9兆不到。不知道你是否部署过Qt软件,老实说,你这种讲话的态度不够严谨。
没用过Swing,但我可以肯定Qt的速度足够快,也没觉得和vc程序的速度有明显差别,我们写很耗资源的图像处理程序都用他。甚至Qt的Python包装 PyQt 的速度都是可以接受的。


你的只有9MB?
说实话我9兆运行不起来,是我的QT水平不够吧,真的要受教了。
QT的速度我很认可,我说的它慢是和VC++相比,这种描述是否足够清楚?

我使用的版本(4.4.2.0)的文件大小:
2008-09-19  03:38         1,903,616 QtCore4.dll
2008-09-19  03:48         6,853,632 QtGui4.dll

Qt在Windows下完全可以选择使用 Native Widget,不存在渲染速度的问题。
69 楼 zhuanggl 2009-04-26  
看看永中office,完全用swing开发的,性能比用c开发的openoffice和wps好多了,swing慢不是借口,大型产品架构是关键,对语言熟悉程度也很重要
68 楼 kjj 2009-04-26  
勇敢的心 写道
SWING败在架构,出现ECLIPSE那么好的集成开发平台,只能是既生瑜,何生亮了


哈哈,这是我见过的最滑稽的一句话了!!!
67 楼 vearn 2009-04-26  
建议增加一个版叫Java Desktop吧,然后再分几个小版块:swing、swt、javafx、rcp

vlinux 写道
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试试。



恩,原来你还有这些需求。不过你说的这些都是可以做到的,而且也有很多成功的例子。鉴于这里不是讨论技术的帖子我就不一一列举。其实还是老话,脱离实际的需求争论技术优劣是没有意义的。

不过我同意你对JavaEye增开Java UI版块的观点, 虽然SUN公司自己都不打算主推Swing转而支持再封装了一层的JavaFX,我也依然支持Swing。

66 楼 EdwardWorld 2009-04-26  
night_stalker 写道
EdwardWorld 写道

...说实话我9兆运行不起来...

试试这个集合:
Qt3Support4.dll
QtAssistantClient4.dll
QtCore4.dll
QtDesigner4.dll
QtDesignerComponents4.dll
QtGui4.dll
QtNetwork4.dll
QtOpenGL4.dll
QtScript4.dll
QtSql4.dll
QtSvg4.dll
QtTest4.dll
QtXml4.dll

如果没用到相应部分,可以进一步裁剪。
XXXd.dll 系列是 debug 用,发布版不需要。

谢谢分享,下一步按这个清单试试。
65 楼 night_stalker 2009-04-26  
EdwardWorld 写道

...说实话我9兆运行不起来...

试试这个集合:(压缩后不超过 6 M)
Qt3Support4.dll
QtAssistantClient4.dll
QtCore4.dll
QtDesigner4.dll
QtDesignerComponents4.dll
QtGui4.dll
QtNetwork4.dll
QtOpenGL4.dll
QtScript4.dll
QtSql4.dll
QtSvg4.dll
QtTest4.dll
QtXml4.dll

如果没用到相应部分,可以进一步裁剪。
XXXd.dll 系列是 debug 用,发布版不需要。
64 楼 vlinux 2009-04-26  
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试试。



恩,原来你还有这些需求。不过你说的这些都是可以做到的,而且也有很多成功的例子。鉴于这里不是讨论技术的帖子我就不一一列举。其实还是老话,脱离实际的需求争论技术优劣是没有意义的。

不过我同意你对JavaEye增开Java UI版块的观点, 虽然SUN公司自己都不打算主推Swing转而支持再封装了一层的JavaFX,我也依然支持Swing。

相关推荐

    AWT与Swing使用区别

    - **Swing**:Swing组件是轻量级的,它们不依赖于底层操作系统,而是完全由Java实现。这使得Swing组件具有跨平台的一致性,并且提供了更丰富的功能和自定义选项。 2. **组件的扩展性和可定制性** - **AWT**:AWT...

    swing开发课件,学习GUI的课程

    Swing的一个重要特性是轻量级,这意味着它不依赖于操作系统提供的GUI组件,这使得Swing的应用程序具有更好的跨平台兼容性。 Swing提供了模型-视图-控制器(MVC)架构,使得代码更加结构化和可维护。例如,JTable...

    Swing做的人事管理系统

    Swing是轻量级的,因为它不依赖于操作系统提供的UI组件,这使得Swing应用具有跨平台性。在这个人事管理系统中,Swing被用来设计和实现图形用户界面,包括菜单、对话框、表格和其他交互元素。 2. **SQL Server数据库...

    swing登录注册界面设计

    学习和掌握swing登录注册界面设计,对于开发者来说,不仅是学习Java Swing开发基本技能的过程,也是提升软件开发能力和效率的重要途径。通过构建出既实用又美观的界面,开发者可以为用户提供更优质的体验,从而提升...

    Java+Swing+Mysql实现通讯录管理系统

    总的来说,这个“Java+Swing+Mysql实现通讯录管理系统”是一个集成了Java后端处理、Swing图形界面设计和MySQL数据库管理的实用应用,它展示了如何将这些技术有效地结合在一起,为用户提供一个便捷的通讯录管理工具。...

    Java-推箱子.zip

    注释的存在意味着代码的可读性和可维护性得到了重视,这对于后续的修改和优化至关重要。 总的来说,这个"Java-推箱子"项目涵盖了Java GUI编程、游戏逻辑设计、对象建模和事件驱动编程等多个方面的知识。通过学习和...

    计算器(TCalculator)

    【描述】该计算器应用的设计目的是为用户提供一个方便的计算环境,无论是进行日常计算还是解决复杂的数学问题。用户可以通过图形用户界面(GUI)直观地输入数字和选择运算符。作者鼓励用户如果有任何疑问或建议,...

    最新版Substance5

    Substance 是一个流行的 Java Swing 主题库,它允许开发者为他们的 Java 应用程序提供丰富的、自定义的外观和感觉。这款最新版 Substance 5...对于那些重视用户界面设计的开发者来说,Substance 是一个不可或缺的工具。

    xcode-maven-plugin-1.4.1.zip

    开源项目通常会有活跃的社区支持,为开发者提供了丰富的学习和协作机会。 在压缩包"swing-shortcut-manager-master"中,我们可能找到以下内容: 1. 项目的源代码文件:包括`.java`文件,这些是用Java语言编写的源...

    Java简明教程

     本书不仅注重知识传授,而且重视对读者创新能力的培养。 本书讲述Java面向对象编程的思想和方法,揭示Java的技术实现内幕和编译上的不完善之处,这对培养读者勤于思考、勇于实践和敢十创新很有帮助。在编排上采用...

    基于Android的家教预约平台app,结合Android、java和sql的前端和后端应用开发

    随着时代的快速发展,知识更新越来越快,家长们对自己孩子的教育也越来越重视,不希望自己的孩子输在起跑线上,因此,越来越多的家长不断搜寻好的老师给孩子做课外辅导。然而,据调查发现,现有的辅导教育机构招聘的...

    StudentListApp.rar_管理 applet

    在当今信息技术高速发展的时代,教育领域的信息化管理也日益受到重视。本文将深入探讨一个名为"StudentListApp"的网络版学生成绩管理系统,它采用Java Applet技术进行开发,旨在提供一种高效、便捷的方式来管理学生...

    UML.rar_java酒店预订_site:www.pudn.com_酒店预订

    开发者可能利用Java Swing或JavaFX库来创建图形用户界面(GUI),这两个库提供了丰富的组件和工具,可以轻松构建出复杂且美观的界面。 动态不规则界面是指界面设计不遵循传统的矩形布局,而是采用更自由、更富创意...

    GUI美化

    GUI美化不仅仅是视觉上的提升,更是对用户体验的重视。Java SE提供了丰富的工具和框架,使开发者能够轻松实现这一目标。通过本文的介绍,相信读者已经掌握了Java界面美化的关键技术和实践方法,期待大家能在自己的...

    JavaEye新闻月刊 - 2010年02月 - 总第24期

    5. **Swing Worldclock - 世界时钟效果**:Swing是Java提供的图形用户界面库,这个示例展示了如何使用Swing创建一个世界时钟,展示了Swing的灵活性和可定制性。 6. **开源作业调度框架Quartz 1.7.1发布**:Quartz是...

    Java面试技巧大全

    面试往往重视候选人的基础知识掌握程度,因为这是评估程序员素质的重要标准。以下是一些Java面试中常见的知识点: 1. **final, finally, finalize的区别**: - `final`:用于修饰变量、方法和类,表示变量不可变、...

    Java.Programming.From.Problem.Analysis.to.Program.Design

    总结来说,Java编程语言因其在教育界的普及和作为计算机科学入门编程语言的地位而受到重视。本书《Java编程:从问题分析到程序设计》不仅涵盖了传统和现代编程风格,也为编程初学者提供了一个系统的编程学习框架。...

    java版bad apple

    总的来说,Java版Bad Apple项目展示了Java在图形编程方面的潜力,同时也对开发者提出了挑战,要求他们具备良好的编程技巧、图像处理知识以及对用户体验的重视。这个项目不仅是对经典作品的致敬,也是Java学习者提升...

    JAVA自学之路

    但是如果把时间花在spring的各种细节的研究上,花在研究中国企业应用不广泛地的spring mvc上,这个精力就太浪费了,而且学习的积极性会受到打击,谁愿意整天泡在细节的蜘蛛网中挣扎不出来呢?谁愿意天天经历风雨却...

    课程设计报告-ATM柜员机模拟程序.doc

    在本次面向对象程序设计的课程设计中,我们以ATM柜员机模拟程序为题,旨在深入理解和应用图形用户界面(GUI)设计方法,以及熟练掌握Java Swing组件的使用和事件处理程序的编写。以下是详细的设计报告内容: 1. **...

Global site tag (gtag.js) - Google Analytics