这是一个很长的话题,自从“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一直速度很慢,这并不是事实,但是让人们这样感觉,这个感觉存在,因为开发者不理解如何控制处理 EDT .现存代码缺乏关于EDT 规则相关的强制,于是不能在EDT上运行的任务执行时间很长。所以,缺省的,Swing 2.0 必须进行EDT 验证,抛出所有异常。这会让开发者不爽,但是结果会让程序运行更快,让用户满意。这很值得。
改进bean绑定和验证 :我不会说到我们需要 properties 那么远,是因为还没有足够的信息给出确认的意见,我知道 JGoodies beans binding and validation 非常有用,让创建数据驱动用户界面容易并且迅速。Swing 2.0 也应该吸取这些优点。
这篇博客得到了大量的回复和转载,在Swing社区引起了强烈反馈。Sun 也随后在官方博客“Swing and JDK 7”上做了回应: