阅读更多

93顶
3踩

编程语言

原创新闻 Sun 和 Java Swing 2.0

2009-03-04 17:11 by 副主编 ouspec 评论(43) 有21426人浏览

这是一个很长的话题,自从“Sun:放弃Swing,主推JavaFX”,“Sun冻结Swing”的传言出来,整个Swing社区对Sun放弃Swing的可能表示了强烈的反对,由于作为一个成熟Java UI技术,Swing拥有相当数量的开发者,在关于Swing的争论中,要求Sun继续支持Swing的声音不断,一些开发者也澄清了大众对Swing的错觉,详见“关于Swing的六个谎言”。

在09年1月26日,Jonathan Giles 发表了他的博客:“Java Swing 2.0”,要求Sun对Swing 进行合理的改进。

Jonathan Giles 写道
我相信不基于JavaFX的 Swing 2.0的改进非常必要,基于Java框架,专注于桌面开发。我和很多开发者交换了意见,我们认为Swing 2.0 应该有以下改进:

Generics-based 基于范型: 我们不再需要将我们的对象放入不同的Swing 数据模型和组件中,只是为了接受返回对象。它应该能够通过指定数据类型创建swing 模型和组件。现在已经有了一个Swing-generics project 项目,虽然发展的有点慢,但是Swing2.0 应该包含这个项目,不需要重复工作。

Support for enumerations 支持枚举:这个需要是非常明显的,很多public static final int 数据 应该由枚举替换。这可以让API干净很多。

改进对collection frameworks的支持:这就是说我们不需要一直使用Vector lists,除非绝对需要同步。

对 事件分发线程 event dispatch thread (EDT) 规则的严格强制:Swing表现很慢(或者说坊间是这么流传的)。这不是事实,但不幸的是Swing就是给人这种感 觉。之所以这样是因为开发者不理解怎么处理事件派发线程(EDT)。现在已经有代码可以强化关于如何处理事件派发线程的规则。其原理是当发现Swing控 件在事件派发线程之外被处理时会抛出异常,还有当发现事件派发线程中有执行时间很长任务时,这些任务本不应当在事件派发线程中执行,也会抛出异常。默认的 情况下,Swing2.0 应该加强对事件派发线程的检查,对所发现所有异常使用情况时都抛出异常。 这也许会让开放者不爽,但带来的结果时更好的程序以及用户的更高满意度。 这是值得的。 (这一段感谢alhawk翻译)。

改进 bean 绑定和验证 :我不会说到我们需要 properties 那么远,是因为还没有足够的信息给出确认的意见,我知道 JGoodies beans binding and validation 非常有用,让创建数据驱动用户界面容易并且迅速。Swing 2.0 也应该吸取这些优点。

 


这篇博客得到了大量的回复和转载,在Swing社区引起了强烈反馈。Sun 也随后在官方博客“Swing and JDK 7”上做了回应:

sun 写道
Swing对于Sun非常重要,我们拥有大量的开发者在Swing 上开发,Swing在Sun 的未来开发蓝图中,在富客户端应用RIA方面,以及其他所有方面都拥有重要位置。

JavaFX也使用了很多Swing 的组件和桌面工具,Sun 很欣喜的看到基于Swing 出现了很多优秀的项目,比如: Griffon, Thinlet, PivotLWUIT  等等。

所以,我们提升了 Swing 的重要性,甚至比JavaFX的下一个版本,甚至比 Java SE 6更重要,将花大力气弥补 Swing 作为UI工具的一些不足,比如让Swing开发更加简单,比如更好的运行时runtime 部署和性能优化。这些方面的进展让Swing开发者获益,并且也让其他依赖Swing的技术也获得优势。

对于Sun来说,在JDK 6 向 JDK 7 转移的期间,首先最重要的是 让运行时 runtime更加轻量化,更快下载,更快启动,对浏览器兼容更好,提升runtime性能。在Java SE 6u10中,已经得到体现。第二个就是Swing 了,让臃肿的Swing减少模板代码和概念上的复杂性,开发典型的Swing应用将使用JDK 7中的 Swing Application Framework

Sun 将通过OpenJDK 让Sun以外的开发者更加容易为Swing贡献代码,我们已经和 XRender pipline team 团队合作为Java在Unix平台上提供更好的图形加速性能。 在JDK 7中,我们将加入组件类似JXLayerDatePicker, 和 CSS styling等等。
我们也热切希望能够在JavaFX中使用Swing的功能,尤其对听到什么类型Swing应用能够需要嵌入JavaFX组件有兴趣。

 


综上,就是Sun保证对Swing继续开发,并且在JDK 7中加入Swing Application Framework。

现在Sun也遵守了诺言,Swing Application Framework (SAF) 开始向社区征询意见。

