Java文件是独立于系统的吗?

时间:2012-10-23 20:23:03

标签: java

许多人曾经说Java是一种独立于系统的编程语言;可以使用适当的OS JVM在任何操作系统中运行(interepted)相同的.class文件。 我的问题 - .java文件本身也是系统独立的吗?即在一个操作系统中编写(并且可以正确编译)的.java文件,可以在另一个操作系统中正确编译吗?如果没有,你有任何例子可以证明这一点吗?

谢谢!

4 个答案:

答案 0 :(得分:1)

只要.java文件遵循API语法和正确的版本,就可以在任何操作系统上编译它,而不管它在何处编码。

答案 1 :(得分:0)

简短的回答,是的。很长的答案,yeeeeeeesss。

正如jedwards在您的问题评论中所指出的一个例外,包括Android,因为Android SDK中提供的库与Sun分发的JDK不同。这更像是JVM特有的区别,但由于Android在技术上是一个操作系统,因此它很重要。这也可以扩展到Java ME和Java EE,但这仍然更依赖于JDK /库,而不依赖于操作系统。

另一个例外可能是您使用专有包下的类,例如sun.*com.sun.*包中的类。然后它将依赖于 JVM ,但只要您使用正确版本的Sun JVM,它仍然不依赖于操作系统。

严格地说,只要您使用的JDK版本可用于您的操作系统,并且您正在使用的任何本机库(想想JNI)都可用于您的操作系统,.java文件将使用您的操作系统没有问题。现在它是否完全是另一个问题。

旁注:我们在上一份工作中同时使用Mac OS X 10.4 +,Ubuntu 8.04+和Windows XP / Server 2003+进行软件开发,并且它偶尔也没有引起任何问题。 t 运行,但从来没有任何编译问题。

答案 2 :(得分:0)

将java编译器移植到mac / win / linux并生成有效且可能相等的二进制文件 - 因为它可以在里面加上时间戳。 并且.class格式是通用的,这样任何VM端口都能够正确读取它们

答案 3 :(得分:0)

答案是IT DEPENDS:

如果您犯了错误,源代码与系统无关。

一个例子:

使用系统相关的charakter编码编写Sourcefile。如果将该文件传输到另一个不存在该chrackter编码的系统,则您的文件可能无法编译。这更像是一个编译器问题。

另一个例子:

如果您有一个带有系统相关插件的自定义JVM,那么使用此类的程序将无法在其他系统中使用。这更像是一个问题。

如果您使用正确的编码并且不导入与平台相关的包,例如com.sun。*或com.apple。* * .java和* .class是独立的。