2014-09-04 60 views
1

我是Java的新手,有人澄清我对平台无关性的疑问,我知道Java是独立于平台的语言,JVM是平台相关的,但是独立于Java编译器平台?是Javac是独立于平台

回答

3

有涉及您的问题四大要素:

  1. 为你的程序
  2. javac编译
  3. ,当它编译源代码的编译器生成的字节代码的Java源代码
  4. 执行字节码以运行程序的Java虚拟机(JVM)。 (这是在键入java MyMainClass时运行的程序。)

项目1和3与平台无关(除非程序使用平台相关的外部库)。第2项和第4项是依赖于平台的(即每个平台 - Windows,Linux,Mac等 - 使用它自己的javac版本和JVM)。

结果是,您可以在任何运行javac的平台上编译您的Java程序,然后在相同平台或任何其他具有JVM的平台上执行程序。

+0

谢谢@Ted Hopp清除解释 – Linguistic 2014-09-04 05:51:33

2

没有javac不是独立于平台,每个平台都有的javac

自己的可执行文件的形式,即你不能在Linux的JDK复制到Windows和期望它的工作

+2

@AnandMishra - 那么请高举答案。赞成评论更好。 – TheLostMind 2014-09-04 05:42:07

+0

谢谢@Jigar Joshi为你解答。 – Linguistic 2014-09-04 05:49:18

+0

downvoter在这里留下原因 – 2014-09-04 05:51:02

0

技术上,JVM不平台无关,你必须下载这些工具的平台特定版本。 java编译器生成与平台无关的字节代码(.class文件)

1

java编译器的(实现)不是平台独立的。它将源代码编译为平台相关的字节码,由执行的平台相关的 JVM。

0

在窗口javac似乎在.exe格式,这意味着它是平台相关的。每个平台都有不同的java编译器。