)Let’s start( הלחתהה - המדריך הישראלי ל-Java | לימוד...

31
1 ( ההתחלהLet’s start ) הקדמהapplications ו- applets - ארגון המחלקות בpackages הכרות עם ה- Javadoc - הJava Virtual Machine - הGarbage Collector © 2007 Zindell Technologies, Ltd.

Transcript of )Let’s start( הלחתהה - המדריך הישראלי ל-Java | לימוד...

Page 1: )Let’s start( הלחתהה - המדריך הישראלי ל-Java | לימוד …javabook.co.il/book/start.pdf)90-ה תונשל ןוכנ( רתויב תוירלופופה תופשה

1

(Let’s startההתחלה )

הקדמה

applications ו - applets

packages ארגון המחלקות ב-

Javadoc - הכרות עם ה

Java Virtual Machine ה-

Garbage Collector ה-

© 2007 Zindell Technologies, Ltd.

Page 2: )Let’s start( הלחתהה - המדריך הישראלי ל-Java | לימוד …javabook.co.il/book/start.pdf)90-ה תונשל ןוכנ( רתויב תוירלופופה תופשה

2

הקדמה

קצת היסטוריה

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

:(. ומכשירי חשמל נוספים

קטנות JAVAתכניות ) appletsהחלה לצבור תאוצה הודות לאפשרות לכתוב web, JAVA-עם התפתחות ה, 95בשנת

יכולות לפעול בכל פלטפורמה JAVA-כיוון שתכניות אשר כתובות ב(. אשר נשלחות מן השרת אל הדפדפן ופועלות בו

. אפשרו את פיתוחם של אתרי אינטרנט מתוחכמים applets-ה( יוסבר בהמשך – JVMובלבד שיותקן בה )

כגון)טכנולוגיות אחרות . בפיתוחם של אתרי אינטרנט הלך ופחת applet-אחוז השימוש ב, מהלך השנים האחרונותב

JavaScript, DHTML, FLASH, ASP שבעבר ביצעו, סיפקו את האפשרות לבצע חלק מן הפעולות..( ואחרות

(גבוה יותר משכרם של מתכנתים בשפות אחרות JAVAשכרם של מתכנתי )בדרך זולה יותר ,appletsבאמצעות

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

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

רלוואנטי רק באותם מקרים שבהם מסתתרת מאחורי האנימציה, לצורך אנימציה, Java Appletsפיתוחם של , כיום

או טכנולוגיות FLASHתכנית מתוחכמת או באותם מקרים שבהם לא ניתן לקבל את האנימציה הנדרשת באמצעות

(רק באופן חלקי Java-אשר זהה ל JAVA-ל Microsoftגרסתה של ) ++ Visual Jהופעתה של , יתר על כן. אחרות

תרמו גם הם לשימוש ההולך( IEרוב הדפדפנים כיום הם מסוג )והעובדה שמיקרוסופט ניצחה במלחמת הדפדפנים

.Java Applets-ופוחת ב

רק הולך ופוחת סיפקה את התחמושת הדרושה לבעלי העניין בהכחדתה של applets-העובדה כי אחוז השימוש ב

. השפה

כשפת תכנות הלך והתפתח, והשפה תפסה את מקומה כאחת השפותJavaלמרות כל האמור לעיל, השימוש ב-

© 2007 Zindell Technologies, Ltd.

Page 3: )Let’s start( הלחתהה - המדריך הישראלי ל-Java | לימוד …javabook.co.il/book/start.pdf)90-ה תונשל ןוכנ( רתויב תוירלופופה תופשה

3

הגמישות והמתקדמות ביותר.

כשפת תכנות JAVAהיתרונות של

אי תלות בפלטפורמה שעליה התכנית רצה

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

. בכל מחשב מבלי לבצע שינויים אחת ולאחר מכן להריץ אותה

(בדרך כלל) שנשמר בקובץ ששמו זהה JAVA BYTE CODE- מתורגם ל JAVA-קובץ קוד המקור של תכנית ב

JVM )Java- ניתן להרצה בכל מחשב הודות ל class- קובץ ה. classוהסיומת שלו , לשמו של קובץ קוד המקור

Virtual Machine .)ה -JVM קיימות גרסאות של ה)היא תכנית שנכתבה במיוחד למערכת הפעלה מסוימת -JVM

הקובץ עם הסיומת) Java Byte Code-תכנית זו מסוגלת לתרגם את קובץ ה(. כמעט לכל מערכת הפעלה קיימת

class )ב. בדרך זו מושגת אחידות שלא הייתה קיימת בשפות אחרות. לשפת המכונה של המחשב שבו היא פועלת

C ++ניתן היה לכתוב תכנית במחשב אחד ולהריצה באחר רק לאחר ביצוע השינויים הדרושים ולאחריהם קומפילציה

אלא גם בכל הקשור לקובץ, source code-יש רמת תאימות גבוהה לא רק בכל הקשור ל JAVA-ל, בדרך זו. מחדש

.שמוכן להרצה

קלות בפיתוחן של אפליקציות בתחום התקשורת

פונקציות שמקלות על כתיבתן של תכניות אשר מתקשרות עם/קיימות מחלקות מוכנות אשר כוללות מתודות JAVA-ב

© 2007 Zindell Technologies, Ltd.

Page 4: )Let’s start( הלחתהה - המדריך הישראלי ל-Java | לימוד …javabook.co.il/book/start.pdf)90-ה תונשל ןוכנ( רתויב תוירלופופה תופשה

4

,HTTP)כוללות תמיכה במגוון רחב של פרוטוקולים Java-המחלקות המוכנות ב (.במחשבים שונים)תכניות אחרות

TCP\IP, UDP, SMTP ואחרים.)

מנגנוני הגנה מפני וירוסים

קיימים מנגנונים רבים אשר מקטינים את הסכנות הקיימות בדמותם של ווירוסים מזיקים. JAVA-ל

שפה מודולרית

פשוט בהרבה מאופן השדרוג של JAVA-אופן השדרוג של תכניות ב, מורכבת ממחלקות JAVA-כיוון שתכנית ב

.נעשה באמצעות החלפת מחלקה אחת באחרת JAVA-שדרוג תכנית ב. ++C- תכניות אשר כתובות ב

שפה קלה ופשוטה ללמידה ולשימוש

(90-נכון לשנות ה)היא אחת השפות הפופולריות ביותר ++ C++. Cהתבססו בפיתוחה על , כדי להשיג מטרה זו

,כללי התחביר כמעט זהים לחלוטין. JAVA- קל לעבור ל++ C למתכנתי , JAVAומשום הדמיון שיש בינה לבין

הנושאים הבעייתיים שקיימים ב JAVA-כדי להקל על השימוש ב. ותפיסת תכנות מונחה העצמים ממשיכה להתקיים

C ++כגון עבודה עם מצביעים וטיפול בזיכרון שמוקצה באופן דינמי לא אומצו .

מפתחי השפה חשבו על בעיה זו. אחת הפעולות שמעיקות על כל מתכנת הוא כתיבת התיעוד לתכנית שכתב

