博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
终于搞清楚了为什么Java桌面程序总是感觉慢的原因
阅读量:5740 次
发布时间:2019-06-18

本文共 817 字,大约阅读时间需要 2 分钟。

hot3.png

    终于搞清楚了为什么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直接绘制,性能和移植性都比较好,效果自然不用说了。

转载于:https://my.oschina.net/u/2306127/blog/370495

你可能感兴趣的文章
泛型与闭包实现迭代器
查看>>
调参工程师的日常
查看>>
生成Oracle的AWR报告
查看>>
Thymeleaf教程入门到深入1:基础介绍
查看>>
grep精确匹配搜索某个单词的用法 (附: grep高效用法小结))
查看>>
Solaris 10主机名和IP地址步骤
查看>>
来啊踩fastjson打印入参导致业务跑偏的坑
查看>>
Linux之V4L2基础编程【转】
查看>>
PHP的模板引擎smarty原理是什么(整理)
查看>>
hihocoder第218周:AC自动机
查看>>
三步学会用spring开发OSGI——(第一步:环境篇)
查看>>
CCKS-2017 行业知识图谱构建与应用-下篇
查看>>
【GIS】ArcGIS Server密码
查看>>
一个屌丝程序猿的人生(八十五)
查看>>
sftp子系统申请已拒绝 请确保ssh连接的sftp子系统设置有效
查看>>
【SSH网上商城项目实战11】查询和删除商品功能的实现
查看>>
SXWIN7X64EN_20181104_NET_msu_LITE英文精简版
查看>>
高阶函数 实现sum(2)(3) 柯里化
查看>>
LeetCode题库13. 罗马数字转整数(c++实现)
查看>>
在select标签中添加a标签
查看>>