Java语言中编译执行和解释执行的区别
编译执行和解释执行是不同语言之间的特性,所有的java都是编译执行的。 如果不是编译执行,其实已经完全不用java的编译器。那么只是一个使用java语法的另一种语言而已。
编译执行是指把代码先编译成机器码。然后按顺序运行,如果编译中有任何异常,都无法继续运行。
java的编译就是把java转换成class。而解释执行则是运行到哪一行代码就执行哪一行代码。如果其他代码有错误但没有运行到,一般不会影响。
比较起来,编译执行速度要快的多。而解释执行则在于比较灵活。可以动态修改。甚至可以在代码运行到指定语句之前,修改该代码。
怎么启动JAVA里的JVM
方法如下:
1、虚拟机的启动入口位于share/tools/launcher/java.c的main。
2、配置JVM装载环境。
3、解析虚拟机参数。
4、设置线程栈大小。
5、执行Java main。
配置JVM装载环境的方法:
1、Java代码执行时需要一个JVM环境,JVM环境的创建包括两部分:JVM.dll文件的查找和装载,我们来看一段Jre通过环境的路径和系统版本寻找jvm.cfg文件的代码。
说明: 1)GetJREPath()查找当前JRE环境的所在路径。
2)ReadKnownVms()读取JRE路径\lib\ARCH(CPU构架)\JVM.cfg文件,其中ARCH(CPU构架)通过GetArch方法获取,在window下有三种情况:amd64、ia64和i386。
3)CheckJvmType确定当前JVM类型,先判断否通过-J、-XXaltjvm=或-J-XXaltjvm=参数指定,如果没有,则读取JVM.cfg文件中配置的第一个类型。
4)GetJVMPath根据上一步确定的JVM类型,找到对应的JVM.dll文件。
java main方法启动时jvm做了什么
当我们写一个Java类,并重写Main方法,程序就能运行起来。main方法的背后,程序为什么能运行,jvm究竟做了什么处理?要理解这些,就需要了解jvm的设计原理以及启动的流程。
虚拟机的启动入口位于share/tools/launcher/java.c的main方法,整个流程分为如下几个步骤:
1、配置JVM装载环境
2、解析虚拟机参数
3、设置线程栈大小
4、执行Java main方法