Tem de atualizar 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 app existente depende da versão de tempo de execução que a sua app usa atualmente:
Java 8: tem de migrar a sua app para a versão Java suportada mais recente. O Java 8 atingiu o fim do suporte a 31 de janeiro de 2024. As suas aplicações Java 8 existentes vão continuar a ser executadas e a receber tráfego. No entanto, não pode implementar novas aplicações nem atualizar as existentes que usem runtimes após a respetiva data de fim do apoio técnico.
Tempos de execução Java de segunda geração (após o fim do apoio técnico): para atualizar para uma versão suportada do Java, faça o seguinte:
Atualize o ficheiro
app.yaml
especificando uma versão do Java na qual quer que a sua app seja executada. 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 21, especifique21
. Para mais informações, consulte a vista geral do tempo de execução Java.Se usar serviços agrupados antigos, tem de atualizar as suas apps para serem executadas num dos seguintes sistemas:
Java Enterprise Edition 10 (EE10 – predefinição, recomendado): o Java EE10 não suporta APIs
javax.servlet.*
e requer que atualize as suas apps e dependências de terceiros para usar artefactos Java mais recentes, como o espaço de nomesJakarta
.Java Enterprise Edition 8 (EE8): o Java EE8 permite-lhe usar
javax.servlet.*
APIs, mas tem de fazer pequenas alterações de configuração ao seu ficheiroappengine-web.xml
.Consulte o artigo Atualize para o Java 21 para serviços agrupados antigos para ver todas as opções.
Java 17:
O App Engine suporta esta versão. Para continuar a atualizar para a versão compatível mais recente, faça o seguinte:
Atualize o ficheiro
app.yaml
especificando uma versão do Java na qual quer que a sua app seja executada. 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 21, especifique21
. Para mais informações, consulte a vista geral do tempo de execução Java.Se usar serviços agrupados antigos, tem de atualizar as suas apps para serem executadas num dos seguintes sistemas:
Java Enterprise Edition 10 (EE10 – predefinição, recomendado): o Java EE10 não suporta APIs
javax.servlet.*
e requer que atualize as suas apps e dependências de terceiros para usar artefactos Java mais recentes, como o espaço de nomesJakarta
.Java Enterprise Edition 8 (EE8): o Java EE8 permite-lhe usar APIs
javax.servlet.*
, mas tem de fazer pequenas alterações de configuração ao seu ficheiroappengine-web.xml
.
Consulte o artigo Atualize para o Java 21 para serviços agrupados antigos para ver todas as opções.
Atualize para o Java 21 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 de servlet:
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 EE8. |
EE8 | 17/21 | 2.5 e posterior | O Java EE8 é retrocompatível com o Java EE6 e posterior. Para mais informações, consulte o artigo Atualize para o Java 21 no EE8. |
EE10 | 17/21 | 6.0 (recomendado). O Java 21 está configurado para executar o EE10 por predefinição. | Para usar o Java EE10, tem de atualizar 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 21 no EE10. |
Atualize para o Java 21 no EE10
Para usar o Java 21 no Enterprise Edition 10 (EE10),
tem de atualizar os servlets e as dependências da sua aplicação nos ficheiros
Maven e Gradle para incluir o espaço de nomes Jakarta
:
Altere o número da versão no ficheiro de configuração
web.xml
paraversion=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>
Mude o nome dos servlets e das dependências da sua aplicação de
javax.servlet.*
parajakarta.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 { ......
Atualize as dependências de terceiros restantes da aplicação para artefactos Java mais recentes consoante o espaço de nomes
Jakarta
.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>
Opcional: o Java 21 inclui suporte para threads virtuais. Para ativar os threads virtuais, adicione a propriedade
appengine.use.virtualthreads
na etiquetasystem-properties
no ficheiroappengine-web.xml
.
Atualize para o Java 17 ou 21 no EE8
Pode continuar a usar as APIs javax.servlet.*
no Java EE8 sem alterações importantes à configuração da aplicação, porque o EE8 oferece retrocompatibilidade para o Java EE6 e posterior. Para executar as suas aplicações no Java EE8, tem de declarar 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>java21</runtime> <!-- or java17 -->
<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 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"/>