`
EdwardWorld
  • 浏览: 28368 次
  • 性别: 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
分享到:
评论
183 楼 Storm1988 2009-05-03  
其实swing不受重视并非技术上的问题,IBM推出了Eclipse使用了swt技术,占得了先机

有点想替Sun喊冤,Sun开发了Java,可是自己没赚钱,让IBM赚了不少

现在Sun正在重组自己的软件,貌似想和微软一样,自己控制一整套技术
182 楼 tcrct 2009-05-03  
如果swing能够将发布时的JRE精简的话,估计反对的声音会少很多。
181 楼 勇敢的心 2009-05-02  
原来这里的帖子也像几年前的JDON会被删
180 楼 hantsy 2009-05-02  
勇敢的心 写道
SWING和SWT孰优孰劣是仁者见仁,智者见智的
你可以认为SWING的架构如何优秀,但是事实它在运行效率和外观确实无法和SWT开发出来的程序相比,并且ECLIPSE RCP提供的开发平台使开发效率大大提高,虽然我没有深入接触NETBEAN(下载安装后运行几次和JB差不多,运行缓慢人性化不够界面自我感觉相当丑陋,直接卸载),但是从当前业界的应用上几乎看不到SWING的身影
我非常喜欢SPRING,SPRING最初有个SPRING RCP是用SWING开发的但是好像没过多久就夭折了,取尔代之的是现在基于OSGI的...
你也可以认为EJB的架构很优秀,但是一个纯理想化脱离实际的设计是不会有好结果的

spring rcp 与 osgi 风牛马不相及,这都扯到一起作为不喜欢swing理由,看来你所谓的喜欢 Spring 也只是叶公好龙而已。还需要说明的是, spring rcp 不是 spring 官方的项目。

说eclipse rcp 什么开发效率高,不如说在基于swt的平台非常缺乏,除了它,使用swt别无选择。
而swing平台是百花齐放,你可以自由的选择,基于现有的组件,平台,还是自己开发,完全由你自己决定。

至于运行效率和外观,没有用过非 windows 系统,你没有发言权(在windows 系统上,它的确表现不错,因为 swt 就是一个针对 windows 优化的产物)。
要知道Java的最大特性是write once,run anywhere,这样在 linux 写的程序java 程序打包应该可以在windows 下运行,swing程序完全可以做到。swt 则不然,根本就做不到,它绕开jvm,试图直接与操作系统操作,带的恶果是明显的,各平台的性能差异很大,各个平台的api不一致,产生了针对系统的api,这些api不能跨平台使用,这些完全违背了 java 的初忠。



我所使用的一般应用程序(基于swing的)。
永中office(至今还没有一个能够与其相提并论的swt程序)
ThinkOffice(最早的Office协同方案)
aTunes(类似iTunes 的播放器)
GantProejct
openproj
aMule


下面我用于开发的工具。
ads-java-novm-4.7.2                             
netbeans-6.5
architect-0.9.12                                
netbeans-6.7beta
argouml-0.28                                    
opensystemarchitect-4.0
bluej                                           
oxygen
DbVisualizer-6.5.1                              
poseidonPE-6.0.2
eclipse                                         
rubymine749
editix-free-2009                                
smartcvs-7_0_5
foeditor                                        
smartsvn-4.0.11
freemind-0.9-rc3                                
sqldeveloper
fujaba-toolsuite                                
squirrel-sql-3.0
squirrel-sql-client
idea-7941                                       
thinkui_datagen-1.0.1
idea-9732                                       
thinkui_sqlclient-1.1.1
jailer_2.7.1                                    
topcoder-uml
una
jedit                                      
jude_community                                  
xxe-perso-4_2_0
komodo-5.0


其中,opensystemarchitect,komodo 不是java 程序,eclipse是swt界面的,其它全部是swing界面的。

其实,当前真正基于 swt 构建程序不多,大部分 swt 程序都是基于 eclipse 平台构建,一个最大特点,体积特别大。


我所用基于swt 的一般应用程序(现在已经不用了太大太慢了)
Azureus Xmind





179 楼 hantsy 2009-05-02  
sdh5724 写道
SWING其实缺少成熟稳健的制作工具, 另外. SWING在LINUX确实要设置后才能跑的问题很多. SUN本身不重视有很多关系.

eclipse 在linux 下的问题更多,经常崩溃,特别是安装一些插件之后,莫名其妙,速度也比netbeans 也慢很多。
178 楼 FervencyJR 2009-05-02  
请教一下LZ
你第一附图page01标签里面哪个有标尺的组建是什么组件?
177 楼 sdh5724 2009-05-02  
SWING其实缺少成熟稳健的制作工具, 另外. SWING在LINUX确实要设置后才能跑的问题很多. SUN本身不重视有很多关系.
176 楼 勇敢的心 2009-05-01  
SWING和SWT孰优孰劣是仁者见仁,智者见智的
你可以认为SWING的架构如何优秀,但是事实它在运行效率和外观确实无法和SWT开发出来的程序相比,并且ECLIPSE RCP提供的开发平台使开发效率大大提高,虽然我没有深入接触NETBEAN(下载安装后运行几次和JB差不多,运行缓慢人性化不够界面自我感觉相当丑陋,直接卸载),但是从当前业界的应用上几乎看不到SWING的身影
我非常喜欢SPRING,SPRING最初有个SPRING RCP是用SWING开发的但是好像没过多久就夭折了,取尔代之的是现在基于OSGI的...
你也可以认为EJB的架构很优秀,但是一个纯理想化脱离实际的设计是不会有好结果的
175 楼 hantsy 2009-05-01  
SWT 是跨平台,是IBM的公关骗局。
1. 在非 windows 平台性能低下,至少在 linux 下是如此。
2. API 根本不能完全跨平台,所以swt跨平台的说法只是幌子,用来忽悠人的。
174 楼 vipyami 2009-04-30  
看完了所有回帖,为此发我的javaeye第一帖如下:
1.Swing 相对MFC,WTL来说是慢,但是如果说你写出了用户体验慢的Swing程序,那你就没有资格来评论Swing了.
2.说Swing难看的,请打开这个网页:https://substance.dev.java.net/,然后点see,看看Swing究竟难不难看,当然了,如果你肯在laf上下功夫,你还能让它更好看.
3.jdk里是缺一些控件,但是你的企业可以自己积累一套,成本是一次性的,你积累的多了,还能拿出来卖钱,就像前面兄弟发的广告一样.
4.Swing在企业应用里是首选,用web开发企业应用,我认为是盲动,成本远在Swing之上,而且很多功能难以实现.
5.Swing真正不适合的地方是互联网应用,用Applet和web start都要jre,在企业应用里jre不是问题,但互联网应用jre就是致命的问题了,sun从jdk6才开始着手这个问题,太晚了,而且直到它自己game over还没解决.我如果想自己精简一下jre,它还有协议限制,唉,这一块,还是用web和qt做的好
6.谈一下我对web做企业应用的看法,我前面说它是盲动,因为最开始web做企业开发流行的理由就是"部署升级方便","c/s500个客户端,你到客户那里一个一个升级,那种痛苦...",我认为大家看看eclipse的插件升级方式就知道这个理由多么可笑了,当然,eclipse的升级方式你还可以再提升,做一个通用的升级方式和积累一些Swing控件是一样的,都是一次性成本,一次付出,终生收益,你不愿写升级功能就去换web开发,不愿写控件就去用delphi开发,你有没有想过只需付出3个人3个月的成本,就能一劳永逸的解决问题?当然,这是说企业应用,jre不用care的时候,互联网应用,我还是赞成web的,领域不同,观点不同.
173 楼 revivemydark 2009-04-30  
whycloud 写道
shiren1118 写道
revivemydark 写道
其实swing最重要的就是两点:
1,applet ,
2,opengl ,
可惜sun这两方面都没做好,就算现在做好了也晚了



applet本身是没有问题的,问题出在jre的体积


其实现在已经不能算问题了,很多人连内存都不用释放,还在乎那点硬盘空间吗?


java2D ,3D都还可以,opengl 好像是有第三方实现

java3d做得挺失败的,需要额外的jre,而且对应不同的引擎还有不同的jre,d3d有d3d的引擎,opengl有opengl的jre。
而且从我05年接触这个东西到现在也快4年了,总感觉这个东西是个半成品。
倒是jogl让人眼前一亮,还支持opengl的shader。另外这个package也不算是第三方的,至少有jsr231的编号,应该是sun的开元项目。
另外得我觉得swing绝对不慢,比较不令人接受的是jre。另外ibm webshpere系列产品的installer也使用swing做的。至少保证了所有系统界面的统一了。

体积不是问题,以前win98就自动支持java只不过是M$的java虚拟机,后来sun害怕M$夺走java的控制权不给M$授权了,winxp就不支持java了,linux,mac os基本都自带jre的
172 楼 whycloud 2009-04-30  
shiren1118 写道
revivemydark 写道
其实swing最重要的就是两点:
1,applet ,
2,opengl ,
可惜sun这两方面都没做好,就算现在做好了也晚了



applet本身是没有问题的,问题出在jre的体积


其实现在已经不能算问题了,很多人连内存都不用释放,还在乎那点硬盘空间吗?


java2D ,3D都还可以,opengl 好像是有第三方实现

java3d做得挺失败的,需要额外的jre,而且对应不同的引擎还有不同的jre,d3d有d3d的引擎,opengl有opengl的jre。
而且从我05年接触这个东西到现在也快4年了,总感觉这个东西是个半成品。
倒是jogl让人眼前一亮,还支持opengl的shader。另外这个package也不算是第三方的,至少有jsr231的编号,应该是sun的开元项目。
另外得我觉得swing绝对不慢,比较不令人接受的是jre。另外ibm webshpere系列产品的installer也使用swing做的。至少保证了所有系统界面的统一了。
171 楼 无可奈何 2009-04-30  
hallenzzz 写道
zhuanggl 写道
看看永中office,完全用swing开发的,性能比用c开发的openoffice和wps好多了,swing慢不是借口,大型产品架构是关键,对语言熟悉程度也很重要


别用永中做例子,永中被swing折腾得够呛!


永中是被“捣死”的吧,和swing有什么关系?没有swing,永中的原始架构哪来的?
170 楼 icewubin 2009-04-30  
都被收购了,JavaFX估计也没太大的希望了。
169 楼 renxiaoya0 2009-04-30  
shiren1118 写道
revivemydark 写道
其实swing最重要的就是两点:
1,applet ,
2,opengl ,
可惜sun这两方面都没做好,就算现在做好了也晚了



applet本身是没有问题的,问题出在jre的体积


其实现在已经不能算问题了,很多人连内存都不用释放,还在乎那点硬盘空间吗?


java2D ,3D都还可以,opengl 好像是有第三方实现


是啊,最致命的是jre的体积,导致部署极困难(不包括企业应用),
javafx还有applet不知道怎么搞,还要下个十几兆的jre,一两兆的网速下完要十几分钟,安装也要几分钟,干脆去死好了
168 楼 shiren1118 2009-04-30  
revivemydark 写道
其实swing最重要的就是两点:
1,applet ,
2,opengl ,
可惜sun这两方面都没做好,就算现在做好了也晚了



applet本身是没有问题的,问题出在jre的体积


其实现在已经不能算问题了,很多人连内存都不用释放,还在乎那点硬盘空间吗?


java2D ,3D都还可以,opengl 好像是有第三方实现
167 楼 revivemydark 2009-04-30  
其实swing最重要的就是两点:
1,applet ,
2,opengl ,
可惜sun这两方面都没做好,就算现在做好了也晚了
166 楼 zwq4166506 2009-04-30  
night_stalker 写道
慢一点就忍了,功能是很不错的,但至少一个字得好好的显示出来吧…… output窗口那些歪歪扭扭的算什么?

netbeans 算是比较优秀的 swing gui 应用吧? 不那么优秀的就更别提了。

netbeans output 锯齿怎么这么厉害…… 这还是调大了的,原本根本看不见……
打开后会做 index 什么的挠一会,狂读硬盘。


visual studio 的 output 窗口字体是可以调的,总体积达数 G,但是启动速度非常快,体验很流畅。而且界面很简洁。


code blocks 的字体虽然小了点,但至少工整清晰。整体非常有 wxWidget 特色。


visual studio快吗?我倒不觉得,我用2008,如果打开没加载窗口还是比较快,但是打开同时加载一个项目和几个窗口看看,慢死!硬盘死读。。而且装了vs,启动Windows系统慢了N倍
netbeans现在用jdk6,启动一般是几秒,相信在Linux更快
你说界面,本身在Windows就水土不服,布局可能要迎合其他系统,会有点顾此失彼
165 楼 shiren1118 2009-04-29  
bradwoo8621 写道
看看Oracle有什么新动作吧.

Oracle的ERP是用AWT做的, 好像是JDK1.1.8的版本. V11以后就似乎转到WEB上了, 不过没有看过WEB版本.

Swing还是蛮好用的

OpenSwing似乎也算吧
164 楼 shiren1118 2009-04-29  
bradwoo8621 写道
看看Oracle有什么新动作吧.

Oracle的ERP是用AWT做的, 好像是JDK1.1.8的版本. V11以后就似乎转到WEB上了, 不过没有看过WEB版本.

Swing还是蛮好用的

JComponentPack 3.0正式发布 功能介绍 免费下载试用
JComponentPack是一个基于Java Swing的GUI类库,一系列可视化的JavaBeans集合,它基于Swing的MVC架构,是100%的纯Java类库,它包括20多个Swing 所没有的控件,如EXCEL风格Java的电子表格控件,读取数据库表的Java表格控件,日历控件,类似资源管理器的列表控件,向导框架等等,这些 JavaBeans可以直接拖动到您的图形用户界面,它可提高您的工作效率,加快您的项目开发过程。

功能列表

•JBean应用程序框架
JBean应用程序框架提供了一个标准的Swing应用程序框架,它支持从属性文件创建Actions,创建和动态显示菜单,也支持创建单选按钮,多选按钮,能动态改变按钮状态。它提供了一个资源管理类,能够从定义好的资源文件装载小图标,菜单和按钮的资源。
JBean应用程序框架包含了一些常用的标准控件,包括打印和打印预览控件,状态栏控件,登陆对话框,反馈对话框,外观改变对话框等。
JBean应用程序框架包含了一些常用的单元格绘制和编辑器,它们支持通用的数据类型,包括数字,日期,文件,图表,颜色等类型。这些单元格绘制和编辑器也提供了不同的控件支持,包括复选框,下拉框等。

•JComponentSet控件集
JComponentSet是一个Javaswing控件集,包括JWizardPane,JListView, Layout Suite (CellLayout, BoxLayout2, CardLayout2, GridLayout2), JDirChooser,JCalendar, JFontChooser, JLinkButton, JSidePane, JSideBar, JImageViewer, XTree,XCheckBox, JCardPane, JGridPane等一系列控件.

•图形控件
提供了常见的图形, 2D图形和3D图形.

•图表控件
支持3种不同的图表类型, 分别是饼形图,条形图和线形图.

•核心公式框架
核心公式框架定义了一个通用的公式框架,包括函数和公式定义,公式解析器等接口。

•JDataGrid核心控件

•普通文件格式的输入和输出
支持输入和输出多种文件格式,包括csv, html, txt.

•JDataGrid电子表格控件
JDataGrid电子表格控件是了一个Javaswing 电子表格控件,提供了基本的功能,如撤销和重做,合并单元格,拼写检查,Excel文件的输入和输出,打印和打印预览等,也包括了复杂的高级功能.

•电子表格公式
支持许多函数,例如逻辑函数, 日期函数, 数学计算函数, 文本函数, 单元格函数, 和部分的统计函数.

•高级文件格式的输入和输出
支持输入和输出多种文件格式,包括Excel xls, Excel xml, PDF等.

•JDataGrid电子表格JavaFX控件
最新的JDataGrid电子表格控件支持JavaFX平台,新添加了JavaFX控件"DataGrid"和"DataGridBean",您可以在JavaFX脚本中直接使用这些控件,这些JavaFX控件直接支持最新的JDataGrid电子表格服务器端控件。

•JDataGrid电子表格JavaEE服务器端控件
最新的JDataGrid电子表格服务器端控件能部署在JavaEE应用服务器上,JDataGrid小程序直接支持最新的服务器端控件,您可以通过简单的设置,设置一个服务器端控件的URL,就能读取,保存,下载各种不同格式的电子表格文件,所有的配置在服务器端完成。

•JDataGrid数据库控件
JDataGrid数据库控件是一个能够直接对数据库操作的表格,基于标准的JDBC技术,能够直接操作ResultSet和RowSet,并提供如打印和打印预览,多种格式的文件输入和输出的功能.

试用版下载(点击下载)

相关推荐

    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