Fazer upgrade de um aplicativo atual

Faça upgrade dos aplicativos para a versão com suporte mais recente do ambiente de execução a fim de continuar recebendo atualizações de segurança e se qualificar para o suporte técnico. Considere também a migração para o Cloud Run, a evolução mais recente do Google Cloud sem servidor. O Cloud Run foi projetado para melhorar a experiência do App Engine, incorporando muitos dos melhores recursos do ambiente padrão e do ambiente flexível. Para comparar recursos e entender a migração, consulte o guia de comparação entre o App Engine e o Cloud Run.

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.

  • Java 11 ou Java 17:

    Estes ambientes de execução são versões Java com suporte. Para continuar fazendo upgrade para a versão de suporte mais recente, faça o seguinte:

    • Atualize o arquivo app.yaml especificando a versão do Java que você quer que o app execute. Exemplo:

        runtime: javaVERSION
      

      Em que VERSION é o número da versão MAJOR.

      Exemplo: para Java 21, especifique 21 como runtime: java21. 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 dá 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.

      Consulte Fazer upgrade para o Java 21 a fim de acessar serviços agrupados legados para conferir todas as opções.

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 seguinte tabela para entender quais versões do Java são compatíveis com suas versões do Jetty e do servlet:

Enterprise Edition (EE) Versão do Jetty Versão do Java Servlet Compatibilidade
EE7 9.4 11 2.5 ou 3.1
EE7 9.4 17 2.5 ou 3.1
EE8 12 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 12 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:

  1. Altere o número da versão no arquivo de configuração web.xml para version=6.0. Exemplo:

        <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"
          version="6.0">
          ...
        </web-app>
    
  2. Renomeie os servlets e as dependências do aplicativo de javax.servlet.* para jakarta.servlet.*:

         import jakarta.servlet.ServletException;
         import jakarta.servlet.annotation.WebServlet;
         import jakarta.servlet.http.Cookie;
         import jakarta.servlet.http.HttpServlet;
         import jakarta.servlet.http.HttpServletRequest;
         import jakarta.servlet.http.HttpServletResponse;
    
         @WebServlet(name = "viewer", urlPatterns = {"/view"})
         public class MyServlet extends HttpServlet {
        ......
    
  3. Atualize as dependências de terceiros restantes do aplicativo para artefatos Java mais recentes, de acordo com o namespace Jakarta.

  4. 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 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 Jetty 12 oferece compatibilidade com versões anteriores do Java EE6 e com versões 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:

   <?xml version="1.0" encoding="utf-8"?>
   <appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
      <runtime>java21</runtime>
      <system-properties>
        <property name="appengine.use.EE8" value="true"/>
      </system-properties>
      <app-engine-apis>true</app-engine-apis>
   </appengine-web-app>

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"/>