转 : 终于搞清楚了为什么Java桌面程序总是感觉慢的原因

Posted 小稀稀和她的小摩的

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了转 : 终于搞清楚了为什么Java桌面程序总是感觉慢的原因相关的知识,希望对你有一定的参考价值。

转自: http://my.oschina.net/u/2306127/blog/370495

 

 终于搞清楚了为什么Java桌面程序总是感觉慢的原因!
    按照道理服务器和浏览器都在用脚本和虚拟机,那些不慢,而Java的桌面程序总是感觉响应迟钝呢?主要有两个原因,一是服务器和浏览器都是异步的,提交到渲染出来这中间有足够的时间去处理,而且网络IO要远远慢于本地CPU调用;二是浏览器的界面其实不是javascript渲染(很多人可能都会以为html是JS绘制的),而是浏览器在操作系统层原生支持的,甚至还做了专门的优化。
    Java绘制图形实际上是两层,一层是基于底层绘图API进行桥接,如swing之类的JavaStyle的UI,每一个UI绘制操作都要调用虚拟机API,效率很难提升;第二层使用GUI对象层API桥接(比如WinForm的API,但是不可移植),这种方式减少了很多图形API的Java调用,性能跟原生程序不相上下。pyQT的实现是基于第二种方式的,因此虽然python效率并不高,但是绘制实时图形和GUI没有什么压力。Java的OpenGL也是基于第二种方式实现的,因此也可以流畅地绘制三维图形(如果运算量大就不行了)。

    因此,提升Java中桌面程序交互性的关键是用原生库进行GUI层面的绘制,这个有很多了,包括WxWindow/GTK/QT,而且效果也非常酷。Sublime/Blender都是用的这种模式,里面很多程序都是python的,但是界面和图形绘制操作是C++的,调用原生操作系统的API进行绘制(QT是调用的GUI层,使用不同操作系统自己的GUI进行绘制)。

    Java桌面程序的开发建议使用Eclipse的框架,开发相容性比较好,插件机制比较完善。但是Eclipse的界面也有上述问题,在虚拟机里响应太慢,我已经基本放弃了。

    最新的UI系统都是用OpenGL直接绘制,性能和移植性都比较好,效果自然不用说了。

以上是关于转 : 终于搞清楚了为什么Java桌面程序总是感觉慢的原因的主要内容,如果未能解决你的问题,请参考以下文章

我们为什么要用mq?终于搞清楚了

终于彻底搞清楚了字体的布局高度

终于搞清楚了ADO数据库连接中的Persist Security Info参数的作用

终于搞清楚了!我花5小时肝出这篇Redis缓存解决方案,带你起飞!

ftp安装和虚拟用户创建(终于搞清楚了)

面试官:SOA 和微服务的区别?这回终于搞清楚了!