java - 如果我开始使用 Java 7 标准库,我是在自找麻烦吗?

标签 java jvm java-7

我正在编写一个需要在多个平台上监视文件系统事件的程序。 Java 7 包含一个新的标准库 WatchService,它充当不同类型文件系统事件处理程序(inotifyFSEventsFileSystemWatcher 等)。

用 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/

相关文章:

java - 在哪里可以找到 Base64Encoder 类?

java - JIT 编译代码存放在哪里?

java - 获取接口(interface)上的注释值?

java - appengine 端点无法检索状态为 : 500 的 API 配置

java - 如何从父类继承变量?

java - string.indexof (")")不工作

java - Java中如何获取证书信息

java - JVM 中的套接字是如何实现的?

java - 一个 jvm 中的 java 进程是否有可能杀死/停止另一个 jvm 中的另一个 java 进程?

java - 泛型类在 Java 6 中编译,但在 Java 7 中不编译