JDK 14: התכונות החדשות ב- Java 14

ערכת הפיתוח של Java (JDK) 14 הגיעה ל- GA והגיעה במהדורת זמינות כללית לפריסת הייצור. השדרוג ל- Java הסטנדרטי כולל יכולות חדשות כמו זרימת אירוע מקליט JDK, התאמת תבניות וביטוי מתג. 

JDK 14 הוא מהדורה תכונה של Java, ולא מהדורת תמיכה ארוכת טווח (LTS), בעקבות קביעת המהירות של שישה חודשים שהוגדרה עבור Java. JDK 14 יקבל עדכוני אבטחה באפריל וביולי לפני שיוחלף על ידי JDK 15, גם מהדורה שאינה LTS, שתגיע בספטמבר. המהדורה הנוכחית של LTS היא JDK 11. 

התכונות החדשות והשיפורים ב- JDK 14 כוללים:

  • הזרמת אירועים JFR מספקת API לצריכה רציפה של נתוני JFR מיישומים בתהליך וגם מחוץ לתהליך. JFR הוא כלי לאיסוף נתוני פרופיל ואבחון אודות יישום Java ו- JVM בזמן שהם פועלים. הצעת הזרמת האירועים מתעדת את אותה מערך אירועים כמו במקרה שאינו סטרימינג, עם תקורה של פחות מאחוז במידת האפשר. הזרמת אירועים חייבת להתקיים במקביל להקלטות שאינן סטרימינג, הן מבוססות דיסק והן זיכרון. הנעה להצעה זו היא מצב בו ה- HotSpot VM פולט יותר מ -500 נקודות נתונים באמצעות JFR, רובן זמינות רק באמצעות ניתוח קבצי יומן. נכון לעכשיו, על המשתמש להתחיל הקלטה, להפסיק אותה, לזרוק את התוכן לדיסק ואז לנתח את קובץ ההקלטה. זה עובד היטב לפרופיל יישומים, אך לא למטרות ניטור.דוגמה לניטור השימוש הוא לוח מחוונים המציג עדכונים דינמיים לנתונים. יש תקורה ביצירת הקלטה, כגון העתקת נתונים ממאגר הדיסק לקובץ הקלטה נפרד. אם הייתה דרך לקרוא נתונים שנרשמו ממאגר הדיסק מבלי ליצור קובץ הקלטה חדש, ניתן היה למנוע חלק גדול מהתקורה.
  • השיפור המתוכנן  NullPointerExceptionsנוגע לשיפור השימושיות של החריגים שנוצרו על ידי ה- JVM על ידי תיאור המדויק של המשתנה שהיה ריק. מחברי ההצעה מבקשים לספק מידע מועיל למפתחים ולעובדי התמיכה אודות סיומה המוקדם של התוכנית ולשפר את הבנת התוכנית על ידי שיוך ברור יותר של חריג דינמי לקוד תוכנית סטטי. מטרה אחת היא להפחית את הבלבול והחשש שמפתחים חוששים NullPointerExceptions.
  • מאגרי בתים ממופים שאינם נדיפים יוסיפו מצבי מיפוי קבצים ספציפיים ל- JDK המאפשרים להשתמש ב- API של FileChannel ליצירת MappedByteBufferמקרים המתייחסים לזיכרון שאינו נדיף (NVM). NVM מאפשרת למתכנתים לבנות ולעדכן את מצב התוכניות לאורך ריצות התוכניות מבלי לחייב את עלויות ההעתקה או התרגום המשמעותיות שפעולות קלט ופלט דורשות בדרך כלל. זה חשוב במיוחד עבור תוכניות עסקאות. לפיכך המטרה העיקרית של הצעת שיפור JDK זו היא להבטיח שלקוחות יוכלו לגשת ולעדכן NVM מתוכנית Java באופן קוהרנטי ויעיל. מטרה משנית היא ליישם התנהגות התחייבות זו באמצעות API מוגבל JDK פנימי המוגדר בכיתה Unsafe, כך שניתן יהיה להשתמש בה מחדש על ידי מחלקות שאינןMappedByteBufferייתכן שיהיה צורך להתחייב ל- NVM. מטרה נוספת היא לאפשר מעקב אחר מאגרים הממופים מעל NVM על ידי ממשקי API קיימים לצורך ניטור וניהול. פלטפורמות היעד של מערכת ההפעלה / מעבד כוללות Linux / x64 ו- Linux / AArch64.
  • ביטוי מתג מפשט את הקידוד על ידי הרחבה  switchכך שהוא יכול לשמש משפט או ביטוי. ביטויים למתגים צפויים להיות מאפיין קבוע ב- JDK 14, לאחר שהוצגו בתצוגה מקדימה גם ב- JDK 12 וגם ב- JDK 13. ביטויים למתגים מתכוננים גם לשימוש בהתאמת תבניות switch. התאמת תבניות מאפשרת למפתחים לחלץ רכיבים מאובייקטים בצורה תמציתית ובטוחה יותר באופן מותנה. 
  • הקצאת זיכרון מודעת ל- NUMA עבור אספן האשפה G1, שנועדה לשפר את ביצועי G1 במכונות גדולות. 
  • הסרת אספן האשפה במקביל לטאטא (CMS), שקודם לכן הוצא משימוש וסופק להסרתו. יורשים ל- CMS קמו כולל ZGC ושננדואה. 
  • העברת ZGC ל- MacOS. זה נתמך רק בלינוקס עד כה.
  • הסרת כלי pack200 ו- unpack200 ו- API של Pack200 java.util.jarבחבילה. כל אלה הוצאו משימוש ב- Java SE 11 מתוך כוונה להסיר אותם בעתיד. Pack200 היא ערכת דחיסה עבור קבצי JAR.
  • רשומות, שיספקו תחביר קומפקטי להכריז על כיתות שהן בעלות שקופות לנתונים שאינם ניתנים לשינוי. רשומות מקלות על יצירת שיעורים שהם למעשה נושאי נתונים מבלי לכתוב הרבה צלחת. ההצעה קובעת כי צריך להיות קל ותמציתי להכריז על מצרפי נתונים נומינליים שאינם ניתנים לשינוי, מתנהגים היטב.
  • כלי אריזה, בשלב חממת פיתוח, לאריזת יישומי ג'אווה עצמאיים. הכלי יתבסס על JavaFX javapackager. כלי כזה נכלל בג'אווה אך נחתך מ- JDK 11 כחלק מהסרת JavaFX.
  • שפר את השפה באמצעות התאמת תבניות עבור instanceof המפעיל. זו תהיה תכונת תצוגה מקדימה ב- JDK 14. התאמת תבניות מאפשרת לבטא בצורה תמציתית ובטוחה יותר בתוכנה, בעיקר חילוץ מותנה של רכיבים מאובייקטים. ניתן להפוך את הקוד לקצר ובטוח לסוגיו.
  • תצוגה מקדימה שנייה של גושי טקסט, מחרוזת רב-שורתית מילולית המונעת את הצורך ברוב רצפי הבריחה ומעצבת אוטומטית את המחרוזת באופן צפוי. גושי טקסט יעניקו למפתח שליטה על הפורמט במידת הצורך, יפשטו את הכתיבה של תוכניות Java, וישפרו את הקריאות של מחרוזות. הוצג תצוגה מקדימה של גושי טקסט ב- JDK 13; איטרציה JDK 14 תוסיף רצפי בריחה לניהול רווחים לבנים מפורשים ושליטה בקו חדש.
  • מקפח את השילוב של אלגוריתמי איסוף האשפה המקבילים ואלבום אשפה מקבילי. מתחזקי ג'אווה מאמינים כי משתמשים בשילוב זה מעט מאוד אך דורשים תחזוקה רבה.
  • העברת ZGC (Z Garbage Collector) לחלונות. תכונה זו עברה שוב לרשימה הממוקדת באופן רשמי, לאחר שהוחזרה לרשימת המיקוד המוצעת.
  • ממשק API לגישה לזיכרון זר, עם הכנסת ממשק API לתוכניות Java לגישה בטוחה ויעילה לזיכרון זר מחוץ לערימת ג'אווה. ממשק API זה אמור לשמש אלטרנטיבה לאפיקים העיקריים שבאמצעותם תוכניות ג'אווה ניגשות לזיכרון, כולל nio.ByteBufferו- sun.misc.Unsafe. ה- API החדש אמור להיות מסוגל לפעול על סוגים שונים של זיכרון, כולל זיכרון מקורי, קבוע וערמה מנוהלת. זה לא אמור להיות אפשרי עבור ה- API לפגוע בבטיחות ה- JVM. מיקום זיכרון צריך להיות מפורש בקוד המקור. ה- API צפוי לסייע בפיתוח תמיכה אינטראקציה אינטראקטיבית שהיא המטרה של פרויקט פנמה.
  • היעדר יציאות Solaris / Sparc, Solaris / x64 ו- Linux / Sparc, מתוך כוונה להסיר אותם במהדורה עתידית. ביטול התמיכה ביציאות אלה יאפשר לתורמי OpenJDK להאיץ את פיתוחן של תכונות חדשות. למרות שסולאריס וספארק היו טכנולוגיות לינץ 'בסן מיקרוסיסטמס, היוצרת המקורית של ג'אווה, הם הוחלפו במרחב הטכנולוגי בשנים האחרונות על ידי מעבדי מערכת ההפעלה לינוקס ואינטל.

היכן ניתן להוריד את JDK 14

ניתן להוריד קוד פתוח JDK 14 מ- jdk.java.net עבור לינוקס, חלונות ו- macOS. ניתן להוריד הורדות של Oracle Java SE 14 מ- Oracle.com.