当前位置:网站首页>3:第一章:认识JVM规范2:JVM规范,简介;

3:第一章:认识JVM规范2:JVM规范,简介;

2022-07-05 22:53:00 小枯林

说明:

(1)简单介绍JVM规范,了解JVM规范是什么东西;

目录

1.JVM规范,简介;

2.JVM规范,涵盖了哪些内容;(PS:虚拟机规范没必要过于深究,了解即可)


虚拟机一定要有规范(或称标准),比如class文件如果没有一定的规范的话,虚拟机就无法认识这个class;

1.JVM规范,简介;

(1)虚拟机不认识.java文件,其只认识.class文件;

          ● 我们编写.java程序的时候,我们需要遵守java的语法规范;

          ● 我们往虚拟机中仍.class文件的时候,这个.class文件要符合虚拟机的规范;

(2)只要一个文件是一个【符合虚拟机的规范的.class文件】,虚拟机都可以装载并运行;

          ● 那么此时,就变相提供了开发语言的无关性;

          ● 比如,我们使用java语言开发的程序可以编译为【符合虚拟机的规范的.class文件】;;;我们使用jRuby语言开发的程序也可以编译为【符合虚拟机的规范的.class文件】;

          ● 即,只要某个语言写的代码,可以被编译为【符合虚拟机的规范的.class文件】,这些.class都是可以被虚拟机装载并运行的;

          ● 甚至,我们什么语言都不用,而是直接写.class文件(比如ASM,CGLib等技术;;这些技术在Spring框架中,都有大规模的应用);

          ● PS:虚拟机不仅仅有针对.class的规范,还有很多其他规范;

(3)JVM的规范指出,JVM可以用【软件模拟并运行于各种现存计算机系统】来实现,也可以使用硬件来实现;(我们一般不考虑硬件实现)

……………………………………………………

(4)JVM的规范,只是规定了该做什么;其并没有规定我们该如何是具体实现;

          ● 所以,针对这同一份虚拟机规范,不同的虚拟机厂商都有自己的实现方式;

          ● 那么,如此一来,同一个程序,放到不同厂商的虚拟机中跑的话,执行的过程与细节并不会完全一样;

2.JVM规范,涵盖了哪些内容;(PS:虚拟机规范没必要过于深究,了解即可)

(1)字节码指令集(相当于中央处理器CPU);

(2)Class文件的格式;

(3)数据类型和值;

          ● 比如这些值的类型、范围、基本实现方式的要求;

(4)运行时数据区;

          ● 我们写的java程序,跑起来的时候,肯定要操作一些数据;

(5)栈帧;

(6)特殊方法;(规范规定的,虚拟机要提供的一些特殊方法的实现)

(7)类库;(要求虚拟机要支持一些类库,以提供一些基本的功能,或者说应用程序无法提供的功能;;;比如对JNI的支持,跟硬件的交互;;;如果虚拟机不提供这些功能的话,应用程序是搞不定的;)

(8)异常的一些处理;

(9)虚拟机的启动、加载、链接和初始化等;

……

在Oracle的官网【Java SE Specifications】就有可以去下载每个版本的虚拟机的规范;

也可以在【Java Downloads | Oracle】上去下载JDK;

原网站

版权声明
本文为[小枯林]所创,转载请带上原文链接,感谢
https://wgy-coder.blog.csdn.net/article/details/125628043