问题描述
我正在开发一个应用程序,不知道是什么导致该应用程序依赖于平台。例如,在应用程序中使用Windows路径使其成为仅在Windows中运行的应用程序。
解决方法
有很多东西可以带你到那里:
- 使用JNI对操作系统特定功能进行本地调用(例如:将值读取/写入Windows注册表)
- 依靠图书馆……确实会为您进行此类本地调用
同一版本的更微妙的版本,尤其是在GUI编程的情况下:
- 依靠特定(非标准)字体
- 依赖于特定于操作系统的plafs
您在问题中所写的内容:
- 仅在特定于平台的方式下起作用的“外部”标识符,例如:文件路径
这里是个好消息:所有这些都是明确的。您必须以某种方式编写您的代码以变得依赖于平台。
要困难得多,但幸运的是,不那么常见:编写有效的Java代码...最后,它依赖于底层JVM的特定实现细节。例如,线程被映射到操作系统提供的线程。因此,从理论上讲,有机会编写在不同平台上表现不同的Java代码。
还要注意,在当今的商业环境中,实际上存在着各种不同的JVM实现。再次可能在运行时导致不同的行为。
长话短说:不要太担心。当您遵循标准的最佳实践(例如:避免使用完全硬编码的绝对路径名)时,您的“中型”项目应该不会出现平台问题。但是,一旦您谈论的是大型,复杂的应用程序,事情就会以许多微妙的方式有所不同。