Atualize uma aplicação existente

Atualize as suas aplicações para a versão de tempo de execução suportada mais recente para continuar a receber atualizações de segurança e ser elegível para apoio técnico.

O processo de atualização de uma aplicação existente depende da versão de tempo de execução que a sua aplicação usa:

  • Java 8: migre a sua aplicação para a versão do Java suportada mais recente. O Java 8 atingiu o fim do apoio técnico a 31 de janeiro de 2024 e vai ser descontinuado a 31 de janeiro de 2026. Após a descontinuação, não vai poder implementar aplicações Java 8, mesmo que a sua organização tenha usado anteriormente uma política organizacional para reativar as implementações de runtimes antigos. As suas aplicações Java 8 existentes vão continuar a ser executadas e a receber tráfego após a data de descontinuação.

  • Java 11: atualize a sua aplicação para a versão Java suportada mais recente. O Java 11 atingiu o fim do apoio técnico a 31 de outubro de 2024 e vai ser descontinuado a 31 de outubro de 2025. Após a descontinuação, não vai poder implementar aplicações Java 11. As suas aplicações Java 11 existentes vão continuar a ser executadas e a receber tráfego após a data de descontinuação.

  • Tempos de execução de segunda geração suportados (Java 17 e Java 21):

    O App Engine suporta versões do tempo de execução Java de segunda geração, como o Java 17 e o Java 21. Para atualizar para o Java 25 (pré-visualização), faça o seguinte:

    • Atualize o ficheiro app.yaml especificando uma versão do Java que quer que a sua app execute. Por exemplo:

        runtime: javaVERSION
      

      Onde VERSION é o número da versão MAJOR. Por exemplo, para usar a versão mais recente do Java, o Java 25 (pré-visualização), especifique 25. Para mais informações, consulte a vista geral do tempo de execução Java.

    • Se usar serviços agrupados antigos, atualize as suas aplicações para serem executadas num dos seguintes:

      • Java Enterprise Edition 11 (E11): o EE 11 não suporta APIs javax.servlet.* e requer que atualize as suas aplicações e dependências de terceiros para usar artefactos Java mais recentes, como o espaço de nomes Jakarta. O Java 25 (pré-visualização) é executado por predefinição no EE 11 e não suporta o EE 10.

      • Java Enterprise Edition 8 (EE 8): o Java EE 8 permite-lhe usar APIs javax.servlet.*, mas tem de fazer pequenas alterações de configuração ao seu ficheiro appengine-web.xml.

Atualize para uma versão Java suportada para serviços incluídos antigos

Compatibilidade de tempo de execução do Java

Consulte a tabela seguinte para saber que versões do Java são compatíveis com as suas versões do servlet. Para mais detalhes sobre as funcionalidades do ponto de entrada, as configurações das propriedades do sistema, o suporte do Jetty resultante e as versões EE compatíveis, consulte o artigo Funcionalidades do ponto de entrada.

Enterprise Edition (EE) Versão do Java Servlet Compatibilidade
EE7 11 2.5 ou 3.1 Não existe apoio técnico da comunidade para o EE7. O Java 11 atingiu o fim do apoio técnico. Recomendamos que atualize a sua app para usar a versão mais recente do Java.
EE7 17 2.5 ou posterior Não existe apoio técnico da comunidade para o EE7. Recomendamos que atualize a sua app para usar o EE 8 e versões posteriores.
EE 8 17/21/25 (pré-visualização) 2.5 e posterior O Java EE 8 é retrocompatível com o Java EE6 e posterior. Para mais informações, consulte o artigo Atualize o Java numa versão compatível da Enterprise Edition (EE).
EE 10 17/21 6.0 (predefinição, recomendado). O Java 21 está configurado para executar o EE 10 por predefinição. Para usar o Java EE 10, atualize os servlets e as dependências da sua aplicação para incluir o espaço de nomes Jakarta. Para mais informações, consulte o artigo Atualize o Java numa versão compatível da Enterprise Edition (EE). Não pode usar o Java 25 (pré-visualização) no EE10.
EE 11 25 6.1 (predefinição, recomendado). O Java 25 (pré-visualização) está configurado para executar o EE 11 por predefinição. Para usar o Java EE 11, atualize os servlets e as dependências da sua aplicação para incluir o espaço de nomes Jakarta. Para mais informações, consulte o artigo Atualize o Java numa versão compatível da Enterprise Edition (EE).

Atualize o Java numa versão compatível da Enterprise Edition (EE)

Para usar o Java 25 (pré-visualização) na Enterprise Edition 11 (EE 11) ou o Java 21 na Enterprise Edition 10 (EE 10), atualize os servlets de aplicações e as dependências nos ficheiros Maven e Gradle para incluir o espaço de nomes Jakarta:

Java 25 (pré-visualização, EE 11)

Para usar o Java 25 (pré-visualização) na Enterprise Edition 11 (EE 11), siga estes passos:

  1. Altere o número da versão no ficheiro 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. Mude o nome dos servlets e das dependências da sua aplicação 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 da aplicação para artefactos Java mais recentes, dependendo do espaço de nomes Jakarta.

  4. Adicione a seguinte propriedade do sistema no ficheiro 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 inclui suporte para threads virtuais. Para ativar os threads virtuais, adicione a propriedade appengine.use.virtualthreads no interior da etiqueta system-properties no seu ficheiro appengine-web.xml.

Java 21 (EE 10)

Para usar o Java 21 na Enterprise Edition 10 (EE 10), siga estes passos:

  1. Altere o número da versão no ficheiro 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. Mude o nome dos servlets e das dependências da sua aplicação 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 da aplicação para artefactos Java mais recentes, dependendo do espaço de nomes Jakarta.

  4. Adicione a seguinte propriedade do sistema no ficheiro 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 inclui suporte para threads virtuais. Para ativar os threads virtuais, adicione a propriedade appengine.use.virtualthreads na etiqueta system-properties no ficheiro appengine-web.xml.

Java 17 e posterior (EE 8)

Use APIs javax.servlet.* no Java EE 8 sem alterações importantes à configuração da aplicação. O EE 8 oferece retrocompatibilidade para o Java EE 6 e posterior.

Para executar as suas aplicações no Java EE 8, declare uma nova etiqueta system-properties no ficheiro appengine-web.xml com a configuração app.engine.use.EE8 não predefinida:

  <?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: a versão 21 e posteriores do Java inclui suporte para threads virtuais. Para ativar as threads virtuais, adicione a propriedade appengine.use.virtualthreads na etiqueta system-properties. Exemplo: <property name="appengine.use.virtualthreads" value="true"/>