Java一次编译到处运行的原理就是基于JVM,JVM本质上就是一个应用程序,用来和操作系统交互,所有产生字节码文件的语言都要将编译后的字节码交由JVM进行运行,JVM内部一般使用堆栈进行操作代替常用系统架构中的寄存器,但是这样就会导致JAVA命令复杂同时运行时间也会有较大变化。
JVM启动流程
其切入点是以下函数
首先进行初始化并选择JRE版本
接着使用函数创建JVM执行环境,确定数据模型,以及一些配置,进而动态加载jvm.so这个共享库,将其中的相关函数导出并初始化,而启动JVM的函数也在其中,接着启动新线程后开始执行真正的Java程序,也就是主方法。
1、配置JVM装载环境 2、解析虚拟机参数 3、设置线程栈大小 4、执行JavaMain方法
JNI调用本地方法, JNI调用C或其他语言的程序,使用native关键字标记程序