将旧jdk(1.5)的Java代码迁移到更新的Java版本(1.8)的最佳方法是什么。我们有一个很大的Java jdk 5代码库,希望迁移到jdk 8。
有很多编译器警告和提示(例如diamond operator
、multicatch
、unnecessary (un)boxing
等),它们将提高性能、代码可读性等。
我们使用的是Netbeans IDE。有没有我们可以使用的插件,或者有迁移脚本?
您的代码与Java8不兼容的可能性很小,因为Java在确保与所有早期版本的向后兼容性方面已经取得了长足的进步。
您可能会遇到更深层次的问题,可能是在多年来发生变化的集合或方法的实现中。
如果您没有一个涵盖代码关键路径的测试套件,请从那里开始您需要该测试套件来确保迁移不会严重破坏任何东西。
接下来,仔细阅读Java 1.7和Java 1.8的兼容性指南,确保您使用的任何内容都不会受到这些更改的影响。
最后,可以处理代码清理部分,但现在不应该处理它。您唯一需要关心的是让平台在新版本的Java上运行。当您在代码库中工作时,请训练自己和团队使用较新的Java习惯用法,如菱形表示法,并在适用的情况下尝试使用资源。
不幸的是,没有神奇的方法可以实现您的要求,但这里有一些指针可以让您更容易地将代码迁移到JDK 1.7(请注意,JDK 1.8已经发布了一段时间,Oracle已经正式停止支持1.7):
-
在Eclipse中使用checkstyle或类似的插件来查找问题
-
在Eclipse中使用JDK编译器1.7级构建您的项目;Eclipse给出的警告比命令行编译器在控制台上打印的警告对用户友好得多
-
理论上,JDK 1.7与1.5向后兼容。唯一的例外是断言和枚举关键字。如果将这些单词用作用户定义的类型/方法名称,则会出现编译错误。因此,在大多数情况下,你可以直接得到警告。如果事态发展到紧要关头,你可以选择忽略其中的许多警告(当然,只有在必须的情况下)
找到了我想要的:Netbeans提供Inspect and Transform
。
这可以用于通过更改配置转换完整的代码库(或部分代码库)。
这就是它的工作原理:
- 选择您的项目
- 单击"
Refactor
"菜单 - 单击"
Inspect and Transform
"菜单项 - 选择
configuration
并使用Manage
按钮进行配置 - 选择您想要的转换(例如
Can Use Diamond
、Join catch sections using multicatch
、unnecessary boxing
等) - 单击
Inspect
- 查看建议的重构建议,然后单击
Do Refactoring
您的完整代码库将被重构,并使用您选择的新特性和新习惯用法。
IntelliJ IDEA也有类似的功能。参见Analyze
>Inspect Code ...
在Eclipse中,这在code style
(配置)或source
(菜单)中被称为clean up
。