O processo de upgrade de um app atual depende da versão do ambiente de execução
usada atualmente pelo app:
Java 8: é necessário migrar o app para a versão com suporte mais recente do Java. O Java 8 chegou ao fim do suporte em 31 de janeiro de 2024. Os aplicativos Java 8 atuais continuarão
a ser executados e recebendo tráfego. No entanto,
não será possível implantar aplicativos novos ou atualizar os atuais que usam ambientes de execução após a data de término de suporte.
Ambientes de execução de segunda geração do Java (após o fim do suporte): para fazer upgrade para uma
versão compatível do Java,
faça o seguinte:
Atualize o arquivo app.yaml especificando uma versão do Java que
você quer que o app execute. Exemplo:
runtime:javaVERSION
Em que VERSION é o número da versão MAJOR.
Por exemplo, para usar a versão mais recente do Java, Java 21,
especifique 21.
Para mais informações, consulte a
Visão geral do ambiente de execução do Java.
Se você usa serviços agrupados legados, faça upgrade dos apps para serem executados
em:
Java Enterprise Edition 10 (EE10 - padrão, recomendado): o Java EE10
não oferece suporte a APIs javax.servlet.* e exige que você atualize
seus apps e dependências de terceiros para usar artefatos Java mais recentes,
como o namespace Jakarta.
Java Enterprise Edition 8 (EE8): o Java EE8 permite que você use APIs javax.servlet.*, mas é necessário fazer pequenas alterações de configuração
no arquivo appengine-web.xml.
O App Engine oferece suporte a essa versão. Para continuar fazendo upgrade para a
versão de suporte mais recente, faça o seguinte:
Atualize o arquivo app.yaml especificando uma versão do Java que
você quer que o app execute. Exemplo:
runtime:javaVERSION
Em que VERSION é o número da versão MAJOR.
Por exemplo, para usar a versão mais recente do Java, Java 21,
especifique 21.
Para mais informações, consulte a
Visão geral do ambiente de execução do Java.
Se você usa serviços agrupados legados, faça upgrade dos apps para serem executados
em:
Java Enterprise Edition 10 (EE10 - padrão, recomendado): o Java EE10
não oferece suporte a APIs javax.servlet.* e exige que você atualize
seus apps e dependências de terceiros para usar artefatos Java mais recentes,
como o namespace Jakarta.
Java Enterprise Edition 8 (EE8): o Java EE8 permite que você use
APIs javax.servlet.*, mas é necessário fazer pequenas alterações de configuração
no arquivo appengine-web.xml.
Fazer upgrade para o Java 21 a fim de ter acesso a serviços agrupados legados
Compatibilidade com o ambiente de execução do Java
Consulte a tabela a seguir para entender quais versões do Java são compatíveis
com suas versões do servlet:
Enterprise Edition (EE)
Versão do Java
Servlet
Compatibilidade
EE7
11
2.5 ou 3.1
Não há suporte da comunidade para o EE7. O fim do suporte do Java 11 foi alcançado. Recomendamos que você faça upgrade do seu app para usar a versão mais recente do Java.
EE7
17
2.5 ou mais recente
Não há suporte da comunidade para o EE7. Recomendamos que você faça upgrade do seu app para usar o EE8.
EE8
17/21
2.5 e mais recentes
O Java EE8 é compatível com versões anteriores do Java EE6 e com versões mais recentes. Para mais informações, consulte Fazer upgrade para o Java 21 no EE8.
EE10
17/21
6.0 (recomendado). O Java 21 está configurado para executar o EE10 por padrão.
Para usar o Java EE10, é necessário atualizar os servlets e as dependências do aplicativo para incluir o namespace Jakarta. Para mais informações, consulte Fazer upgrade do Java 21 no EE10.
Fazer upgrade para o Java 21 no EE10
Para usar o Java 21 na Enterprise Edition 10 (EE10),
faça upgrade dos servlets e das dependências do aplicativo nos arquivos Maven e
Gradle para incluir o namespace Jakarta:
Altere o número da versão no arquivo de configuração web.xml para version=6.0. Por exemplo:
Opcional: o Java 21 dá suporte a linhas de execução virtuais. Para ativar
as linhas de execução virtuais, adicione a propriedade
appengine.use.virtualthreads na tag system-properties
ao arquivo
appengine-web.xml.
Fazer upgrade para o Java 17 ou 21 no EE8
Você pode continuar usando as APIs javax.servlet.* no Java EE8 sem grandes mudanças
na configuração do aplicativo, porque o EE8 oferece compatibilidade com versões anteriores do Java EE6
e mais recentes. Para executar seus aplicativos no Java EE8, declare uma nova
tag system-properties no arquivo
appengine-web.xml
com a configuração não padrão app.engine.use.EE8:
Opcional: o Java 21 dá suporte a linhas de execução virtuais. Para ativar
as linhas de execução virtuais, adicione a propriedade appengine.use.virtualthreads
na tag system-properties. Exemplo: <property name="appengine.use.virtualthreads" value="true"/>
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Informações incorretas ou exemplo de código","incorrectInformationOrSampleCode","thumb-down"],["Não contém as informações/amostras de que eu preciso","missingTheInformationSamplesINeed","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-09-04 UTC."],[[["\u003cp\u003eApplications must be upgraded to the latest supported Java runtime version to receive security updates and technical support.\u003c/p\u003e\n"],["\u003cp\u003eJava 8 applications have reached end of support and while they will continue to run, new deployments or updates to Java 8 applications are not permitted.\u003c/p\u003e\n"],["\u003cp\u003eUpgrading to a supported Java version involves updating the \u003ccode\u003eapp.yaml\u003c/code\u003e file to specify the desired Java version, such as Java 21, by using the \u003ccode\u003eruntime: javaVERSION\u003c/code\u003e configuration.\u003c/p\u003e\n"],["\u003cp\u003eIf using legacy bundled services, applications must be upgraded to either Java Enterprise Edition 10 (EE10), which requires using the \u003ccode\u003eJakarta\u003c/code\u003e namespace, or Java Enterprise Edition 8 (EE8), which requires minor \u003ccode\u003eappengine-web.xml\u003c/code\u003e configuration changes to use \u003ccode\u003ejavax.servlet.*\u003c/code\u003e APIs.\u003c/p\u003e\n"],["\u003cp\u003eJava 21 supports virtual threads, which can be enabled by adding the \u003ccode\u003eappengine.use.virtualthreads\u003c/code\u003e property in the \u003ccode\u003eappengine-web.xml\u003c/code\u003e file.\u003c/p\u003e\n"]]],[],null,["# Upgrade an existing application\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\nYou must upgrade your applications to the [latest supported runtime version](/appengine/docs/standard/lifecycle/support-schedule#java) to continue receiving security updates\nand be eligible for technical support.\n\nThe process of upgrading an existing app depends on the runtime version that\nyour app currently uses:\n\n- **Java 8** : You must migrate your app to the [latest supported Java version](/appengine/docs/standard/lifecycle/support-schedule#java). Java 8 has reached [end of support](/appengine/docs/standard/lifecycle/runtime-lifecycle#end_of_support) on January 31,2024. Your\n existing Java 8 applications will continue to run and receive traffic. However,\n you cannot deploy new or update existing applications that use runtimes [after their end of support date](/appengine/docs/standard/lifecycle/support-schedule#java).\n\n- **Java second-generation runtimes (after end of support)** : To upgrade to a\n [supported version of Java](/appengine/docs/standard/lifecycle/support-schedule#java),\n do the following:\n\n - Update the `app.yaml` file by specifying a version of Java that you want your\n app to run. For example:\n\n runtime: java\u003cvar translate=\"no\"\u003eVERSION\u003c/var\u003e\n\n Where \u003cvar translate=\"no\"\u003eVERSION\u003c/var\u003e is the `MAJOR` version number.\n For example, to use the latest Java version, Java 21,\n specify `21`.\n For more information, see the\n [Java runtime overview](/appengine/docs/standard/java-gen2/runtime).\n - If you use legacy bundled services, you must upgrade your apps to run\n on either:\n\n - Java Enterprise Edition 10 (EE10 - default, recommended): Java EE10\n does not support `javax.servlet.*` APIs and requires you to update\n your apps and third-party dependencies to use newer Java artifacts\n like the `Jakarta` namespace.\n\n - Java Enterprise Edition 8 (EE8): Java EE8 lets you use `javax.servlet.*`\n APIs, but you must make minor configuration changes\n to your `appengine-web.xml` file.\n\n See [Upgrade to Java 21 for legacy bundled services](#update_for_bundled_services) for all options.\n- **Java 17**:\n\n App Engine supports this version. To continue to upgrade to the\n latest support version, do the following:\n - Update the `app.yaml` file by specifying a version of Java that you want your\n app to run. For example:\n\n runtime: java\u003cvar translate=\"no\"\u003eVERSION\u003c/var\u003e\n\n Where \u003cvar translate=\"no\"\u003eVERSION\u003c/var\u003e is the `MAJOR` version number.\n For example, to use the latest Java version, Java 21,\n specify `21`.\n For more information, see the\n [Java runtime overview](/appengine/docs/standard/java-gen2/runtime).\n - If you use legacy bundled services, you must upgrade your apps to run\n on either:\n\n - Java Enterprise Edition 10 (EE10 - default, recommended): Java EE10\n does not support `javax.servlet.*` APIs and requires you to update\n your apps and third-party dependencies to use newer Java artifacts\n like the `Jakarta` namespace.\n\n - Java Enterprise Edition 8 (EE8): Java EE8 lets you use\n `javax.servlet.*` APIs, but you must make minor configuration changes\n to your `appengine-web.xml` file.\n\n See [Upgrade to Java 21 for legacy bundled services](#update_for_bundled_services) for all options.\n\nUpgrade to Java 21 for legacy bundled services\n----------------------------------------------\n\n| **Important:** The `javax.servlet.*` APIs reached the [end of community support](https://github.com/jetty/jetty.project/issues/7958). We recommend that you update to [EE10](#ee10).\n\n### Java runtime compatibility\n\nRefer to the following table to understand which Java versions are compatible\nwith your versions of servlet:\n\n### Upgrade to Java 21 on EE10\n\nTo use Java 21 on [Enterprise Edition 10 (EE10)](https://jakarta.ee/release/10/),\nyou must upgrade your application servlets and dependencies in your Maven and Gradle\nfiles to include the `Jakarta` namespace:\n\n1. Change the version number in your `web.xml` configuration file to `version=6.0`. For example:\n\n \u003cweb-app xmlns=\"https://jakarta.ee/xml/ns/jakartaee\"\n xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n xsi:schemaLocation=\"https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd\"\n version=\"6.0\"\u003e\n ...\n \u003c/web-app\u003e\n\n2. Rename your application servlets and dependencies from `javax.servlet.*` to\n `jakarta.servlet.*`:\n\n import jakarta.servlet.ServletException;\n import jakarta.servlet.annotation.WebServlet;\n import jakarta.servlet.http.Cookie;\n import jakarta.servlet.http.HttpServlet;\n import jakarta.servlet.http.HttpServletRequest;\n import jakarta.servlet.http.HttpServletResponse;\n\n @WebServlet(name = \"viewer\", urlPatterns = {\"/view\"})\n public class MyServlet extends HttpServlet {\n ......\n\n3. Update your remaining application third-party dependencies to newer Java artifacts\n depending on the `Jakarta` namespace.\n\n4. Add the following system property in your [`appengine-web.xml`](/appengine/docs/standard/java-gen2/config/appref-xml#system_properties) file:\n\n \u003c?xml version=\"1.0\" encoding=\"utf-8\"?\u003e\n \u003cappengine-web-app xmlns=\"http://appengine.google.com/ns/1.0\"\u003e\n \u003cruntime\u003ejava21\u003c/runtime\u003e \u003c!-- or java17 --\u003e\n \u003csystem-properties\u003e\n \u003cproperty name=\"appengine.use.EE10\" value=\"true\"/\u003e\n \u003c/system-properties\u003e\n \u003capp-engine-apis\u003etrue\u003c/app-engine-apis\u003e\n \u003c/appengine-web-app\u003e\n\n5. Optional: Java 21 includes support for virtual threads. To enable\n virtual threads, you add the\n `appengine.use.virtualthreads` property within the `system-properties` tag\n in your [`appengine-web.xml`](/appengine/docs/standard/java-gen2/config/appref-xml#system_properties)\n file.\n\n### Upgrade to Java 17 or 21 on EE8\n\nYou can continue using `javax.servlet.*` APIs on Java EE8 without major application\nconfiguration changes, because EE8 offers backward compatibility for Java EE6\nand later. To run your applications on Java EE8, you must declare a new\n`system-properties` tag in your\n[`appengine-web.xml`](/appengine/docs/standard/java-gen2/config/appref-xml#system_properties)\nfile with the non-default `app.engine.use.EE8` configuration: \n\n \u003c?xml version=\"1.0\" encoding=\"utf-8\"?\u003e\n \u003cappengine-web-app xmlns=\"http://appengine.google.com/ns/1.0\"\u003e\n \u003cruntime\u003ejava21\u003c/runtime\u003e \u003c!-- or java17 --\u003e\n \u003csystem-properties\u003e\n \u003cproperty name=\"appengine.use.EE8\" value=\"true\"/\u003e\n \u003c/system-properties\u003e\n \u003capp-engine-apis\u003etrue\u003c/app-engine-apis\u003e\n \u003c/appengine-web-app\u003e\n\nOptional: Java 21 includes support for virtual threads. To enable\nvirtual threads, you add the `appengine.use.virtualthreads` property\nwithin the `system-properties` tag. Example:\n`\u003cproperty name=\"appengine.use.virtualthreads\" value=\"true\"/\u003e`"]]