·
הקדמה
קצת היסטוריה…
מטרתם המקורית של מפתחי השפה
הייתה לייצור שפת תכנות אשר תשמש לפיתוח תכניות אשר יפעילו טוסטרים,
ומכשירי חשמל נוספים :).
בשנת 95, עם התפתחות ה-web, JAVA
החלה לצבור תאוצה הודות לאפשרות לכתוב applets
(תכניות JAVA
קטנות אשר נשלחות מן השרת אל הדפדפן ופועלות בו).
כיוון שתכניות אשר כתובות
ב-JAVA
יכולות לפעול בכל פלטפורמה (ובלבד שיותקן בה JVM –
יוסבר בהמשך) ה-applets
אפשרו את פיתוחם של אתרי אינטרנט מתוחכמים.
במהלך השנים האחרונות,
אחוז השימוש ב-applet
בפיתוחם של אתרי אינטרנט הלך ופחת. טכנולוגיות אחרות (כגון JavaScript, DHTML, FLASH, ASP
ואחרות..) סיפקו את האפשרות לבצע חלק מן הפעולות, שבעבר ביצעו באמצעות applets, בדרך זולה יותר (שכרם של מתכנתי JAVA
גבוה יותר משכרם של מתכנתים בשפות אחרות) ולעתים גם יותר טובה וגם יותר מהירה. כך
למשל, רוב האנימציה באתרי אינטרנט מפותחת כיום באמצעות FLASH, ולא
באמצעות Java Applets
כפי שהיה נהוג לפני מספר שנים. כיום, פיתוחם של Java
Applets, לצורך אנימציה, רלוואנטי רק באותם מקרים שבהם מסתתרת מאחורי
האנימציה תכנית מתוחכמת או באותם מקרים שבהם לא ניתן לקבל את האנימציה הנדרשת
באמצעות FLASH או
טכנולוגיות אחרות. יתר על כן, הופעתה של Visual
J++ (גרסתה של Microsoft
ל-JAVA
אשר זהה ל-Java רק
באופן חלקי) והעובדה שמיקרוסופט ניצחה במלחמת הדפדפנים (רוב הדפדפנים כיום הם מסוג
IE) תרמו גם הם לשימוש ההולך ופוחת ב-Java
Applets.
העובדה כי אחוז השימוש ב-applets רק
הולך ופוחת סיפקה את התחמושת הדרושה לבעלי העניין בהכחדתה של השפה.
ובכן,
אם השימוש
ב-Java Applets רק הולך ופוחת, אז למה להשקיע זמן וללמוד JAVA ?
ü
אי תלות בפלטפורמה שעליה התכנית רצה
המטרה העיקרית שעמדה לנגד
עיניהם של מפתחי השפה הייתה ליצור שפה אשר מאפשרת לכתוב את התכנית פעם אחת ולאחר
מכן להריץ אותה בכל מחשב מבלי לבצע
שינויים.
קובץ קוד המקור של תכנית ב-JAVA
מתורגם ל- JAVA BYTE CODE שנשמר בקובץ ששמו זהה (בדרך כלל) לשמו של קובץ קוד המקור,
והסיומת שלו class.
קובץ ה- class
ניתן להרצה בכל מחשב הודות ל- JVM (Java
Virtual Machine). ה- JVM
היא תכנית שנכתבה במיוחד למערכת הפעלה מסוימת (קיימות גרסאות של ה- JVM
כמעט לכל מערכת
הפעלה קיימת). תכנית זו מסוגלת לתרגם את קובץ ה-Java
Byte Code (הקובץ עם הסיומת class)
לשפת המכונה של המחשב שבו היא פועלת. בדרך זו מושגת אחידות שלא הייתה קיימת בשפות
אחרות. ב C++
ניתן היה לכתוב תכנית במחשב אחד ולהריצה באחר רק לאחר ביצוע השינויים הדרושים
ולאחריהם קומפילציה מחדש.
בדרך זו, ל-JAVA יש
רמת תאימות גבוהה לא רק בכל הקשור ל-source
code, אלא גם בכל הקשור לקובץ שמוכן להרצה.

