如何将 Java 代码迁移到更新的 jdk(例如 1.8)

How to migrate Java code to a more recent jdk (e.g. 1.8)

将较旧 jdk (1.5) 的 代码 迁移到 较新 [=] 的最佳方法是什么25=] version (1.8) 提供来自它的新功能和改进。 我们有一个很大的 Java jdk 5 代码库,想迁移到 jdk 8.

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

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

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

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

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

  • 理论上,JDK1.7 向后兼容 1.5。唯一的例外是 assert 和 enum 关键字。如果您将这些词用作用户定义的 type/method 名称,则会出现编译错误。因此,在大多数情况下,您可以直接查看警告。如果到了紧要关头,你可以选择忽略其中的许多警告(当然,只有在你必须这样做的情况下)

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

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

如果您没有覆盖代码关键路径的测试套件,从这里开始。您将需要该测试套件以确保迁移没有什么都坏了。

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

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

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

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

这是它的工作原理:

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

您的完整代码库已重构并使用了您的 selected 新功能和新习语。

IntelliJ IDEA 具有类似的功能。请参阅 Analyze > Inspect Code ...

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