» נושאי לימוד
» נושאי לימוד
יום שני 29 באפריל 2024
חבילות (Packages)
דף ראשי  מתחילים  חבילות (Packages) גרסה להדפסה
 

חבילות (Packages)

 

 

- מבוא
- הקדמה
- משתנה סביבה
classpath
-
פיתוח חבילות משלך

 


 

מבוא

 

סטודנטים בקורס הקדמה לתכנות Java אחראים לידיעת והבנת כל החומר בשעור זה
(חוץ מנושאים ספציפיים ב –
C++).

הנושאים הספציפיים ב – C++ מוצעים כחומר משלים לטובת אלו שמכירים כבר C++
ומבצעים הסבה ל –
Java.

הקדמה

 

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

 

לפני שתוכל להבין משהו על חבילות, עליך להבין מהו משתנה הסביבה classpath,
ועל כן הדיון יתחיל בו.

 

לאחר הבנת משתנה הסביבה classpath, נלמד כיצד ליצור חבילות משלך.

 

משתנה הסביבה classpath

 

משתנה הסביבה classpath נועד כדי להורות ל‑JVM ולאפליקציות Java אחרות
(כגון המהדר
javac והמפענח java) היכן לחפש קבצי מחלקות וספריות של מחלקות.
הכוונה היא לקבצי מחלקות הכלולים ב‑
JDK וגם קבצי מחלקות שתוכל ליצור בעצמך.

 

אנו יוצאים מתוך הנחה, שאתה מכיר די הצורך את השימוש במשתני סביבה במערכת ההפעלה שלך. הדיון יתמקד ב‑DOS/Win95, משום שזה מה שהמחבר בקיא בו.
הדיון בשיעור זה יבוסס כולו על השימוש ב‑
DOS/Win95. אם הינך משתמש במערכת הפעלה שונה, יש לקוות שתוכל לתרגם את המידע הנלמד למערכת ההפעלה שלך.

 

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

 

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

 

היות ואתה כבר שם, תוכל לבדוק אם מופיע ברשימה הפריט =CLASSPATH.
אם הוא קיים, הרי שבמחשב שלך נקבע כבר משתנה הסביבה
classpath .

 

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

 

CLASSPATH=.;c:\Baldwin\JavaProg

 

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

 

SET CLASSPATH=.;c:\Baldwin\JavaProg

 

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

 

דרך אחרת לקבוע את משתנה הסביבה classpath היא לכלול את המידע הנחוץ בקובץ ה‑autoexec.bat שלך. זו עלולה להיות מסוכנת אף יותר, כיוון שאתה עלול להרוס משהו אחר וחיוני בקובץ. לפני שאתה עושה זאת, ודא לגבות אותו. קובץ ה‑autoexec.bat שלי מכיל את השורה הבאה:

 

SET CLASSPATH=.;c:\Baldwin\JavaProg

 

לא תתקשה לזהות את המרכיבים המופיעים כאן, אשר הופיעו גם בהגדרת classpath הקודמת.

 

דרך שלישית לקבוע את classpath בעבודה עם Java היא להשתמש בפרמטר משורת הפקודה, ותוכל לעשות זאת עם javac ו‑java, ואולי גם עם כלים נוספים של JDK. לדוגמה, על מנת להדר תוכנית ובו-בזמן לקבוע את classpath, ניתן להקליד בשורת הפקודה של DOS (הכל בשורה אחת):

 

javac -classpath .;c:\Baldwin\JavaProg;c:\java_jdk\
Java\lib\classes.zip junk2.java

 

במקרה זה, junk2.java הוא שמו של קובץ source של Java, שאותו אנו רוצים להדר.
אם אתה מציין את
classpath עם javac, ודא שתציין classpath זהה כאשר תריץ את התוכנית עם java .

 

הבעיה עם גישה כזו היא, שעליך להוסיף את החלק המודגש בהתאם לפרטי ההתקנה המסוימת של ה‑ JDK במחשב שלך. סביר להניח, שההתקנה אצלך אינה זהה לשלי, כך שתיאלץ לקבוע הגדרות מעט שונות (לפחות בהתחלה).

 

תוכל לבדוק את מבנה הספריות במחשב שלך על מנת לקבוע את הנתיב מן האות, שמציינת את שֵם הדיסק הקשיח שלך (למשל, :C), עד לקובץ בשם classes.zip, ולהציב את הנתיב הזה במקום מה שציינתי לפני כן.

 

כעת נותרת השאלה, מה תציב במקום [.;c:\Baldwin\JavaProg;]. זהו נושא מורכב למדי.
אנו נחזור אליו בהמשך.

 