ü
קלות בפיתוחן של אפליקציות בתחום התקשורת
ב-JAVA
קיימות מחלקות מוכנות אשר כוללות מתודות/פונקציות שמקלות על כתיבתן של תכניות אשר
מתקשרות עם תכניות אחרות (במחשבים שונים).
המחלקות המוכנות ב-Java
כוללות תמיכה במגוון רחב של פרוטוקולים (HTTP, TCP\IP, UDP, SMTP
ואחרים).
ü
מנגנוני הגנה מפני וירוסים
ל-JAVA
קיימים מנגנונים רבים אשר מקטינים את הסכנות הקיימות בדמותם של ווירוסים מזיקים (“I
LOVE YOU...”(.
ü
שפה מודולרית
כיוון שתכנית ב-JAVA מורכבת ממחלקות,
אופן השדרוג של תכניות ב-JAVA פשוט בהרבה מאופן
השדרוג של תכניות אשר כתובות ב- C++. שדרוג תכנית ב-JAVA נעשה באמצעות החלפת
מחלקה אחת באחרת.
ü
שפה קלה ופשוטה ללמידה ולשימוש
כדי להשיג מטרה זו, התבססו בפיתוחה על C++. C++
היא אחת השפות הפופולריות ביותר (נכון לשנות ה-90) ומשום הדמיון שיש בינה לבין JAVA, למתכנתי C++ קל
לעבור ל- JAVA. כללי התחביר כמעט
זהים לחלוטין, ותפיסת תכנות מונחה העצמים ממשיכה להתקיים. כדי להקל על השימוש ב-JAVA הנושאים הבעייתיים
שקיימים בC++ כגון עבודה עם
מצביעים וטיפול בזיכרון שמוקצה באופן דינמי לא אומצו.
אחת הפעולות שמעיקות על כל מתכנת הוא כתיבת התיעוד לתכנית שכתב. מפתחי השפה חשבו
על בעיה זו מראש, ופיתחו כחלק מהשפה את ה- javadoc.
ה-javadoc היא תכנית שבעת
הפעלתה על תכנית בכתובה ב-JAVA
היא יוצרת דפי HTML אשר מכילים תיעוד
מפורט לתכנית עפ"י ההערות המתאימות שנשתלות בקוד המקור. ה-API שמשמש כ-help לכל מפתח ב-JAVA נוצר באמצעות הפעלת
ה-javadoc על קבצי קוד המקור
של המחלקות שיש ב-JAVA.
ü
שפה שמצמצמת את האפשרות לבאגים
כדי שהשפה החדשה, אכן תאפשר לפתח תכניות עם מספר קטן ככל האפשר של באגים (באגים
מצד המתכנת) הטיפול בהקצאת הזיכרון הדינמית הוצא מתחום אחריותו של המתכנת. ב-JAVA קיים רכיב בשם Garbage Collector אשר פועל כל הזמן
במקביל לפעולת התכנית, ומשחרר את הזיכרון שהוקצה ושאין בו עוד שימוש. ב C++ האחריות לשחרר את הזיכרון שהוקצה באופן
דינמי, כאשר אין בו עוד שימוש, מוטלת על המתכנת.
שיפור נוסף שבוצע ב JAVA הוא מניעת האפשרות
לחרוג מגבולותיו של מערך. בעוד שבC++
ניתן לחרוג מגבולותיו של המערך מבלי שהתכנית תתריע על כך, ב-JAVA זה
לא אפשרי. ניסיון לחרוג מגבולותיו של מערך ב-JAVA
יגרום לשגיאה. שיפור נוסף שבוצע ב-JAVA
הוא האפשרות לבצע הורשה יחידה בלבד (כל מחלקה יכולה לרשת ממחלקה אחת בלבד). לא
ניתן לבצע הורשה מרובה ב-JAVA.
האפשרות לבצע הורשה מרובה ב C++ גרמה, לא אחת, לתקלות קשות. תכנון
נכון של המחלקות מתממש בהורשה יחידה בלבד. אם אינך יודע מהי הורשה, אל דאגה. באחד
הפרקים הבאים נקדיש לנושא את תשומת הלב הראויה.
שיפור אחר שבוצע ב JAVA
מצוי באופן ביצוע ה-casting
(שינוי טיפוס של ערך). בעוד שב- C\C++
ערך מטיפוס כלשהו, אשר אמור לשנות את טיפוסו בעקבות השמתו למשתנה/פרמטר מטיפוס
אחר, עובר casting
באופן אוטומאטי גם כאשר שינוי הטיפוס עלול לגרום לשינוי בערך (השמה של ערך מספרי
ממשי לתוך משתנה מטיפוס מספרי שלם) - ב-JAVA,
ה-casting
מתבצע באופן אוטומאטי רק כאשר אין כל סכנה לפגיעה בערך (השמה של ערך מטיפוס long
לתוך משתנה מטיפוס int לא
תעבור קומפילציה).
ü
תכנית אשר מאפשרת להריץ בו זמנית יותר
מרצף פעולות אחד
JAVA מאפשרת לפתח תכניות
אשר יש בהן מספר רצפי פעולה אשר מתבצעים בו זמנית. אפשרות זו קיימת גם בשפות
אחרות, אך אופן מימושה ב-Java מסובך בהרבה.
ü
תכנות מבוזר
אופן כתיבתן של תכניות אשר חלקים שונים
מתוכן מתבצעים במחשבים נפרדים תוך כדי העברת אינפורמציה בינם לבין עצמם פשוט בהרבה
מאשר בשפות תכנות אחרות.
ü
יכולות גרפיות משופרות
האפשרויות המגוונות ביצירת GUI (ממשק משתמש גראפי)
באמצעות Java מציבים אותה בתור
אחת השפות המתאימות ביותר ליצירת GUI (אם לא הטובה ביותר
!).
ü
קישוריות לטכנולוגיות אחרות
כיוון שתכנית ב-JAVA יכולה לפעול בכל
פלטפורמה והודות לכך ש-JAVA כוללת מחלקות רבות
מוכנות, קיימת האפשרות לשלב קוד Java עם טכנולוגיות רבות
אחרות. כך למשל, ניתן לכתוב תכנית ב-JAVA
אשר תתחבר לבסיס נתונים – כמעט מכל סוג – לרבות Access (באמצעות ODBC). אפשרויות אחרות
כוללות את האפשרות לכתוב תכנית ב-Java שתשולב כ-ActiveX בתכנית אחרת שכתובה
ב-Visual
Basic. אין כל בעיה
בכתיבת חלק מן המתודות/פונקציות שמוגדרות בתכנית לעשות שימוש בקטעי קוד אשר כתובים
ב- C\C++.
ü
תמיכה מובנית בUNICODE-
בעוד שתכניות אשר כתובות ב- C\C++ עושות שימוש בטבלת
ה-ASCII (מסוגלת לתאר רק את
האותיות באנגלית ואת האותיות של השפה המקומית שמותקנת במחשב – בישראל זוהי
העברית), תכניות שכתובות ב-JAVA יכולות לעשות שימוש
בטבלת ה-UNICODE אשר כוללת כ-65000
תווים לתיאור מרבית השפות בעולם ומרבית הסימנים הגרפיים אשר קיימים בתחומי המדעים
השונים).
ü
"מצעד הבאגים"
כבכל
טכנולוגיה, גם ב-Java קיימים באגים.
ההבדל באופן הטיפול בבאגים שקיימים ב-Java
לעומת טכנולוגיות אחרות מצוי באופן השיתוף של המתכנתים בתהליך התיקון שלהם. בעוד
שבאגים אשר קיימים ב-ASP, Visual J++, Visual C++, Visual Basic ובטכנולוגיות אחרות
מתוקנים רק על ידי המפתחים של אותן טכנולוגיות, ב-Java הליך מציאת הבאג
הדיווח עליו והצעת התיקון שלו יכולים להיעשות (וכך זה גם מתבצע) על ידי מפתחים
מרחבי העולם. באתר המרכזי של Java, www.javasoft.co.il,
קיים מדור שלם אשר מפרט באגים שדווח עליהם. אופן הטיפול המיוחד בבאגים שקיימים ב-Java מתאפשר הודות לכך שכל קוד המקור של
המחלקות שכבר הוגדרו (ויש הרבה הרבה הרבה מחלקות כאלה...) גלוי לעיניו של כל מפתח.
קבצי קוד המקור של המחלקות הקיימות נגישים לכולם באופן חופשי.
ü
פופולריות עצומה
הודות לפופולריות העצומה של השפה (לשם
ההשוואה, בכל 6 שנות קיומה נכתבו עליה יותר ספרים משנכתבו על C++ אשר קיימת למעלה
מ-10 שנים) מרבית המתכנתים מעדיפים לתכנת באמצעותה (במקום C++ ושפות אחרות).
תכונה זו מקנה לחברות שמפתחות ב-Java יתרון תחרותי עסקי
ברור על חברות אחרות אשר מעדיפות לפתח באמצעות שפות אחרות ופחות פופולריות כגון C++ ו- Visual Basic: מיטב המוחות עתיד
להימצא – בשנים הקרובות-באותן חברות אשר ישכילו לפתח ב-Java.
ü
מגוון רחב של ייעודים
מאז הופעת השפה, היא פותחה באופן שמאפשר
לה לתת מענה למגוון רחב של צרכים: קישוריות לבסיסי נתונים, יצירת גרפיקה דו/תלת
ממדית, אפליקציות בצד השרת, תכנות טלוויזיה אינטראקטיבית, תכנות מכשירי חשמל,
תכנות פלאפונים, תכנות ליצירת אתרים מתוחכמים ב-web הקונבנציונלי
ואחרים... מסיבה זו, צוותי מתכנתים
אשר שולטים ב-Java ניתנים לניוד מהיר
בין תחומי הפעילות שונים, וכמו כן, מגוון רחב מבין חלקיו של פרוייקט נתון ניתנים
לפיתוח באמצעות אותה שפה (באמצעות: Java).
במהדורות
הבאות של הספר ייסקרו יתרונות נוספים...
שפת
התכנות JAVA
צוברת תאוצה רבה בתקופה זו, והיא אינה מוגבלת לשימוש באינטרנט. ניתן לפתח בה בקלות
רבה יחסית אפליקציות חלונאיות ולהנות מכל |היתרונות שמנינו. כמו כן, כיוון שתחום האינטרנט הולך ומתפתח במקביל
לשינוים התרבותיים שמתחוללים בעולם כולו, אין כל ספק, שב-"אינטרנט של
המחר" , אינטרנט של פלאפונים ושל טלוויזיות אינטראקטיביות תתפוס השפה מקום של
כבוד. בהמשך ייסקרו חלק מן התחומים הרבים שבהם ניתן להשתמש ב-Java.
מגוון השימושים שקיימים לשפה
בחלק זה ייסקרו מספר
תחומים שבהם Java נותנת מענה:
טלוויזיה אינטראקטיבית JavaTV -
JAVA כוללת מחלקות מוכנות שיכולות לשמש לכתיבת תכניות אשר יפעלו בתוך מכשיר הטלוויזיה או בתוך הקופסה שתותקן מעליו (set top box). חברות רבות בעולם משתמשות ב-Java לצורך פיתוח בתחום זה: TOSHIBA, SAMSUNG, PHILIPS, SONY, MATSUSHITA ואחרות... לאחרונה קיבל ה-DVB (Digital Video Broadcasting project) את ההחלטה להשתמש ב-Java לצורך פיתוחה של הטלוויזיה האינטראקטיבית. ה-DVB הנו גוף אשר מאגד בתוכו למעלה מ-250 חברות אלקטרוניקה/תקשורת גופי תקינה וספקיות תוכן מלמעלה מ-30 מדינות אשר התאגד מתוך מטרה לגבש במשותף את התקנים ואת הסטנדרטים לפעולתה של הטלוויזיה הדיגיטאלית. יתר על כן, SONY