共计 1868 个字符,预计需要花费 5 分钟才能阅读完成。
JVM 是什么 jvm 和 Java 的关系
JVM 是什么
虚拟机是一种 抽象化的计算机 , 通过在理论的计算机上仿真模仿各种计算机性能来实现的。Java 虚拟机有本人欠缺的硬体架构,如处理器、堆栈、寄存器等,还具备相应的指令系统。Java 虚拟机屏蔽了与具体操作系统平台相干的信息,使得 Java 程序只需生成在 Java 虚拟机上运行的指标代码(字节码),就能够在多种平台上不加批改地运行。
所谓的 java 虚拟机,就是一台虚构的机器。它是 一款软件,用来执行一系列虚构计算机指令,大体上虚拟机能够分为零碎虚拟机和程序虚拟机。visual Box、VMare 就属于零碎虚拟机。他们齐全是对物理计算机的仿真,提供一个可运行残缺操作系统的软件平台。而 java 虚拟机就是典型程序虚拟机,它专门为执行单个计算机程序而设计,在 java 虚拟机中执行的指令咱们称之为 java 字节码指令。
比方一台服务器上运行着两个用 Java 编写的程序,一个博客零碎,一个电商零碎,那么这两个 Java 程序、Java 虚拟机、服务器之间是什么关系呢?
从上图能够看进去,Java 写的博客零碎,电商零碎都是运行在 jvm 之上,这两个 Java 程序启动也对应着会启动两个 JVM 实例。JVM 是运行在服务器的零碎之上,服务器能够是 linux 零碎,能够是 windows 零碎,能够是 centos 零碎,各种零碎都能够。这也就是常说的 Java 是一次编译到处运行。可能这么说还是不通俗易懂,至多我刚开始学 Java 的时候我的老师这么说我就没有了解。那么我就说说我本人工作后的了解。
咱们跑 Java 程序之前首先必定是装 jdk,咱们在 windows 装 jdk 环境是用的 windows 版本的 jdk,在 linux 上装 jdk 用的 linux 版本的 jdk;jdk 咱们就能够了解为由 Java 程序设计语言、Java 虚拟机、Java 类库组成(Java Development kit)。咱们写的 Java 程序能够在服务器上跑的前提是这个服务器装了 jdk 环境。也就是只有是服务器装了 jdk 环境,咱们用 maven 或者 gradle 或者其余工具编译打包好的 Java 程序 jar 包就能够间接运行,我不须要在 Java 程序外面去适配你的 windos 环境还是 linux 环境还是 centos 环境。
jvm 和 Java 的关系
jvm 和 Java 是什么关系呢,jvm 和 Java 是不是只能相互依存呢?我刚开始学 Java 的时候接触到 jvm,我就说这么认为的,因为 jvm 又叫 Java 虚拟机,所以我认为 jvm 就是专门为 Java 设计的。Java 有 Java 本人的标准,依据这个标准也衍生出多种不同的 jdk,比方 Oracle 的 jdk,sun 的 jdk(sun 曾经被 oracle 收买)IBM 的 jdk;虚拟机也有虚拟机本人的标准,依据这个标准也衍生出了多种不同的虚拟机,比方:武林盟主 HotSpot 虚拟机,小家碧玉 Mobile Embedded VM,天下第二 BEA JRockit/IBM J9 虚拟机等。然而 2018 年 4 月,Oracle Labs 新出了一个虚拟机 Graal VM,口号是:“Run Programs Faster Anywhere”与 Java 刚诞生时候的“Write Once,Run Anywhere”一唱一和,Graal VM 是一个增强版虚拟机,能够作为“任何语言”的运行平台应用,这里“任何语言”包含了 Java、Scala、Groovy、Kotlin 等基于 Java 虚拟机之上的语言,还包含了 C、C++、Rust 等基于 LLVM 的语言,同时反对其余像 JavaScript、Ruby、Python 和 R 语言等。Graal VM 能够无额定开销地混合应用这些编程语言,反对不同语言中混用对方的接口和对象,也可能反对这些语言应用曾经编写好的本地库文件。
虚拟机的介绍就先说到这,置信聪慧的你曾经对虚拟机有一个大抵的意识,下一章将虚拟机的内存构造,这也是当初 Java 面试的高频题,然而大多数人必定都只是理解堆,栈,程序计数器,本地办法栈,而后再理解一下堆中分了年老代,老年代这些,这也是培训机构教 jvm 局部的模板,然而每年培训出那么多人,你难道就不想比他们多晓得那么一点吗?各位人才应该都懂的,咱们下一章见。
各位人才,各位大佬,有不对的中央各位请不吝指教!都看到这儿了,点赞珍藏转发三连一下?祝各位早日找到女朋友。喜爱的敌人能够关注一下我的公众号敲代码的蛋蛋,一起成长,一起骚起来呀!!!
我是敲代码的蛋蛋,一个致力触摸编程门栏的老手。明天的你是否比昨天的你更优良了呢?
参考文档:
<< 深刻了解 Java 虚拟机 >> —- 周志明
<< 百度百科 >>