大家基本上都知道QT是跨平台的,Java也是跨平台的,那咱们今天就来聊聊他们两个:

相同点:都是跨平台

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

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

详细介绍:

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

当然,java也为此付出了运行效率的代价。因为一般程序直接通过操作系统由CPU执行,而java语言需要先通过JVM再映射到操作系统里,最后由CPU执行,执行过程多了一步。早期由于java语言主要使用解释性编译器,从而导致运行效率进一步降低。但是随着即时编译技术(JIT)的推出,尤其是硬件计算速度的大幅提升,java运行效率问题得以解决。

Qt平台并没有使用类似JVM的明显抽象层(但是原理类似,它底层封装了针对不同平台的类库,API之类的,只是这些都被上层做了封装,对开发者来说操作各种平台的接口都是一样的),因此在框架开发过程中处理各种平台问题的复杂性要超过java。

跨平台程序设计的难点在于兼容不同平台的进度调度、消息管理和文件处理等操作系统内核模块。按常规理解,如果开发一个跨平台程序设计框架,则需要抽象出所有支撑平台核心模块的原理和特色,然后针对每个所提供的功能API分别实现,工作量大增。Qt就采用了这种方式,为不同用户针对不同平台的开发提供了所对应的程序包(难怪会有针对不同操作系统的Qt包),而且Qt针对核心模块进行了简易化抽象处理,以较小的代价兼容所有平台。

以消息管理为例,Windows消息管理大致分为时间函数产生消息、消息传递到目标事件函数、目标函数处理消息3个步骤。但Qt处理消息管理采用了信号/槽机制,将传统的3步操作缩减到2步,通过connect函数将事件产生函数(信号)直接连接到目标事件处理函数(槽)。事件处理简单有效,易于实现兼容各种版本的操作系统。

QT的跨平台原理:

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

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

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

这是我个人的见解和采纳别人的总结的,希望各位补充,不管是实际开发还是面试中都会有帮助的。

qt for java_QT和Java的跨平台相关推荐

  1. 为什么java可跨平台执行,java为什么可以跨平台执行

    java为什么可以跨平台执行以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! java为什么可以跨平台执行 因为java程 ...

  2. java的跨平台特性是指_如何理解JAVA的跨平台特性

    1.java的跨平台,是指java在运行时是凌驾于os之上,是在jvm中运行的,跟os没有直接联系. 2.java跨平台主要是由java的编译方式决定的,因为java是通过jvm先编译再执行,它编译的 ...

  3. iQQ 基于WebQQ3.0协议Java开发 跨平台QQ客户端

    iQQ 使用Java语言跨平台开发,基于腾讯WebQQ 3.0网络协议.可以使用于Java所支持的各种平台上运行.作者基于Linux(Ubuntu 12.04)系统,使用IDE NetBeans?开发 ...

  4. java iqq_iQQ 基于WebQQ3.0协议Java开发 跨平台QQ客户端

    iQQ 使用Java语言跨平台开发,基于腾讯WebQQ 3.0网络协议.可以使用于Java所支持的各种平台上运行.作者基于Linux(Ubuntu 12.04)系统,使用IDE NetBeans?开发 ...

  5. 2.Java语言跨平台原理?

    2.Java语言跨平台原理? 理解 为主 Java程序并非是直接运行的,Java编译器将Java源程序编译成与平台无关的字节码文件(class文件),然后由Java虚拟机(JVM)对字节码文件解释执行 ...

  6. java的跨平台性是什么?原理是什么?

    跨平台性 Java 的跨平台性是指一个 Java 程序可以在不同的操作系统和硬件平台上进行部署和运行,而无需对源代码进行任何修改或重新编译.这有赖于 Java 虚拟机(JVM)的存在. 原理 JVM ...

  7. 简述java的跨平台性是什么,为什么具有跨平台性

    1.简述java的跨平台性是什么,为什么具有跨平台性 java源代码可以通过虚拟机编译运行在任何的系统上,也不是任何系统,只要该系统能够安装java虚拟机就能运行java程序.

  8. 【JAVA】Java概述(1、Java语言发展史;2、Java语言跨平台原理;3、JRE和JDK;4、JDK的下载与安装)

    Java概述 重新学习Java第一篇 文章目录 Java概述 1.JAVA语言发展史 1.1Java语言 1.2Java语言发展史 2.Java语言跨平台原理 2.1平台 2.2跨平台 2.3跨平台原 ...

  9. JDK、JRE、JVM的区别以及Java的跨平台原理简述

    1)JDK:Java开发工具包,是Java的核心,包括:JRE+编译.运行等命令工具: 2)JRE:Java运行环境,是运行Java程序所必须的环境的集合,包括:JVM+Java系统类库: 3)JVM ...

最新文章

  1. 【Linux】2_文件和用户管理
  2. Linux 中的驱动开发的初学者体会
  3. wxWidgets:wxMemoryFSHandler类用法
  4. CentOS7 minimal 安装
  5. oracle的scn增量备份,【Oracle】基于SCN的增量备份修复DataGuard GAP
  6. c语言中abc是什么类型,基金分为ABC三类,分别代表什么意思,哪一类适合普通投资者?...
  7. mysql 8.0认证失败_Node.js无法对MySQL 8.0进行身份验证
  8. Tensorflow 2.1 迁移学习 基于VGG
  9. Qemu之CPU mode介绍
  10. linux时间界面返回,Android开发教程:游戏过程中按Home键后返回游戏界面
  11. 2017级C语言大作业 - 小小冒险岛
  12. Single-Shot Calibration:基于全景基础设施的多相机和多激光雷达之间的外参标定(ICRA2021)...
  13. 会计教学APP软件,实现教学的快速运转
  14. IBM AppScan v9.0.3.12+安全规则17339下载、安装和使用
  15. 下载腾讯视频(mp4 格式)
  16. (翻译):如何部署Contrail网关以及它是如何与Contrail协同工作的
  17. Visual Studio2019配置备忘
  18. python读取excel多个sheet页并合并成一页
  19. win7连上WIFI但上不去网
  20. 逆向学习路线(推荐书籍)

热门文章

  1. 核心微生物分析_中国白酒发酵过程中的核心微生物群及其与环境因子的关系-微生物学报.PDF...
  2. HDU 3636-Dragon Balls
  3. APS(高级计划与排程)基本概念
  4. 以前写过的ajax基础案例(王欢-huanhuan)
  5. v–meca仿真软件下载_进入工作软件–简介
  6. 知乎ajax采集,胖鼠采集WordPress插件教程-WP自动采集和发布简书,微信公众号,知乎等任意网站...
  7. c语言编程题改错题怎么改,c语言编程改错题.doc
  8. 【转载】入坑KeePass(七)Keepass 2.x 之 同步与触发器
  9. 如何把flv转换成mp3格式 音频转换器哪个好
  10. 英汉互译教程---生词