先看一张图片:
这个就是java虚拟机的运行过程:
java作为一种安全的,可编译的,平台移植的强类型语言,它的基础就是jvm虚拟机,那么就是说java代码的运行过程也就是jvm虚拟机的运行过程.对于我们java的学习者来说,jvm是机器机器重要的.
这里涉及到俩个名词:编译/运行
编译(compile)时左半部分图片,就是说把java语言编译成为字节码,这 .java就是我们写的代码,那么 .class就是编译之后的代码,我们称之为字节码.
-
运行(runtime)是右半部分图片,主要会涉及到几个部分
- :类的装载(loader):把编译过的 .class文件进行装载,这个部分会把用static声明的静态变量一起装载了.
- 字节码校验(byte codeverifer):对装载过的字节码进行校验,这个步骤可以有效的避免木马的侵入.也体现了java三大特性之一的代码安全性.
- 注释器(interpreter):字节码其实是jvm虚拟机认识的一种代码,但是你的电脑却是不认可这种代码的,所以在这里会把安全的字节码解释成为二进制的机器语言.
- 运行(runtime):二进制的机器语言开始运行.
- 交给硬件处理(hardware):交给硬件显示,说白了,无论是jdk,还是jvm都是一套代码,那么显示到你的机器还是需要硬件的支持的.
中间的那个network是网络加载,就是说可以从网络过来字节码进行运行操作(当然更可以本地的字节码过来了),正因如此,更需要运行阶段的自己吗校验了,不是吗?!
jvm的特性会继续介绍,谢谢,希望可以巩固自己,帮助别人!