Mengupgrade aplikasi yang sudah ada

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 namespace Jakarta.

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

  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. Update 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, tambahkan properti appengine.use.virtualthreads dalam tag system-properties di file appengine-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"/>