1. JAVA语言特性(开源、免费、跨平台、纯面向对象) :
* 简单性
相对C++而言,C++中支持多继承、有指针,而JAVA不需要支持复杂的多继承也屏蔽了指针的概念。
JAVA底层是C++实现的。
*面向对象
JAVA是纯面向对象
*可移植性(跨平台)
JAVA程序一次编译,不做代码的修改,可以在不同的平台进行运行(windows系统、Linux系统等)。
windows操作系统和Linux操作系统内核不同,所以两个操作系统执行指令的方式也不一样。显然,同一份JAVA程序无法直接和操作系统打交道,因为操作系统执行原理不同。
为了达到跨平台的目的,将JAVA程序放在一台虚拟计算机当中,即JAVA虚拟机,简称JVM。然后,JAVA虚拟机再和底层的操作系统打交道。
官网下载对应版本的JDK(JAVA开发工具包)时,底层是对应版本的JVM。
*多线程
举例: 一个人干活速度慢,多个人同时干这个活速度更快
*健壮性
自动垃圾回收机制,简称GC机制。
JAVA语言运行过程中产生的垃圾是自动回收
*安全性
开源
......
2. JAVA程序加载和执行:
* JAVA程序运行有两个阶段:编译和执行
(1)编译阶段
编译阶段的主要任务是检查JAVA源程序是否符合JAVA语法,符合则生成正常的字节码文件( ***.class ),不符合则无法生成字节码文件。
字节码文件中不是纯粹的二进制,无法在操作系统中直接执行。
编译阶段的过程:
1、新建 ***.java文件,该文件为JAVA源代码;
2、利用JDK中自带的javac.exe命令进行编译;
javac.exe在DOS窗口使用:javac JAVA源文件的路径
javac.exe是一个JAVA编译工具/命令
* 一个JAVA源文件可以编译生成多个***.class文件。
* 字节码文件***.class是最终要执行的文件,生成字节码文件后删除JAVA源代码,不影响JAVA程序的执行,但不要删除。
* 编译完成后,可以将***.class文件拷贝至其他系统中运行。(跨平台)
(2)运行阶段
JDK中另一个工具/命令叫做java.exe,这个java.exe是负责运行阶段。
java.exe在DOS窗口使用:java 类名
例如硬盘上有个A.class,那么,这么用:java A
注意不要这么用:java A.class (错误)
运行阶段的过程:
1、打开DOS命令窗口
2、输入:A.class
3、java.exe会启动JAVA虚拟机(JVM),JVM会启动类加载器ClassLoader
4、ClassLoader会去硬盘上搜索A.class文件,找到该文件将字节码文件装载到JVM中
5、JVM将A.class字节码文件解释成二进制101000110这样的数据
6、然后操作系统执行二进制和底层硬件平台进行交互