JavaRush /בלוג Java /Random-HE /מגמות Java בשנת 2022: JDK 18 ו-19, Project Loom ו-Data me...

מגמות Java בשנת 2022: JDK 18 ו-19, Project Loom ו-Data mesh

פורסם בקבוצה
ובכן, 2022 התחילה. בזמן שרוב האנשים עדיין בחגים של השנה החדשה עם שמפניה ואוליבייה, נדבר על טרנדים בעולם ג'אווה. אולי זה יעזור לך לנתח את הקריירה שלך, ללמוד טכנולוגיה חדשה או להמציא תוכנית פיתוח לשנה הקרובה. מגמות Java בשנת 2022: JDK 18 ו-19, Project Loom ו-Data mesh - 1מומחה לשפת Java והמרצה אנדריי רודיונוב, כמו גם ארכיטקט פתרונות ב-EPAM וראש ועדת התוכנית של Devoxx Ukraine, Oleg Tsal-Tsalko, דיברו על מה שמחכה לג'אווה ב-2022 והעתיד הקרוב.

מהן הסיכויים עבור Java בשנת 2022?

מגמות Java בשנת 2022: JDK 18 ו-19, Project Loom ו-Data mesh - 2השנה אנו מצפים לשחרור שתי הגרסאות הבאות: JDK 18 (במארס) ו-JDK 19 (בספטמבר). פוטנציאל מעניין עבור רוב מפתחי Java ב-JDK 18 עשוי להיות:
  • שרת אינטרנט פשוט מובנה, ללא תמיכה בקונטיינר של servlet, שניתן להשתמש בו עבור אבות טיפוס ובדיקות מהירים, בדומה לשרתי אינטרנט דומים ב- Python, Ruby, PHP.
  • התאמת הדפוסים ממשיכה להשתפר.
באשר ל-JDK 19, יש כבר פריט-Access Build, אבל עדיין אין רשימה רשמית של מה שמתוכנן להיכלל בו. אני רוצה להאמין ש-JDK 19 לפחות יכלול את אב הטיפוס היציב הראשון של Project Loom, שעבורו הופיעו לאחרונה טיוטת מפרטי ואשר המבנה האחרון שלו מבוסס על JDK 19. על Project Loom נדבר בפירוט רב יותר בהמשך.

לאילו תחומים ג'אווה נשארת הפתרון היחיד, ואיפה היא עדיפה?

אנדריי רודיונוב:

למרבה המזל, איננו יכולים לומר שאין אלטרנטיבה ל-Java עבור אף אחד מהתחומים, אך אנו יכולים לדבר על Java כמעין אמצעי זהב לפיתוח יישומים ארגוניים, backends ומיקרו-שירותים. ראוי לציין גם את המספר ההולך וגדל של הפצות JDK שונות מספקים שונים (למעט אורקל): אמזון, מיקרוסופט, עליבאבא, רד האט, בלסופט (נוסדה על ידי אנשים ממרכז הפיתוח של אורקל בסנט פטרסבורג) ואחרות. סט ההפצות המלא זמין כאן . מגמות Java בשנת 2022: JDK 18 ו-19, Project Loom ו-Data mesh - 3תמיד יש חלופות, אבל ג'אווה מוצאת את השימוש הגדול ביותר שלה ב-backend בפיתוח ארגוני. רוב החברות הגדולות בוחרות ב-Java עבור המערכות הגדולות והמורכבות שלהן. הסיבות זהות: מספר המפתחים והמומחיות בשוק, אקוסיסטם ענק ופלטפורמת JVM רבת עוצמה.

מה הסיכויים לשפות jvm אחרות, בפרט Kotlin, בהשוואה ל-Java?

אנדריי רודיונוב:

כדי להבין אילו שפות JVM פופולריות, פשוט פתח את התיעוד עבור Spring, Micronaut, Vert.x וראה באילו שפות ניתנות דוגמאות הקוד - Java ו-Kotlin יהיו נפוצות. אי אפשר לומר שיש מעבר מאסיבי של פרויקטים לקוטלין, אבל הפופולריות שלו עבור ה-backend ממשיכה לגדול ומסגרות רבות מנסות לכלול אותו באקוסיסטם שלהם. לגבי Scala, גרסאות חדשות משוחררות, והיא נמצאת בשימוש פעיל נוסף עבור ML, עיבוד נתונים, ושם פרדיגמת התכנות הפונקציונלית נוחה יותר.

אולג צאל-צלקו:

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

האם תהיה ירידה באיכות Java עקב מרווחי שחרור קצרים יותר?

אולג צאל-צלקו:

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

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

אולג צאל-צלקו:

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

מסגרת אביב: האם היא תמשיך להרחיב את המערכת האקולוגית שלה כדי להתאים לצרכים מגוונים?

אנדריי רודיונוב:

