如何将 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 operator
、multicatch
、unnecessary (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
.
这可用于通过更改配置来转换完整的代码库(或其中的一部分)。
这是它的工作原理:
- select 你的项目
- 单击
Refactor
菜单
- 单击
Inspect and Transform
菜单项
- select
configuration
并使用 Manage
按钮配置它
- 选择您想要的转换(例如
Can Use Diamond
、Join catch sections using multicatch
、unnecessary boxing
等)
- 点击
Inspect
- 查看提出的重构建议并单击
Do Refactoring
您的完整代码库已重构并使用了您的 selected 新功能和新习语。
IntelliJ IDEA 具有类似的功能。请参阅 Analyze
> Inspect Code ...
在 Eclipse 中,这在 code style
(配置)或 source
(菜单)中称为 clean up
。
将较旧 jdk (1.5) 的 代码 迁移到 较新 [=] 的最佳方法是什么25=] version (1.8) 提供来自它的新功能和改进。 我们有一个很大的 Java jdk 5 代码库,想迁移到 jdk 8.
有很多编译器警告和提示(例如 diamond operator
、multicatch
、unnecessary (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
.
这可用于通过更改配置来转换完整的代码库(或其中的一部分)。
这是它的工作原理:
- select 你的项目
- 单击
Refactor
菜单 - 单击
Inspect and Transform
菜单项 - select
configuration
并使用Manage
按钮配置它 - 选择您想要的转换(例如
Can Use Diamond
、Join catch sections using multicatch
、unnecessary boxing
等) - 点击
Inspect
- 查看提出的重构建议并单击
Do Refactoring
您的完整代码库已重构并使用了您的 selected 新功能和新习语。
IntelliJ IDEA 具有类似的功能。请参阅 Analyze
> Inspect Code ...
在 Eclipse 中,这在 code style
(配置)或 source
(菜单)中称为 clean up
。