【问题标题】:Using JDK 7 to compile Java 6 source files: pros and cons使用 JDK 7 编译 Java 6 源文件:优缺点
【发布时间】:2013-12-13 15:25:55
【问题描述】:

我找不到这个问题的答案,所以我决定发布这个问题:

我有一个在 Tomcat 6 中运行的旧版 java 6 应用程序,目前正在使用最新的 JDK 6(rev 45)进行编译。我们即将添加一些 Scala (2.10.3) 模块(这将取决于 java 模块),我想知道是否值得升级到 JDK 7 编译器以及可能的风险是什么。

我还想知道,尽管我们可能需要 migrate to Tomcat 7 或其他容器,但还是硬着头皮切换到 java 7 是否会更好。

或者我们就等java 8吧!

【问题讨论】:

  • “我想知道是否值得升级到 JDK 7 编译器” 是否有任何 API 需要它?如果不是,则坚持使用 Java 6 会更简单。但请注意,使用正确的交叉编译选项,可以使用 Java 7+ 编译器编译与 Java 6 兼容的代码。
  • 特别是编译器上的-source-target 标志。
  • 我认为您的帖子标题具有误导性。您想知道如何使用 javac v7 编译由 javac v6 生成的类文件吗?还是您想要在版本之间迁移的意见/优点/缺点?
  • @DWilches 将标题更改为更清晰。
  • 我的意见通常是,您保持依赖项更新的次数越多,更新它们的工作就越少。您等待升级的时间越长,所需的工作就越多。所以我宁愿在可能的情况下早点而不是晚点。此外,您还可以获得所有这些花哨的新功能。

标签: java scala tomcat java-7 jdk1.6


【解决方案1】:

就泛型而言,使用 JDK-7 编译器编译 java-6 文件存在一些风险。一些类可能无法编译,而一些在 Java 6 中不可能的泛型构造现在可以在 JDK-7 编译器中编译。

所以确实存在一些不兼容之处。请学习:

Oracle compatibility note

【讨论】:

  • 多语言 JVM 和 Tomcat 6 怎么样?有哪些风险?它们是否超过了好处?
  • 您的第一段几乎就是 javac 的交叉编译选项的用途!
  • 是的,我自己使用 javac-options -source 和 -target 用 JDK-7 编译了 java-6-source 代码,但确实遇到了编译问题。所以javac交叉编译是完美的,也不可能是完美的。
  • @AndrewThompson 我问的是它是否值得,而不是可能。我知道这是可能的。我正在尝试收集一些这样做的经验。
  • @GiovanniBotta 您可以尝试并测试 - 首先在并行的非生产安装中。希望您的 java-6-application 也有一个好的测试套件。没有什么比一个好的测试能给你更好的建议了。
猜你喜欢
  • 2013-01-20
  • 1970-01-01
  • 2011-12-01
  • 2011-10-05
  • 2016-09-14
  • 2012-08-26
  • 2012-06-19
  • 1970-01-01
  • 2013-10-01
相关资源
最近更新 更多