如果我开始使用Java7标准库,我会自找麻烦吗?

如果我开始使用Java7标准库,我会自找麻烦吗?,java,jvm,java-7,Java,Jvm,Java 7,我正在编写一个程序,需要在多个平台上监视文件系统事件。Java 7包括一个新的标准库,WatchService,它充当不同类型文件系统事件处理程序的抽象(inotify,FSEvents,FileSystemWatcher等) 使用Java 7编译器编译的代码是否需要Java 7 JVM来运行 如果是这样的话,我会不会在没有安装JVM 7的客户机上遇到各种各样的问题(旧的OSX、Windows XP等)?是和否,Java 7版本是Java字节码规范。您可以使用-target标志编译到字节码的旧版

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

使用Java 7编译器编译的代码是否需要Java 7 JVM来运行


如果是这样的话,我会不会在没有安装JVM 7的客户机上遇到各种各样的问题(旧的OSX、Windows XP等)?

是和否,Java 7版本是Java字节码规范。您可以使用
-target
标志编译到字节码的旧版本,但要使用java 7核心库,您需要有java 7发行版

有一个为OSX提供Java7的项目正在进行中。我使用过它,它对我来说运行得非常好

使用Java 7编译器编译的代码是否需要Java 7 JVM来运行

您可以使用Java 7编译器使用
-target 6.0
进行编译,但是如果代码依赖于Java 7特定的类库,那么这将没有帮助。。。就像你的一样

如果是这样的话,对于没有安装JVM7的客户机(旧的OSX、WindowsXP等),我会遇到各种各样的问题吗

对。在“已安装”的前端,情况确实如此。如果您的代码依赖于Java7,那么最好的选择是让您的客户安装Java7JVM来运行它。(并行安装多个Java版本很简单,其他Java应用程序很有可能在Java 7 JVM中运行良好。)

在“可用”方面,在Oracle实际发布Java7之前,我们无法确定支持哪些平台。如果存在不受支持的重要平台,则很有可能:

  • 有人将OpenJDK 7移植到平台,或者
  • 第三方供应商(如IBM)将在其Java 7产品中支持它
(但我不敢打赌会有人支持Windows XP之前的版本,我认为OSX的旧版本值得怀疑。)



我的建议是不要“跳转”到Java7然而。。。Java 7编译器将编译来自JDK 7和更低版本的代码,但JDK 6和更低版本无法编译使用JDK 7对象/类的代码

是不是用 Java 7编译器需要一个Java 7 JVM 运行它

是的

如果是的话,我会有各种各样的 客户端计算机的问题 没有安装/提供JVM 7 对于该平台(较旧的OSX、Windows XP等)


是的,因为类版本号将高于Java6或更低版本的JVM所需的版本号。必须通知客户机将其JVM升级到Java 7。

不,在Java 6虚拟机上运行为Java 7编译的代码时不会出现各种问题。您将只有一种问题:代码将拒绝运行,因为在Java6VM上,Java6VM将识别类文件中的版本号高于Java6VM所知道的任何版本号。您将得到一个简单、易于诊断的错误

您的客户将无法使用该代码,但至少您不会试图找出细微问题的原因