Java完全独立于平台吗?

YoK*_*YoK 28 java

Java完全独立于平台吗?

如果没有,那么需要注意看看用Java编写的代码可以在多平台上运行.基本上它应该适用于Windows(各种版本),Linux(所有版本),Mac和Solaris等目标平台.

Leo*_*Leo 20

虽然在实践中,大多数编译的字节代码都是独立于平台的,但我在Java平台上开发12年的经验告诉我,从平台到平台仍然存在特质.

例如,在为PC和MacOSX开发Java 1.4 Swing应用程序时,如果父框架为空,则对话框的行为会有所不同.

另一个例子可能是使用文件系统和文件.Java API具有帮助保护开发人员免受路径分隔符(/vs \)差异的方法.在写入文件时,重要的是按预期使用FileWriter API,以便为正在编写的平台正确生成返回字符等.

因此,虽然座右铭是"一次编写,随处运行",但我的经验是生产环境,它只需编写一次,测试,无处不在.

因此,拥有强大的单元和集成测试可以帮助解决这个问题,因为您可以在要分发软件的各种平台上执行这些测试.

尽管存在一些小问题,但使用相同的JAR在Linux,Unix,Windows和MacOSX(BSD Unix)上运行代码是很酷的.

  • +1可以分享经验以解决面临的问题。 (2认同)

Aar*_*rup 14

正如djacobson指出的那样,答案是合格的"是".在大多数情况下,Java开发人员不必担心平台依赖性.但是,当您处理处理传统操作系统和平台功能的API时,可能会遇到问题.

例如,在处理文件I/O时,通过忽略跨平台的文件/路径分隔符之间的差异(即使用'\'而不是File.separator),很容易使代码平台依赖.

  • 实际上,如果你使用'/'它可以全面工作,包括在Windows上. (13认同)
  • +1好电话.Java为平台独立性提供的一些机制不是*自动的.:) (5认同)

Dan*_*n J 7

多半是对的.由于Java编译为由其虚拟机执行的字节码,因此无论虚拟机下的系统如何,通常都可以期望它的行为方式相同.

然而.甚至虚拟机都不会受到bug的影响.快速谷歌搜索会出现以下情况,例如:

http://www.ibm.com/developerworks/java/library/j-diag0521.html

行为差异可能因JVM而异.希望您不会得到依赖于任何这些情况的代码......但仔细研究是值得了解您的基础架构的局限性.


小智 5

您的问题不会执行您的代码,但更可能是您必须对文件路径,可用的外部命令(如果您需要),必要的文件权限和其他不属于"Java"的外部因素做出的假设问题域.除非您计划广泛使用本机代码(通过JNI),否则Java不会成为您的问题,您的环境也将如此.这让我们回到了古老的格言:"写一次,到处测试".