Alexander Potochkin 发表了博客“Swing Application Framework is back again”。他提出了SAF面临的问题,比如在同一个JVM中运行两个SingleFrameApplication 冲突的问题;在Mac操作系统上,Swing很难提供原生的用户界面等。希望SAF能够成为一个理想的框架,解决Swing遇到的问题,过渡到Swing 2.0。

关于SAF的讨论,你也可以参与:http://weblogs.java.net/blog/alexfromsun/archive/2009/03/swing_applicati_1.html

你对Swing 2.0 有什么提议吗?你看好Swing 2.0吗?欢迎发表你的意见。

93
3
评论 共 43 条 请登录后发表评论
43 楼 liyaxi 2010-02-09 17:11
支持swing!!!!!
42 楼 bitray 2010-01-19 17:17
wwei 写道
swt/jface 呢?
哪是IBM的
41 楼 KKFC 2009-03-07 12:04
动态语言吧 UI给动态语言很好的名分
40 楼 duloveping 2009-03-06 21:53
很好啊,呵呵,swing也是不错的啊,我也喜欢它的开发区啊,而且自己也要跟着时代走啊,所以我要好好学习JavaFX了。
39 楼 steeven 2009-03-06 21:32
最简单的form default key, escape key都要浪费一堆代码。sun这帮老sb赶快入土算了
38 楼 steeven 2009-03-06 21:31
看看winform的数据绑定,java太jb土了,swing整个一土鳖
37 楼 lotin_2001 2009-03-06 10:57
SWING 的开发速度其实不慢,不过官方提供的一些基础类太少了,需要积累
36 楼 alhawk 2009-03-06 10:38
翻译得有些问题。
下面这段话,不看原文,简直不知所云。
Swing一直速度很慢,这并不是事实,但是让人们这样感觉,这个感觉存在,因为开发者不理解如何控制处理 EDT 。现存代码缺乏关于EDT 规则相关的强制,于是不能在EDT上运行的任务执行时间很长。所以,缺省的,Swing 2.0 必须进行EDT 验证,抛出所有异常。这会让开发者不爽,但是结果会让程序运行更快,让用户满意。这很值得。
35 楼 raymond2006k 2009-03-06 09:12
很久前用Swing做一些小工具。JMeter等也常常用。 Sun能改进其界面和性能,Swing应该有希望焕发第二春。
34 楼 java.lang.Object 2009-03-06 08:49
支持SWING,也用SWING做过开发
33 楼 night_stalker 2009-03-06 04:58
Swing是个优秀的技术,但不是优秀的GUI技术。

GUI其实是个广阔的世界,不少发展趋势都非常有意义:

1.用简洁的DSL来描述:
如ruby shoes。

2.友好+流畅+漂亮的所见即所得工具:
如M$和Adobe做的那些美工也能使用的工具——工具弥补了语言的缺陷,产生了巨大的生产力。可惜Java里还没有此三者兼得的工具。

3.脱离控件的框框,做真正的图形界面:
如Windowless,各种轻量级,支持opengl, directX的新GUI库。

4.虽然不是主流,但的确也有一群人在追求真正高性能的GUI:
如ATL/WTL,汇编语言,FLTK。

5.使用动态语言+C库,兼收两者优点——这是Java GUI,.NET GUI难以做到的。

6.在web的影响下,XML式的GUI设计越来越多,如XUL、XAML、暴雪wow的插件开发。


补充1:C++的元编程还是很有挖掘潜力的,在指针、模版/运算符的帮助下,能达到很强的动态性,甚至还能玩FP(try phoenix)。相比之下引用和泛型就显得有点弱了。

补充3:WTL GUI否认了多态这个性能杀手,使用了模版元编程和汇编hack,达到了一种非常神的境界……

补充4:老实说,我觉得不少汇编写得非常优雅易读,大概因为汇编是短句,很少有一个函数就是一堆驼峰这种情形吧。

ps:为什么我就觉得swing入门简单,做起来很辛苦,产品却不怎么样呢……
32 楼 wwei 2009-03-06 04:23
swt/jface 呢?
31 楼 mtsai3 2009-03-05 20:14
EdwardWorld 写道

用过的GUI技术中,我觉得能和swing抗衡的只有c++ QT GUI技术。

非常同意。swing除了入门难点,对于界面设计来说,处处体现一种赏心悦目的美感。
它是一种设计活动,而不是一种体力活动,对于开发者工作中带来的愉悦和满足,是微软,是web界面开发无法比拟的。
30 楼 night_stalker 2009-03-05 19:01
当一个东西变得越来越重量级,用户群又非常大时,想要改革它真的很难,Sun也是没办法的啊。
于是各领风骚好几年吧。
29 楼 luolonghao 2009-03-05 18:52
EdwardWorld 写道

