必知必会JVM一-什么是JVM?

简介: 必知必会JVM一-什么是JVM?

1. 前言


大家都知道,Java程序设计语言最早的口号就是,Write Once,Run Anywhere,一次编写,到处运行。只实现一次编码。可以再任何平台运行。那就吸引了大批的开发者进行尝试,不需要在为不同的操作系统上做适配。那么JAVA是怎么实现这种方式的呢?C语言我只编写了一次,也可以在windows和linux下运行呢?那什么叫跨平台呢?我们来以次解答。


2.跨平台的方式


跨平台主要有两种方式,一种是运行跨平台(JAVA),一种是编译跨平台(C,GO)。



2020052417560386.jpg


编译跨平台


编译跨平台例如c语言,程序写好之后,在windows下编译成exe,在linux编译成可以执行文件.这就是为什么C写一次也可以在不同的系统下进行运行了。但是需要在对应的系统上面对源码重新进行编译,如果用到了系统底层的一些函数,如果没有做兼容,可能会出现程序不兼容的问题。


20200524173224178.png


运行跨平台

运行跨平台就是指我们java程序经过编译成.class文件,由java虚拟机进行解析成对应的机器字节码,在对应的机器上运行。相当于运行JAVA的机器上都部署了一套统一的环境,由这个环境去运行JAVA程序。那提供这个环境的就是JAVA的虚拟机


20200524173214252.png


3.什么是虚拟机?


虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java虚拟机屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。


4.JAVA开发包


在大家安装JAVA JDK的时候,一般会有JDK和JRE两个比较重要的文件夹。那么热门分别是什么呢。可以见下图。

20200524173531410.png

我们平时开发依赖的是JDK,因为它提供了很多的工具包。还有一些常用的命令工具。JRE是JAVA的基本运行环境。他们的对应关系可以见官网的这张图。


20200524174207525.png


课件JDK其实是包含JRE的。单JDK比JRE多了一些工具命令。因此以后面试官再问你JDK和JRE是什么区别的时候,别再说他们俩是一样的东西了。

5、为什么学习JVM

既然JVM是JAVA已经给我们提供好了,那么我们为什么要学习JVM呢?


20200524175152613.png


主要想精通JAVA肯定要了解JAVA的运行原理啦,并且对于代码优化以及OOM异常等各种问题排查都能提供很多的思路。当然,最重要的是为了赢得同时崇拜的目光,进行装逼啦~哈哈。



20200524175520365.gif


今天先简单介绍这里,下章我们介绍下JVM重点的运行时数据区。

 

学习JAVA的童鞋可以点个关注哈,互相交流JAVA经验。

目录
相关文章
|
8天前
|
Java
jvm
jvm就是我们常说的java虚拟机,他是整个java实现跨平台的最核心 的部分,所有的java程序会首先被编译为.class的类文件,这种类文 件可以在虚拟机上执行。也就是说class并不直接与机器的操作系统 相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释 给本地系统执行。 只有jvm还不能成class的执行,因为再解释class的时候jvm需要调用 解释所需要的类库lib,而jre包含lib类库。jvm屏蔽了与具体操作系 统平台相关的信息,使得java程序只需生成在java虚拟机上运行的目 标代码(字节码)就可以在多种平台上不加修改地运行。
13 1
|
8天前
|
存储 缓存 Java
JVM简单总结
Java运行时数据区包括:程序计数器、虚拟机栈、本地方法栈、堆空间和方法区(元空间)。这些区域各自承担不同的功能,如存储局部变量、方法调用信息、对象实例及运行时常量池等。其中,堆空间分为伊甸园、幸存者和老年代区域,方法区则包含类型信息、静态变量等。
|
8天前
|
存储 算法 Java
JVM简单理解
JVM简单理解
7 0
|
8天前
|
存储 算法 Java
|
8天前
|
存储 安全 前端开发
|
8天前
|
存储 算法 Java
|
8天前
|
算法 Java Linux
深入理解JVM - Shenadoah
深入理解JVM - Shenadoah
57 1
|
8天前
|
缓存 算法 Java
【每日一面】关于JVM
【每日一面】关于JVM
20 0
|
9月前
|
存储 缓存 算法
JVM初探
JVM初探
|
10月前
|
存储 安全 算法
jvm的组成
jvm的组成
52 0

热门文章

最新文章