首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么java vitural机器规范仍然是1999版

在这个问答内容中,我们讨论了Java虚拟机规范的版本。Java虚拟机规范(Java Virtual Machine Specification,简称JVMS)是Java平台的核心组件之一,它定义了Java虚拟机(Java Virtual Machine,简称JVM)的行为和功能。Java虚拟机规范的版本与Java语言规范的版本相对应,例如Java SE 8对应的JVMS版本是Java SE 8 Edition。

在这个问题中,我们提到了Java虚拟机规范仍然是1999版,这是因为Java虚拟机规范的版本与Java语言规范的版本相对应,而Java语言规范的版本是基于发布年份命名的。例如,Java SE 8 Edition是在1999年发布的,因此它对应的JVMS版本也是1999版。

需要注意的是,Java虚拟机规范的版本与Java语言规范的版本是相关联的,但它们并不是完全相同的。JVMS定义了JVM的行为和功能,而Java语言规范则定义了Java编程语言的语法和语义。因此,即使JVMS的版本没有变化,Java语言规范也可能有所更新。

总之,Java虚拟机规范仍然是1999版,是因为它与Java语言规范的版本相对应,而Java语言规范的版本是基于发布年份命名的。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

你看到的所有地址都不是真的

先解释下一个困扰了我很久的问题:虚拟地址(vitural address)和逻辑地址(logical address)的区别。...你看到的所有地址都不是真的 下面这段 C 代码摘录自《操作系统导论 - [美] 雷姆兹·H.阿帕希杜塞尔》,依次打印出 main 函数的地址,由 malloc(类似于 Java 中的 new 操作)返回的堆空间分配的值...为什么说他是粗糙的呢,因为这种方法有一个问题:将全部的内存信息保存到磁盘太慢了!特别是当内存增长的时候。 因此,我们考虑把进程对应的内存一直留在物理内存中,在发生上下文切换的时候就切换到特定的区域。...操作系统会给每个进程分配一个虚拟地址空间(vitural address),每个进程包含的栈、堆、代码段这些都会从这个地址空间中被分配一个地址,这个地址就被称为虚拟地址。

41930

【面试题精讲】jclasslib

jclasslib是一个用于查看和编辑Java类文件的工具。它提供了一个图形界面,可以显示类文件的结构、常量池、字段、方法等信息,并且可以对这些信息进行修改。 2. 为什么需要jclasslib?...在开发Java应用程序时,有时候我们可能需要查看或修改已编译的Java类文件。而jclasslib正是为了满足这个需求而设计的工具。...jclasslib基于Java字节码解析库ASM来解析和修改Java类文件。ASM是一个轻量级的字节码操作框架,它提供了一组API,可以直接读取和修改Java字节码。...遵循Java字节码规范:在修改类文件时,需要遵循Java字节码规范,确保生成的类文件符合标准。 8....尽管jclasslib只能处理已编译的类文件,并且无法动态修改类的行为,但它仍然是一个强大而实用的工具,在开发和调试Java应用程序时非常有用。

23120

02.RabbitMQ简介

相反,它仍然是企业通信市场的主要参与者。并且在1997年Teknekron以TIBCO的形式作为一家独立公司再度出现。同年,微软也在消息通信市场崭露头角:微软消息队列MSMQ诞生。...为了解决这个问题,Java Message Service(JMS)在2001年诞生了。...JMS试图通过提供公共Java API的方式,隐藏单独MQ产品供应商提供的实际接口,从而跨越了壁垒和解决了互通问题。从技术上讲,Java应用程序只需针对JMS API编程,选择合适的MQ驱动即可。...时机总是如此的恰到好处,就在此时,AMQP规范的第一份公开草案也公之于世了。作为一份新的规范,AMQP正快速修订。这正是Erlang可以施展拳脚的地方。...但Joe实在喜欢Smalltalk,于是定购了一台Tektronix Smalltalk机器

1.1K20

笔记——JVM、DVM(dalvik)和ART之间的区别(二十)

