Java 9 כבר כאן: כל מה שאתה צריך לדעת

Java 9 - באופן רשמי, המהדורה הסטנדרטית של Java Platform Platform גרסה 9 - סוף סוף כאן, וערכת הפיתוח של Java (JDK) זמינה להורדה למפתחים.

יש לו כמה תכונות חשובות אם שנויות במחלוקת, אך הוא גם האחרון בשורה עבור הסגנון הישן של משלוח ג'אווה.

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

אורקל פרסמה את ה- Java SE 9 JDK ותיעוד להורדה על ידי מפתחים.

התכונות החדשות העיקריות ב- Java 9

לראשונה כמעט שלוש שנים לאחר Java SE 8, ל- Java SE 9 יש כמה שינויים אדריכליים מרכזיים, כמו גם שלל שיפורים.

המודולריות של Java 9 היא מחליף משחק

יכולות המודולריות החדשות השנויות במחלוקת, המבוססות על Project Jigsaw, ודאי יעוררו את העניין של חנויות ג'אווה חדישות שרוצות לראות מה יש ל- JDK 9 להציע כעת, גם אם חנויות שמרניות יותר מחליטות להמתין לבגרות המודולריות.

מודולריות - בדמות מערכת הפלטפורמה של Java - מחלקת את ה- JDK לסט מודולים לשילוב בזמן הריצה, קומפילציה או בנייה. המודולריות נקראה שינוי "מעבר", המאפשר הבנת תלות בין מודולים.

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

היבטי המודולריות של Java 9 כוללים אריזות יישומים, מודולריזציה של ה- JDK עצמו וארגון מחדש של קוד המקור למודולים. מערכת הבנייה משופרת כדי להרכיב מודולים ולאכוף את גבולות המודולים בזמן הבנייה. תמונות JDK ו- Java Runtime Environment (JRE) מותנות מחדש לטיפול במודולים. כמו כן, פקדי ממשק המשתמש של JavaFX ו- API של CSS נגישים כעת למודולריות.

שורה של תצורות נתמכות; כתוצאה מכך יש לשפר את ביצועי הרחבה, האבטחה ויישומי היישומים. הגדלה קלה יותר של Java עד למכשירים קטנים היא המניע העיקרי למאמץ המודולרי.

בעזרת מודולריות, מפתחים יוכלו לבנות ולתחזק טוב יותר ספריות ויישומים גדולים הן עבור Java SE (Standard Edition) והן עבור Java EE (Enterprise Edition). אבל במהלך הפיתוח של ג'אווה 9 אורקל, יבמ, רד האט ואחרים היו מחלוקות גדולות כיצד בדיוק לבצע שינוי כה קיצוני בפלטפורמה. מערכת המודולים עצמה נדחתה במאי, רק כדי לאשר אותה בהצבעה שנייה ביוני, לאחר ההתקדמות.

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

כדי להקל על המעבר ל- Java 9 במודולריציה, Java 9 מאפשר גישה רפלקטיבית בלתי חוקית לקוד בנתיב הכיתה, המשמשת את JRE לחיפוש שיעורים וקבצי משאבים. יכולת זו לא תאושר לאחר Java 9.

שיפורי מהדר עבור קוד Java 9

שדרוג Java 9 כולל כמה יכולות חדשות להרכבת קוד, ובראשן אוסף מוקדם (AoT). עדיין בשלב ניסיוני, יכולת זו מאפשרת אוסף של שיעורי Java לקוד מקורי לפני שיושק במכונה הווירטואלית. תכונה זו נועדה לשפר את זמן ההפעלה של יישומים קטנים וגדולים כאחד, עם השפעה מוגבלת על ביצועי השיא.

מהדרי Just-in-time (JIT) מהירים, אך תוכניות Java הפכו לגדולות כל כך שלוקח זמן רב עד שה- JIT התחמם לחלוטין, והשאיר כמה משיטות Java לא מורכבות ומחלישות ביצועים. אוסף לפני הזמן נועד לטפל בבעיות אלה.

אבל דמיטרי לסקוב, מנהל השיווק של ספקית הטכנולוגיה של ג'אווה אקסלסיור, חושש שטכנולוגיית האוסף המוקדמת לא בשלה מספיק ומייחלת שאורקל חיכתה לג'אווה 10 לגרסה סולידית יותר.

