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

从java代码到jvm字节码的转换会考虑编译还是传输?,java,compiler-construction,jvm,Java,Compiler Construction,Jvm,编译是一个从一个抽象层次转换到较低层次的过程。同时,transpiling是一个从一个抽象级别转换到另一个抽象级别的过程,就像将java代码转换为Kotlin/python一样。这就是我对这两个过程的理解。有人能用java代码和jvm字节码来解释一下吗。我的推论正确吗 其工作原理如下所述: 首先,java源代码由名为“编译器”的翻译器转换成字节码文件。字节码文件以.class扩展名获取名称,javac(java编译器)是编译.java文件的工具 那么 java是一种用于调用java解释器“JVM

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

其工作原理如下所述:

首先,java源代码由名为“编译器”的翻译器转换成字节码文件。字节码文件以.class扩展名获取名称,javac(java编译器)是编译.java文件的工具

那么

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

  • JVM中名为类装入器(或系统类装入器)的子程序启动并将字节码装入操作系统内存(或RAM)

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

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


  • 您可以在此处阅读相关内容:

    其工作原理如下所述:

    首先,java源代码由名为“编译器”的翻译器转换成字节码文件。字节码文件以.class扩展名获取名称,javac(java编译器)是编译.java文件的工具

    那么

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

  • JVM中名为类装入器(或系统类装入器)的子程序启动并将字节码装入操作系统内存(或RAM)

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

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

  • 您可以在这里阅读相同的内容:

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

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

    见维基百科:

    中间代表 特别是,语言和(来自Swift等)被称为。IR是为进一步处理、优化和翻译而设计的。

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

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

    见维基百科:

    中间代表 特别是,语言和(来自Swift等)被称为。IR是为进一步处理、优化和翻译而设计的

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

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


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

    (一)可以说,由于C有时被称为“高级汇编语言”,C++“必须”比C更高级别的抽象性。 从java代码到jvm字节码的转换会考虑编译还是传输

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


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


    (可以说,C有时被称为“高级汇编语言”,C++“必须”比C更高级别的抽象)

    你能添加一个链接到引用的内容的来源吗?这实际上不回答问题:它是编译还是转接?如果你看到第一行,它确实说编译器用于将java代码转换为jvm字节码。它用双引号写只是为了突出显示。@ernest_k我也添加了文本的来源。希望现在一切正常。你能添加一个链接到引用内容的源代码吗?这实际上并没有回答问题:是编译还是传输?如果你看到第一行,它确实说编译器用于将java代码转换为jvm字节码。它用双引号写只是为了突出显示。@ernest_k我也添加了文本的来源。希望现在一切顺利。请记住您的定义,将Java源代码转换为字节代码不会被视为传输,因为字节代码处于较低的抽象级别