jvm中文为java虚拟机,java语言流行很大一部分是因为jvm的功劳。
jvm有以下这些好处:
1. 一次编译,到处执行
java为各种操作系统都定制了jvm,作为.class文件与操作系统的沟通站,所以不管在哪里写的java代码,只要符合java代码规范,就可以运行在任何一台装有jvm的虚拟机上,不需要任何修改
2. 自动管理内存,自动垃圾回收功能
自动管理内存使得java程序员只需要关注代码本身,不需要关注代码运行时的各种空间开销。由于实现了自动管理内存,那么就需要垃圾自动回收功能,如果没有这个功能,那么再好的java代码都不能持久运行,运行一会垃圾就会占满内存,而且java代码几乎没有直接操作内存的操作(有几个指令也是针对GC的),这就显得自动垃圾回收机制极为重要
java程序要运行,必须经过这几个阶段:
- .java文件经过编译得到.class文件
- 通过类装载器子系统把.class文件加载到内存中(后面的文章细讲)
- 执行(后面的文章细讲)
强化一下jvm,jdk,jre的关系
jre是运行java程序的基本单位 jre=jvm+运行jar包
jdk包含jre和核心开发api
JRE:JRE是java虚拟机运行的环境。JRE包含Java虚拟机(JVM),类库和其他文件,不包括编译器和调试器等开发工具。
这意味着您可以在JRE中运行代码,但无法在JRE中开发和编译代码。
jre = jvm+运行时需要的jar包
JVM:如上所述,JVM通过使用JRE提供的类,库和文件来运行程序。
JDK:JDK是JRE的超集,它包含JRE与开发工具(如编译器,调试器等)的所有内容。 jdk = jvm + 运行需要的jar包 + 开发工具