באשר ל-Spring Framework, הפיתוח שלה התמקד בתמיכה בתכונות שונות של Spring Cloud וביכולת להרכיב את Spring Boot לקבצים בינאריים מקוריים – פרויקט Spring Native, שמתוכנן להיות חלק מ-Spring Core בעתיד. בהקשר זה, אביב פיגרה אחרי Micronaut ו-Quarkus בשל השימוש הפעיל בהשתקפות ויצירת קוד דינמי. בנוגע ל-Spring Framework 6, אני ממליץ לכם לצפות בדוח Spring 6 and Beyond מה חדש ב-Spring Framework 6? מכנס הג'וקר (מאולג דוקוקה ואלכסיי נסטרוב). המפתח שבהם הם המעבר ל-JDK 17, נטישת תצורת XML ו-Autowire דרך מגדירים, פיתוח נוסף של תמיכת Kotlin ופרויקט Spring Fu.

אולג צאל-צלקו:

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

ספר לנו על פרויקט הנול: בשביל מה הוא מיועד, אילו בעיות הוא פותר?

אנדריי רודיונוב:

Project Loom הוא כנראה החידוש המעניין ביותר, שיכול להפוך לשינוי טקטוני חדש עבור כל פלטפורמת JVM וכל השפות על גבי ה-JVM. Project Loom אולי לא ישפיע על מפתחים רגילים באותה מידה, אבל זה בהחלט ישפיע על המערכת האקולוגית כולה, ספריות, מסגרות ושפות JVM אחרות שמשתמשות בריבוי הליכי שרשור. Project Loom מציג הפשטת חוטים חדשה - שרשורים וירטואליים (בדומה לקורוטינים). אם בעבר שרשור Java היה קשור ישירות לשרשור של מערכת הפעלה (OS), ויצירת שרשור חדש בג'אווה הוביל ליצירת שרשור חדש של מערכת ההפעלה, אז עם שרשורים וירטואליים הקשר הזה של אחד לאחד נשבר. בעת יצירת פתיל וירטואלי חדש, פתיל מערכת הפעלה חדש לא ייווצר, ואחד מה-carrier threads (סוג של אנלוגי של מאגר פתילים של מערכת הפעלה) יעשה שימוש חוזר לביצוע חישובים ישירים. לפיכך, מספר שרשורים וירטואליים יכולים לרוץ על גבי שרשור מערכת הפעלה אחד. עבור משימות מחשוב, מודל זה של שרשורים וירטואליים אינו מספק יתרונות, אלא מאט את מהירות החישובים, אך עבור פעולות חסימה, כגון עיבוד בקשות HTTP, המתנה לתגובות ממסד הנתונים או משירותי מיקרו, מודל זה יהיה יתרון משמעותי. העובדה היא שעם מודל השרשור הנוכחי, חסימה/המתנה על שרשור ג'אווה הובילה לשרשורי מערכת הפעלה סרק - זה היה בזבוז משאבים ודרש יצירת שרשורי מערכת הפעלה נוספים. במודל ה-thread הווירטואלי, חסימה/המתנה בשרשור וירטואלי יגרום לשחרור פתיל ה-carrier שעליו רץ ה-thread הווירטואלי ולרוץ עליו שרשור וירטואלי נוסף. בדרך זו, שרשורי מערכת ההפעלה ישמשו בצורה אופטימלית יותר ויהיה צורך בפחות מהם לביצוע משימות דומות. בהתאם לכך, יצרני ספריות, מסגרות ושפות JVM יצטרכו להתאים את הקוד שלהם לשרשורים וירטואליים. לכן, שכתוב גדול מגיע עבורם :) בנוסף למודל ה-thread הווירטואלי, מתוכנן להציג גם API חדש כדי לפשט את תזמור ה-thread - מה שנקרא מובנה במקביל. כעת, למשל, נעשה שימוש פעיל ב-Currency מובנה ב-Kotlin coroutines וב-Scala ZIO. לרוע המזל, גרסת ה-JDK ואפילו שנת השחרור של Project Loom עדיין לא ידועות. כשנשאל על תאריך השחרור, האדריכל הראשי של פלטפורמת ג'אווה, בריאן גוץ, עונה במשפט פילוסופי: "זה יהיה מוכן, מתי זה יהיה מוכן". לכן, אנו ממתינים ויכולים לנסות בניית ניסויים של Project Loom .

אולג צאל-צלקו:

Loom הוא פרויקט גג גדול, שבתוכו עובדים צוות OpenJDK ו-Oracle על חידושי Concurrency ב-Java ו-JVM: חוטים וירטואליים, סיבים והמשכים. סביר להניח שהשחרור של תכונות אלה יהיה הדרגתי. כרגע יש רק בניית גישה מוקדמת לתמיכה בשרשורים וירטואליים. אם מדברים ספציפית על שרשורים וירטואליים, המטרה העיקרית שלו היא לפשט את מודל הפיתוח מרובי ההליכים ב-Java על ידי שימוש במיליוני שרשורים קלים עם אותה סמנטיקה כמו שרשורי פלטפורמה רגילים. מתחת למכסה המנוע, החוטים הללו ינוהלו בתוך ForkJoinPool וישתמשו בהם מחדש על ידי חוטי פלטפורמה.

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

אנדריי רודיונוב:

אם אנחנו מדברים על מגמות עולמיות, הן לא השתנו הרבה. כבעבר, המגמה העיקרית ממשיכה להיות Kubernetes והתשתית סביבה בצורה של Service mesh . רשת נתונים צוברת פופולריות גם כסוג של הפשטה לניהול מקורות נתונים ואחסון מבוזרים.
הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION