相同点:都是跨平台

不同点:Java 的运行是建立在虚拟机上的,在虚拟机上 一次编译到处运行,但虚拟机是平台各异的,执行代码格式统一。

Qt 程序的运行是建立在 Qt Framework上的,一次编码到处编译,但Framework是平台各异的,编程接口统一。

1、Qt 相当于 Java 中的 (SWT 或者 SWING) + Collections + Thread + Java3D + Network + ...

唯一可以挂上关系的 就是 他们都跨平台

Java 的运行是建立在虚拟机上的,在虚拟机上 一次编译 到处运行。

但虚拟机是平台各异的,执行代码格式统一。

Qt 程序的运行是建立在 Qt Framework上的。一次编码,到处编译。

但Framework是平台各异的,编程接口统一。

说到速度,Java 也没有大家说的那样慢,但是 或多或少 也会慢一点 约 50~70% 的速度。

Qt 的速度 也不是全速

由于 信号 邮槽 机制的关系,回避 一般的 回调函数 慢 5~10 左右。

2、java也是跨平台的。但是从实现技术角度来看,它比Qt简单。java是把针对不同平台与操作系统的跨系统核心代码抽象出来,形成单独的JVM层(java virtual machine),也就是大家熟知的java虚拟机。java代码运行在JVM上,把跨平台java语言框架问题分解为在不同平台上设计JVM的问题,结构简单、逻辑清晰、易于实现(我自己,觉得就像c语言里的switch-case结构,linux结构则如何,windows则如何)。java语言设计本身不受平台的任何限制,可集中精力设计出受人欢迎的程序设计语言。只要针对不同大类的平台开发相应的JVM,代码就可以跨平台实现。

3、QT的跨平台原理:

和java一样,针对每一种OS平台,QT都有一套对应的底层类库,而接口是完全一致的。

因此只要是在QT库上开发的程序,放在任何一种平台下都可以编译运行(前提条件是:程序中没有使用某OS特有的机能,需要先在平台上安装qt)。也就是说在OS和应用层之间,增加了一个平台层来保证可移植性。

Qt跨平台是指 代码跨平台而不是编译出来的文件跨平台(区别于java的jar包),同一份代码需要放到另一个平台上时,需要重新编译。