Java编译器和JVM用哪种语言编写?

时间:2009-08-03 06:41:39

标签: java jvm javac

Java 编译器javac),虚拟机(JVM)和java初学者编写的语言是什么?

10 个答案:

答案 0 :(得分:159)

问题的精确措辞有点误导:它不是“JVM”“编译器”,因为有多个JVM供应商(jrockit是一个,IBM另一个)和多个编译器那里。

  • Sun JVM C编写,虽然不一定是这种情况 - 在您的机器上运行的JVM是平台相关的< / em>可执行文件,因此可能最初是用任何语言编写的。例如,原始IBM JVM是用 Smalltalk

  • 编写的
  • Java库(java.langjava.util等,通常称为 Java API )本身是用Java编写的,尽管标记为{{的方法1}}将使用nativeC

  • 撰写
  • 我相信Sun提供的Java编译器也是用Java编写的。 (虽然再次,有多个编译器)

答案 1 :(得分:65)

第一个Java编译器是由Sun Microsystems开发的,使用C ++中的一些库用C语言编写。今天,Java编译器是用Java编写的,而JRE是用C语言编写的。

我们可以想象Java编译器是如何用Java编写的:

Java编译器编写为Java程序,然后使用C编写的Java编译器(第一个Java编译器)编译。因此,我们可以使用新编译的Java编译器(用Java编写)来编译Java程序。

答案 2 :(得分:62)

来自Java Docs

  

编译器是用Java编写的,运行时是用ANSI C编写的

答案 3 :(得分:15)

实际上,Oracle JVM是用C ++编写的,而不是C语言。

在此处查看HotSpot JVM代码:http://openjdk.java.net/groups/hotspot/

答案 4 :(得分:9)

This link应该回答你的问题

似乎编译器现在用Java编写,但运行时是用ANSI C编写的

答案 5 :(得分:8)

原则上几乎所有东西,通常是C

答案 6 :(得分:3)

Jikes RVM,一个广泛用于研究目的的自托管JVM是用Java编写的。这不是一个人在他们的桌面上运行,但它在我的名单上“现在让我们展示语言的一般力量。”

答案 7 :(得分:3)

假设您在谈论Hotspot JVM,它是由Sun提供的iirc,它是用C ++编写的。有关各种Java虚拟机的更多信息,可以查看link。 与大多数Java编译器一样, javac 是用Java编写的。

答案 8 :(得分:0)

  • Sun Microsystem开发Java时,使用C ++中的某些库用C编写Java编译器。
  • 由于编译器设计中有一个称为Bootstapping的概念,因此通常在编译器开发中使用, Bootstrapping 是使用源编程语言编写编译器(或汇编器)的过程。编译。 它用于生成自托管的编译器。用于新编程语言的编译器的开发首先是在现有语言中开发的,然后以新语言重写并由其自身进行编译。 这就是为什么今天的Java编译器是用Java本身编写的。
  • Java虚拟机:Java虚拟机是抽象机。像真正的计算机一样,它具有指令集并操纵运行时的各种内存区域。通常,JVM将字节码解释为机器码。

(有关更多信息,您可以检查此链接:https://docs.oracle.com/javase/specs/jvms/se7/html/

答案 9 :(得分:-2)

在大多数操作系统上,JVM是用ISO C ++编写的。我怀疑是否使用了ANSI C,因为它是一种完全不同的语言,现在相当陈旧。