提升java桌面客户端程序性能
这次聊天主要关注在jfc/swing/java2d当前在性能上有哪些提升,以及将来的java版本在这些方面将有什么改进. 【程序编程相关:今天很开心,解开了关于JAVA中this】
2月15日,edward ort在sdn(sun developer network)聊天室主持了一次关于提升java桌面客户端程序性能的聊天,这次聊天请来了两位重量级的人物:chet haase, java2d工程组的关键成员;scott violet, jfc/swing的架构师. 【推荐阅读:J2ME开发中的一些问题 】
【扩展信息:eBay架构的思想金矿 】
下面我们来看一些关键的.比较有趣的聊天内容.
为什么repaint()刷新时会造成灰色块?
scott violet: 这是一个非常适时的问题.当我们使用awt/swing时,至少有两个线程在起作用:一个线程负责接收与处理本地事件,另一个线程负责分派这些事件(即 edt).对于本地线程,当它接收到一个expose事件,会立即用灰色填充背景,当事件在edt中被处理时才开始做实际上的绘制工作.这样的话如果你的程序正在繁忙,在显示灰色块与实际的绘制之间会有一个显而易见的延迟.有个好消息是我们正在做这方面的改进工作,让每个窗口都有一个缓冲图像,这样的话,当窗口收到一个expose事件,我们立即将缓冲区的图像复制过来,并且你的程序不用做任何事情.这样你就再也不会看到灰色块了,甚至于你的程序繁忙时,我们照样能恢复窗口里的显示内容.我们希望能尽早完成这项工作,当我们完成时会将它公布出来.
为什么不把swingworker(或者类似的机制)没有成为标准api? 有什么建议的方式来处理过程灵敏的任务?
scott violet: 很好的问题. 我们就要完成一个版本的swingworker,它将会是java1.6的一部分.... 下一页