文档章节

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

openthings
 openthings
发布于 2015/01/22 10:50
字数 677
阅读 2.8K
收藏 1

码上生花,ECharts 作品展示赛正式启动!>>>

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



© 著作权归作者所有

openthings

openthings

粉丝 349
博文 1232
码字总数 910090
作品 1
东城
架构师
私信 提问
加载中
请先登录后再评论。
学习技术的三部曲:WHAT、HOW、WHY

近几天有些网友在邮件里面问我关于学习的问题。有好几个人觉得工作了几年,也学会了不少的类库、框架、甚至语言,但是感觉自己的能力没有太大的提高。因此今天来说一下我个人对这方面的体会,...

coffeescript
2013/01/17
585
1
java——helloword

  第一次接触Java,感觉乱乱的,需要捋清楚一些概念再安装java。     首先,什么是JDK,什么是JRE呢?     JRE:JAVA运行环境(Java Runtime Envirnment)     JDK:Java开发工...

osc_0djplnob
2018/07/28
4
0
hashCode方法里为什么选择数字31作为生成hashCode值的乘数

前提:   偶然的机会看到了大神的一篇博客,介绍的是hashCode()方法里为什么要用31这个数字作为生成hashCode的乘数。hashCode我在比较自定义类时曾经用到过 - 由于java默认比较的是类的地...

osc_5aj0jo70
2018/01/27
2
0
Java创建和解析Json数据方法(五)——Google Gson包的使用

(五)Google Gson包的使用 1.简介 Gson包中,使用最多的是Gson类的toJson()和fromJson()方法: ①toJson():将java对象转化为json数据(一般为json格式的字符串) (序列化) ②fromJson():...

osc_a6bn407a
2018/02/02
5
0
在win10下安装eclipse

在win10下安装eclipse 原创 2017年06月02日 20:39:59 24343 今天换了新电脑,需要在win10中重新安装eclipse。 1、在官网下载jdk。目前最新版本为jdk8。 http://www.oracle.com/technetwork/...

linjin200
2018/04/23
65
0

没有更多内容

加载失败,请刷新页面

加载更多

Beta冲刺--Day2

2020/05/29 这个作业属于哪个课程 2020春S班软件工程实践 这个作业要求在哪里 团队作业第六次——beta冲刺+事后诸葛亮 团队名称 云玩家$ 这个作业的目标 beta冲刺,测试和完善已有的项目 作业...

osc_taer599u
41分钟前
15
0
题解 [SDOI2010]猪国杀

题目链接 代码成功卡到600行以内 曾经发誓一天切掉的我打了两周。。。 先看题 要点还是挺多的,即使是像我这样熟悉三国杀的同(wán)学( jiā),也要认真看。 首先是基本牌的部分。 杀:在...

osc_4p2c0ecc
43分钟前
17
0
Beta冲刺--Day3

2020/05/30 这个作业属于哪个课程 2020春S班软件工程实践 这个作业要求在哪里 团队作业第六次——beta冲刺+事后诸葛亮 团队名称 云玩家$ 这个作业的目标 beta冲刺,测试和完善已有的项目 作业...

osc_sejhgcp0
45分钟前
23
0
vue3.0提前了解系列----一些普通用法和api的使用

今天给大家说说vue3.0 composition api里面一些剩余的普通api的使用 provide & inject provide和inject用于在一些高阶组件中常用,在2.x中也有一样的api那么在compositionapi中怎么用呢? 仅...

osc_kvcz9ju6
46分钟前
5
0
Beta冲刺--Day4

2020/05/31 这个作业属于哪个课程 2020春S班软件工程实践 这个作业要求在哪里 团队作业第六次——beta冲刺+事后诸葛亮 团队名称 云玩家$ 这个作业的目标 beta冲刺,测试和完善已有的项目 作业...

osc_ze3jj3wd
47分钟前
26
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部