Language runtime support policy for App Service

This article describes the language runtime support policy for updating existing stacks and retiring end-of-support stacks in Azure App Service. This policy clarifies existing practices and doesn't represent a change to customer commitments.

Updates to existing stacks

App Service updates existing stacks after they become available from each community. App Service updates major versions of stacks but can't guarantee any specific minor or patch versions. The platform controls minor and patch versions. For example, App Service updates Node 18 but doesn't guarantee a specific Node 18.x.x version. If you need a specific minor or patch version, you can use a custom container.

Retirements

App Service follows community support timelines for the lifecycle of the runtime. After community support for a language reaches the end of support, your applications continue to run unchanged. However, App Service can't provide security patches or related customer support for that runtime version past its end-of-support date. If your application has any problems past the end-of-support date for that version, you should move up to a supported version to receive the latest security patches and features.

Important

If you're running apps that use an unsupported language version, you need to upgrade to a supported language version before you can get support for those apps.

Notifications

End-of-support dates for runtime versions are determined independently by their respective stacks and are outside the control of App Service. App Service sends reminder notifications to subscription owners for upcoming end-of-support runtime versions when they become available for each language.

Those who receive notifications include account administrators, service administrators, and coadministrators. Contributors, readers, or other roles don't directly receive notifications unless they opt in to receive notification emails, using Service Health Alerts.

Timelines for language runtime version support

To learn more about specific timelines for the language support policy, see the following resources:

Configure language versions

To learn more about how to update language versions for your App Service applications, see the following resources:

Java-specific runtime statement of support

JDK versions and maintenance

Microsoft and Adoptium builds of OpenJDK are provided and supported on App Service for Java 8, 11, and 17. These binaries are provided as a no-cost, multi-platform, production-ready distribution of the OpenJDK for Azure. They contain all the components for building and running Java SE applications. For local development or testing, you can install the Microsoft build of OpenJDK from the downloads page.

Java stack name Linux distribution Java distribution
Java 8, Java SE Alpine 3.16* Adoptium Temurin 8 (MUSL)
Java 11, Java SE Alpine 3.16* MSFT OpenJDK 11 (MUSL)
Java 17, Java SE Ubuntu MSFT OpenJDK 17
Java 8, Tomcat 8.5 Alpine 3.16* Adoptium Temurin 8 (MUSL)
Java 11, Tomcat 8.5 Alpine 3.16* MSFT OpenJDK 11 (MUSL)
Java 8, Tomcat 9.0 Alpine 3.16* Adoptium Temurin 8 (MUSL)
Java 11, Tomcat 9.0 Alpine 3.16* MSFT OpenJDK 11 (MUSL)
Java 17, Tomcat 9.0 Ubuntu MSFT OpenJDK 17
Java 8, Tomcat 10.0 Ubuntu Adoptium Temurin 8
Java 11, Tomcat 10.0 Ubuntu MSFT OpenJDK 11
Java 17, Tomcat 10.0 Ubuntu MSFT OpenJDK 17
Java 11, Tomcat 10.1 Ubuntu MSFT OpenJDK 11
Java 17, Tomcat 10.1 Ubuntu MSFT OpenJDK 17
Java 8, JBoss 7.3 Ubuntu Adoptium Temurin 8
Java 11, JBoss 7.3 Ubuntu MSFT OpenJDK 11
Java 8, JBoss 7.4 Ubuntu Adoptium Temurin 8
Java 11, JBoss 7.4 Ubuntu MSFT OpenJDK 11
Java 17, JBoss 7.4 Ubuntu MSFT OpenJDK 17

* Alpine 3.16 is the last supported Alpine distribution in App Service. It's recommended to pin to a version to avoid switching over to Ubuntu automatically. Make sure you test and switch to Java offering supported by Ubuntu based distributions when possible.

If you're pinned to an older minor version of Java, your site may be using the deprecated Azul Zulu for Azure binaries provided through Azul Systems. You can continue to use these binaries for your site, but any security patches or improvements will only be available in new versions of the OpenJDK, so we recommend that you periodically update your Web Apps to a later version of Java.

Major version updates are provided through new runtime options in Azure App Service. Customers update to these newer versions of Java by configuring their App Service deployment and are responsible for testing and ensuring the major update meets their needs.

Supported JDKs are automatically patched on a quarterly basis in January, April, July, and October of each year. For more information on Java on Azure, see this support document.

Security updates

Patches and fixes for major security vulnerabilities are released as soon as they become available in Microsoft builds of the OpenJDK. A "major" vulnerability is defined by a base score of 9.0 or higher on the NIST Common Vulnerability Scoring System, version 2.

Tomcat 8.5 reached End of Life as of March 31, 2024 and Tomcat 10.0 reached End of Life as of October 31, 2022.

While the runtimes are still available on Azure App Service, Azure won't apply security updates to Tomcat 8.5 or 10.0.

When possible, migrate your applications to Tomcat 9.0 or Tomcat 10.1. Tomcat 9.0 and Tomcat 10.1 are available on Azure App Service. For more information, see the official Tomcat site.

Community support for Java 7 ended on July 29, 2022 and Java 7 was retired from App Service. If you have a web app running on Java 7, upgrade to Java 8 or 11 immediately.

Deprecation and retirement

If a supported Java runtime will be retired, Azure developers using the affected runtime will be given a deprecation notice at least six months before the runtime is retired.

Local development

Developers can download the Microsoft Build of OpenJDK for local development from our download site.

Product support for the Microsoft Build of OpenJDK is available through Microsoft when developing for Azure or Azure Stack with a qualified Azure support plan.