JDK,JRE,JVM如何理解
JDK,JRE,JVM如何理解
操作方法
- 01
JDK:Java Development Tookit,java开发工具包,是整个java核心,包括了java运行环境(JRE,java runtime environment),一堆java工具(javac、java、jdb、javap等)和java基础类库(即java API包括rt.jar) Ps:jdk里很多exe需要jre支持
- 02
JVM:Java Virtual Mechinal。Java虚拟机,是JRE的一部分,是一个虚拟出来的计算机,是通过在实际计算机上仿真模拟各种计算机功能来实现的,JVM有自己完善的硬件架构,如处理器,堆栈,寄存器等,还具有相应的指令系统。 JVM的主要工作时解释自己指令集(即字节码),并映射到本地的cpu的指令集或os系统调用,JAVA语言是跨平台运行的,其实就是不同的操作系统使用不同的JVM映射规则,让其与操作系统无关,完成了跨平台性。JVM对上层java源文件不关心,它关注的只是由源文件生成的类文件(class file),类文件组成包括JVM指令集,符号表以及一些补助信息。
- 03
开发实际情况:我们利用JDK(调用java api)开发属于我们自己的java程序后,通过JDK中编译程序(javac),将我们的文本java文件编译成java字节码,JVM解析这些字节码,映射到cpu指令集或os的系统调用。 Jvm启动有入口,main可以,tomcat也有自己的启动方式,启动jvm之前已经编译好了。启动jvm后,如果用到哪个类,就会把那个类的字节码加载到内存。局部变量,也就是方法内部的变量,是运行时执行到那个方法,才去开辟那个变量的内存空间,由于线程运行的变量都放在栈内存,为了把线程的变量隔离,每个线程都有独立的栈祯。
- 04
运行时数据区域:java虚拟机在执行java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有的区域则是依赖用户线程的启动和结束而建立和销毁。