Skip to main content

You are not logged in. Your edit will be placed in a queue until it is peer reviewed.

We welcome edits that make the post easier to understand and more valuable for readers. Because community members review edits, please try to make the post substantially better than how you found it, for example, by fixing grammar or adding additional resources and hyperlinks.

Required fields*

2
  • 1
    Java is compiled into platform-agnostic bytecode which can be (theoretically, at least) executed by any JVM on any platform. C is compiled into assembly language for whatever CPU you are targeting (so if you're targeting the x86 architecture, the C compiler will create x86 assembler, or amd64 assembler if you're targeting that architecture, or ARM assembler, etc). Then the assembly language is turned into object files (binary assembler, really), which are linked into an executable file (several different formats, depending on the target machine). Commented Jun 2, 2015 at 20:28
  • 1
    There is nothing in the Java Language Specification that says anything about the JVM, and in fact, there are implementations of Java without the JVM. On Android, Java programs run on the Dalvik VM (now obsolete) or the Android Runtime, there are implementations of Java for the CLI, implementations that compile to ECMAScript, and implementations that compile to native code. There are C compilers which compile to the JVM. There are C compilers which compile to ECMAScript. There are C interpreters. Commented Jun 2, 2015 at 22:14