首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JVM: JVM指令实现可以使用什么语言?

JVM: JVM指令实现可以使用什么语言?
EN

Stack Overflow用户
提问于 2021-01-25 06:08:46
回答 1查看 77关注 0票数 1

摘自JVM的官方甲骨文文档:

Java虚拟机的实现可以使用传统的堆栈(俗称"C堆栈“)来支持本机方法(用Java编程语言以外的语言编写的方法)。Java虚拟机指令集解释器的实现也可以使用本机方法栈,例如C语言。

因此,只要JVM在C中实现它的指令集,那么实现就可以使用本机方法堆栈。这让我想到JVM指令集可以在哪些其他语言中实现,以及在这些情况下使用什么样的堆栈?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-25 07:04:52

因此,只要JVM在C中实现它的指令集,那么实现就可以使用本机方法堆栈。

JVM规范说,当JVM是用“一种语言,如C”(强调后加的)实现时,它可以使用所谓的"C堆栈“。这几乎毫无意义。最合理的解释是,如果实现特定JVM的语言的实现依赖于C堆栈,那么JVM本身就允许依赖C堆栈。

引号的上下文是对JVM使用的内存区域的讨论,因此主要的要点是JVM可以将其运行时内存的一部分用于C堆栈。对于Java堆栈,有一个完全不同的规定,尽管规范不要求这与使用C堆栈的JVM中的C堆栈区域不同。

但是,请注意,虽然人们通常会认为C本身是一种像C这样的语言,但是它的规范对于堆栈没有什么可说的。"C堆栈“不是C的属性,而是硬件和ABI的属性。

这让我想到JVM指令集可以在哪些其他语言中实现。

原则上,JVM可以用任何图灵全语言实现.例子包括C、C++、Fortran、Python、Lisp、Perl、Ruby、BASIC、Java本身以及许多其他的过去、现在和未来。有些人比其他人更有吸引力。

在这些情况下使用的是哪种堆栈?

如果所选语言的实现使用C堆栈,那么JVM可以为C堆栈预留空间。还有Java堆栈,每个JVM都有。JVM规范没有对任何其他类型的堆栈做出明确的规定。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65879732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档