我正在编写一个需要在多个平台上监视文件系统事件的程序。 Java 7 包含一个新的标准库 WatchService
,它充当不同类型文件系统事件处理程序(inotify
、FSEvents
、FileSystemWatcher
等)。
用 Java 7 编译器编译的代码是否需要 Java 7 JVM 才能运行?
如果是这样,我是否会遇到未安装/不支持该平台(较旧的 OSX、Windows XP 等)的 JVM 7 的客户端计算机的各种问题?
最佳答案
Is it the case that code compiled with the Java 7 compiler needs a Java 7 JVM to run it?
是的。
您可以使用 Java 7 编译器通过 -target 6.0
进行编译,但如果代码依赖于 Java 7 - 特定的类库,那将无济于事......显然是你的
If so, will I have all sorts of problems with client machines that don't have JVM 7 installed/available for that platform (older OSXs, Windows XP etc)?
是的。在“已安装”方面肯定是这种情况。如果您的代码依赖于 Java 7,最好的选择是让您的客户安装 Java 7 JVM 来运行它。 (并排安装多个版本的 Java 是一件简单的事情,而且其他 Java 应用程序很有可能可以在 Java 7 JVM 上正常运行。)
在“可用”方面,在 Oracle 实际发布 Java 7 之前,我们无法确定支持哪些平台。如果有重要平台不受支持,那么有一个很好的有可能:
- 有人会将 OpenJDK 7 移植到该平台,或者
- 第 3 方供应商(例如 IBM)将在他们的 Java 7 产品中支持它。
(但我不会打赌任何人支持 Windows XP 之前的版本,旧版本的 OSX 值得怀疑,IMO。)
我的建议是不要“跳”到 Java 7 ...还 ...如果支持旧平台是一项重要要求。
关于java - 如果我开始使用 Java 7 标准库,我是在自找麻烦吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5293195/