前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JVM简介

JVM简介

作者头像
栗筝i
发布2022-12-01 21:05:23
2090
发布2022-12-01 21:05:23
举报
文章被收录于专栏:迁移内容迁移内容

JVM它是Java Virtual Machine 的缩写,主要是通过在实际计算机模仿各种计算机功能来实现的,组成部分包括堆、方法区、栈、本地方法栈、程序计算器等部分组成的,其中方法回收堆和方法区是共享区,也就是谁都可以使用,而栈和程序计算器、本地方法栈区是归JVM的。Java能够被称为“一次编译,到处运行”的原因就是Java屏蔽了很多的操作系统平台相关信息,使得Java只需要生成在JVM虚拟机运行的目标代码也就是所说的字节码,就可以在多种平台运行

一、虚拟机

虚拟机是一种抽象化的机器,可以执行抽象化的指令。一般分为:系统级虚拟机和程序级虚拟机。

  • 系统级虚拟机,在实际的操作系统中对物理机的模拟,有自己完善的抽象的物理架构,例如:处理器、堆栈、寄存器等,典型软件产品有:Vmare 以及 Visual Box。
  • 程序级虚拟机,专门为执行单个软件程序产生,典型软件产品有:Java虚拟机,需要注意的是Java虚拟机不止可以运行Java语言编写的软件。

二、JVM虚拟机

了解了什么是虚拟机,我们再看什么是 Java虚拟机。

Java虚拟机可以看做是一台抽象的计算机,如同真实的计算机那样,它有自己的指令集以及各种运行时内存区域,它与Java语言没有必然的联系,只与特定的二进制文件——class 文件格式关联(字节码文件),可以通过Java语言或者其他语言编写的程序编译成class文件,然后在Java虚拟机上运行。Java虚拟机有以下二个特点:

①、语言无关

Java虚拟机只和class文件关联,所以只要你编写程序的语言能够编译成class文件,那么都能够在Java虚拟机上运行。

②、平台无关

Java从诞生之初就宣传的一个口号:一次编写,到处运行。

也就是说Java是一个跨平台的语言,那么Java是如何实现跨平台的呢?

其实Java之所以跨平台是因为Java虚拟机的适配,不同的系统实现不同的Java虚拟机。Java虚拟机就相当于操作系统和应用程序之间的中介,每种平台安装适应该平台的Java虚拟机,那么我们编写的程序当然能够在任意平台运行。

三、JVM发展史

JDK1.0发布时自带的虚拟机->Sun Classic VM

Sun Classic VM是最早的商用虚拟机,但是由于技术所限他的运行速度特别的慢.

JDK1.2发布时,发布一个名为Exact VM

由于一开始的虚拟机运行编译代码太慢,java的开发团队一直优化,并且有了Exact VM这个高性能虚拟机的模型

JDK1.3时 Sun HotSpot VM变成了默认的虚拟机

Sun HotSpot VM是我们见得最多的虚拟机,它是前身是一家小公司以开发一个相当于c 50%以上性能的虚拟机为目的开发的优秀的虚拟机,最终这家公司被Sun公司收购,Sun HotSpot VM集合了前两个虚拟机的优点

直到现在(JDk1.8)

目前为止JDk发布到了1.8版本,默认使用的虚拟机都是HotSpot

四、JRE、JVM、JDK

  • JDK是Java程序员常用的开发包、目的就是用来编译和调试Java程序的。
  • JRE是指Java运行环境,也就是我们的写好的程序必须在JRE才能够运行。
  • JVM是Java虚拟机的缩写,是指负责将字节码解释成为特定的机器码进行运行,值得注意的是在运行过程中,Java源程序需要通过编译器编译为.class文件,否则JVM不认识。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-10-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、虚拟机
  • 二、JVM虚拟机
  • 三、JVM发展史
  • 四、JRE、JVM、JDK
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档