【问题标题】:How to migrate Java code to a more recent jdk (e.g. 1.8)如何将 Java 代码迁移到更新的 jdk(例如 1.8)
【发布时间】:2015-11-10 20:25:02
【问题描述】:

将旧 jdk (1.5) 的 Java 代码迁移更新的 Java 版本 (1.8) 以提供新功能和改进的最佳方法是什么. 我们有一个庞大的 Java jdk 5 代码库,并希望迁移到 jdk 8。

有很多编译器警告和提示(例如diamond operatormulticatchunnecessary (un)boxing 等)将提高性能、代码可读性等。

我们正在使用 Netbeans IDE。是否有我们可以使用的插件或迁移脚本?

【问题讨论】:

  • 不熟悉 Netbeans。但是您可以尝试 IntelliJ(免费版)来解决这些问题。
  • 您描述的警告不是来自编译器,而是来自 Netbeans IDE。它们正是您所要求的功能的一部分。除了这些警告,Netbeans 还提供了修复,如果您愿意,您可以在整个项目中运行这些审计和修复。不需要额外的插件。

标签: java netbeans java-8 jdk1.5


【解决方案1】:

您的代码不兼容与 Java 8 的可能性很小,因为 Java 在确保向后兼容所有以前的版本方面取得了长足的进步。

您可能会遇到更深层次的问题,可能在多年来发生变化的集合或方法的实现中。

如果您没有涵盖代码关键路径的测试套件,从那里开始。您需要该测试套件来确保迁移没有严重破坏任何东西。

接下来,仔细阅读兼容性指南 for Java 1.7Java 1.8,并确保您正在使用的任何东西都不会受到这些更改的影响。

最后,代码清理部分可以解决,但它不应该现在就解决。您唯一需要关心的就是让平台在新版本的 Java 上运行。当您在代码库中工作时,请约束自己和团队使用较新的 Java 习惯用法,例如菱形表示法,并在适用的情况下尝试使用资源。

【讨论】:

  • 感谢您的详尽回答。兼容性不是这里的问题。我们也有相当多的测试。我特别在寻找迁移以从新 jdks 的改进中受益。
【解决方案2】:

不幸的是,没有神奇的方法可以实现您的要求,但这里有一些提示可以让您更轻松地将代码迁移到 JDK 1.7(请注意,JDK 1.8 已经发布了一段时间,并且 1.7 已经被 Oracle 正式停止支持):

  • 在 Eclipse 中使用 checkstyle 或类似插件查找问题

  • 在 Eclipse 中使用 JDK 编译器级别 1.7 构建您的项目; Eclipse 给出的警告比命令行编译器在控制台上打印的警告更加用户友好

  • 理论上,JDK 1.7 向后兼容 1.5。唯一的例外是 assert 和 enum 关键字。如果你使用这些词作为用户定义的类型/方法名,你会得到一个编译错误。因此,在大多数情况下,您可以直接收到警告。如果迫在眉睫,您可以选择忽略其中许多警告(当然,只有在必须时)

【讨论】:

  • assertenum 都存在于 Java 1.5 中。
【解决方案3】:

找到了我要找的东西:Netbeans提供Inspect and Transform

这可用于通过更改配置转换您的完整代码库(或部分代码库)。

这就是它的工作原理:

  1. 选择您的项目
  2. 点击Refactor菜单
  3. 点击Inspect and Transform菜单项
  4. 选择configuration 并使用Manage 按钮进行配置
  5. 选择所需的转换(例如Can Use DiamondJoin catch sections using multicatchunnecessary boxing 等)
  6. 点击Inspect
  7. 查看提出的重构建议并点击Do Refactoring

重构您的完整代码库并使用您选择的新功能和新习惯用法。

IntelliJ IDEA 有类似的功能。见Analyze > Inspect Code ...

Eclipse 中,这在 code style(配置)或 source(菜单)中称为 clean up

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-14
    • 2019-06-02
    • 2019-02-10
    • 2013-05-08
    • 2021-04-18
    相关资源
    最近更新 更多