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.

O processo de upgrade de um aplicativo atual depende da versão do ambiente de execução usada pelo aplicativo:

  • Java 8: migre seu aplicativo para a versão mais recente do Java com suporte. O Java 8 chegou ao fim do suporte em 31 de janeiro de 2024 e será descontinuado em 31 de janeiro de 2026. Após a descontinuação, não será possível implantar aplicativos Java 8, mesmo que sua organização tenha usado uma política da organização para reativar implantações de ambientes de execução legados. Os aplicativos Java 8 atuais vão continuar sendo executados e recebendo tráfego após a data de descontinuação.

  • Java 11: faça upgrade do aplicativo para a versão mais recente com suporte do Java. O Java 11 chegou ao fim do suporte em 31 de outubro de 2024 e será descontinuado em 31 de outubro de 2025. Após a descontinuação, não será possível implantar aplicativos Java 11. Os aplicativos Java 11 atuais vão continuar sendo executados e recebendo tráfego após a data de descontinuação.

  • Ambientes de execução de segunda geração compatíveis (Java 17 e Java 21):

    O App Engine é compatível com versões do ambiente de execução Java de segunda geração, como Java 17 e Java 21. Para fazer upgrade para o Java 25 (pré-lançamento), 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 25 (prévia), especifique 25. 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 aplicativos para serem executados em:

      • Java Enterprise Edition 11 (E11): o EE 11 não é compatível com APIs javax.servlet.* e exige que você atualize seus aplicativos e dependências de terceiros para usar artefatos Java mais recentes, como o namespace Jakarta. O Java 25 (prévia) é executado por padrão no EE 11 e não é compatível com o EE 10.

      • Java Enterprise Edition 8 (EE 8): o Java EE 8 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 uma versão compatível do Java para 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. Para mais detalhes sobre os recursos de ponto de entrada, configurações de propriedades do sistema, suporte do Jetty resultante e versões compatíveis do EE, consulte Recursos de ponto de entrada.

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 Java 11 chegou ao fim do suporte. 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 app para usar o EE 8 e versões mais recentes.
EE 8 17/21/25 (pré-lançamento) 2.5 e mais recentes O Java EE 8 é compatível com versões anteriores do Java EE6 e com versões mais recentes. Para mais informações, consulte Fazer upgrade do Java em uma versão compatível do Enterprise Edition (EE).
EE 10 17/21 6.0 (padrão, recomendado). O Java 21 está configurado para executar o EE 10 por padrão. Para usar o Java EE 10, atualize os servlets e as dependências do aplicativo para incluir o namespace Jakarta. Para mais informações, consulte Fazer upgrade do Java em uma versão compatível do Enterprise Edition (EE). Não é possível usar o Java 25 (pré-lançamento) no EE10.
EE 11 25 6.1 (padrão, recomendado). O Java 25 (pré-lançamento) está configurado para executar o EE 11 por padrão. Para usar o Java EE 11, atualize os servlets e as dependências do aplicativo para incluir o namespace Jakarta. Para mais informações, consulte Fazer upgrade do Java em uma versão compatível do Enterprise Edition (EE).

Fazer upgrade do Java em uma versão compatível do Enterprise Edition (EE)

Para usar o Java 25 (prévia) na Enterprise Edition 11 (EE 11) ou o Java 21 na Enterprise Edition 10 (EE 10), faça upgrade dos servlets e das dependências do aplicativo nos arquivos Maven e Gradle para incluir o namespace Jakarta:

Java 25 (prévia, EE 11)

Para usar o Java 25 (prévia) na Enterprise Edition 11 (EE 11), siga estas etapas:

  1. Altere o número da versão no arquivo de configuração web.xml para version=6.1. Por 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_1.xsd"
          version="6.1">
          ...
        </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. Adicione a seguinte propriedade do sistema ao arquivo appengine-web.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
        <runtime>java25</runtime>
        <system-properties>
          <property name="appengine.use.EE11" value="true"/>
        </system-properties>
        <app-engine-apis>true</app-engine-apis>
    </appengine-web-app>
    
  5. Opcional: o Java 25 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.

Java 21 (EE 10)

Para usar o Java 21 na Enterprise Edition 10 (EE 10), siga estas etapas:

  1. Altere o número da versão no arquivo de configuração web.xml para version=6.0. Por 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. Adicione a seguinte propriedade do sistema ao arquivo appengine-web.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
        <runtime>java21</runtime> <!-- or java17 -->
        <system-properties>
          <property name="appengine.use.EE10" value="true"/>
        </system-properties>
        <app-engine-apis>true</app-engine-apis>
    </appengine-web-app>
    
  5. 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.

Java 17 e mais recentes (EE 8)

Use as APIs javax.servlet.* no Java EE 8 sem grandes mudanças na configuração do aplicativo. O EE 8 oferece compatibilidade com versões anteriores do Java EE 6 e versões mais recentes.

Para executar seus aplicativos no Java EE 8, 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>java17</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 versão 21 e mais recentes incluem 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"/>