文档章节

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

openthings
 openthings
发布于 2015/01/22 10:50
字数 677
阅读 1972
收藏 0

    终于搞清楚了为什么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
粉丝 277
博文 1027
码字总数 557983
作品 1
东城
架构师
私信 提问
学习技术的三部曲:WHAT、HOW、WHY

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

coffeescript
2013/01/17
521
1
在win10下安装eclipse

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

linjin200
04/23
0
0
一个java初学者的心得体验!

学习了一学期的Java课程,觉得是该总结自己的心得体会了。开始学习任何一门课(包括java),兴趣最重要。 还记得我编写的第一个经典程序“Hello Word”。从那时起我已开始走进Java的世界。 当时...

嘿你好夏天
01/12
0
0
CSDN日报1806027——《我的漫漫程序人生路》

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/blogdevteam/article/details/80805930 程序人生 | 我的漫漫程序人生路(真诚的长文,慎点) 作者:张龙(风中...

CSDN官方博客
06/27
0
0
似乎我对 Java 存在误解 – Part 1

我不是最狂热的 Java 粉,虽然也会在某些需要的情况下用到 Java 代码,但仍然不太习惯。和其它不怎么使用 Java 的人一样,我觉得 Java 有些刻板:它占内存且运行慢,虽然在编程界口碑不错,但...

oschina
2016/12/02
5.8K
24

没有更多内容

加载失败,请刷新页面

加载更多

开源软件会被云杀死吗 ?

本文转载云头条,原作者:Michael Stiefel是Reliable Software公司的负责人,是一名软件架构和开发顾问。 文章要点 虽然开源开发不会消失,但商业开源厂商的未来不是很有希望。随着全面管理的...

linuxCool
35分钟前
2
0
OSChina 周三乱弹 —— 谈什么对象?睡什么觉?

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @胖达panda :最肯忘却古人诗,最不屑一顾是相思。分享童丽的单曲《红豆生南国》: 《红豆生南国》- 童丽 手机党少年们想听歌,请使劲儿戳(这...

小小编辑
39分钟前
185
5
stylus

stylus基础教程,stylus实例教程,stylus语法总结

miaojiangmin
今天
5
0
PHP生成CSV之内部换行

当我们使用PHP将采集到的文件内容保存到csv文件时,往往需要将采集内容进行二次过滤处理才能得到需要的内容。比如网页中的换行符,空格符等等。 对于空格等处理起来都比较简单,这里我们单独...

豆花饭烧土豆
今天
2
0
使用 mjml 生成 thymeleaf 邮件框架模板

发邮件算是系统开发的一个基本需求了,不过搞邮件模板实在是件恶心事,估计搞过的同仁都有体会。 得支持多种客户端 支持响应式 疼彻心扉的 outlook 多数客户端只支持 inline 形式的 css 布局...

郁也风
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部