Anda harus mengupgrade aplikasi ke versi runtime terbaru yang didukung agar dapat terus menerima update keamanan dan memenuhi syarat untuk mendapatkan dukungan teknis.
Proses mengupgrade aplikasi yang sudah 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 ada akan terus berjalan dan menerima traffic. Namun, Anda tidak dapat men-deploy aplikasi baru atau mengupdate aplikasi yang ada yang menggunakan runtime setelah tanggal akhir dukungannya.
Runtime Java generasi kedua (setelah akhir dukungan): Untuk mengupgrade ke versi Java yang didukung, lakukan tindakan berikut:
Update file
app.yaml
dengan menentukan versi Java yang ingin dijalankan aplikasi Anda. Contoh:runtime: javaVERSION
Dengan VERSION adalah nomor versi
MAJOR
. Misalnya, untuk menggunakan versi Java terbaru, Java 21, tentukan21
. Untuk 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 dan dependensi pihak ketiga untuk menggunakan artefak Java yang lebih baru seperti namespaceJakarta
.Java Enterprise Edition 8 (EE8): Java EE8 memungkinkan Anda menggunakan API
javax.servlet.*
, tetapi Anda harus melakukan perubahan konfigurasi kecil pada fileappengine-web.xml
.Lihat Mengupgrade ke Java 21 untuk layanan paket lama untuk mengetahui semua opsi.
Java 17:
App Engine mendukung versi ini. Untuk terus mengupgrade ke versi dukungan terbaru, lakukan hal berikut:
Update file
app.yaml
dengan menentukan versi Java yang ingin dijalankan aplikasi Anda. Contoh:runtime: javaVERSION
Dengan VERSION adalah nomor versi
MAJOR
. Misalnya, untuk menggunakan versi Java terbaru, Java 21, tentukan21
. Untuk 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 dan 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 melakukan perubahan konfigurasi kecil pada fileappengine-web.xml
.
Lihat Mengupgrade ke Java 21 untuk layanan paket lama untuk mengetahui 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:
Enterprise Edition (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 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 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
untuk 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, Anda menambahkan properti
appengine.use.virtualthreads
dalam tagsystem-properties
dalam fileappengine-web.xml
.
Mengupgrade ke Java 21 di EE8
Anda dapat terus menggunakan javax.servlet.*
API di Java EE8 tanpa perubahan konfigurasi
aplikasi utama, karena Jetty 12 menawarkan kompatibilitas dengan versi lama untuk Java EE6
dan yang lebih baru. Untuk menjalankan aplikasi di Java EE8, Anda harus mendeklarasikan tag system-properties
baru dalam 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"/>