参考文献:《Java面向对象程序设计(第二版)》 耿祥义 著
一、平台无关性
1、机器指令
应用程序经过操作系统和处理器来完成程序的运行。
平台=操作系统(OS)+处理器(CPU)
每个平台具有独特的机器指令。机器指令是有0和1组成的序列代码。
2、对比C/C ++:
C/C++根据当前平台的机器指令生产可执行文件,那么这个可执行文件由当前平台的机器指令构成。
更换平台后,可能需要修改源程序,并针对新的平台重新编译源程序。
3、Java虚拟机(JVM)
Java与其他语言相比,最大的优势就是平台无关性。
因为Java提供Java运行环境(Java Runtime Environment,JRE),JRE由Java虚拟机(Java Virtual Machine,JVM)、类库以及一些核心文件组成。
JVM 的核心是字节码指令,一种可被JVM识别、执行的由0、1组成的序列代码。Java针对不同平台提供的JVM的字节码指令都是相同的。
过程如下:
Java代码 经过Java编译器编译 字节码文件,
字节码 经过JVM解释、运行 平台所在机器码。
二、多线程
Java内置对多个线程的支持。C++没有内置多线程机制,必须调用操作系统的多线程功能来进行多线程程序的设计。
三、安全
浏览器内置的Java运行环境不允许Java Applet程序访问当前浏览器上下文环境以外的其他部份。
四、动态
Java程序基本组成单元是类,有些类是用户自己编写的,有些类是从类库中引入的,有些类是动态装载的。对比C/C++,当其类库升级之后,如果要使C/C ++程序具有新类库提供的功能,程序必须被重新修改、编译。