ג'אווה 9 מציעה גם שלב שני בפריסת האוסף החכם של אורקל. תכונה זו כוללת שיפור  s javac יציבות הכלי וניידותו כך שניתן יהיה להשתמש בו ב- JVM (Java Virtual Machine) כברירת מחדל. הכלי יהיה כללי, כך שהוא יכול לשמש לפרויקטים גדולים מחוץ ל- JDK. JDK 9 עדכן גם את  javac המהדר כך שהוא יכול לקמפל תוכניות Java 9 להפעלה בכמה גרסאות ישנות יותר של Java.

מאפיין אוסף חדש נוסף - אך ניסיוני - הוא ממשק מהדר JVM Compiler (JVMCI). ממשק זה מאפשר למהדר שנכתב ב- Java לשמש כמהדר דינמי על ידי ה- JVM. ה- API של JVMCI מספק מנגנונים לגישה למבני VM, להתקנת קוד מהודר ולחיבור למערכת האוסף JVM.

כתיבת מהדר JVM בג'אווה אמורה לאפשר מהדר איכותי וקל יותר לתחזוקה ושיפור מהמהדרים הקיימים הכתובים ב- C או C ++. כתוצאה מכך, מהדרים שנכתבו בג'אווה עצמה צריכים להיות קלים יותר לתחזוקה ושיפור. מאמצים אחרים וקיימים לאפשר מהדרים בתוך ג'אווה כוללים את פרויקט הגראלים ופרויקט מטרופולין.

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

REPL סוף סוף מגיע ל- Java 9

Java 9 כולל כלי לולאה (Read-eval-print loop) (REPL) - מטרה ארוכת טווח נוספת עבור Java שמתממשת בגרסה זו, לאחר שנים של פיתוח במסגרת פרויקט Kulia.

המכונה jShell, ה- REPL של Java 9 מעריך באופן אינטראקטיבי הצהרות ביטויים והצהרות. מפתחים יכולים לקבל משוב על תוכניות לפני האוסף רק על ידי הזנת שורות קוד.

היכולות של כלי שורת הפקודה כוללות השלמת כרטיסיות ותוספת אוטומטית של נקודה-פסיקים מסופית נחוצה. ה- API של jShell מאפשר פונקציונליות של jShell ב- IDEs ובכלים אחרים, אם כי הכלי עצמו אינו IDE.

היעדר REPL צוטט כסיבה לבתי ספר להתרחק מג'אווה. (לשפות כמו Python ו- Scala יש כבר זמן רב REPL.) אך מייסד שפת Scala, מרטין אודרסקי, מפקפק בתועלתו של REPL בג'אווה ואומר שג'אווה מכוונת להצהרה ואילו REPLs מכוונת לביטוי.

שיפורים לממשק ה- API של Streams בג'אווה 9

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

ב- Java 9, ממשק ה- API של זרמים מוסיף שיטות כדי לקחת ולשחרר פריטים מזרם, לחזור על אלמנטים של זרם וליצור זרם מערך בטל תוך הרחבת מערך ה- API של Java SE שיכול לשמש כמקורות זרם.

ניתן לחלק את מטמון הקוד ב- Java 9

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

גיבוי JavaScript טוב יותר ב- Java 9 באמצעות Project Nashorn

פרויקט נאשורן, המספק זמן ריצה של JavaScript עבור Java, משופר ב- JDK 9. Project Nashorn היה מאמץ ליישם זמן ביצועים גבוה אך קל של JavaScript ב- Java, בעקבות מעקב אחר פרויקט Rhino שהחל ב- Netscape. פרויקט נאשורן הואשם בכך שאפשר הטמעת JavaScript ביישומי Java. זה סיפק ל- Java מנוע JavaScript ב- JDK 8.

JDK 9 כולל API מנתח לעץ התחביר ECMAScript של נאשורן. ה- API מאפשר ניתוח קוד ECMAScript על ידי IDE ומסגרות בצד השרת ללא תלות בשיעורי ההטמעה הפנימיים של Project Nashorn.

ה- API של לקוח HTTP / 2 מגיע ל- Java 9

