从 Java 7 转换到 Java 8

本文提供将应用程序从 Java 7 迁移到 Java 8 的概要指南。 不涉及使用 Java 8 功能。

将代码从 Java 7 转换到 Java 8 时,并没有一种适用于所有情况的解决方案。 从 Java 7 迁移到 Java 8 通常需要的工作量很小。 潜在问题包括少量已更改的 API、加强 javac 中的类型推理、对类加载程序的更改,以及对permgen(垃圾回收的一部分)的更改。

通常,最佳方法是先在不重新编译的情况下尝试在 Java 8 上运行。 这种方法会尽快启动并运行应用程序。 对于库,目标是发布使用 JDK 8 编译和测试的项目。

Java 7 停止支持 (EOL)

当 Java 7 于 2022 年 7 月 29 日停止支持时,社区支持将结束。 Java 7 上运行的任何应用程序将继续运行,但 Java 7 本身不会收到更新或安全修补程序。 若要最大程度地减小风险和潜在的安全漏洞,请根据工作负载要求将应用程序升级到 Java 8 或 11。

请遵循规范指南 Oracle JDK 迁移指南。 该迁移指南涵盖了 Java 规范中的不兼容性JDK 实现中的不兼容性。 这些不兼容性中的大多数是边缘情况,当你看到警告或遇到错误时应该进行调查。

在 Java 8 上运行

大多数应用程序在不修改的情况下应该可以在 Java 8 上运行。 首先要尝试的是在不重新编译代码的情况下在 Java 8 上运行。 直接运行的目的是查看执行时会出现哪些警告和错误。 此方法可以
让应用程序在 Java 8 上更快地运行,因为可以尽量减少那些必须完成的工作。

你可以在不重新编译代码的情况下解决可能会遇到的大多数问题。 如果必须修复代码问题,请进行修复,但继续使用 JDK 7 进行编译。 如果可能,请在使用 JDK 8 进行编译之前,让应用程序使用 java 版本 8 运行 。

用 Java 8 进行编译

如果使用 JDK 8 进行编译,可能需要更新才能生成脚本、工具、测试框架和包含的库。 使用 javac-Xlint:unchecked 选项可获取 JDK 内部 API 的使用详细信息和其他警告。

Azure 应用服务的 Java 7 迁移

若要将应用服务从 Java 7 迁移到 Java 8 或 11,请登录到 Azure 门户,导航到要更新的 Web 应用,然后转到“配置”>“设置”>“堆栈设置” 。 你将看到 Java 主要版本和次要版本的下拉列表,如果使用的是 Tomcat,你将看到 Tomcat 版本。 选择 Java 8 或 11。 请记住,你可以在部署槽位中更改此配置,以安全地测试配置更改,然后将新环境交换到生产中。 (Java 7 可能会隐藏,使客户无法获取旧运行时依赖项。)有关详细信息,请参阅在 Azure 应用服务中设置过渡环境

使用选择器更改 Java 版本

如果需要指定任何新的运行时选项,可以使用 JAVA_TOOLS 应用设置,这些设置将在应用程序启动时应用。 有关详细信息,请参阅为 Azure 应用服务配置 Java 应用。 若要详细了解应用服务上运行时的支持策略,请参阅应用服务概述内置语言和框架部分。

后续步骤

在 Java 8 上运行应用程序后,建议使用以下指南遵循 Java 11 的 Java 现代化路径。