用户态的,只有当你需要访问硬件或者是从虚拟机出来的时候才会进入内核态,但是处理完就出来了。
明显是虚拟机了,你知道程序运行需要一个main函数的了,那包含这个函数的class我们可以称之为Main Class,那么由谁来调入和调用呢?
虚拟机包含很多class loader,这些class loader实际是个责任链,有优先级关系的,虚拟机还要维护内存空间,还要做垃圾收集,这些必须的初始化工作都会在程序运行开始最先完成,不知道你看过线程栈信息没有,看到daemon这个词么?守护线程就是虚拟机的提供的。
1.Java语言运行的过程
Java语言写的源程序通过Java编译器,编译成与平台无关的‘字节码程序’(.class文件,也就是0,1二进制程序),然后在OS之上的Java解释器中解释执行。
也相当与
注:JVM(java虚拟机)包括解释器,不同的JDK虚拟机是相同的,解释器不同。
2.JVM:
JVM是java的核心和基础,在java编译器和os平台之间的虚拟处理器。它是一种利用软件方法实现的抽象的计算机基于下层的操作系统和硬件平台,可以在上面执行java的字节码程序。
java编译器只要面向JVM,生成JVM能理解的代码或字节码文件。Java源文件经编译成字节码程序,通过JVM将每一条指令翻译成不同平台机器码,通过特定平台运行。
JVM执行程序的过程 :
I.加载。class文件
II.管理并分配内存
III.执行垃圾收集
JRE(java运行时环境)由JVM构造的java程序的运行环境
先编译 命令: javac JAVA文件路径
,生成class文件
再 运行 命令:java class文件路径
通常情况下新手学习JAVA 首先要配置JAVA环境,请上网找环境的配法,很多。
第二步测试。开始--CMD--输入“javac” 有显示参数 则证明安装环境成功。
第三步。新建一个TXT文件。里面输入 --
public class Helloworld{
public static void main(String args[]){
System.out.println("helloworld!");
}
}
文件命名Helloworld.txt这里很重要,名字要和类名相同。
第四步。开始--CMD--(找到文件的目录)输入“javac Helloworld.java”
输入“java Helloworld!”
新人一般都是这么开始的。