当前位置: 首页 > 知识库问答 >
问题:

从java代码到jvm字节码的转换会考虑编译还是传输?

南宫云
2023-03-14

编译是一个从一个抽象层次转换到较低层次的过程。同时,transpiling是一个从一个抽象级别转换到另一个抽象级别的过程,就像将java代码转换为Kotlin/python一样。这就是我对这两个过程的理解。有人能用java代码和jvm字节码来解释一下吗。我的推断正确吗?

共有3个答案

苗信鸥
2023-03-14

其工作原理如下所述:

首先,java源代码由名为“编译器”的翻译程序转换成字节码文件。字节码文件使用获取名称。类扩展和javac(java编译器)是编译。java文件。

然后,

java是一个用来调用java解释器“JVM”的工具。现在,JVM的工作开始了。当JVM调用,

>

另一个子程序字节码验证器验证并确保代码不违反安全规则。这就是为什么java程序非常安全且无病毒。

最后一个子程序执行引擎最终将字节码转换成机器码。今天使用的引擎名为JIT Just in Compiler。

你可以在这里读到同样的:https://www.quora.com/How-does-the-Java-interpreter-JVM-convert-bytecode-into-machine-code

郎宏浚
2023-03-14

将转换从java代码到jvm字节码考虑编译或转置?

它正在根据你在问题中给出的定义进行编译。字节码指令集的抽象级别低于Java源代码。

尽管如此,编译和传输之间的区别还是有点模糊,因为“抽象级别”没有明确的定义。

例如,有人可能会说,由于C有时被称为“高级汇编语言”,C比C处于更高的抽象级别-

冯鸿光
2023-03-14

编译器从高级语言转换到低级语言。我们所说的高级/低级是指如何从机器语言抽象出来。所以这将包括Java语言到字节码。字节码更接近机器语言,远离人类语言。

transpiler在抽象级别相当的语言之间进行转换。从EcmaScript 6转换为EcmaScript 5以与旧的web浏览器兼容就是一个例子。从Java语言到Kotlin的转换将是另一个选择,或者Swift到Kotlin。

参见维基百科:https://en.wikipedia.org/wiki/Source-to-source_compiler

特别是,从Java语言编译的字节码和通过LLVM编译的位码(从Swift、Rust等)被称为中间表示(IR)。IR是为进一步处理、优化和翻译而设计的,它正在成为机器语言。

 类似资料:
  • 我想在将源代码传递给编译器之前,在编译时转换java源代码。换句话说,我想创建一个能够转换的预处理器 转换为任何其他代码,如: null 我很乐意为这两种方法找到一个java代码预处理的简单示例。 有没有人认为有什么聪明的方法来进行代码转换,而不是用多个ivy模块完全改变现有的大型代码库?注释似乎是最好的方法,但我不明白该怎么做。

  • 我正在观看Angular Compiler4.0-TOBIAS BOSCH,突然在1:30的视频中说,如果我们使用AOT编译,将转换为javascript代码。编译过程:视频的快照。现在我超级困惑,引擎盖下到底发生了什么?是先由typescript编译器将(.ts)传递到js,然后由angular编译器执行,还是由angular编译器执行,然后由typescript编译器执行?我经历了这个角编译器

  • 问题内容: 我遇到了一些有关JVM / JIT活动的参考,其中似乎在编译字节码和解释字节码之间有区别。该特定注释声明的字节码在前10000次运行时进行解释,然后进行编译。 “编译”和“解释”字节码之间有什么区别? 问题答案: 解释字节码基本上是逐行读取字节码,不进行任何优化或任何操作,然后对其进行解析并实时执行。由于许多原因,这种方法效率低下,其中包括Java字节码设计得不能快速解释的问题。 编译

  • 导航 目录 上一章:Lua 与 C/C++ 交互 下一章:LuaJIT 介绍

  • 据我所知,JIT将字节码编译成运行速度更快的本机代码。因此,根据我的信念,我的问题的答案应该是1。翻译成机器代码2。解释字节码。因为解释代码意味着执行代码。但我发现答案恰恰相反!谁能解释一下。。。提前感谢

  • 问题内容: 我目前正在翻译中编写一个针对Java字节码的玩具编译器。 我想知道是否可以在编写.class文件之前在发出的字节码中进行各种简单的窥孔优化的目录,也许是摘要。我实际上知道一些具有此功能的库,但是我想自己实现。 问题答案: 您知道Proguard吗?http://proguard.sourceforge.net/ 这是一个很棒的字节码优化器,它实现了很多优化。请参阅常见问题解答以获取列表