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


    说明:

    (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;

  • 相关阅读:
    【ConcurrentHashMap】JDK1.7版本源码解读与分析
    负载均衡下webshell连接nginx解析漏洞、sql注入第一关
    HTTP 协商缓存 Last-Modified,If-Modified-Since
    windows环境下安装多个任意版本的python环境
    老梗新玩「GitHub 热点速览 v.22.34」
    AI计算机视觉进阶项目(一)——带口罩识别检测(2)
    php 闭包
    Increment Selection 插件
    Go 实战|使用 Wails 构建轻量级的桌面应用:仿微信登录界面 Demo
    【Linux】权限管理
  • 原文地址:https://blog.csdn.net/csucsgoat/article/details/125628043