שדרוג אפליקציה קיימת

כדי להמשיך לקבל עדכוני אבטחה ולקבל תמיכה טכנית, צריך לשדרג את האפליקציות לגרסת זמן הריצה העדכנית ביותר שנתמכת.

תהליך השדרוג של אפליקציה קיימת תלוי בגרסת זמן הריצה שבה האפליקציה משתמשת:

  • Java 8: צריך להעביר את האפליקציה לגרסה נתמכת עדכנית של Java. התמיכה ב-Java 8 הסתיימה ב-31 בינואר 2024, והיא תצא משימוש ב-31 בינואר 2026. אחרי ההוצאה משימוש, לא תוכלו לפרוס אפליקציות Java 8, גם אם הארגון שלכם השתמש בעבר במדיניות ארגונית כדי להפעיל מחדש פריסות של סביבות ריצה מדור קודם. אפליקציות Java 8 קיימות ימשיכו לפעול ולקבל תנועה אחרי תאריך ההוצאה משימוש.

  • Java 11: שדרגו את האפליקציה לגרסת Java הנתמכת העדכנית. ‫Java 11 הגיעה לסוף התמיכה ב-31 באוקטובר 2024, והיא תוצא משימוש ב-31 באוקטובר 2025. אחרי ההוצאה משימוש, לא תוכלו לפרוס אפליקציות Java 11. אפליקציות Java 11 קיימות ימשיכו לפעול ולקבל תנועה אחרי תאריך ההוצאה משימוש.

  • זמני ריצה נתמכים מהדור השני (Java 17 ו-Java 21):

    ‫App Engine תומך בגרסאות זמן ריצה של Java מהדור השני, כמו Java 17 ו-Java 21. כדי לשדרג ל-Java 25:

    • מעדכנים את קובץ app.yaml על ידי ציון גרסה של Java שרוצים שהאפליקציה תפעל איתה. לדוגמה:

        runtime: javaVERSION
      

      VERSION הוא מספר הגרסה של MAJOR. לדוגמה, כדי להשתמש בגרסה האחרונה של Java, ‏ Java 25, מציינים 25. מידע נוסף מופיע בסקירה הכללית על זמן הריצה של Java.

    • אם אתם משתמשים בחבילות שירותים מדור קודם, אתם צריכים לשדרג את האפליקציות כדי להפעיל אותן באחת מהאפשרויות הבאות:

      • ‫Java Enterprise Edition 11‏ (E11): ‏ EE 11 לא תומך בממשקי API‏ javax.servlet.* ודורש לעדכן את האפליקציות ואת התלות בצד שלישי כדי להשתמש בארטיפקטים חדשים יותר של Java, כמו מרחב השמות Jakarta. ‫Java 25 מופעלת כברירת מחדל ב-EE 11 ולא תומכת ב-EE 10.

      • ‫Java Enterprise Edition 8‏ (EE 8): ‏ Java EE 8 מאפשרת לכם להשתמש ב-javax.servlet.* APIs, אבל תצטרכו לבצע שינויים קלים בהגדרות בקובץ appengine-web.xml.

שדרוג לגרסת Java נתמכת בשביל שירותים מדור קודם בחבילה

תאימות לזמן ריצה של Java

כברירת מחדל, App Engine כולל שרת אינטרנט מוטמע של EE בפרויקט Java. החל מ-Java 25, שרת האינטרנט App Engine EE מותקן במהלך הפריסה. ‫Google מפרסמת מדי פעם גרסה חדשה של קובץ ה-JAR. ‫App Engine משתמש בגרסה העדכנית ביותר של שרת האינטרנט המוטמע EE בכל פעם שפורסים מחדש את האפליקציה.

בטבלה הבאה מפורטות גרסאות Java שתואמות לגרסאות של servlet. לפרטים נוספים על תכונות נקודת הכניסה, הגדרות של מאפייני מערכת, תמיכה ב-Jetty וגרסאות EE תואמות, אפשר לעיין במאמר תכונות נקודת הכניסה.

