Mengupgrade aplikasi yang ada

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, tentukan 21. 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 namespace Jakarta.

      • Java Enterprise Edition 8 (EE8): Java EE8 memungkinkan Anda menggunakan API javax.servlet.*, tetapi Anda harus melakukan perubahan konfigurasi kecil pada file appengine-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, tentukan 21. 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 namespace Jakarta.

      • Java Enterprise Edition 8 (EE8): Java EE8 memungkinkan Anda menggunakan javax.servlet.* API, tetapi Anda harus melakukan perubahan konfigurasi kecil pada file appengine-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:

  1. Ubah nomor versi di file konfigurasi web.xml menjadi version=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>
    
  2. Ganti nama servlet dan dependensi aplikasi Anda dari javax.servlet.* menjadi 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. Perbarui dependensi pihak ketiga aplikasi yang tersisa ke artefak Java yang lebih baru bergantung pada namespace Jakarta.

  4. Opsional: Java 21 menyertakan dukungan untuk thread virtual. Untuk mengaktifkan thread virtual, Anda menambahkan properti appengine.use.virtualthreads dalam tag system-properties dalam file appengine-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"/>