-היא תכנית שבעת הפעלתה על תכנית בכתובה ב javadoc-ה. javadoc- ופיתחו כחלק מהשפה את ה, מראש

JAVA היא יוצרת דפיHTML י ההערות המתאימות שנשתלות בקוד"אשר מכילים תיעוד מפורט לתכנית עפ

על קבצי קוד המקור של javadoc-נוצר באמצעות הפעלת ה JAVA-לכל מפתח ב help-שמשמש כ API-ה. המקור

.JAVA-המחלקות שיש ב

שפה שמצמצמת את האפשרות לבאגים

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

Garbageקיים רכיב בשם JAVA-ב. הטיפול בהקצאת הזיכרון הדינמית הוצא מתחום אחריותו של המתכנת

Collector ב. ומשחרר את הזיכרון שהוקצה ושאין בו עוד שימוש, אשר פועל כל הזמן במקביל לפעולת התכנית

C ++ מוטלת על המתכנת, כאשר אין בו עוד שימוש, האחריות לשחרר את הזיכרון שהוקצה באופן דינמי .

ניתן לחרוג++ Cבעוד שב. הוא מניעת האפשרות לחרוג מגבולותיו של מערך JAVAשיפור נוסף שבוצע ב

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

© 2007 Zindell Technologies, Ltd.

Page 5: )Let’s start( הלחתהה - המדריך הישראלי ל-Java | לימוד …javabook.co.il/book/start.pdf)90-ה תונשל ןוכנ( רתויב תוירלופופה תופשה

5

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

++Cהאפשרות לבצע הורשה מרובה ב . JAVA-לא ניתן לבצע הורשה מרובה ב(. לרשת ממחלקה אחת בלבד

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

. באחד הפרקים הבאים נקדיש לנושא את תשומת הלב הראויה. אל דאגה, הורשה

ערך מטיפוס++ C\C- בעוד שב(. שינוי טיפוס של ערך) casting-מצוי באופן ביצוע ה JAVAשיפור אחר שבוצע ב

באופן castingעובר , פרמטר מטיפוס אחר/אשר אמור לשנות את טיפוסו בעקבות השמתו למשתנה, כלשהו

השמה של ערך מספרי ממשי לתוך משתנה מטיפוס)אוטומאטי גם כאשר שינוי הטיפוס עלול לגרום לשינוי בערך

השמה של)מתבצע באופן אוטומאטי רק כאשר אין כל סכנה לפגיעה בערך casting-ה, JAVA-ב( - מספרי שלם

(.לא תעבור קומפילציה intלתוך משתנה מטיפוס longערך מטיפוס

תכנית אשר מאפשרת להריץ בו זמנית יותר מרצף פעולות אחד

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

.מסובך בהרבה Java-אך אופן מימושה ב, בשפות אחרות

תכנות מבוזר

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

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

יכולות גרפיות משופרות

מציבים אותה בתור אחת השפות Javaבאמצעות ( ממשק משתמש גראפי) GUIהאפשרויות המגוונות ביצירת

!(. אם לא הטובה ביותר ) GUIהמתאימות ביותר ליצירת

קישוריות לטכנולוגיות אחרות

קיימת, כוללת מחלקות רבות מוכנות JAVA-יכולה לפעול בכל פלטפורמה והודות לכך ש JAVA-כיוון שתכנית ב

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

אפשרויות אחרות כוללות את האפשרות(. ODBCבאמצעות ) Accessלבסיס נתונים – כמעט מכל סוג – לרבות

אין כל בעיה בכתיבת חלק. Visual Basic-בתכנית אחרת שכתובה ב ActiveX-שתשולב כ Java-לכתוב תכנית ב

.++C\C- פונקציות שמוגדרות בתכנית לעשות שימוש בקטעי קוד אשר כתובים ב/מן המתודות

UNICODE תמיכה מובנית ב-

© 2007 Zindell Technologies, Ltd.

Page 6: )Let’s start( הלחתהה - המדריך הישראלי ל-Java | לימוד …javabook.co.il/book/start.pdf)90-ה תונשל ןוכנ( רתויב תוירלופופה תופשה

6

מסוגלת לתאר רק את האותיות באנגלית) ASCII-עושות שימוש בטבלת ה++ C\C- בעוד שתכניות אשר כתובות ב

יכולות JAVA-תכניות שכתובות ב(, ואת האותיות של השפה המקומית שמותקנת במחשב – בישראל זוהי העברית

תווים לתיאור מרבית השפות בעולם ומרבית הסימנים 65000-אשר כוללת כ UNICODE-לעשות שימוש בטבלת ה

(. הגרפיים אשר קיימים בתחומי המדעים השונים

" מצעד הבאגים "

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

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

J++, Visual C++, Visual Basic ב, ובטכנולוגיות אחרות מתוקנים רק על ידי המפתחים של אותן טכנולוגיות-

Java על ידי מפתחים( וכך זה גם מתבצע)הליך מציאת הבאג הדיווח עליו והצעת התיקון שלו יכולים להיעשות

.קיים מדור שלם אשר מפרט באגים שדווח עליהם, Java, www.javasoft.co.ilבאתר המרכזי של . מרחבי העולם

מתאפשר הודות לכך שכל קוד המקור של המחלקות שכבר Java-אופן הטיפול המיוחד בבאגים שקיימים ב

קבצי קוד המקור של המחלקות. גלוי לעיניו של כל מפתח...( ויש הרבה הרבה הרבה מחלקות כאלה)הוגדרו

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

פופולריות עצומה

שנות קיומה נכתבו עליה יותר ספרים משנכתבו על 6בכל , לשם ההשוואה)הודות לפופולריות העצומה של השפה

C ++במקום )מרבית המתכנתים מעדיפים לתכנת באמצעותה ( שנים 10-אשר קיימת למעלה מC ++ושפות

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

מיטב המוחות עתיד להימצא – בשנים: Visual Basic- ו++ Cלפתח באמצעות שפות אחרות ופחות פופולריות כגון

. Java-באותן חברות אשר ישכילו לפתח ב-הקרובות

מגוון רחב של ייעודים

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

,תכנות מכשירי חשמל, תכנות טלוויזיה אינטראקטיבית, אפליקציות בצד השרת, תלת ממדית/יצירת גרפיקה דו

צוותי מתכנתים, מסיבה זו ...הקונבנציונלי ואחרים web-תכנות ליצירת אתרים מתוחכמים ב, תכנות פלאפונים

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

© 2007 Zindell Technologies, Ltd.

Page 7: )Let’s start( הלחתהה - המדריך הישראלי ל-Java | לימוד …javabook.co.il/book/start.pdf)90-ה תונשל ןוכנ( רתויב תוירלופופה תופשה

7

(.Java: באמצעות)נתון ניתנים לפיתוח באמצעות אותה שפה

JDKסביבת הפיתוח

ניתן להוריד בחינם מהאינטרנט את כל סביבת, נכון לזמן כתיבת הספר, כדי לתרום להגברת הפופולריות של השפה

SDK- ו( JDK )Java Development Kitלסביבת הפיתוח הבסיסית נהוג לקרוא בשמות . הפיתוח הבסיסית של השפה

)Software Development Kit).

