כדי להמשיך לקבל עדכוני אבטחה ולקבל תמיכה טכנית, צריך לשדרג את האפליקציות לגרסת זמן הריצה העדכנית ביותר שנתמכת.
תהליך השדרוג של אפליקציה קיימת תלוי בגרסת זמן הריצה שבה האפליקציה משתמשת:
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: javaVERSIONVERSION הוא מספר הגרסה של
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), פועלים לפי השלבים הבאים:
משנים את מספר הגרסה בקובץ התצורה
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>משנים את השם של רכיבי ה-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 { ......מעדכנים את יחסי התלות הנותרים של האפליקציה בצד שלישי לארטיפקטים חדשים יותר של Java, בהתאם למרחב השמות
Jakarta.מוסיפים את מאפיין המערכת הבא לקובץ
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>אופציונלי: Java 25 כוללת תמיכה בשרשורים וירטואליים. כדי להפעיל שרשורים וירטואליים, מוסיפים את המאפיין
appengine.use.virtualthreadsבתוך התגsystem-propertiesבקובץappengine-web.xml.
Java 21 (EE 10)
כדי להשתמש ב-Java 21 ב-Enterprise Edition 10 (EE 10), פועלים לפי השלבים הבאים:
משנים את מספר הגרסה בקובץ התצורה
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>משנים את השם של רכיבי ה-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 { ......מעדכנים את יחסי התלות הנותרים של האפליקציה בצד שלישי לארטיפקטים חדשים יותר של Java, בהתאם למרחב השמות
Jakarta.מוסיפים את מאפיין המערכת הבא לקובץ
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>אופציונלי: 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"/>