,但JAVA编译后生成的.class字节码是在JVM上跑,需要由JVM把字节码翻译成机器指令,才能使JAVA程序跑起来。...根据JVM规范实现的具体虚拟机有几十种,主流的JVM包括Hotspot、Jikes RVM等,都是用C/C++和汇编编写的,每个JRE编译的时候针对每个平台编译,因此下载JRE(JVM、Java核心类库和支持文件...DVM没有遵循Java虚拟机规范,不能直接执行Java的.class文件,而是执行.dex文件。它使用的是寄存器架构而不是JVM中常见的栈架构。...安卓运行时从Dalvik虚拟机替换成ART虚拟机,并不要求开发者重新将自己的应用直接编译成目标机器码,也就是说,应用程序仍然是一个包含dex字节码的apk文件。...所以在安装应用的时候,dex中的字节码将被编译成本地机器码,之后每次打开应用,执行的都是本地机器码。移除了运行时的解释执行,效率更高,启动更快。

3.1K30

从内到外的实现JVM

JVM与Java语言规范 要了解JVM是如何实现的,首先必须要知道JVM到底是什么、不是什么,表面上应该提供怎样的功能。为此,JVM规范必读,而且应该时常放在手边参考。...而JVM的主要服务对象是Java编程语言。虽然JVM也可以支持众多其它语言,但JVM里的“J”仍然最重要,Java的语言特性影响了JVM的原始设计,所以Java语言规范也应该阅读。...特别是,JVM关于线程和同步相关的规定都是交由Java语言规范的相关章节定义的。 2....虽然也有几乎完全用Java语言实现的高性能JVM,例如Maxine VM与Jikes RVM,但它们都是研究性质的;商用JVM实现仍然是C与C++的天下。 这里我先推荐C++之父自己写的那本书来入门。...如果您只对Java语言和抽象的JVM有一定了解,那可以用《计算机组成及汇编语言原理》来入门。这本书比较奇葩,用JVM的字节码指令集来当作真实机器介绍体系结构的概念。

66230

JVM内存结构概述

Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。...比如下图:我们编译后产生的.class文件是二进制的字节码,字节码是不能被机器直接运行的,通过JVM把编译好的字节码转换成对应操作系统平台可以直接识别运行的机器码指令,JVM充当了一个中间转换的桥梁,这样我们编写的...,一个Java文件的执行过程为:Hello.java文件通过javac被编译为Hello.class文件,然后类装载子系统将class文件加载到运行时数据区,通过执行引擎去执行生成的机器指令。...不过无论如何划分,都与存放内容无关,无论哪个区域,存储的都仍然是对象实例,进一步划分的是为了更好地回收内存,或更快地分配内存。...根据Java虚拟机规范的规定,Java堆可以处于物理上不连续的内存空间中,只逻辑上是连续的即可。.

22920

【面试题精讲】javap命令

javap 是 Java Development Kit (JDK) 中的一个工具,用于反编译Java字节码文件。它可以将已经编译成字节码的Java类文件转换为可读性更高的文本形式。 2....为什么需要javap命令? 使用 javap 命令可以帮助开发人员了解和分析Java程序的内部结构和细节。...javap 实际上是通过解析Java字节码文件来获取相关信息并进行反编译。当我们运行 javap 命令时,它会加载指定的类文件,并根据字节码规范解析该文件的内容。...总结 javap 是一个非常有用的工具,它可以帮助开发人员深入了解和分析Java程序的内部结构和细节。通过反编译Java字节码文件,我们可以更好地理解和调试Java程序。...尽管 javap 无法完全还原源代码,并且只能查看已编译的类文件,但它仍然是一个非常有价值的工具。

11020

JVM系列第3讲:到底什么是虚拟机?

为什么不同系统上的软件无法安装,这是因为操作系统底层的实现是不一样的。对于 Windows 系统来说,exe 后缀的软件代码最终编译成 Windows 系统能识别的机器码。...与其他语言不同,Java 语言并不直接将代码编译成与系统有关的机器码,而是编译成一种特定的语言规范,这种语言规范我们称之为字节码。...这时候 Java 虚拟机就是一个翻译官,在 Linux 系统上翻译成 Linux 机器码给 Linux 系统听,在 Windows 系统上翻译成 Windows 机器码给 Windows 系统听。...所以虽然名字是 Java 虚拟机,但 Java 虚拟机与 Java 语言没有直接关系,它只按照 Java 虚拟机规范去读取 Class 文件,并按照规定去解析、执行字节码指令,仅此而已。...如果你够牛逼,你完全可以写一个编译器,将 PHP 语言代码编译成符合 Java 虚拟机规范的字节码文件,那么 Java 虚拟机也是可以执行的。

61830

究竟什么是Java虚拟机(JVM)?

为什么不能安装不同系统上的软件,因为操作系统的底层实现是不同的。对于Windows系统,exe后缀的软件代码被编译成能被Windows系统识别的机器代码。...与其他语言不同,Java语言不直接编译代码到系统相关的机器代码,而是将其编译成特定的语言规范,我们称之为字节码。...换句话说,如果在PHP中编写一段代码,并使用特定的编译器生成符合字节码规范的字节码文件,Java虚拟机也可以运行。...因此,虽然Java虚拟机的名称是Java虚拟机,但是Java虚拟机与Java语言没有直接关系。它只根据Java虚拟机规范读取类文件,根据规则解析和执行字节码指令,仅此而已。...如果你足够健壮,你可以编写一个编译器,将PHP语言代码编译成符合Java虚拟机规范的字节码文件,然后Java虚拟机也可以被执行。 确切地说,Java虚拟机绑定到字节码文件(类文件)。

45150

JAVA虚拟机、Dalvik虚拟机和ART虚拟机简要对比

,但JAVA编译后生成的字节码是在JVM上跑,需要由JVM把字节码翻译成机器指令,才能使JAVA程序跑起来。...根据JVM规范实现的具体虚拟机有几十种,主流的JVM包括Hotspot、Jikes RVM等,都是用C/C++和汇编编写的,每个JRE编译的时候针对每个平台编译,因此下载JRE(JVM、Java核心类库和支持文件...②Dalvik可执行文件体积更小 以下是JVM规范中以C的数据结构表达的class文件结构,class文件被虚拟机加载到内存中后便是这样 class文件中包含多个不同的方法签名,如果A...JIT以JVM为例,javac把程序源码编译成JAVA字节码,JVM通过逐条解释字节码将其翻译成对应的机器指令,逐条读入,逐条解释翻译,执行速度必然比C/C++编译后的可执行二进制字节码程序慢,为了提高执行速度...安卓运行时从Dalvik虚拟机替换成ART虚拟机,并不要求开发者重新将自己的应用直接编译成目标机器码,也就是说,应用程序仍然是一个包含dex字节码的apk文件。

1.4K20

2020 Java开发者数据分析:中国已成为 Java 第一大国

编程语言的使用占比 根据2020年开发者生态系统调查,超过三分之一的专业开发者使用 Java 作为主要语言,Java 仍然是继 JavaScript 之后专业开发者使用的第二主要语言。...由于机器学习的普及,Python 可能排在第三位。 我们希望 web 成为开发者生态系统的重要组成部分,因此 JavaScript、 HTML、 CSS 和 PHP 将永远站得住脚。...Web 服务是使用 Java 最流行的领域,占52% 。 看到 Java 在商业智能/数据科学/机器学习领域如此普遍令人惊讶,因为你可能认为这是 Python 的领域。 ?...img Java版本的选择 Java 8仍然是最流行的版本 Oracle引入了每两年发布一次的版本,所以并不是所有的版本都能在很长一段时间内得到支持,所以 java 9、 java 10、 java 12...和 java 13只能在6个月内得到支持,这可能就是为什么它们的用户都非常少的原因。

76120

写给小白的JVM学习指南

JVM基础系列开篇:为什么要学虚拟机? JVM基础系列第1讲:Java 语言的前世今生 JVM基础系列第2讲:Java 虚拟机的历史 JVM基础系列第3讲:到底什么是虚拟机?...JVM基础系列第4讲:从源代码到机器码,发生了什么?...我看《Java虚拟机规范》的时候写了一些笔记,如果有兴趣可以阅读相关文章。 JVM规范系列开篇:为什么要读JVM规范?...JVM规范系列第1章:引言 JVM规范系列第2章:Java虚拟机结构 JVM规范系列第3章:为Java虚拟机编译 JVM规范系列第4章:Class文件格式 JVM规范系列第5章:加载、链接与初始化 JVM...规范系列第6章:Java虚拟机指令集 JVM规范系列:总结 看完了《Java虚拟机规范》,如果你还有兴趣,那么你可以开始阅读 HotSpot 虚拟机的源码了。

3.4K33

区块链上的人工智能

区块链的共识机制恰巧可以在数字经济的“连接的世界”中,在人类和机器之间的信息交流方面有效地发挥作用,使得越来越多的自主的机器行为出现,并导致真正的人工智能,实现技术上的突破(机器智能代替自然人智能的时代也将到来...,数字头脑上传,以及不同形式的人工智能,比如模拟大脑,以及先进的机器学习算法。...只有友好的人工智能交易才能够被执行   共识模型的一个真正好处是,他们有可能使友好型的人工智能得到加强,即有合作精神的、遵从社会道德规范的个体。...在去中心化的信任网络里,代理人的名誉(代理本身仍然是匿名的)可成为其交易是否会被执行的一个重要因素,例如,恶意的玩家的交易请求将不能获得批准执行或在网络上被认可。...这是为什么友好的人工智能体可以在一个以共识模型为基础的区块链上被执行的原因。 区块链必须要融合分布式人工智能技术才能成为真正的去中心化的平台。

60230

微服务:Java EE的拯救者还是掘墓人?

于是紧接着就出现了Java EE规范、JSR规范,以及WebLogic、WebSphere等服务器中间件。 在这些服务器上面部署了大型的程序包,它们运行缓慢,消耗大量的内存。...不过,虽然PHP仍然是现今最流行的编程语言,但它也有自己的短板。它运行速度不是很快,而且难以横向扩展。...于是一些聪明人不禁要问,为什么我们要把应用部署在这些庞然大物上?为什么我们要把应用打包成一个ear包或war包,而不是jar包?为什么我们不能把大型的应用拆分成更小的块,让它们可以独立部署和扩展?...微服务不只依赖单个服务器和部署,它们可以被发布到多个机器上,或者多个数据中心及其它任何可用的区域。如果一个服务失效,可以启动另外一个。...这就是为什么要把Java微服务运行在一个单独的进程里,而不是Java EE容器或servlet容器。 微服务一般会提供基于HTTP/JSON的API端点。

49870

微服务:Java EE的拯救者还是掘墓人?

于是紧接着就出现了Java EE规范、JSR规范,以及WebLogic、WebSphere等服务器中间件。 在这些服务器上面部署了大型的程序包,它们运行缓慢,消耗大量的内存。...不过,虽然PHP仍然是现今最流行的编程语言,但它也有自己的短板。它运行速度不是很快,而且难以横向扩展。...于是一些聪明人不禁要问,为什么我们要把应用部署在这些庞然大物上?为什么我们要把应用打包成一个ear包或war包,而不是jar包?为什么我们不能把大型的应用拆分成更小的块,让它们可以独立部署和扩展?...微服务不只依赖单个服务器和部署,它们可以被发布到多个机器上,或者多个数据中心及其它任何可用的区域。如果一个服务失效,可以启动另外一个。...这就是为什么要把Java微服务运行在一个单独的进程里,而不是Java EE容器或servlet容器。 微服务一般会提供基于HTTP/JSON的API端点。

85540

JAVA拾遗--关于SPI机制

再来思考一下,现代的框架是如何加载日志依赖,加载数据库驱动的,你可能会对class.forName("com.mysql.jdbc.Driver")这段代码不陌生,这是每个java初学者必定遇到过的,但如今的数据库驱动仍然是这样加载的吗...规范的制定方一般都是比较牛叉的存在,这些接口通常位于java,javax前缀的包中。这里的Printer就是模拟一个规范接口。...是一个规范接口, com.mysql.jdbc.Driver com.mysql.fabric.jdbc.FabricMySQLDriver则是mysql-connector-java-xxx.jar对这个规范的实现接口...如果再追问,为什么它的静态块没有自动触发?...可答:因为数据库驱动类的特殊性质,JDBC规范中明确要求Driver类必须向DriverManager注册自己,导致其必须由class.forName手动触发,这可以在java.sql.Driver中得到解释

865120

Java内存模式是什么?

虽然Java虚拟机规范把方法区描述为堆的一个逻辑部分,但是它却有一个别名为Non-Heap(非堆),目的是要将堆区分开来。...Java虚拟机对Class文件每一部分的格式都有严格的规定,每一个字节用于存储哪种数据都必须符合规范的要求才会被虚拟机认可、装载和执行,但对于运行时常量池,Java虚拟机规范没有任何细节的要求,不同的提供商的虚拟机可以按照自己的需求来实现这个内存区域...无论怎么划分,都与存在内容无关,无论哪个区域,存储的都仍然是对象实例,进一步划分的目的是为了更好的回收内存,或者更快的分配内存。...由于Java虚拟机器的多线程是通过线程轮训切换并分配CPU执行时间来实现的,在任何一个确定时刻,一个处理器(对于多核处理器来说是一个内核)都会只执行一条线程的指令。...如果线程只在执行的是一个Java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址;如果正在执行的是Native方法,这个计数器值则为空(Undefined).该内存区域是唯一一个在Java虚拟机规范中没有规定任何

73000
领券