גרסאות תיקון אשר הוצאו לגרסה זו נקראו. JDK1.0: שנקראה בשם, JAVAהופיעה הגרסה הראשונה של 1995בשנת

...ואילך JDK1.0.1, JDK1.0.2: בשמות

גם לגרסה זו פורסמו גרסאות תיקון אשר. JDK1.1: שנקראה בשם, JAVAהופיעה הגרסה השניה של , כעבור פרק זמן

...ואילך JDK1.1.1, JDK1.1.2: נקראו בשמות

כיוון שבין גרסה זו לגרסה הקודמת חלו. JDK1.2שנקראה בשם , JAVAהופיעה הגרסה השלישית של 1998בדצמבר

,גם בגרסה השלישית היו מספר גרסאות תיקון שנקראו. JAVA 2: לשם החדש JAVAשונה השם של , שינויים די רבים

'...וכו JDK1.2.1: בדומה לגרסאות התיקון שהוצאו לגרסאות הקודמות בשמות

מרבית השינויים בין גרסה זו לגרסה הקודמת. JDK1.3תחת השם , JAVAהופיעה הגרסה הרביעית של 2000במרץ

.יעיל באופן מיוחד JVMכולל JVM. JDK1.3-מתמקדים באופן פעולת ה

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

http://java.sun.com.

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

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

.שניתן לפתח באמצעות סביבות פיתוח ויזואליות שלא ניתנות לפיתוח באמצעות עורך טקסט פשוט

:את הסביבות הבאות, בין היתר, הסביבות ויזואליות כוללות

Symantec’s Visual Café

© 2007 Zindell Technologies, Ltd.

Page 8: )Let’s start( הלחתהה - המדריך הישראלי ל-Java | לימוד …javabook.co.il/book/start.pdf)90-ה תונשל ןוכנ( רתויב תוירלופופה תופשה

8

JBuilder

Eclipse

JDeveloper

…ואחרות

Visual J ++ איננהJAVA .השימוש ב-Visual J ++ רלוואנטי רק כאשר מפתחיםapplets שאמורים לפעול ב-web מבלי

.Java Plugin-שהגולש יידרש להתקין במחשבו את ה

(The World Wide Web )www

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

.WWW-ובייחוד לפיתוחן של אפליקציות שמופעלות ברשת ה, אפליקציות שמופעלות ברשת האינטרנט

ניתן לראות ברשת הזו. היא רשת וירטואלית שבנויה על בסיס רשת האינטרנט( WWW )World Wide Wev-רשת ה

:לקוח-מערכת של שרת

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

. בשליחת מידע חזרה( הדפדפן)מגיב לבקשת הלקוח

.httpהוא הפרוטוקול WWW-פרוטוקול התקשורת שמשמש את השרתים ואת הלקוחות ברשת ה

טכנולוגיות אחרות

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

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

© 2007 Zindell Technologies, Ltd.

Page 9: )Let’s start( הלחתהה - המדריך הישראלי ל-Java | לימוד …javabook.co.il/book/start.pdf)90-ה תונשל ןוכנ( רתויב תוירלופופה תופשה

9

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

בתחומים צרים יותר כוללות את:Java. טכנולוגיות אלטרנטיביות אחרות אשר מהוות תחליף ל-NETב-

1.PHP שפת סקריפט לפיתוח יישומי – web-אשר מהווה כיום תחליף מוצלח ל JSP-מרכיב בולט ב ,Java 2

Enterprise Edition.

2.Flash טכנולוגיה ליצירת יישומי – web בעיקר אנימציה( אשר הביסה את( Javaבעבר הרחוק בכל הקשור

Java, ועתידה – ככל הנראה – להביסה שוב בכל הקשור לפיתוח יישומי Java Appletsלשימוש ב-

לטלפונים ניידים.

Applets & Applications

הקדמה

. להלן רשימה חלקית של סוגי התכניות האפשריות:ניתן לזהות סוגים רבים של תכניות JAVA- ב

1. Java Applications

2. Java Applets

3. Java Servlets

4. JSP

JSP דומה ל-ASP בכך שבשתי הטכנולוגיות מדובר בהשתלתן של שורות קוד בתוך מסמך ה-HTML אשר יבוצעו על

ASP-ההבדל הוא שבעוד שב. באופן דינאמי HTMLמסמכי , למעשה, ידי השרת ויוחלפו בתוצאה שתתקבל ובכך ייווצרו

ועל כוחה של, JAVA-מדובר בשילובן של פקודות אשר נכתבות ב JSP-ב, פשוטות Scriptמדובר בשילובן של פקודות

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

כאשר הם) אשר פועלים על פי מגבלותיו של הדפדפן applets-להבדיל מ( – jdk 1.3)ממרכיביה החדשים של השפה

Netscapeוכאשר הם פועלים בתוך ++ Visual Jעליהם להיכתב על פי כלליה של Internet Explorerפועלים בתוך

Nevigator עליהם לפעול על פי גרסת ה-JVM אשר מותקן בו .)

© 2007 Zindell Technologies, Ltd.

Page 10: )Let’s start( הלחתהה - המדריך הישראלי ל-Java | לימוד …javabook.co.il/book/start.pdf)90-ה תונשל ןוכנ( רתויב תוירלופופה תופשה

10

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

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

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

הספר מתרכז ביסודותיה של השפה תוך התמקדות באופן. חורג מגבולות הדיון של ספר זה Servlets-וב JSP-הדיון ב

.Java Applets- ו Java Applicationsכתיבתם של

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

כך, ואחרות WORD , EXCELLכגון ( stand alone)כפי שניתן לפתח תכניות (. שיתרגם את התכנית JVM)במחשב

.Javaגם ניתן לעשות זאת באמצעות

כפי שנראה appletviewer-או באמצעות ה)הן תכניות שניתן להריץ רק באמצעות הדפדפן Java Appletsתכניות מסוג

