Java平台的独立性

时间:2015-04-21 10:19:29

标签: java

Java说“写一次,到处运行”。甚至像C,C ++这样的其他语言也只编写一次,但只有在平台发生变化时才重新编译。因此,对于Java编程的新手来说,不应该“编译一次,到处运行”更清晰和准确吗?

2 个答案:

答案 0 :(得分:1)

当您编译.java文件时,它会生成.class文件,该文件被称为Byte Code,而当我们谈论C / C ++时则不是这样。

现在生成的字节代码可以在任何地方运行(无论平台如何),前提是机器上有JVM。

  

当我们说写一次它意味着生成一段可用的代码时,现在你不能执行一个.java文件,你必须在执行之前编译它。所以没有必要明确提到编译。

最后,重要的是你应该理解这个概念,而不仅仅是单词。

答案 1 :(得分:1)

C ++使用单个编译器将您的C ++代码编译为.exe(Windows的可执行文件格式)和基于Unix / Linux的操作系统的.out或ELF文件格式。因此,它将生成一个特定于它所遵循的操作系统的物理可执行文件(位代码格式)。

现在在java的情况下,我们的源代码(.java)文件将被编译成.class文件(字节代码格式),然后每个操作系统将拥有自己的JRE版本(Java运行环境)是一个解释器,有助于将生成的.class文件运行/执行到OS内存中(将其转换为位代码格式)。所以在这种情况下我们需要编译器只编译我们的类,解释器将帮助在各自的操作系统中执行该类。换句话说,对于Java,编译一次就可以执行。

如果我们想在一个平台上执行Write Once并运行到C ++的不同平台方法,我们可以遵循这两个步骤中的任何一个。

  1. 我们可以在一个特定的操作系统中编写一次,并将相同的源代码写入不同的操作系统,然后在该不同的平台上重新编译并执行相同的代码。
  2. 另一种方式,一旦我们在Windows中生成.exe文件,然后转到Linux并使用移植工具/软件,如'Wine',它将能够通过Windows仿真实现在Linux上实际运行Windows .exe文件应该有通过仿真在Windows上运行Linux .out文件的工具。
  3. 仍然没有一种方法可以被认为是C ++的WORA概念。 更多的Java不是唯一存在的跨平台语言,还有其他语言,如C#等,所有都遵循相同的概念,不生成位代码格式,而编译为位代码只是机器/平台或操作系统特定。

    我希望你现在能清楚地理解它。