ממשק ה- API של בטא HTTP / 2 של בטא הגיע ל- JDK 9, ומיישם בג'אווה את השדרוג לפרוטוקול ה- HTTP המרכזי של האינטרנט. WebSocket נתמך גם על ידי ה- API.

ממשק ה- API של HTTP / 2 יכול להחליף את ממשק ה- API של HttpURLConnection, שהיה לו בעיות, כולל תוכנן עם פרוטוקולים שהושבתו כעת, קודמת ל- HTTP / 1, להיות מופשט מדי וקשה לשימוש.

תמיכה משופרת ב- HTML5 וב- Unicode בג'אווה 9

ב- JDK 9, כלי התיעוד של Javadoc משופר ליצירת סימון HTML5. תקן הקידוד Unicode 8.0 - המוסיף 8,000 תווים, 10 חסימות ושישה סקריפטים - נתמך גם כן.

ממשק API לאבטחת DTLS נוסף ל- Java 9

ליתר ביטחון, Java 9 מוסיף API ל- DTLS (Datagram Transport Layer Security). הפרוטוקול תוכנן למניעת האזנות סתר, חבלה וזיוף הודעות בתקשורת לקוח / שרת. ניתן יישום עבור מצבי לקוח ושרת.

מה שג'אווה 9 שולל ומסיר

Java 9 מבטל או מסיר כמה תכונות שאינן עוד באופנה. הראשי ביניהם הוא ה- API של היישומון, שהוצא משימוש. זה יצא מהאופנה כעת כי יצרני דפדפנים מודעים לאבטחה הסירו תמיכה בתוספי דפדפן Java. הופעתו של HTML5 גם עזרה להביא לפטירתם. מפתחים מונחים כעת לחלופות כגון Java Web Start, להפעלת יישומים מדפדפן, או יישומים הניתנים להתקנה. 

הוצא משימוש בכלי appletviewer גם כן.

Java 9 מקפח גם את אספן האשפה Concurrent Mark Sweep (CMS), עם תמיכה להפסיק במהדורה עתידית. הכוונה היא לזרז את התפתחותם של אספני אשפה אחרים במכונה הווירטואלית של HotSpot. אספן האשפה G1 בהפסקה נמוכה נועד להוות תחליף לטווח ארוך ל- CMS.

בינתיים, שילובים של איסוף אשפה שהוצאו משימוש בעבר ב- JDK 8 מוסרים ב- JDK 9. אלה כוללים שילובים נדירים המשמשים כמו CMS Incremental, ParNew + SerialOld ו- DefNew + CMS, שהוסיפו מורכבות נוספת לבסיס קוד אספן האשפה.

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

ב- Java 9 הוסרה גם היכולת לבחור את ה- JRE בזמן ההשקה באמצעות התכונה Multiple JRE (mJRE). לעתים רחוקות נעשה שימוש ביכולת, סיבך את יישום משגר ה- Java, והוא מעולם לא תועד במלואו כאשר הופיע לראשונה ב- JDK 5.

אורקל הסירה את הסוכן JVM TI (ממשק כלים) hprof (פרופיל ערימה), שהוחלף ב- JVM. הכלי jhat הוסר גם הוא, לאחר שהתיישן על ידי ויזואליזציה וניתוחי ערימה מעולים.

Java 9 הוא סוף השורה שלו כאשר קו Java 9 החדש מתחיל

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

מכאן ואילך, מתוכננת לג'אווה להיות מקצב שחרור של שישה חודשים, עם הגרסה העיקרית הבאה, שתיקרא Java 18.3, שתגיע למארס 2018, ואחריה ג'אווה 18.9 כעבור חצי שנה.

קצב המהדורה החדש של ג'אווה פירושו גם כי JDK 9 לא יוגדר כשחרור תמיכה לטווח ארוך. במקום זאת, המהדורה הבאה לטווח הארוך תהיה Java 18.9.

קצב השחרור המהיר יותר של Java פירושו שמפתחים לא יצטרכו להמתין זמן רב למהדורות הגדולות. זה עשוי גם אומר שמפתחים ידלגו על Java 9 ועל תכונות המודולריות ה"לא בשלות "שלה ויחכו שישה חודשים לגרסה החדשה, מה שככל הנראה מגהץ מצמץ, אמר סיימון מייפל, מנהל סנגור ג'אווה אצל ספק הכלים של ג'אווה ZeroTurnaround.