או) applet-הקריאה להפעלת ה. שבתוכו ישנה קריאה להפעלתו HTMLמיועד להרצה מתוך מסמך applet-ה (.בהמשך

. בדומה לתמונה HTML-משובצת במסמך ה( ישומון: בשמו העברי

אין צורך applet- ב. mainחייבים לכתוב את המתודה application-הוא שב application- ל appletההבדל הבולט בין

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

Applicationדוגמא לפיתוחו של

:הם Applicationהשלבים הטכניים הבסיסים ביותר בכתיבתו של

.Application-להשיג עורך טקסט ולכתוב את קוד המקור של ה .1

ששמו זהה לשמו של, java byte codeולקבל כתוצאה מכך קובץ שמכיל , להדר את קוד המקור JDK-באמצעות ה .2

javac: ההידור נעשה באמצעות תכנית ההידור ששמה .classקובץ קוד המקור אך הסיומת היא

המהדר רגיש לאותיות)על שם הקובץ להיות זהה בדיוק לשם המחלקה תוך מתן תשומת לב לאותיות גדולות וקטנות

(.קטנות וגדולות

.שהתקבל java byte code-ניתן להריץ את קובץ ה interpreter-באמצעות ה .3

java: ההרצה נעשית באמצעות תכנית ההרצה שנקראת

© 2007 Zindell Technologies, Ltd.

Page 11: )Let’s start( הלחתהה - המדריך הישראלי ל-Java | לימוד …javabook.co.il/book/start.pdf)90-ה תונשל ןוכנ( רתויב תוירלופופה תופשה

11

:כעת ניגש לכתיבת התכנית הראשונה שלנו

כתיבת קוד המקור' : שלב א

. התכנית מאורגנת בתוך מחלקות JAVA- גם ב, ++C בדומה ל

פונקציות שלא)פונקציות גלובאליות /התכנית מורכבת מקבצים שיכולים להכיל גם משתנים++ Cבעוד שב , עם זאת

. ות חייבות להיות שייכות למחלקה מסוימת/פונקציות הקיימים/כל המשתנים JAVA-ב(, שייכות לאף מחלקה

אשר בעצם הפעלתה האפליקציה, mainדמיון נוסף בין שתי השפות הוא הצורך בקיומה של מתודה עיקרית בשם

.מהווה מעין נקודת התחלה לאפליקציה main- ה. מתחילה לרוץ

:וכתוב לתוך הקובץ החדש את התכנית הבאה, הפעל את עורך הטקסט שברשותך

class HelloIsrael

{

public static void main)String args[](

{

System.out.println)"Hello Israel !"(;

}

}

(.בהמשך נראה שכלל זה לא תמיד מחייב)בשמירת הקובץ חייבים לתת לו שם שזהה לשם המחלקה שמוגדרת בו

.java: הסיומת שנותנים לקובץ חייבת להיות

HelloIsrael.java: אנו נשמור את הקובץ תחת השם , במקרה זה

java byte code - הידור קובץ קוד המקור וקבלת קובץ ה' : שלב ב

יש לכתוב את שם DOSכדי להפעילו מתוך סביבת העבודה . javac: הוא JDK-שמה של התכנית שמבצעת קומפילציה ב

.ומייד אחריו את שם הקובץ שרוצים להדר( javac)התכנית

© 2007 Zindell Technologies, Ltd.

Page 12: )Let’s start( הלחתהה - המדריך הישראלי ל-Java | לימוד …javabook.co.il/book/start.pdf)90-ה תונשל ןוכנ( רתויב תוירלופופה תופשה

12

:יש להקליד בשורת הפקודה HelloIsrael.javaכדי לבצע קומפילציה לקובץ , למשל, כך

javac HelloIsrael.java

.ENTERולהקיש

הקובץ הזה מכיל. classוהסיומת שלו , חדש ששמו זהה לשמו של קובץ קוד המקור יוצר קובץ java compiler- ה

. java byte code- למעשה את ה

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

.מהתפריט

אם קובץ קוד. של המחשב path-תפעל בהצלחה יש לוודא שהספרייה שמכילה אותה נמצאת ב javacכדי שהתכנית

כל. הוא ייצור קבצים שמספרם כמספר המחלקות. ייצור יותר מקובץ אחד javac-אז ה, המקור מכיל יותר ממחלקה אחת

.classאשר שמו זהה לשם של המחלקה והסיומת שלו היא , שיישמר בקובץ נפרד java byte code-מחלקה תתורגם ל

הרצת התכנית' : שלב ג

java byte code-התכנית אשר מתרגמת את ה, interpreter-שנכתב יש להשתמש ב application-כדי להריץ את ה

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

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

יש javaאחרי המילה (. mainעל שום שהיא מכילה מתודת ) applicationגם השם של המחלקה שמהווה , למעשה

ללא הסיומת)של אותה מחלקה java byte code-את שם הקובץ שמכיל את ה, כלומר, לרשום את שם המחלקה בלבד

(.שלו

:בדוגמא זו יש לרשום בשורת הפקודה

java HelloIsrael

.ENTERולהקיש

-תכניות שכתובות ב, לשפת המכונה שעליה התכנית רצה java byte code-צריך גם לתרגם את ה interpreter-כיוון שה

JAVA רצות לאט יותר.

© 2007 Zindell Technologies, Ltd.

Page 13: )Let’s start( הלחתהה - המדריך הישראלי ל-Java | לימוד …javabook.co.il/book/start.pdf)90-ה תונשל ןוכנ( רתויב תוירלופופה תופשה

13

אם התקנת. path-יש לוודא שהספרייה הזו כלולה ב. javac נמצאת באותה ספריה שבה נמצאת התכנית javaהתכנית

SDK אז התכניות 1.3מגרסהjava ו-javac נמצאות בתיקיהc:\jdk1.3\bin ולכן יש לוודא שהיא מופיעה ב-path.

ערכים בעת( ++ C\C-בדומה לתכניות שכתובות ב)ניתן להעביר אל התכנית משורת הפקודה , כפי שנראה בהמשך

.הפעלתה

Appletדוגמא לפיתוחו של

:הם Java Appletהשלבים הטכניים הבסיסים ביותר ביצירתו של

.Applet-להשיג עורך טקסט ולכתוב את קוד המקור של ה .1

javaולקבל כתוצאה מכך קובץ שמכיל , להדר את קוד המקור JDK-באמצעות ה .2

byte code , ששמו זהה לשמו של קובץ קוד המקור אך הסיומת היאclass.

.javacבאמצעות התכנית , application-ההידור יעשה בדומה להידור ה

.applet-מתאים אשר יכיל קריאה להפעלת ה HTMLבאמצעות עורך טקסט לכתוב קובץ .3

.בדפדפן HTML-או באמצעות העלאת מסמך ה appletviewer-באמצעות ה applet-הרצת ה .4

:כעת ניגש לכתיבת היישומון הראשון שלנו

כתיבת קוד המקור' : שלב א

import-מכילים את שתי שורות ה applets-רוב ה. יאורגן במחלקות applet-גם ה, application-בדומה לכתיבת ה

מכילים את המתודה applets- רוב ה. application-כמו שיש ב mainאין מתודת applet-ב. שמופיעות בדוגמה לעיל

paint מחלקה שמתעתדת להיות יישומון .ולהופעת צורות גרפיות אחרות על המסך, אשר גורמת להופעת הטקסט(

applet ) חייבת לרשת מהמחלקהApplet .אנו נייחד ל-applets פרק מיוחד בהמשך.

:הפעל את עורך הטקסט שברשותך וכתוב לתוכו את שורות הקוד הבאות

import java.applet.*;

import java.awt.*;

© 2007 Zindell Technologies, Ltd.

Page 14: )Let’s start( הלחתהה - המדריך הישראלי ל-Java | לימוד …javabook.co.il/book/start.pdf)90-ה תונשל ןוכנ( רתויב תוירלופופה תופשה

14

public class HiIsrael extends java.applet.Applet

{

public void paint)java.awt.Graphics g(

{

g.drawString)"Hi Israel !",50,25(;

}

}

.HiIsrael.java: תחת שם שזהה לשם המחלקה applicationי הכללים שאמורים לגבי "קובץ זה יש לשמור עפ

java byte code - הידור קובץ קוד המקור וקבלת קובץ ה' : שלב ב

,ההידור נעשה באותו אופן. appletנכון גם לגבי תכנית שהיא applicationכל מה שנאמר בנוגע להידור של תכנית שהיא

:מה שיש לרשום בשורת הפקודה הוא, ולכן

javac HiIsrael.java

שכתבנו applet - שמיועד להפעיל את ה HTML כתיבת קובץ ' : שלב ג

שמיועדת להפעיל< APPLET>מתאים אשר מכיל בתוכו את התגית HTMLכדי להריץ יישומון שכתבנו יש לייצור מסמך

. מתאים אשר מפעיל אותו HTMLלא ניתן להריץ יישומון מבלי שיהיה קובץ . את היישומון

: הפעל את עורך הטקסט שברשותך והעתק לתוך קובץ חדש שתיצור את שורות הקוד הבאות

>applet code="HiIsrael.class"

width=200 height=100<

>/applet<

.htmlהענק לקובץ שיצרת שם ושמור אותו עם הסיומת

width ו -height מבטאים את גודל החלון שבו יוצג ה-applet.

© 2007 Zindell Technologies, Ltd.

Page 15: )Let’s start( הלחתהה - המדריך הישראלי ל-Java | לימוד …javabook.co.il/book/start.pdf)90-ה תונשל ןוכנ( רתויב תוירלופופה תופשה

15

.נוצר באופן אוטומאטי applet-אשר מכיל את הקריאה להפעלת ה HTML-בסביבות פיתוח מתקדמות מסמך ה

( applet - ה ) הרצת היישומון ' : שלב ד

:את היישומון שכתבת ניתן להריץ בשתי דרכים

-העלאת מסמך ה. שמכיל את הקריאה להפעלת היישומון HTML-דרך אחת היא להעלות לצפייה בדפדפן את מסמך ה

HTML לצפייה בדפדפן תגרום להפעלת התגיתAPPLET וה, שנמצאת בו -applet יתחיל לפעול.

קיימת התכנית JDKבחבילת הפיתוח . appletviewer-דרך שניה להפעלת היישומון היא הפעלתו באמצעות ה

appletviewer אשר בהפעלתה על קובץ ה -HTML שמכיל קריאה להפעלתAPPLET מופעל ה-Applet .כדי להפעיל

:יש לרשום בשורת הפקודה, על התכנית שהנך כותב כעת appletviewr-את ה

appletviewer HiIsrale.html

שמופעל applet-אלא רק את ה HTML-ההבדל הבולט בין שתי הדרכים הוא שבדרך השניה לא רואים את מסמך ה

,הבדל נוסף שקיים בין שתי הדרכים הוא שבדרך השניה. HTML-מתוכו בעוד שבדרך הראשונה כן רואים את מסמך ה

-אחד אז הוא גורם להופעתם של כל אחד מה applet-שכולל יותר מ HTMLמופעל על מסמך appletviewer-כאשר ה

applets בעוד שבדפדפן היה ניתן לראות את כולם באותו חלון, בחלון נפרד.

Packages-ארגון המחלקות ב

הקדמה

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

יהיה להן מכנה– כך שמחלקות שתהיינה שייכות לאותה קבוצה , י תחומי הפעולה שלהם"קבוצות של מחלקות עפ

.משותף

© 2007 Zindell Technologies, Ltd.

Page 16: )Let’s start( הלחתהה - המדריך הישראלי ל-Java | לימוד …javabook.co.il/book/start.pdf)90-ה תונשל ןוכנ( רתויב תוירלופופה תופשה

16

Packages

package- כדי שמחלקה או מחלקות שנכתבות בקובץ מסוים יהיו שייכות ל. packageקבוצה של מחלקות נקראת בשם

כולל את המילה השמורהpackageמשפט ה-. package-מסוים יש להוסיף בתחילת קובץ קוד המקור את משפט ה

package-כשאחריה שם ה package.שאליו אנו רוצים לשייך את המחלקה/מחלקות שמוגדרות בקובץ

:לדוגמא

//filename: Gulu.java

package abba;

class Gulu

{

.

.

.

}

.abbaששמו package-יהיו שייכים ל( או המחלקות... אם יש יותר ממחלקה אחת בקובץ) Guluהמחלקה בדוגמא זו

מסוים אז המחלקות יהיו package-ות בקובץ מסוים שייכות ל/כי המחלקה package-אם לא מציינים באמצעות משפט ה

.default package- שייכות ל

:בנוי באופן הבא package-משפט ה

package package name

. יוסבר בהמשך – packagesנהוג גם לייצור היררכיה של . שם באותיות קטנות package-נהוג לתת ל

© 2007 Zindell Technologies, Ltd.

Page 17: )Let’s start( הלחתהה - המדריך הישראלי ל-Java | לימוד …javabook.co.il/book/start.pdf)90-ה תונשל ןוכנ( רתויב תוירלופופה תופשה

17

-ששמה זהה לשם של ה( תיקיה)מסוים יישמרו בספריה package -של מחלקות ששייכות ל class- קבצי ה כל

package .קיימת אפשרות ש-package או אפילו קבוצה שלpackages אך באפשרות זו לא, תישמר בקובץ אחד מכווץ

.נדון בשלב זה

שיווצרו class-מסוים יש להדר אותו כך שקבצי ה package-לאחר כתיבת קובץ קוד המקור שמכיל מחלקות ששייכות ל

למילה d–כדי לעשות זאת יש להדר באמצעות הוספת התגית . package-יישמרו בספריה ששמה זהה לשם של ה

javac .יש לרשום אחרי התגית , כמו כן–d את ה-path (אם היא עדיין לא קיימת שם)שבו אנו רוצים שתיווצר הספריה

. package-של קבצי ה

(:המשך הדוגמא הקודמת)לדוגמא

javac –d c:\ Gulu.java

והספריה הזו תיווצר, abbaשיווצר ישמר בספריה ששמה class-כתיבת שורה זו בשורת הפקודה תגרום לכך שקובץ ה

.:\cבספריית השורש

… אחרים וכך הלאה packagesאשר יכיל package, כלומר. packagesניתן לייצור היררכיה של , כפי שכבר ציינתי

.תבוא לידי ביטוי בהיררכיה מתאימה של ספריות packagesהיררכיה של

:לדוגמא

//filename: Jojo.java

package abba.gold;

class Gulu

{

.

.

.

© 2007 Zindell Technologies, Ltd.

Page 18: )Let’s start( הלחתהה - המדריך הישראלי ל-Java | לימוד …javabook.co.il/book/start.pdf)90-ה תונשל ןוכנ( רתויב תוירלופופה תופשה

18

}

אשר יימצא goldששמו package-יהיו שייכים ל( או המחלקות אם יש יותר ממחלקה אחת בקובץ)המחלקה , בדוגמא זו

תיבנה היררכית, pathוציון d–בביצוע הקומפילציה לקובץ זה בתוספת התגית . abbaששמו package-בתוך ה

. שצוין path-ב( אם היא לא קיימת)הספריות המתאימה

:לדוגמא

javac –d c:\ Gulu.java

וספריה זו תיווצר כתת, goldשיווצר ישמר בספריה ששמה class-כתיבת שורה זו בשורת הפקודה תגרום לכך שקובץ ה

.כל אחת מספריות אלה תיווצר רק אם היא לא קיימת. :\cאשר תיווצר בספרית השורש abbaספריה בספריה

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

packages-שאליו היא שייכת או בצירוף שמות ה package-שמה המלא הוא השם שניתן בשורת הגדרתה בצירוף שם ה

,אחד שצריך לציין את שמו- packageאם יש יותר מ. אחד package-שאליו המחלקה שייכת שייך ל package-אם ה

.השמות יצוינו עם נקודות מפרידות ביניהן

:המשך הדוגמא

.abba.gold.Gulu: יהיה Guluכעת שמה המלא של המחלקה

יםpath-מכיל את רשימת ה classpath-ה. classpathששמו , קיים במחשב משתנה סביבה חשוב נוסף path-מלבד ה

מחלקה שרוצים להריץ או מחלקה שנעשה בה שימוש על ידי מחלקה אחרת, יחפשו מחלקה javac- ו javaשבהם

.שעוברת קומפילציה

בספריה, קודם כל, הוא מחפש אותה( שנעשה בה שימוש בקובץ שאותו היא מהדרת)מחפש מחלקה javacכאשר

אם. java core-ששייכים ל class-אם הוא לא מוצא אותה אז הוא מחפש אותה בספריות שבה נמצאים קבצי ה. הנוכחית

© 2007 Zindell Technologies, Ltd.

Page 19: )Let’s start( הלחתהה - המדריך הישראלי ל-Java | לימוד …javabook.co.il/book/start.pdf)90-ה תונשל ןוכנ( רתויב תוירלופופה תופשה

19

והוא עושה, classpath-ים שמופיעים במשתנה הpath-גם שם הוא לא מוצא אותה אז הוא מחפש אותה בכל אחד מה

.י סדר הופעתם משמאל לימין"זאת עפ

בכל אחד מה. classpath-ים שמופיעים בpath-מסוים נעשה בכל אחד מה packageהחיפוש אחרי מחלקה ששייכת ל

pathים שנבדקים מתבצע חיפוש אחרי ספריה ששמש זהה לשם של ה-package (או אחרי ספריה ששמה זהה לשם של

אחרי מציאת הספריה( . package-ואחר כך גם אחרי תת ספריה מתאימה ששמה זהה לשם של תת ה package-ה

.המתאימה מתבצע חיפוש אחרי הקובץ המתאים בתוך אותה ספריה

שאליו המחלקה package-של ה( או הספריות)שבו נמצאת הספריה path-את ה classpath-חשוב להוסיף ל, מסיבה זו

.המבוקשת שייכת

:המשך הדוגמא האחרונה

classpathמשתנה הסביבה ים שנמצאים בpath-יש צורך להוסיף אל ה Guluבמחלקה , כעת, כדי שניתן יהיה להשתמש

וכו'...(.gold ובתוכה הספריה abba למקום שבו נמצאת היררכיית הספריות )הספריה pathאת ה-

: יש צורך לכתוב את השם המלא של המחלקה Guluכדי להשתמש במחלקה , מעתה ואילך, כמו כן

abba.gold.Gulu

:יש צורך לרשום זאת כך( כמובן applicationבהנחה שהיא ) Guluכדי להריץ עכשיו את המחלקה , לדוגמא

java abba.gold.Gulu

java)גם כאשר מריצים את המחלקה . את השם המלא יש לרשום בכל מקום שבו עושים שימוש במחלקה

abba.gold.Gulu ,)ניתן להימנע מכתיבת השם, לגבי המקרה האחרון. וגם כאשר משתמשים בה בתוך מחלקה אחרת

.importהמלא של המחלקה אם עושים שימוש בפקודה

:הערות

ולכן מקובל לעשות, היא לייצור מחלקות עם שמות ייחודיים packages-המטרה העיקרית של חלוקת המחלקות ל

. packageשבו עושים שימוש כשם של domain-שימוש בשם ה

© 2007 Zindell Technologies, Ltd.

Page 20: )Let’s start( הלחתהה - המדריך הישראלי ל-Java | לימוד …javabook.co.il/book/start.pdf)90-ה תונשל ןוכנ( רתויב תוירלופופה תופשה

20

package il.co.zindell: לדוגמא

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

package אז כל המחלקות שמוגדרות באותו קובץ ישויכו ל-package שצוין.

importמשפט ה

packages-שאליו היא שייכת או שמות ה package-שם ה, כלומר)כדי להימנע מכתיבת השם המלא של מחלקה

קיימות. בתחילת הקובץ import-יש לכתוב את משפט ה( מופרדים בנקודות מפרידות ורק אחר כך השם של המחלקה

:import-שתי דרכים לשימוש במשפט ה

שימוש ספציפי

:י התבנית הבאה"עפ import-כותבים את משפט ה, בתחילת הקובץ

import packageName . packageName . className;

בקובץ שבו שורה זו נכתבה לא יהיה צורך לציין את שמה המלא של המחלקה ששמה צוין כעת באופן, במקרה כזה

.שאליהם היא שייכת יספיק packages-ציון שמה ללא שמות ה. import-ספציפי במשפט ה

:importדוגמא לשימוש ספציפי בפקודה

:אם בתחילת קובץ אוסיף את השורה

import abba.gold.Gulu;

אוכל עדיין לרשום את השם, אם ארצה. בלבד Guluאוכל לרשום את השם Guluאז כשארצה לעשות שימוש במחלקה

.אך זאת יהיה מיותר abba.gold.Gulu: המלא

שימוש כללי

:על פי התבנית הבאה import-בתחילת הקובץ כותבים את משפט ה

© 2007 Zindell Technologies, Ltd.

Page 21: )Let’s start( הלחתהה - המדריך הישראלי ל-Java | לימוד …javabook.co.il/book/start.pdf)90-ה תונשל ןוכנ( רתויב תוירלופופה תופשה

21

import packageName . packageName. *;

ניתן יהיה לעשות בהן שימוש– ( package- והכוונה רק לתת ה)שצוין package-כל המחלקות ששייכות ל, במקרה כזה

.בקובץ מבלי לציין את שמן המלא

:importדוגמא לשימוש כללי בפקודה

:אם בתחילת קובץ אוסיף את השורה

import abba.gold.*;

אם. אוכל לרשום את השם של המחלקה בלבד abba.gold- אז כשארצה לעשות שימוש במחלקה כלשהי ששייכת ל

.אך לא יהיה בכך עוד צורך, ארצה אוכל עדיין לרשום את השם המלא

:הערות

אז אין צורך בכתיבת שמה המלא של packageאם מחלקה רוצה להשתמש במחלקה אחרת ושתיהן שייכות לאותו

.import-ולכן גם אין צורך במשפט ה, המחלקה האחרת

ולכן אין צורך, JAVA-באופן אוטומאטי לכל קובץ שאנו כותבים ב( import)מיובא java.langששמו package- ה

: להוסיף לתחילת הקובץ

import java.lang.*;

-יופיע לפני משפט ה package-אז משפט ה, import-וגם את משפט ה package-אם הקובץ מכיל גם את משפט ה

import.

אשר מורה לקדם מהדר לכלול את include-ה את פקודת ה/ה וודאי מכיר/את, ++C\Cאם אתה מכיר את שפת התכנות

לא גורם import-שימוש בפקודת ה. include-שונה מפקודת ה import-פקודת ה. תכנם של קבצים נוספים לצורך הידור

אין לי כל כוונה לפגוע בכבודה. עוד יימשכו ++ C\C- ל JAVAההשוואות בין . ולכן איננו פוגע בביצועים, להגדלת הקובץ

. וגם אין בכך כל צורך, ++ C\Cשל

© 2007 Zindell Technologies, Ltd.

Page 22: )Let’s start( הלחתהה - המדריך הישראלי ל-Java | לימוד …javabook.co.il/book/start.pdf)90-ה תונשל ןוכנ( רתויב תוירלופופה תופשה

22

import - וב package - דוגמא לשימוש ב

המחלקה. solico: ששמו package-שבקובץ הראשון שייכת ל Cordהמחלקה . הדוגמא לעיל כוללת שני קבצים

PackageDemo שבקובץ השני עושה שימוש במחלקהCord ,ועל כן מופיעה בתחילת הקובץ שורת ה-import

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

.ההתקדמות המתאימה בחומר

ומייד אחריה d–עליך להדר באמצעות הוספת התגית Cordאשר כולל בתוכו את הגדרת המחלקה , את הקובץ הראשון

זכור כי אם ברצונך לאפשר. שתרצה pathתוכל לקבוע כל . שהחל ממנו תיבנה היררכית הספריות המתאימה path-את ה

עליך גם להוסיף את, packages-את השימוש במחלקה גם כאשר הספריה הנוכחית איננה הספריה שבה נוצרו ספריות ה

:באופן הבא( נעשית )בשורת הפקודה classpath-ל pathהוספת . classpath-ל path-ה

set classpath=%classpath%; pathToBeAdded ;

%classpath %מייצג את ה-classpath הנוכחי.

package soliko;

public class Cord

{

private int x,y;

private byte color;

public void set)int a,int b, byte color(

{

this.x=a;

// the parameter name is different from

© 2007 Zindell Technologies, Ltd.

Page 23: )Let’s start( הלחתהה - המדריך הישראלי ל-Java | לימוד …javabook.co.il/book/start.pdf)90-ה תונשל ןוכנ( רתויב תוירלופופה תופשה

23

// the instance variable name so the use

// of the word this isn't neccesary !

this.y=b;

// the parameter name is different from

// the instance variable name so the use

// of the word this isn't neccesary !

this.color=color;

// the parameter has the same name as

// the instance variable color so the

// use of the word this is necessery

}

public void set)int a,int b(

{

x=a;

y=b;

}

© 2007 Zindell Technologies, Ltd.

Page 24: )Let’s start( הלחתהה - המדריך הישראלי ל-Java | לימוד …javabook.co.il/book/start.pdf)90-ה תונשל ןוכנ( רתויב תוירלופופה תופשה

24

public void set)byte clr(

{

color=clr;

}

public void set)(

{

x=y=0;

set))byte(0(;

//calling the function set)byte( to set the color

//to be zero. you can use the word 'this' but you

//don't have to !

}

public void set)int a(

{

x=a;

y=a;

}

© 2007 Zindell Technologies, Ltd.

Page 25: )Let’s start( הלחתהה - המדריך הישראלי ל-Java | לימוד …javabook.co.il/book/start.pdf)90-ה תונשל ןוכנ( רתויב תוירלופופה תופשה

25

public boolean equals)Cord otherCord(

{

if )otherCord.x==x && otherCord.y==y(

return true;

else

return false;

}

}

אין צורך לרשום את השם המלא import-שים לב כיצד באמצעות משפט ה. Cordהקובץ השני עושה שימוש במחלקה

.Cordשל המחלקה

import soliko.Cord;

public class PackageDemo

{

public static void main)String args[](

{

Cord CordA1;

Cord CordA2;

CordA1=new Cord)(;

CordA2=new Cord)(;

© 2007 Zindell Technologies, Ltd.

Page 26: )Let’s start( הלחתהה - המדריך הישראלי ל-Java | לימוד …javabook.co.il/book/start.pdf)90-ה תונשל ןוכנ( רתויב תוירלופופה תופשה

26

CordA1.set)10(;

// Now CordA1 is )10,10( in color 2

CordA2.set)10,10,)byte(2(;

// Now CordA2 is )10,10( in color 2 too !

if )CordA1.equals)CordA2((

System.out.println)"\nThe two new Cords equal"(;

}

}

אז כדי applicationאילו היא הייתה גם , ולכן, soliko.Cord :הוא Cordשמה המלא של המחלקה , שכעת, שים לב לכך

:להריץ אותה היה צריך לרשום

java solico.Cord

.solicoשבו ממוקמת הספריה , path-יכלול את ה classpath-ובלבד שה, pathשורה זו ניתן יהיה לרשום מכל , כמו כן

רק אם solico.Cordאז ניתן יהיה להריץ את solicoשבו ממוקמת הספריה , path-לא כולל את ה classpath-אם ה

.solicoמנסים לעשות זאת כאשר נמצאים בספריה שבה נמצאת תת הספריה

בתיקיה( במקרה זה solico)לשמור את תת הספרייה , לחילופין, ניתן classpath-במקום לשנות את ערכו של ה

c:\jdk1.3\jre\classes (בהנחה שה-jdk הותקן בספריית השורשc: .) אם תת הספרייה כלולה בתוך קובץjar אז ניתן

במקום( :cהותקן בספריית השורש שבו משתמשים ושjdk-בהנחה שזהו ה) c:\jdk1.2\jre\lib\extלשמור אותה בתיקיה

.classpath-לעדכן את ה

© 2007 Zindell Technologies, Ltd.

Page 27: )Let’s start( הלחתהה - המדריך הישראלי ל-Java | לימוד …javabook.co.il/book/start.pdf)90-ה תונשל ןוכנ( רתויב תוירלופופה תופשה

27

javadoc- היכרות עם ה

ההערות שמשולבות. שמהווים דוקומנטציה לתכנית הנכתבת HTMLהיא תכנית שמאפשרת לייצור קבצי javadoc- ה

**/ -שנוצר בתור תיעוד מאופיינות בכך שהן מתחילות ב HTML-בתוך התכנית ושמועתקות אל קובץ ה

/* -ומסתיימות ב

גם תגיות, וכמו כן, HTMLניתן למקם תגיות , לוקח וממקם בקבצי התיעוד שהוא יוצר javadoc-בתוך ההערות שה

.since@- ו see, @author@: כגון, javadoc- שמיוחדות ל

package-או שם ה JAVA-ואחריה את שם קובץ ה javadocיש לרשום בשורת הפקודה javadoc-כדי להשתמש ב

לשם הקובץ יש להוסיף תגיות ותוספות שונות בהתאם javadocבין המילה . שרוצים לעשות להם דוקומנטציה

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

.javadoc-אשר גם הוא נוצר באמצעות ה, API Documentation- לקרוא עליו ב

על הקובץ בכך javadoc-תוכל להתרשם מפעולת ה. javadoc- בדוגמא הבאה מובא קובץ שניתן להפעיל עליו את ה

:תרשמי/תרשום( עליך להימצא בספריה שבה נמצא הקובץ הזה)שבשורת הפקודה

javadoc –d . –author JavadocExample.java

לאחר תום תהליך יצירתם של הקבצים ניתן. המתאימים HTML-תוכל לראות כיצד נוצרים קבצי ה, לאחר מתן הפקודה

למיקום שבו יווצרו קבצי path-מצפה לקבל את ה javadocהפקודה , d–אחרי התגית .לצפות בהם באמצעות הדפדפן

.שכעת עובדים בה, לספריה הנוכחית path-כמוה כשליחת ה( נקודה בודדת. )שליחת .HTML-ה

© 2007 Zindell Technologies, Ltd.

Page 28: )Let’s start( הלחתהה - המדריך הישראלי ל-Java | לימוד …javabook.co.il/book/start.pdf)90-ה תונשל ןוכנ( רתויב תוירלופופה תופשה

28

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

/**

* filename is JavadocExample.

* was written in 26/6/99

* in the Holly Land

* @since version b1

* @author Haim Michael */

public class JavadocExample extends Frame

{

/**@serial beautiful */

private Panel pane;

/**This is the amazing constructor we love

*and without him we could feel lonely */

public JavadocExample)(

{

© 2007 Zindell Technologies, Ltd.

Page 29: )Let’s start( הלחתהה - המדריך הישראלי ל-Java | לימוד …javabook.co.il/book/start.pdf)90-ה תונשל ןוכנ( רתויב תוירלופופה תופשה

29

pane = new Panel)(;

Button blueButton = new Button)"Blue"(;

pane.add)blueButton(;

Button redButton = new Button)"Red"(;

pane.add)redButton(;

add)pane,"Center"(;

}

/**This is the main method of the application

*We like to write comments … */

public static void main)String[] args(

{

Frame f = new JavadocExample)(;

f.addWindowListener)new WindowAdapter)(

{

public void windowClosing)WindowEvent e(

{

System.exit)0(;

}

} (;

© 2007 Zindell Technologies, Ltd.

Page 30: )Let’s start( הלחתהה - המדריך הישראלי ל-Java | לימוד …javabook.co.il/book/start.pdf)90-ה תונשל ןוכנ( רתויב תוירלופופה תופשה

30

f.setSize)400, 400(;

f.show)(;

}

}

Java Virtual Machine- ה

:ניתן למצוא את ההגדרה הבא JAVAבתיעוד של

“The Java Virtual Machine is an Imaginary Machine that is implemented by emulating it in software on

a real machine. Code for the Java Virtual Machine is stored in .class files, each of which contains code

for at most one public class”.

.לשפת המכונה שעליה התכנית מורצת Java Byte Code-אחראית לתרגום ה - Java Virtual Machine – JVM- ה

,הקובץ עם הסיומת ) byte code-קובץ ה. יכולה להיות תוכנית שמורצת במחשב או אפילו חלק מהחומרה שלו JVM-ה

class )מכיל למעשה סדרת הוראות ל-JVM .בכל כלי שמסוגל להריץ תכניות ב-JAVA (סביבות פיתוח של, דפדפנים

.JVM-קיים ה... ( JAVA-תכניות ב

כדי שיוכלו Java Byte Code-מכיל הגדרות מדויקות בנוגע לאופן שבו אמורים להיות קבצי ה JVM Specification-ה

אשר Bytecode Verifier- כאשר מגיעה מחלקה מרשת האינטרנט לפני שהיא מורצת מופעל ה .JVM-לרוץ באמצעות ה

:י לקבל בספר/תוכל JVM-מידע נוסף אודות ה. בכללים Java Byte Code- מוודא בין היתר את עמידת קובץ ה

JAVA Virtual Machine \ Jon Meyer & Troy Downing from O’REILLY

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

HOT SPOT VIRTUAL: חדיש ששמו JVMלאחרונה פותח . התפתח וביצועיו שופרו JVM-במהלך השנים ה

MACHINE , (האזורים החמים שלה)אשר מסוגל לתרגם את אותם חלקים של התכנית אשר מתבצעים יותר מפעם אחת

© 2007 Zindell Technologies, Ltd.

Page 31: )Let’s start( הלחתהה - המדריך הישראלי ל-Java | לימוד …javabook.co.il/book/start.pdf)90-ה תונשל ןוכנ( רתויב תוירלופופה תופשה

31

מתקרבת למהירות JAVA-מהירות הריצה של תכניות ב, הודות להתקדמות זו. ורק אחר כך להריצה, לשפת מכונה

מספר רצפי פעולה שפועלים) Multi Threadingניתן לייצור , הודות לפיתוח האחרון, כמו כן. ++C- הריצה של תכניות ב

בשלב זה אינך. בכך מושג שיפור נוסף בביצועים. וללא יצירת סימולציה לכך, CPU-תוך התבססות ישירה על ה( במקביל

(.מוקדש במלואו לנושא זה 9פרק ) threadה להכיר את המושג /אמור

Garbage Collector- ה

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

האחריות, וגם בשפות אחרות ++ C\C- בעוד שב. יש לשחרר אותו כדי שיוכל לשמש למטרות אחרות, באופן דינמי

-על ה, וליתר דיוק, האחריות לכך מוטלת על השפה עצמה JAVA- ב, לשחרור הזיכרון שהוקצה נופלת על המתכנת

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

.למשל ++ C/C-הייתה כתובה ב

ומנהל מעקב אחרי כל שטחי הזיכרון, פועל ברצף וללא הפסקה כל הזמן במקביל לתכנית Garbage Collector- ה

כאן. אך משתנה לא מצביע עליו יותר הוא משחרר אותו– כאשר הוא מגלה ששטח זיכרון שהוקצה . שמוקצים בתכנית

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

(כל אחד מהם בנפרד)המשתנים מהטיפוס המחלקתי מכילים כתובות של שטחי זיכרון שמייצגים . הבסיסיים שקיימים

.נקודה זו תובהר בפרקים הבאים. אובייקט

© 2007 Zindell Technologies, Ltd.