Anda harus mengupgrade aplikasi ke versi runtime terbaru yang didukung agar dapat terus menerima update keamanan dan memenuhi syarat untuk mendapatkan dukungan teknis. Anda juga harus mempertimbangkan untuk bermigrasi ke Cloud Run, evolusi terbaru dari teknologi serverless Google Cloud. Cloud Run dirancang untuk meningkatkan pengalaman App Engine, dengan menyertakan banyak fitur terbaik dari lingkungan standar dan lingkungan fleksibel. Untuk membandingkan fitur dan memahami cara melakukan migrasi, lihat panduan perbandingan App Engine dan Cloud Run
Proses mengupgrade aplikasi yang ada bergantung pada versi runtime yang saat ini digunakan aplikasi Anda:
Java 8: Anda harus memigrasikan aplikasi ke versi Java terbaru yang didukung. Java 8 telah mencapai akhir dukungan pada 31 Januari 2024. Aplikasi Java 8 yang sudah ada akan terus berjalan dan menerima traffic. Namun, Anda tidak dapat men-deploy aplikasi baru atau mengupdate yang sudah ada, yang menggunakan runtime setelah akhir tanggal dukungannya.
Java 11 atau Java 17:
Runtime ini adalah versi Java yang didukung. Untuk terus mengupgrade ke versi dukungan terbaru, lakukan hal berikut:
Update file
app.yaml
dengan menentukan versi Java yang Anda inginkan untuk dijalankan oleh aplikasi. Contoh:runtime: javaVERSION
Dengan VERSION adalah nomor versi
MAJOR
.Contoh: Untuk Java 21, Anda menentukan 21 seperti
runtime: java21
. Untuk mengetahui informasi selengkapnya, lihat Ringkasan runtime Java.Jika menggunakan layanan paket lama, Anda harus mengupgrade aplikasi agar dapat berjalan di:
Java Enterprise Edition 10 (EE10 - default, direkomendasikan): Java EE10 tidak mendukung
javax.servlet.*
API dan mengharuskan Anda mengupdate aplikasi serta dependensi pihak ketiga untuk menggunakan artefak Java yang lebih baru seperti namespaceJakarta
.Java Enterprise Edition 8 (EE8): Java EE8 memungkinkan Anda menggunakan
javax.servlet.*
API, tetapi Anda harus membuat perubahan kecil pada konfigurasi pada fileappengine-web.xml
.
Lihat Mengupgrade ke Java 21 untuk layanan lama yang dipaketkan untuk semua opsi.
Mengupgrade ke Java 21 untuk layanan paket lama
Kompatibilitas runtime Java
Lihat tabel berikut untuk memahami versi Java yang kompatibel dengan versi Jetty dan servlet Anda:
Edisi Enterprise (EE) | Versi Jetty | Versi Java | Servlet | Kompatibilitas |
---|---|---|---|---|
EE7 | 9.4 | 11 | 2,5 atau 3,1 | |
EE7 | 9.4 | 17 | 2,5 atau 3,1 | |
EE8 | 12 | 21 | 2.5 dan yang lebih baru | Java EE8 kompatibel dengan Java EE6 dan yang lebih baru. Untuk mengetahui informasi selengkapnya, lihat Mengupgrade ke Java 21 di EE8. |
EE10 | 12 | 21 | 6.0 (direkomendasikan). Java 21 dikonfigurasi untuk menjalankan EE10 secara default. | Untuk menggunakan Java EE10, Anda harus mengupdate servlet dan dependensi aplikasi untuk menyertakan namespace Jakarta . Untuk mengetahui informasi selengkapnya, lihat Mengupgrade Java 21 di EE10. |
Mengupgrade ke Java 21 di EE10
Untuk menggunakan Java 21 di Enterprise Edition 10 (EE10),
Anda harus mengupgrade servlet dan dependensi aplikasi dalam file Maven dan Gradle
agar menyertakan namespace Jakarta
:
Ubah nomor versi di file konfigurasi
web.xml
menjadiversion=6.0
. Contoh:<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>
Ganti nama servlet dan dependensi aplikasi Anda dari
javax.servlet.*
menjadijakarta.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 { ......
Update dependensi pihak ketiga aplikasi yang tersisa ke artefak Java yang lebih baru, bergantung pada namespace
Jakarta
.Opsional: Java 21 menyertakan dukungan untuk thread virtual. Untuk mengaktifkan thread virtual, tambahkan properti
appengine.use.virtualthreads
dalam tagsystem-properties
di fileappengine-web.xml
Anda.
Mengupgrade ke Java 21 di EE8
Anda dapat terus menggunakan javax.servlet.*
API di Java EE8 tanpa perubahan besar
pada konfigurasi aplikasi, karena Jetty 12 menawarkan kompatibilitas mundur untuk Java EE6
dan yang lebih baru. Untuk menjalankan aplikasi di Java EE8, Anda harus mendeklarasikan tag
system-properties
baru di
file appengine-web.xml
dengan konfigurasi app.engine.use.EE8
non-default:
<?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>
Opsional: Java 21 menyertakan dukungan untuk thread virtual. Untuk mengaktifkan thread virtual, Anda menambahkan properti appengine.use.virtualthreads
dalam tag system-properties
. Contoh:
<property name="appengine.use.virtualthreads" value="true"/>