הגרסה האחרונה של Java מציגה כמה תחביר שימושי עבור Records, בין שיפורים אחרים.

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

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

היכרות עם שרשורים וירטואליים

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

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

למרבה המזל, Java 19 הציגה שרשורים וירטואליים כתכונת תצוגה מקדימה, ש-Java 21 שיכללה וחיסקה באמצעות JDK Enhancement Proposal 444.

שרשורים וירטואליים מציעים אלטרנטיבה מבטיחה ביותר, המאפשרים לך להתמודד עם אתגרי מדרגיות בצורה יעילה יותר. זה מוביל לשיפור הביצועים והיענות משופרת של יישומי שרת.

אוספים ברצף שמישים יותר

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

instagram viewer
var last = list.get (list.size() - 1);

עם זאת, Java 21 מציג אלטרנטיבה תמציתית ואלגנטית:

var last = list.getLast();

באופן דומה, גישה לרכיב הראשון של LinkedHashSet דורשת מסלול עגול:

var first = linkedHashSet.iterator().next();

אבל עם Java 21, המשימה הזו הופכת להרבה יותר פשוטה:

var first = linkedHashSet.getFirst();

אתה יכול גם לגשת לרכיב האחרון של LinkedHashSet באמצעות החדש ללכת לאיבוד שיטה הנמנעת מחזרה על כל הסט.

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

הקלט דפוסי נוחות

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

הם עושים סינרגיה עם התאמת דפוסים למשל ו התאמת דפוסים עבור מתג, מפשט משמעותית את הקוד ומשפר את הקריאה הכוללת.

הנה המחשה של הרעיון הזה, עם רשומה פשוטה בשם עמדה:

פּוּמְבֵּי תקליט עמדה(int איקס, int י){}

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

פּוּמְבֵּיבָּטֵלהדפס(אובייקט o){
אם (o מופע של מיקום p) {
System.out.printf("o הוא מיקום: %d/%d%n", p.x(), p.y());
} אַחֵראם (o מופע של מחרוזת s) {
System.out.printf("o היא מחרוזת: %s%n", s);
} אַחֵר {
System.out.printf("o זה משהו אחר: %s%n",o);
}
}

עם הקלט דפוסים, כעת תוכל להתאים ישירות דפוס שיא כגון מיקום (int x, int y) במקום להשתמש ב- עמדה עמ' תבנית. זה מאפשר לך לגשת למשתנים איקס ו y ישירות בקוד, ומבטל את הצורך ב p.x() ו p.y():

פּוּמְבֵּיבָּטֵלהדפס(אובייקט o){
אם (o מופע שלעמדה(int איקס, int י)) {
System.out.printf("o הוא מיקום: %d/%d%n", x, y);
} אַחֵראם (o מופע של מחרוזת s) {
System.out.printf("o היא מחרוזת: %s%n", s);
} אַחֵר {
System.out.printf("o זה משהו אחר: %s%n",o);
}
}

יתר על כן, אתה יכול להשתמש הקלט דפוסים בשיתוף עם התאמת דפוסים עבור מתג, כדי לפשט עוד יותר את הקוד שלך:

פּוּמְבֵּיבָּטֵלהדפס(אובייקט o){
החלף (o) {
מקרהעמדה(int איקס, int י) - > System.out.printf("o הוא מיקום: %d/%d%n", x, y);
מקרה מחרוזת s - > System.out.printf("o היא מחרוזת: %s%n", s);
בְּרִירַת מֶחדָל - > System.out.printf("o זה משהו אחר: %s%n",o);
}
}

דפוסי רשומות מקוננות מאפשרים לך להתאים ברשומות שהשדות שלהן הם עצמם רשומות. לדוגמה, שקול רשומה בשם נָתִיב הכוללת א מ ו ל עמדה:

פּוּמְבֵּי תקליט נָתִיב(עמדה מ, עמדה אל){}

על ידי שימוש בתבניות שיא, הדפסת א נָתִיב האובייקט הופך תמציתי יותר:

פּוּמְבֵּיבָּטֵלהדפס(אובייקט o){
החלף (o) {
מקרהנָתִיב(עמדה מ, עמדה אל) - > System.out.printf("o הוא נתיב: %d/%d -> %d/%d%n", from.x(), מ.y(), ל.איקס(), ל.y());
// מקרים אחרים
}
}

עם עזרה של הקלט דפוסים, הטיפול ברשומות עם שדות מסוגים שונים הופך לברור וקריא יותר. נניח ששינית רשומות, עמדה 2D ו מיקום 3D, איפה עמדההוא ממשק Java ששניהם מיישמים:

פּוּמְבֵּי אָטוּם מִמְשָׁקעמדההיתריםעמדה 2D, מיקום 3D{}
פּוּמְבֵּי תקליט עמדה 2D(int איקס, int י) מיישם עמדה {}
פּוּמְבֵּי תקליט מיקום 3D(int איקס, int י, int ז) מיישם עמדה {}
פּוּמְבֵּי שיא נתיב < P מרחיב את המיקום > (P מ, P עד) {}

כדי להבדיל בין התנהגות ההדפסה עבור נתיבים דו-ממדיים ותלת-ממדיים, תוכל להשתמש בדפוסי הקלטות:

פּוּמְבֵּיבָּטֵלהדפס(אובייקט o){
החלף (o) {
מקרהנָתִיב(Position2D from, Position2D to) - > System.out.printf("o הוא נתיב דו-ממדי: %d/%d -> %d/%d%n", from.x(), מ.y(), ל.איקס(), ל.y());
מקרהנָתִיב(Position3D from, Position3D to) - > System.out.printf("o הוא נתיב תלת-ממדי: %d/%d/%d -> %d/%d/%d%n", from.x(), מ.y(), מ.ז(), ל.איקס(), ל.y(), ל.ז());
// מקרים אחרים
}
}

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

פתח אפשרויות חדשות עם Java 21

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

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