החידושים האחרונים בשפת התכנות Java

Java Catching Up Banner
בעשור האחרות שפת התכנות ג׳אווה המשיכה להתפתח. יכולות רבות התווספו לה. אנו נשמח לסייע לכם להתעדכן. קיימות דרכים רבות לעשות זאת.

Share This Post

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

היכולות העיקריות שהתווספו לג׳אווה בעשור האחרון

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

 

Interfaces Default Methods
החל מגרסה 8 של שפת התכנות Java ניתן לכלול בהגדרה של interface גם הגדרה של מתודות שאינן אבסטרקטיות. מתודות אלה ידועות בשם Default Methods, וכך, למרות שההגדרה של trait ב-Java איננה אפשרית ניתן להשיג את אותה תוצאה באמצעות Default Methods. שפת התכנות Java איננה השפה היחידה שמאפשרת כיום לכלול בהגדרה של interface את ההגדרה של Default Methods. בדומה ל-Java גם שפת התכנות #C מאפשרת זאת, ובכך, ליישר קו עם שפות התכנות המתקדמות אשר מאפשרות הגדרה של traits כגון Scala ו-PHP

Functional Interfaces
בשפת התכנות Java פונקציות לא מיוצגות באמצעות אובייקטים. כדי לאפשר העברת פונקציונליות לפונקציה שקוראים להפעלתה יש צורך באובייקט שהפונקציונליות שאותה רוצים להעביר ממומשת בפונקציה שניתן להפעיל עליו. בהינתן אובייקט שכזה, ניתן יהיה לשלוח את ה-reference שלו כארגומנט לפונקציה שקוראים להפעלתה. בעבר היה נהוג ליצור אובייקט שכזה באמצעות Anonymous Nested/Inner Classes. עם ההופעה של Java 8 ניתן להשיג את אותה תוצאה באמצעות Lambda Expressions. כדי שהמהדר יוכל לפרש את ה-Lambda Expression באופן מדוייק יש צורך בקיומו של interface אשר כולל פונקציה אבסטרקטית אחת לכל היותר. כאשר interface כולל הגדרה של פונקציה אבסטרקטית אחת לכל היותר מדובר ב-Functional Interface. קיימים מקרים מסויימים שבהם למרות שה-interface כולל יותר מפונקציה אבסטרקטית אחת הוא עדיין ייחשב ל-Functional Interface. 

Lambda Expressions
ההגדרה של Lambda Expressions בשפת התכנות Java נתמכת החל מגרסה 8. המימוש של Lambda Expressions בשפת התכנות Java נעשה תוך שימוש ב-Inner/Nested Classes וב-Functional Interfaces. פרט לתחביר הבסיסי שעושה שימוש בחץ הידוע, שפת התכנות Java תומכת גם במספר אפשרויות תחביריות נוספות, לרבות כאלה אשר עושות שימוש באופרטור ::. 

Java 8 Streams
זוהי המקבילה של Java לשימוש ב-generators אשר נתמך ברוב שפות התכנות המודרניות, כגון Python JavaScript, PHP, Kotlin ו-#C. השימוש ב-Java 8 Streams כרוך (פעמים רבות) בשימוש ב-Lambda Expressions, שכדי להבין אותם באופן יסודי יש צורך בהבנה מעמיקה של Inner/Nested Classes ו-Functional Interfaces. 

Streams Gatherers

ה-Streams API שהוצג בגרסה 8 של שפת התכנות Java מעט מוגבל בפעולות שהוא מאפשר לנו לבצע כאשר אנו משתמשים ב-Streams. ה-Streams Gatherers API אשר צפוי להיכלל באופן רשמי בגרסה 24 מאפשר לנו ליצור פעולות חדשות אשר ניתן יהיה לבצע על streams שבהם אנו משתמשים.  

The Date/Time API

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

השימוש ב-Modules

החל מגרסה 9 של שפת התכנות Java, ניתן לפתח מערכות תוכנה אשר מורכבות ממודולים נפרדים. הרעיון של פיתוח מערכות תוכנה אשר מורכבות ממודולים נפרדים על מנת לאפשר Code Reuse במודולים אלה איננו חדש. הוא כבר נתמך היטב בשפות תכנות אחרות כגון Python ו-JavaScript

גרסה עדכנית של HttpClient
מפתחים רבים מכירים את ה-HttpClient (אשר פותח על ידי Apache), אשר שמאפשר כתיבת קוד אשר שולח Http Requests לכתובת URL מסויימת. החל מגרסה 11 של שפת התכנות Java, קיימת ב-Java גרסה משופרת של ה-HttpClient. ה-HttpClient שהתווסף ל-Java מחליף, למעשה, את ה-URLConnection אשר ידוע במגבלותיו הרבות. 

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

הגדרה של Switch Expressions
את האפשרות להגדיר Switch Statement כל המפתחים כבר מכירים. מדובר באפשרות שהופיעה בשפת התכנות C ומאז היא נתמכת כמעט בכל שפת תכנות אשר מתבססת באופן ישיר או עקיף על C, כגון JavaScript, C#, PHP ו-++C. ה-syntax של Switch Expression מעט שונה בהשוואה ל-syntax של Switch Statement. באמצעות Switch Expressions ניתן לממש Pattern Matching בדומה לשפות תכנות רבות אחרות, כגון Scala ו-Kotlin

הגדרה של Record Classes
בדומה לשפות תכנות רבות אחרות, כגון Python, Scala ו-Kotlin, גם שפת התכנות Java מאפשרת לנו להוסיף לשורת ההגדרה של המחלקה keyword מסויים (במקרה של Java מדובר ב-record) ובדרך זו לקבל באופן אוטומאטי הגדרה של מחלקה אשר כוללת כבר הגדרה באופן אוטומאטי של מספר פונקציות, כגון toString ו-equals. השימוש ב-Record Classes מתאים בעיקר באותם מקרים שבהם אנו מעוניינים בהגדרה מהירה של class אשר ישמש אותנו ליצירת אובייקטים שעיקר תפקידם לייצג data מסויים. באמצעות Record Classes ובדומה לשפות תכנות רבות אחרות מתאפשר לנו לממש Pattern Matching אשר מאפשר קיצור משמעותי של הקוד שאנו כותבים. 

הגדרה של Sealed Classes
בדומה לשפות תכנות רבות אחרות, כגון Kotlin, גם שפת התכנות Java מאפשרת לנו להגדיר class באופן כזה כך שתהיינה מגבלות על מיהם ה-classes אשר ניתן להגדיר כ-classes אשר יורשים ממנו. השימוש ב-Sealed Classes רלוואנטי בעיקר כאשר מממשים Pattern Matching תוך שימוש ב-Record Classes. 

יצירת Text Blocks

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

שימוש ב-Pattern Matching
יהיו אשר יגידו ש-Pattern Matching מהווה, למעשה, גרסה משופרת של Switch Case. למעשה, מדובר בהרבה מעבר לכך. התמיכה ב-Pattern Matching, אשר קיימת כיום בשפות תכנות רבות כגון Python, Kotlin ו-Scala, הגיעה סופסוף גם ל-Java

תמיכה ב-Virtual Threads

כאשר כותבים קוד אשר כולל שימוש ב-thread חדש, ה-thread החדש ממופה ל-native thread אשר מתוחזק על ידי מערכת ההפעלה. כתוצאה מכך, כל theread חדש שניצור יגרום להיווצרותו של native thread. מספר רב של native threads ידרוש כח מיחשוב גדול ובכך ה-performance ייפגע. כאשר יוצרים virtual thread לא יווצר באופן אוטומאטי native thread. ה-virtual thread יופעל באמצעות carrier thread אשר יוכל להריץ בכל עת virtual thread אחר. 

הקורס Xtreme Java Programming

קיימות דרכים רבות להשלים את הידע החסר. אחת מהן היא הקורס Xtreme Java Programming. מידע נוסף בנוגע לקורס זה ניתן למצוא באתר https://lifemichael.com/courses/javax/he. את הסילבוס ניתן למצוא באתר https://tinyurl.com/courses/javax/he. ניתן להירשם לגרסה הציבורית של קורס זה (מועבר באנגלית) וניתן גם להזמין את העברתו של הקורס בחברה שבה את/ה עובד/ת. כדי לעשות זאת, כל שיש לעשות הוא לפנות למנהל ההדרכה בחברה שבה את/ה עובד/ת ולבקש זאת.

הדרכה מקצועית אחד על אחד

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

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

Subscribe To Our Newsletter

Get updates and learn from the best

More To Explore

Java Catching Up Banner
Java

החידושים האחרונים בשפת התכנות Java

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

OpenAI Fundamentals Course Banner
AI

שימוש ב-OpenAI API

הירשמו לקורס OpenAI Fundamentals ולימדו כיצד להוסיף יכולות AI לתוכנה שאתם מפתחים.

קדמו את העסק שלכם!

נשמח להיפגש לקפה!

life michael academy asynchronous online courses

Java | Python | JavaScript | TypeScript

דילוג לתוכן Update cookies preferences