JVM-基本概念

1- 什么是JVM

1.1 什么是JVM

JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机, 是通过在实际的计算机上仿真模拟各种计算机功能来实现的。

1.2 主流虚拟机

虚拟机名称基本介绍
HotSpotOracle/Sun JDK和OpenJDK都使用HotSPot VM的相同核心
J9J9是IBM开发的高度模块化的JVM
JRockitJRockit 与 HotSpot 同属于 Oracle,目前为止 Oracle 一直在推进 HotSpot
与 JRockit 两款各有优势的虚拟机进行融合互补
Zing由Azul Systems根据HostPot为基础改进的高性能低延迟的JVM
DalvikAndroid上的Dalvik 虽然名字不叫JVM,但骨子里就是不折不扣的JVM

2- JVM与操作系统

为什么要在程序和操作系统中间添加一个JVM

Java 是一门抽象程度特别高的语言,提供了自动内存管理等一系列的特性。这些特性直接在操作系统上实现是不太可能的,所以就需要 JVM 进行一番转换。

从图中可以看到,有了 JVM 这个抽象层之后,Java 就可以实现跨平台了。JVM 只需要保证能够正确执行 .class 文件,就可以运行在诸如 Linux、Windows、MacOS 等平台上了。而 Java 跨平台的意义在于一次编译,处处运行,能够做到这一点 JVM 功不可没。

应用程序、JVM、操作系统之间的关系

JVM 与操作系统之间的关系:JVM 上承开发语言,下接操作系统,它的中间接口就是字节码。

JVM、JRE、JDK 的关系

JVM 是 Java 程序能够运行的核心。但是需要注意,JVM 自己什么也干不了,你需要给它提供生产原料(.class 文件) 。仅仅是 JVM, 是无法完成一次编译,处处运行的。它需要一个基本的类库,比如怎么操作文件、怎么连接网络等。而 Java 体系很慷慨,会一次性将 JVM 运行所需的类库都传递给它。JVM 标准加上实现的一大堆基础类库,就组成了 Java 的运行时环境,也就是我们常说的 JRE(Java Runtime Environment)
对于 JDK 来说,就更庞大了一些。除了 JRE,JDK 还提供了一些非常好用的小工具,比如 javac、java、jar 等,它是 Java 开发的核心。

代码示例

执行 HelloWorld.java

package cn.guardwhy.jvm;

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello Java!!!");
    }
}

Java 程序的执行过程

使用 JDK 的工具 javac 进行编译后,会产生 HelloWorld.class的字节码

结论:

==Java 虚拟机采用基于栈的架构,其指令由操作码和操作数组成。==这些字节码指令 ,就叫作 opcode。其中getstatic、ldc、invokevirtual、return 都是 opcode,JVM 就是靠解析这些 opcode 和操作数来完成程序的执行的。使用 Java 命令运行 .class 文件的时候,实际上就相当于启动了一个 JVM 进程。

最后JVM 会翻译这些字节码,常见的就是解释执行,将 opcode + 操作数翻译成机器代码。另外一种执行方式就是 JIT,也就是即时编译,它会在一定条件下将字节码编译成机器码之后再执行

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值