2014-09-24 72 views
0

JDK是JRE的超集。 JDK具有必要的工具,如javac java.exe调试器等+ JRE。 但JRE具有JVM的特定实现。完全与java.exe混淆

我的假设是java.exe或java应用程序启动器是解释器(请纠正我,如果我错了)。另外,JVM也会进行解释。

最后是JVM的解释器部分还是JDK工具的一部分?请解释。

+5

我总是轻轻地建议我的朋友研究文档的。 - [相关StackOverflow问题](http://stackoverflow.com/questions/1906445/what-is-the-difference-between-jdk-and-jre) – Coffee 2014-09-24 15:31:48

+0

我的问题是不是区别b/w JDK,JRE等。我怀疑的是,如果我的系统中只有JRE,那么JVM如何使用实际上是JDK工具一部分的解释器。 – karthik4621 2014-09-24 18:31:28

+1

@ karthik4621 JRE *是* JVM(再加上一点点)。它*是字节码解释器。 – 2014-09-24 19:51:35

回答

-2

你是对的java.exe是是你的代码被通过与底层操作系统进行通信执行的JVM(Java虚拟机)和JVM解释

+0

它是什么解释? – 2014-09-24 15:42:09

+0

@SotiriosDelimanolis Java字节码? – 2014-09-24 15:43:53

+0

但我的问题是,如果我的系统中只有JRE,那么JVM如何使用实际上是JDK工具一部分的解释器。 – karthik4621 2014-09-24 18:16:19

-1

@ karthik4621的java.exe/javaw进程的应用是JRE的一部分查看JRE安装目录以查找bin文件夹,找到可执行文件以及与JDK一起发现的java.exe也是一样的:)为了更好地了解这个问题,我建议你通过oracle文档以及快速刷JDK/JRE安装位置的内容的更新 -

+0

尝试使用可用的java.exe JRE的bin目录解释一个字节代码(任何每个已编译的.class文件以了解其差异,并确保在JDK安装位置删除指向java.exe的路径环境变量) – snoopy 2014-09-24 19:55:20

10

java.exe既不是JVM也不是解释器。这是一个发射 - 通常是C语言编写的一个小程序,它具有以下功能:

  1. 定位已安装JRE
  2. 加载JVM动态链接库(jvm.dll
  3. 使用创建一个新的Java虚拟机Invocation API
  4. 查找主类,并调用使用main()方法JNI

JRE大致由

  1. JVM - jvm.dll
  2. 类库 - rt.jar
  3. 本地库 - 类库和OS平台之间的层,例如java.dllnet.dllnio.dllawt.dll
  4. 资源 - 字体,属性,字符串等

现在,字节码解释器,字节码校验器,类装载器,JIT编译器,垃圾收集和许多其他很酷的东西 - 都是Java虚拟机的一部分。

+0

非常感谢您的解释 – karthik4621 2014-10-14 14:40:52