平台无关性、机器码、字节码、与C++区别

[TOC]

无关性:

在一个计算机上编译得到的字节码文件(就是.class文件),可以复制到任何一个安装了Java运行环境的计算机上直接运行。然后字节码文件由虚拟机负责解释执行,即Java虚拟机将字节码翻译成本地计算机的机器码,然后将机器码交给本地的操作系统运行。

C/C++程序是依赖平台的:C/C++源程序所在的特定平台对其源文件进行编译、链接,生成机器指令,即根据当前平台的机器指令生成可执行文件 不能保证在所有平台上都能正确的运行,其原因是不同平台可能具有不同的机器指令

Java在计算机的操作系统上又提供了一个Java运行环境——JRE,只要平台提供了Java运行环境,Java编写的软件就可以在其上运行。

机器码

机器码是电脑的CPU可直接解读的数据,通常意义上来理解的话,机器码就是计算机可以直接执行,并且执行速度最快的代码。

字节码

字节码(Bytecode)是一种包含执行程序的二进制文件字节码是一种中间码,在运行时通过JVM(JAVA虚拟机)做一次转换生成机器指令,因此能够更好的跨平台运行。

与C++区别

Java 是纯粹的面向对象语言,所有的对象都继承自 java.lang.Object,C++ 为了兼容 C 即支持面向对象也支持
面向过程。
Java 通过虚拟机从而实现跨平台特性,但是 C++ 依赖于特定的平台。
Java 没有指针,它的引用可以理解为安全指针,而 C++ 具有和 C 一样的指针。
Java 支持自动垃圾回收,而 C++ 需要手动回收。
Java 不支持多重继承,只能通过实现多个接口来达到相同目的,而 C++ 支持多重继承。

汇编

汇编代码通常意味着机器的母语(所谓的机器语言)的人类可读形式