首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jre解释中的一些细微差别

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

Stack Overflow用户
提问于 2014-12-16 19:39:25
回答 5查看 325关注 0票数 1

据我所知

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

JRE:包含JVM,类库。它需要运行Java程序。不能用它编译Java程序

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

问题1:只使用jdk编译是可能的?我是说拿到.class文件?

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

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

问题4:我是否遗漏了jdk解释中的一些内容?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-12-16 19:50:33

问:只使用jdk编译是可能的?我是说拿到.class文件?

答:是的,例如javac Main.java将生产Main.class

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

答:例如,我给您一个.class文件,您可以在jre上运行它。.clas是由我编译的,您只需运行它。

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

JRE是给客户的。他们不需要编译.java文件,只需要运行.class文件。开发人员需要编译.java文件,这会产生.class文件。

问:我是不是漏掉了jdk的解释?

答:没有。

票数 2
EN

Stack Overflow用户

发布于 2014-12-16 19:43:56

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

你把汇编的两个阶段搞混了。

  1. javac是JDK的一部分,它将.java编译成.class字节码。
  2. Hotspot JVM (JRE的一部分)将大量使用的字节码编译成优化的机器代码。
  3. 它可以将.class编译成机器代码,但不能将.java编译为.class
  4. java (运行时)是JRE的一部分,而不是JDK。
票数 2
EN

Stack Overflow用户

发布于 2014-12-16 20:50:05

为了更好地理解差异,您应该了解Java的承诺,Java在启动时非常流行。

  • WORA -写一次在任何地方运行
  • 平台独立性(不完全但主要是)

如果编写C程序,则需要将.c文件编译为windows上的.exe文件,该文件在*NIX之类的环境中无法工作。因此,在这里,您的二进制文件(在本例中是.exe)依赖于您的平台。如果您想在Linux上运行相同的C程序,则必须在该平台上再次编译.c文件。但是为了使Java二进制文件(通常是.jar文件)跨多个平台可移植,他们提出了一个名为JRE的统一环境,它将负责在所有平台上执行您的二进制文件。如果您从Oracle的站点下载Java,您会发现不同的文件(exe、rpm、tar.gz,适用于不同的平台,如Windows、Linux、Solaris、Mac等)

任何已编译的.java都会提供一个.class文件,这是您的JVM理解的文件。无论是在Windows还是Mac上编译,生成的类文件都是相同的。

JRE是运行java程序所需要的。确保在Windows上编写和编译的程序在Linux服务器上执行的程序。它不需要你的花哨的英文源代码来执行你的程序。这就是为什么大多数新的OS安装都只安装了JRE,而没有安装JDK,因为这就是您所需要的。

JDK面向在java中开发应用程序/程序的开发人员,然后为其他开发人员分发给use.But,通常开发人员也在本地机器中运行这些程序来测试/调试他们的代码。为了方便这一点,JRE包含在JDK发行版中。JVM是实际的举重人员,是JRE的一部分,它将把程序指令翻译成机器特定的汇编代码,并在CPU上执行以完成工作。

希望这能回答你的问题:)

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

https://stackoverflow.com/questions/27512569

复制
相关文章

相似问题

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