Java8 מול Java9

Java8 Vs Java9



Java 8 לעומת Java 9: ​​שיפורים בג'אווה 9 שעליך לדעת

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

עם זאת, ג'אווה המשיכה לצמוח ולהתפתח לאורך השנים. נוצר על ידי Sun Microsystems בשנת 1995 , ג'אווה המשיכה להוכיח את מהימנותה. המבנה הקודם של ג'אווה שהיה בשימוש מאז 18 במרץ 2014, היה Java SE 8. כשהוא נחשף, אמרו המבקרים כי מדובר ביצירת אמנות, שחרור של זרמי שינויים בממשקי ה- API. עכשיו יש ילד חדש בבלוק. ג'אווה 9 שהוטבע זה עתה סוף סוף כאן. נחשף ב- 21 בספטמבר 2017 , Java SE 9 צפוי לזעזע את הדרך שבה אנו עושים דברים ואת הדרך שבה מפתחים יוצרים יישומים.







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



אז בואו נסתכל על מה חדש ב- Java 9.



פרויקט פאזל

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





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

JEP 222: jshell : מעטפת הג'אווה

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



לכלי jshell יהיה ממשק שורת פקודה עם התכונות הבאות:

  • הגדרה מוגדרת מראש וייבוא.
  • היסטוריה עם יכולות עריכה
  • הוספה אוטומטית של נקודה -נקודה מסוף נחוצה

שיפורי המהדר

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

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

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

גיבוי JavaScript טוב יותר

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

G1 כאספן האשפה

בניגוד לדעה הרווחת, לג'אווה אין אוסף אשפה אחד, אלא ארבעה. אספני האשפה הללו אינם נוצרים שווים וככזה, בחירה לא נכונה פירושה שיש בעיות ביצועים ביישום. ב- Java 8, אוסף האשפה המוגדר כברירת מחדל היה אספן המקביל / תפוקה. אספן האשפה הזה הוחלף על ידי קודמו, אספן האשפה הראשון (G1). מכיוון שקולט G1 תוכנן לתמוך ביעילות בערימות גדולות מ -4 ג'יגה-בתים, זהו אספן האשפה המושלם ליישומים קטנים וגדולים כאחד.

עדכוני API

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

הראשון הוא עדכוני במקביל ל- Java 9 שיש להם Java.util.concurrent.Flow ו- CompletableFuture. מכוון לפתור את הבעיה שהיא לחץ גב. Flow הוא יישום Java של ממשק API של Reactive Streams שמטרתו בעצם לפתור את בעיית הלחץ האחורי. לחץ אחורי הוא הצטברות של נתונים המתרחשים כאשר שיעור הבקשות הנכנסות גדול מיכולת העיבוד של היישום. בטווח הארוך, זוהי בעיה מכיוון שהיישום מסתיים במאגר של נתונים לא מעובדים. עדכון זה משמעו טיפול טוב יותר בפסק זמן, עיכובים ותת -סיווג.

אבטחה היא חלק מזהות הליבה של ג'אווה. ככזה, תמיכה בחברים שאושרו לאחרונה HTTP 2.0 RFC הוא יתרון עצום. HTTP 2.0 RFC נבנה על גבי אלגוריתם SPDY של גוגל שכבר החלה להניב פירות עם שיפורי מהירות הנעים בין 11.81% ל -47.7% לעומת HTTP 1.1 הקודם. API זה של לקוח הוא שדרוג לפרוטוקולי הליבה של HTTP ול- HttpURLConnection API שהוא בעייתי, בלשון המעטה מאז שהוא בוצע עוד לפני HTTP 1.

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

היתרונות של Java 9

לבעלי עסקים רבים, אין הבדל בין Java 8 ל- 9. עם זאת, עבור המפתח, יש עולם של הבדל. אלה היתרונות שיש ל- Java SE 9 על קודמיו.

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

מקורות

http://openjdk.java.net/jeps/251
https://www.romexsoft.com/blog/java-8-vs-java-9/
https://blogs.oracle.com/java/features-in-java-8-and-9
https://dzone.com/articles/5-features-in-java-9-that-will-change-how-you-deve

Eclipse Java Tutorial