Eclipse jre解释中的一些细微差别

Eclipse jre解释中的一些细微差别,eclipse,jakarta-ee,jvm,java,Eclipse,Jakarta Ee,Jvm,Java,据我所知 JVM: Java虚拟机(JVM)是可以执行Java字节码的虚拟机。它是Java软件平台的代码执行组件。 JVM将字节码解释为机器码 JRE: Java运行时环境包含JVM、类库。 它需要运行Java程序。你不能用它编译Java程序 JDK: jre+开发工具,如调试器、编译器(javac)、java(launcher) 问题1:是否可以只使用jdk进行编译?我是说,你能拿到班级档案吗 问题2:运行java需要JRE吗?如果不能编译类,它将如何运行 问题3:如果JRE不能编译,为什么要

据我所知

JVM: Java虚拟机(JVM)是可以执行Java字节码的虚拟机。它是Java软件平台的代码执行组件。 JVM将字节码解释为机器码

JRE: Java运行时环境包含JVM、类库。 它需要运行Java程序。你不能用它编译Java程序

JDK: jre+开发工具,如调试器、编译器(javac)、java(launcher)

问题1:是否可以只使用jdk进行编译?我是说,你能拿到班级档案吗

问题2:运行java需要JRE吗?如果不能编译类,它将如何运行

问题3:如果JRE不能编译,为什么要提供jvm


问题4:我在jdk解释中遗漏了什么吗?

考虑下载一个JRE、jdk,然后自己检查这些问题。你永远不知道我们说的是不是真的,你知道

你混淆了编译的两个阶段

  • javac
    ,JDK的一部分,将
    .java
    编译成
    .class
    字节码

  • Hotspot JVM(JRE的一部分)将大量使用的字节码编译为优化的机器代码

  • 它可以将
    .class
    编译成机器代码,但不能将
    .java
    编译成
    .class

  • java
    (运行时)是JRE的一部分,而不是JDK


  • 考虑下载JRE、JDK,并自己检查问题。你永远不知道我们说的是不是真的,你知道

    你混淆了编译的两个阶段

  • javac
    ,JDK的一部分,将
    .java
    编译成
    .class
    字节码

  • Hotspot JVM(JRE的一部分)将大量使用的字节码编译为优化的机器代码

  • 它可以将
    .class
    编译成机器代码,但不能将
    .java
    编译成
    .class

  • java
    (运行时)是JRE的一部分,而不是JDK


  • 问:是否可以只使用jdk进行编译?我的意思是获取.class文件?
    答:是的,例如,javacmain.java将生成Main.class

    问:运行java需要JRE吗?如果无法编译类,它将如何运行?
    答:例如,我给你一个.class文件,你可以在你的jre上运行它。clas是我编译的,你只要运行它

    问:如果JRE不能编译,为什么要提供jvm
    答:JRE是面向客户的。他们不需要编译.java文件,只需要运行.class文件。开发人员需要编译.java文件,从而生成.class文件

    问:我在jdk解释中遗漏了什么吗?

    答:没有。

    Q:只使用jdk编译是可能的吗?我的意思是获取.class文件?
    答:是的,例如,javacmain.java将生成Main.class

    问:运行java需要JRE吗?如果无法编译类,它将如何运行?
    答:例如,我给你一个.class文件,你可以在你的jre上运行它。clas是我编译的,你只要运行它

    问:如果JRE不能编译,为什么要提供jvm
    答:JRE是面向客户的。他们不需要编译.java文件,只需要运行.class文件。开发人员需要编译.java文件,从而生成.class文件

    问:我在jdk解释中遗漏了什么吗?

    答:没有。

    这个网站上有很多帖子解释了这些差异
    JDK
    JRE
    的超集。顾名思义:
    JDK
    开发
    环境,它还包含
    运行时
    ,即JRE

    请参阅以获取解释,其中有一个链接将带您进入其中一个问题


    编辑1:谷歌也找到了我

    这个网站上有很多帖子解释了这些差异
    JDK
    JRE
    的超集。顾名思义:
    JDK
    开发
    环境,它还包含
    运行时
    ,即JRE

    请参阅以获取解释,其中有一个链接将带您进入其中一个问题

    编辑1:谷歌也找到了我

    简而言之:

  • javac将.java(包含java代码的文本文件)编译成.class文件(java字节码)
  • JVM解释(通常是即时编译).class文件中的Java字节码以运行它们
  • JRE还包括Java类库,即实现Java库的.jar归档文件中的.class文件集
  • 我认为您错过的是Java中通常有两个编译阶段:将.Java文本文件一次性编译为.class Java字节码,这是由开发人员使用JDK完成的,Java字节码是由JVM完成的从字节码到机器码的即时编译,这在执行Java字节码时是完全透明的

    现在,有时候事情会变得更复杂一些。例如,EclipseJDT包含自己的java编译器,与javac不同,因此不需要JDK将java文件编译为java字节码,只需要一个JRE。它需要JRE,因为eclipse是一个Java应用程序,作为一组JAR文件提供,其中包含Java字节码和其他资源文件。

    简而言之:

  • javac将.java(包含java代码的文本文件)编译成.class文件(java字节码)
  • JVM解释(通常是即时编译).class文件中的Java字节码以运行它们
  • JRE还包括Java类库,即实现Java库的.jar归档文件中的.class文件集
  • 我认为您错过的是Java中通常有两个编译阶段:将.Java文本文件一次性编译为.class Java字节码,这是由开发人员使用JDK完成的,Java字节码是由JVM完成的从字节码到机器码的即时编译,这在执行Java字节码时是完全透明的

    没有