首先回顾Java最重要的两个命令
- javac 编译java源代码文件为字节码
- java 运行编译后的java程序
java 代码是在jvm里运行的,那jvm是如何运行起来的?java虚拟机的创建是通过JVM.dll完成的。
(1)查找jre路径
(2)根据CPU框架查找配置文件。jre路劲/lib/CPU框架/JVM.cfg
(3)在JVM.cfg找到JVM.dll
(4)装载JVM.dll,新建JVM实例
JVM在执行代码之前需要加载字节码,需要类加载器加载字节码,介绍几类类加载器
(1)Bootstap类加载器,属于JVM内核,随着JVM实例化创建
(2)ExtClassLoader,Java核心包加载器,由Bootstap类加载器实例化,负责加载 <Java_Home>/jre/lib/ext目录下的jar包或者加载通过ClASSPATH环境变量配置的jar包。编译或运行程序通过该加载器搜索依赖包。
(3)AppClassLoader,Java核心包加载器,由Bootstap类加载器实例化,负责加载应用程序的类集合
JVM是如何找到代码入口的呢?java命令可以通过类或者jar包的方式运行java程序,两种情况分开介绍一下
(1)class
1.加载Main Class
2.JVM查找指定的Main 方法
3.执行Main方法
(1)jar包
1.通过META-INF/MANIFEST.MF配置文件的Main-Class查找Main Class
2.加载Main Class
3.JVM查找指定的Main 方法
4.执行Main方法
运行Java应用程序大体流程:创建JVM =》加载java程序 =》运行