用过的GUI技术中,我觉得能和swing抗衡的只有c++ QT GUI技术。


QT开发感觉很像写JAVA代码,现在许可变成LGPL后估计很快会普及。
28 楼 comeofage 2009-03-05 17:20
我们用swing做前台展现,用了很复杂的jtable,包括权限和计算统计等等,后台用hibernate,websphere。
像flex,javafx等轻量级组件很难替代swing的展现能力。
我们的项目在开发周期,质量和界面美观上也获得了客户的好评。总的来说swing并没有让人失望。就是jtable的复杂程度确实太高了点。
27 楼 comeofage 2009-03-05 17:12
希望swing未来会更好
26 楼 ouspec 2009-03-05 16:49
fight_bird 写道

借用一句话:Swing还趟在技术的躺椅里睡大觉,一如Sun现在的处境。

Flex之流已经开始领跑,生产率已经不是一个档次了。


相当同意,虽然推出了JavaFX作为应对,我觉得Sun还没有对互联网技术趋势的改变做好准备。
25 楼 fight_bird 2009-03-05 16:36
借用一句话:Swing还趟在技术的躺椅里睡大觉,一如Sun现在的处境。

Flex之流已经开始领跑,生产率已经不是一个档次了。
24 楼 laiseeme 2009-03-05 16:32
终于……我忽然鼻子一酸……

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • Borland Delphi v2.0

    Borland Delphi v2.0

  • Delphi简介

    Delphi这个名字源于古希腊的城市名。它集中了第三代语言的优点。以Object Pascal为基础,扩充了面向对象的能力,并且完美地结合了可视化的开发手段。Delphi自1995年3 月一推出就受到了人们的关注,并在当年一举夺得了多项大奖。     Delphi的出现打破了V承可视化编程领域一统天下的局面。并且Delphi使用了本地编译器直接生成技术,使程序的执行性能远远高于

  • Borland Delphi 2005对Delphi语言的支持

    Delphi Borland 2005被认为具有主要的三个不同的字符,如Win32角色和Delphi语言,正如我们已经知道的那样,Delphi语言2005是Borland Delphi 7的新继承者,其余两个字符是.NET字符,如Delphi是Delphi 8的伟大继承者,最后一个也是最不重要的是使用C#作为语音。它支持三种独特的样式,如用于Win32的Delphi、用于.NET的Delphi和用于所有内部和单个开发以及环境调试的C#。Borland Delphi 2005的一些主要特点如下:,

  • borland delphi软件所有版本

    http://download.csdn.net/album/detail/3731

  • delphi是什么

    Delphi 是borland 公司研发的面向对象的,可视化的,快速的应用开发工具。  ◇对象是对相对独立的客观存在或相对独立的逻辑存在的计算机表示。  ◇面向对象是与面向过程相比较而言的。??? 1? 对象的三个主要特征:封装、继承和多态。?????? 面向对象的优点:易管理,可重用。??? 2? 可视化的体现:?? 所见即所得的界面设计;delphi组件是可视化的对象。

  • 20世纪的传奇Delphi,退出历史舞台?突破传统开发,该用新工具了

    的历史可以追溯到1995年,当时它由Borland公司推出。最初的版本被称为Delphi 1,它是一个基于Object Pascal语言的可视化开发环境,用于创建Windows应用程序。随着时间的推移,Delphi逐渐发展壮大,并发布了多个版本,如Delphi 2、Delphi 3、Delphi 4等。每个版本都带来了新的功能和改进,使开发者能够更高效地构建应用程序。经历了多个版本和公司所有权的变迁,但一直保持着其强大的开发能力和广泛的应用领域。

  • Delphi可视化编程语言跨平台百科.

    Delphi可视化编程语言跨平台百科 Delphi,是Windows平台下著名的快速应用程序开发(Rapid Application Development,简称RAD)。它的前身,即是DOS时代盛行一时的“Borland Turbo Pascal”,最早的版本由美国Borland(宝兰)公司于1995年开发...

  • 神秘的预言:深入探讨Delphi的历史、技术及应用

    Delphi,这个名称在不同的领域代表着不同的意义。在古希腊,它是著名的德尔菲神庙所在地,被认为是世界的肚脐,拥有全知全能的神谕。在现代,它同样泛指一种编程环境和语言——Delphi编程语言。这篇文章将从历史、技术解析以及实际应用等多个角度,全方位揭秘现代Delphi的神秘面纱。

  • delphi过时了吗?王者归来!从Pascal到Embarcadero Delphi 10.4.1的发展历史回顾

    Delphi是一种通过使用对象Pascal快速开发本机Windows,macOS,Linux,iOS和Android应用程序的语言。该名称指的是Delphi语言及其库,编译器和IDE,用于帮助编辑和调试Delphi项目。 Delphi是用于快速开发本机Windows,OS X,Linux,iOS和Android应用程序的通用语言。 Delphi 10.4 该名称曾经用于指代Delphi语言,但开发人员决定将语言恢复为原始名称Object Pascal,从而将该名称限制在IDE中,该IDE用于帮助更有

  • 原Borland Delphi研发部程序员Joe C. Hecht讲述自己离开Borland公司作为个体户程序员独立单干接活谋生的故事

    你好。这篇文章是我们与专业软件开发人员交谈的系列文章的一部分,询问他们以编写代码为生是什么感觉,并可能在此过程中获得对软件开发行业的一些见解。 今天我们要和 Joe C. Hecht 交谈,他也被称为“TJoe”。乔现在正在佛罗里达潮湿的高地编写代码,尽管在采访过程中我发现他是德克萨斯人,在离我现在住的地方不超过 5 英里的地方出生和长大。开发人员的世界比你想象的要紧密得多! 嗨,乔,很高兴和你交谈,谢谢你抽出时间 采访Delphi程序员这是个好主意!正如我所说,我很高兴参加这个采访。 ...

  • Borland Delphi样本与病毒概念思考

    一、前言: 回家办事,家中老式电脑显着老旧,平日不在家,父母就用电脑斗斗地主,看看电影,每次回来都会给他们拆开主机清清灰,打开系统清清垃圾、打打补丁。 发现竟然变成了XP系统?转念一想,应该是电脑坏了去了电脑店重装了系统....而且给装的XP。顺手下个电脑清理,还扫出了病毒?来吧,拿起U盘拷贝下来,仍到虚拟机,然后写一篇态度不严谨的文章吧。ps:虽然这篇文章不是来分析这个样本的  二、静态分析:①...

  • 2020delphi还有人用吗?delphi过时了吗?为什么还有那么多程序员坚持继续选择DELPHI作为软件开发工具

    标题

  • delphi的发展历史

    delphi 的发展历史提纲:

  • BorlandDelphi7_破解版

    BorlandDelphi7_20150121.rar版本破解版

  • 终于见到了传说中的DELPHI 2006

             写这段文字的时候,我刚刚下北京到石家庄的火车,宿舍都没回,就迫不及待跑到机房来和大家分享喜悦。    昨天(12月5日)Delphi 2006在北京发布,虽然这是Borland在大陆举行的第三场发布会,但Borland的魅力让人有一种说不出的感觉,下面就跟大家一起分享一下昨天发布会上的一些振奋人心的消息。    下午2:00,发布会在北京长城喜来登酒店正式开始,我见到了李维老师和

  • delphi是什么?

    今天又客户反应他们是用delphi对接的,后来经过查资料发现delphi是一个集成开发环境(IDE),使用的语言是Pascal。用途很广,干什么都可以,delphi在桌面开发和数据库开发方面更便捷,因为delphi集成的开发控件很多,有一句话叫做“真正的程序员用C,聪明的程序员用Delphi”,它的效率很高。曾经确实很流行,但后来被Java和.net抢了风头。

  • Delphi为什么都不用了?公司CTO不向老板推荐使用Delphi的13 个真实原因

    多年来,我听到了很多人们不使用 Delphi 的原因或借口。我在这里收集了13 个最好的理由。 1. 想要编写更多代码——Delphi 需要更少的代码来完成相同的任务。如果你想写更多的代码,不要使用Delphi。如果编写更多代码会给您带来更多成就感,或者您根据编写的代码行数获得报酬,则尤其有用。 2. 更大的开发团队——谁不喜欢有很多同事?如果您使用其他工具和框架,那么您将需要更多的开发人员、更多的开发人员工具、更多的框架和更多的团队来支持所有平台。打造更好的办公室派对。不幸的是,当您使

  • Delphi已经25岁了,我的公司每天都在使用Delphi开发跨平台的实时视频会议软件APP

    Delphi在我的生活中发挥了重要作用,影响了我从事或从事的工作,创办和出售的公司以及我花在计算机后面的时间。在成立25周年之际,我想回顾一下Delphi及其对我的生活,过去和未来的影响将是一件很愉快的事情。 在Delphi之前 与将Delphi用于传统产品的广泛讨论相反,我很幸运地将自己的整个职业生涯都花在了新的Delphi项目上,在其已有25年的时间里发明了产品和服务。 我最初在Pascal上的经历是在Delphi之前开始的。我主要是在十几岁的时候就与UCSD Pascal一起在圣地亚哥本地出版的

Global site tag (gtag.js) - Google Analytics