Java基础复习(一):JVM、JDK、JRE;Java与C++的区别
Java语言的特点
1、面对对象(封装、继承、多态)
2、多线程
3、解释与编译共存
4、安全性,可靠性
5、平台系统无关性(针对不同系统的不同Java虚拟机)
6、支持网络编程
JVM、JDK、JRE
JVM
JVM:能够运行字节码文件(.class文件)的虚拟机。Java针对不同的系统(Windows、Linux)有特定的JVM实现,保证了与平台系统无关性的特点,保证了如果使用相同的字节码文件,就会有相同的结果。
JVM详解
Java程序实现的步骤:.java文件(源代码)—>javac命令(JDK中的javac编译)编译成.class文件(JVM可以理解的字节码文件)—>JVM实现.class文件,并转换为二进制机器码。
编译器:JIT编译器、JDK9引入的AOT
JIT编译器:当 JIT 编译启用时(默认是启用的),JVM 读入.class 文件解释后,将其发给 JIT 编译器,JIT 编译器将字节码编译成本机机器代码。原本JVM 通过解释字节码将其翻译成对应的机器指令,需要逐条读入,逐条解释翻译,执行速度必然会比可执行的二进制字节码程序慢很多。所以引入JIT,JIT在运行时,会把翻译过的机器码保存起来,以备下次使用,
JIT编译器详解
JRE
JRE:是Java运行时的环境,用来运行已编译好的Java程序。包括JVM,Java类库,Java命令和一些基础构件。只有JRE不能进行Java程序开发。
JDK
JDK:拥有JRE拥有的一切,加上编译器和其他工具。可以用来创建,编译Java程序。
Java与C++的相同和不同
相同:1、都是面向对象的一种语言,支持封装、继承、多态
不同:1、指针 :Java语言不提供指针来访问内存,并且增添了自动的内存管理功能,从而有效地防止了c/c++语言中指针操作失误。
2、多重继承:C++支持多重继承;Java不支持多重继承,只能单继承,但对于接口可以多重实现。
3、内存管理机制:Java有自动的内存管理机制,不需要程序员手动管理。
4、数据类型及类 :Java是完全面向对象的语言,所有函数和变量部必须是类的一部分。对象将数据和方法结合起来,把它们封装在类中。而c++允许将函数和变量定义为全局的。
5、操作符重载 :Java不支持操作符重载。操作符重载被认为是c十十的突出特征。
6、预处理功能 :Java不支持预处理功能。c/c十十在编译过程中都有一个预编译阶段,即预处理器。
7、字符串或字符数组:C/C++语言中字符串或字符数组的最后都会加上‘\0’表示结束的字符。Java中没有。详细解释
8、异常处理: JAVA中的异常机制用于捕获例外事件,增强系统容错能力 。而C++则没有如此方便的机制。