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)上运行代码是很酷的.
Aar*_*rup 14
正如djacobson指出的那样,答案是合格的"是".在大多数情况下,Java开发人员不必担心平台依赖性.但是,当您处理处理传统操作系统和平台功能的API时,可能会遇到问题.
例如,在处理文件I/O时,通过忽略跨平台的文件/路径分隔符之间的差异(即使用'\'
而不是File.separator
),很容易使代码平台依赖.
多半是对的.由于Java编译为由其虚拟机执行的字节码,因此无论虚拟机下的系统如何,通常都可以期望它的行为方式相同.
然而.甚至虚拟机都不会受到bug的影响.快速谷歌搜索会出现以下情况,例如:
http://www.ibm.com/developerworks/java/library/j-diag0521.html
行为差异可能因JVM而异.希望您不会得到依赖于任何这些情况的代码......但仔细研究是值得了解您的基础架构的局限性.
小智 5
您的问题不会执行您的代码,但更可能是您必须对文件路径,可用的外部命令(如果您需要),必要的文件权限和其他不属于"Java"的外部因素做出的假设问题域.除非您计划广泛使用本机代码(通过JNI),否则Java不会成为您的问题,您的环境也将如此.这让我们回到了古老的格言:"写一次,到处测试".