מהדורת Enterprise‏ (EE) גרסת Java Servlet תאימות
EE7 11 ‫2.5 או 3.1 אין תמיכה מהקהילה ב-EE7. גרסה Java 11 הגיעה לסוף התמיכה. מומלץ לשדרג את האפליקציה כדי להשתמש בגרסה האחרונה של Java.
EE7 17 ‫2.5 ואילך אין תמיכה מהקהילה ב-EE7. מומלץ לשדרג את האפליקציה לגרסה EE 8 ואילך.
EE 8 17/21/25 ‫2.5 ואילך ‫Java EE 8 תואמת לדורות קודמים עם Java EE6 ואילך. מידע נוסף זמין במאמר בנושא שדרוג Java בגרסה תואמת של Enterprise Edition (EE).
EE 10 ‫17/21 ‫6.0 (ברירת מחדל, מומלץ). ‫Java 21 מוגדר להפעיל את EE 10 כברירת מחדל. כדי להשתמש ב-Java EE 10, צריך לעדכן את רכיבי ה-servlet של האפליקציה ואת התלויות כך שיכללו את מרחב השמות Jakarta. מידע נוסף זמין במאמר בנושא שדרוג Java בגרסה תואמת של Enterprise Edition (EE). אי אפשר להשתמש ב-Java 25 ב-EE10.
EE 11 25 ‫6.1 (ברירת מחדל, מומלץ). ‫Java 25 מוגדר להפעיל את EE 11 כברירת מחדל. כדי להשתמש ב-Java EE 11, צריך לעדכן את רכיבי ה-servlet והתלות של האפליקציה כך שיכללו את מרחב השמות Jakarta. מידע נוסף זמין במאמר בנושא שדרוג Java בגרסה תואמת של Enterprise Edition (EE).

שדרוג Java בגרסה תואמת של Enterprise Edition‏ (EE)

כדי להשתמש ב-Java 25 ב-Enterprise Edition 11‏ (EE 11), או ב-Java 21 ב-Enterprise Edition 10‏ (EE 10), צריך לשדרג את רכיבי ה-servlet של האפליקציה ואת יחסי התלות בקובצי Maven ו-Gradle כדי לכלול את מרחב השמות Jakarta:

Java 25 (EE 11)

כדי להשתמש ב-Java 25 ב-Enterprise Edition 11‏ (EE 11), פועלים לפי השלבים הבאים:

  1. משנים את מספר הגרסה בקובץ התצורה web.xml ל-version=6.1. לדוגמה:

        <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_1.xsd"
          version="6.1">
          ...
        </web-app>
    
  2. משנים את השם של רכיבי ה-servlet והתלויות של האפליקציה מ-javax.servlet.* ל-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. מעדכנים את יחסי התלות הנותרים של האפליקציה בצד שלישי לארטיפקטים חדשים יותר של Java, בהתאם למרחב השמות Jakarta.

  4. מוסיפים את מאפיין המערכת הבא לקובץ appengine-web.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
        <runtime>java25</runtime>
        <system-properties>
          <property name="appengine.use.EE11" value="true"/>
        </system-properties>
        <app-engine-apis>true</app-engine-apis>
    </appengine-web-app>
    
  5. אופציונלי: Java 25 כוללת תמיכה בשרשורים וירטואליים. כדי להפעיל שרשורים וירטואליים, מוסיפים את המאפיין appengine.use.virtualthreads בתוך התג system-properties בקובץ appengine-web.xml.

Java 21 (EE 10)

כדי להשתמש ב-Java 21 ב-Enterprise Edition 10‏ (EE 10), פועלים לפי השלבים הבאים:

  1. משנים את מספר הגרסה בקובץ התצורה web.xml ל-version=6.0. לדוגמה:

        <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. משנים את השם של רכיבי ה-servlet והתלויות של האפליקציה מ-javax.servlet.* ל-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. מעדכנים את יחסי התלות הנותרים של האפליקציה בצד שלישי לארטיפקטים חדשים יותר של Java, בהתאם למרחב השמות Jakarta.

  4. מוסיפים את מאפיין המערכת הבא לקובץ 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>
    
  5. אופציונלי: Java 21 כוללת תמיכה בשרשורים וירטואליים. כדי להפעיל שרשורים וירטואליים, מוסיפים את המאפיין appengine.use.virtualthreads בתוך התג system-properties בקובץ appengine-web.xml.

‫Java 17 ואילך (EE 8)

להשתמש בממשקי javax.servlet.* API ב-Java EE 8 בלי לבצע שינויים משמעותיים בהגדרות האפליקציה. ‫EE 8 מציעה תאימות לאחור ל-Java EE 6 ומגרסאות חדשות יותר.

כדי להריץ את האפליקציות ב-Java EE 8, צריך להצהיר על תג system-properties חדש בקובץ appengine-web.xml עם ההגדרה app.engine.use.EE8 שאינה ברירת המחדל:

  <?xml version="1.0" encoding="utf-8"?>
  <appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
      <runtime>java17</runtime>
      <system-properties>
        <property name="appengine.use.EE8" value="true"/>
      </system-properties>
      <app-engine-apis>true</app-engine-apis>
  </appengine-web-app>

אופציונלי: גרסה 21 ואילך של Java כוללת תמיכה בשרשורים וירטואליים. כדי להפעיל שרשורים וירטואליים, מוסיפים את המאפיין appengine.use.virtualthreads לתג system-properties. דוגמה: <property name="appengine.use.virtualthreads" value="true"/>