Java和c的跨平台特性

  • 跨平台

    我理解下的是跨平台:在不同的平台(windows、linux、xp等各种系统+CPU)下,源代码不需要重新编译便可运行

    不同的平台下对应的机器指令、操作系统机制有很大的差异。

Java跨平台原理

  • Java程序编译执行过程

    1. 源文件由编译器编译成.class字节码文件,javac.exe是编译器
    2. 字节码由Java虚拟机解释生成最终的机器代码来执行,java.exe是解释器,属于JVM的一部分
  • JVM

    JVM全称是Java Virtual Machine,也就是Java虚拟机。Java程序运行在虚拟机上,不同的平台有对应的自己的虚拟机版本

  • Java跨平台

    因此,跨平台的不是Java语言本身,实际上是.class文件。.class文件可以在任何运行JVM的平台上解释执行,不需要重新编译生成新的.class文件。

C语言的跨平台?

  • C程序编译过程

    1. 预处理:对宏、头文件等进行处理,生成最终需要编译的文件
    2. 编译:将高级语言代码文件编译为汇编语言文件(.s)
    3. 汇编:通过编译器将汇编语言编译成目标代码(.o/.obj)
    4. 链接:将一个程序执行需要的二进制文件关联起来,形成可执行文件(.exe)
  • C语言跨平台

    C语言不能跨平台,是因为生成的目标文件不能在不同的平台下执行,而是要用该平台下的编译器重新编译运行。

PS:

本文参考链接:https://blog.csdn.net/qq_36718740/article/details/82902754?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~all~first_rank_v2~rank_v25-3-82902754.nonecase