אין ספק שתרצה לבנות קובץ אצווה ולהשתמש בו שוב ושוב. תוכל אפילו להשתמש באינדיקטור ההחלפה %1 עבור שם הקובץ, ופשוט להקליד בשורת הפקודה את שמו של קובץ האצווה שלך ואחריו את שמו של קובץ ה‑source שלך, הכתוב ב‑Java .

 

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

 

לדוגמה, אם קבצי המחלקות שלך נמצאים בקובץ zip או בקובץ jar
, classpath
חייב להסתיים בשמו של הקובץ.

 

לעומת זה, אם קבצי המחלקות אינם נמצאים בקובץ zip או בקובץ jar
, classpath
חייב להסתיים בשמה של הספרייה המכילה את קבצי המחלקות.

 

ה‑classpath שלך צריך לכלול את הנתיבים המאושרים עבור כל ספרייה, המכילה קבצי מחלקות בעלי חשיבות, או עבור כל קובץ zip או קובץ jar, בעלי חשיבות. הנתיבים צריכים להתחיל באות, המציינת את הכונן, ולהסתיים או בשמו של קובץ ה‑zip או קובץ ה‑jar, או בשמה של הספרייה, המכילה את קבצי המחלקות.

 

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

 

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

 

לדוגמה, אם אתה מחזיק קבצי מחלקות בספרייה C:\java\MyClasses, עליך לקבוע את classpath באופן הבא:

 

set CLASSPATH=c:\java\MyClasses 

 

אם, נוסף לכך, אתה מחזיק קבצי מחלקות גם בספרייה C:\java\OtherClasses,
ורוצה להוסיף את הנתיב
C:\java\OtherClasses, תוכל לעשות זאת באמצעות הפקודה:

 

set CLASSPATH=C:\java\MyClasses;C:\java\OtherClasses 

 

שים לב, ששני הנתיבים מופרדים בנקודה-פסיק.

 

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

 

כתוצאה מכך, מערכת זמן-ריצה מצרפת את ה‑classpath המתאים לזה הקיים, על מנת להעניק לך בזמן ריצה את התמיכה הנ"ל.

 

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

 

כחלופה לקביעת classpath שיתאים לספריות, המכילות את קבצי המחלקות שלך, classpath ברירת המחדל כולל גם את הנתיב לספרייה classes, האמורה להימצא בספרייה שתהיה ברמה זהה לזו של הספריות bin ו‑lib, בהתקנה סטנדרטית של ה‑JDK.
תוכל להוסיף את קבצי המחלקות (הלא-דחוסים) שלך בספרייה
classes, שאותה תיצור שם,
וקבצי הביצוע של
Java יהיו מסוגלים לאתר אותם באמצעות classpath ברירת המחדל.

 

אם לא התקנת את ה‑JDK בהתאם להנחיות התקנת ברירת המחדל, אנו נצא מתוך הנחה שאינך זקוק להדרכה בנושא זה. במידה ולא תצליח לקבוע את classpath בשום דרך אחרת, תוכל לחזור ולהתקין מחדש את ה‑JDK בהתאם להנחיות של התקנת ברירת המחדל.

 

כמו כן, בשלב זה לא נדון באפשרות לשמור את הקבצים שלך בקבצי zip או jar. אם הגעת אליה,
יש להניח שאינך זקוק ממילא לשום עזרה. בעתיד יתווסף כאן שיעור שידון בשימוש בקבצי
zip ו‑jar ובהשלכותיו.

 

אם כן, השורה התחתונה, אם איננו יוצרים חבילות, היא כזו.

 

הגדרת ה‑classpath שלי נראית כך:

 

CLASSPATH=.;c:\Baldwin\JavaProg 

 

התווים (;.) שבהתחלה מציבים על ה‑CLASSPATH את הספרייה הנוכחית. ככל הנראה זה מיותר, משום שהוא כלול כבר ב‑CLASSPATH של ברירת המחדל, שאותו תספק מערכת זמן-ריצה של Java .

 

הנקודה החשובה כאן היא, שניתן לאחסן קבצי מחלקות (אשר הודרו בלי ציון package) בספרייה בשם c:\Baldwin\JavaProg ולבצע אותם מכל ספרייה במחשב, וזאת משום שאותה ספרייה נמצאת "על הנתיב" של classpath .

 

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

 

במידה וקבצי המחלקות הודרו עם ציון package, המצב הנ"ל אינו תקף. ההסבר יינתן בהמשך.

 05-01-04 / 17:53  נוצר ע"י רונית רייכמן  בתאריך 
 שאלות סיכום - הקודםהבא - פיתוח חבילות משלך 
תגובות הקוראים    תגובות  -  0
דרכונט
מהי מערכת הדרכונט?
אינך מחובר, להתחברות:
דוא"ל
ססמא
נושאי לימוד
חיפוש  |  לא פועל
משלנו  |  לא פועל
גולשים מקוונים: 6