目录
一、JDK、JRE、JVM
JDK:是Java Development Kit的缩写,意为Java开发工具包。JDK是整个Java的核心,包含以下组件:
Java编译器(javac):用于将Java源代码编译成字节码文件(.class文件)的工具。
Java运行时环境(JRE):包括Java虚拟机(JVM)和Java核心类库,用于执行Java程序。
调试工具:包括用于代码调试的工具,如jdb(Java Debugger)。
各种Java开发工具:包括与Java开发相关的各种工具,如javadoc(用于生成API文档的工具)、jar(用于打包Java类的工具)等。
Java类库:包含标准Java库(如java.lang、java.util等包)和其他扩展库,为开发人员提供了丰富的类和方法。
配置和管理工具:用于配置和管理Java开发环境的工具,如jconsole(Java监视和管理控制台)等。
JRE:是Java Runtime Environment的缩写,Java运行时环境。主要包括Java虚拟机(JVM)和Java基础类库(Class Library)。JRE可以让Java程序在不同系统上运行,如果想要运行有Java编写的程序时,需要安装JRE才可以运行。
JVM:是Java虚拟机。是JRE中的重要组成部分,JVM令Java程序实现一次编译到处运行。详解可看:JVM是什么?有哪些内容?有哪几个区域?_jvm里面都有什么-CSDN博客
二、Java程序编译运行流程
1、编译。使用javac对后缀名为.java的代码文件进行编译,生成字节码文件(二进制文件).class。
2、运行。使用Java命令来运行编译后的文件。包含main方法的类作为该Java程序的启动入口。
3、执行Java虚拟机。上一个步骤中会启动JVM(Java虚拟机),加载并执行编译后的字节码文件(class文件)。JVM负责将字节码文件翻译成特定平台的机器码文件。
4、程序输出。运行后产生一些输出,在控制台、日志文件中展示。
三、类加载
-
加载(Loading):
- 查找和导入类的二进制数据:从文件系统、网络等不同的来源查找并读取类的字节码。
- 创建Class对象:用读取到的二进制数据在方法区中创建一个代表这个类的Class对象。
-
验证(Verification):
- 文件格式验证:确保字节码文件符合Class文件格式规范。
- 元数据验证:确保类的元数据信息(如父类、接口等)符合Java语言规范。
- 字节码验证:通过数据流和控制流分析,确保字节码在运行时不会违反Java语言的安全约束。
- 符号引用验证:确保符号引用能够解析为具体的字段、方法和接口。
-
准备(Preparation):
- 分配内存:为类的静态变量分配内存并初始化为默认值(如0, null)。
- 常量池解析:解析类中的常量池。
-
解析(Resolution):
- 将常量池中的符号引用(如类名、字段名、方法名)替换为直接引用(如内存地址)。
-
初始化(Initialization):
- 执行类构造器<clinit>方法:类构造器是由编译器自动收集类中的所有静态代码块和静态变量赋值语句合并生成的。
- 初始化静态变量和静态代码块:按顺序执行类中定义的静态变量和静态代码块。
四、juc包
JUC全称Java.util.concurrent,是Java语言提供的一个并发编程工具包。它包含了一系列的工具类、线程池和原子变量等,用于简化并发编程的开发。
知识点包含:线程与进程,线程的创建,线程安不安全,锁,synchronized关键字和Lock(ReentrantLock实现了Lock接口),线程池等。