J2ME : פרק א'
שלום שלום מה נשמע ?
היום נלמד על j2me
שזה java לפלאפונים
כמו למשל המשחקים והישומים שיש בנוקיה וכו'
מכיוון שזה נושא גדול מאוד הכתבה תבוא בחלקים כל גיליון יהיה חלק
בגיליון הזה יהיה את החלק הראשון שהוא בעצם הקדמה.
הקדמה קצרה
בדרך כלל שלומדים JAVA
עושים כמה שיעורים לפניכן על כל התאוריה המבנה .
וכל השאר אני לא בטוח שצריך את כל זה אני מלמד בדוגרי לאט לאט בסוף תבינו .
את התחביר וכל זה.
למה גא'ווה?
א. שפת גא'ווה מתאימה לכל פלטפורמה מיומן אלקטרוני ועד לשרתים הכי חזקים שיש .
ב.שפת גא'ווה היא שפה מונחת עצמים.
ג.בגלל שיש לגא'ווה קהילה ענקית של מתכנתים.
ד. גא'ווה היא שפה שמתאימה לכל מערכת הפעלה (linux,win,unix,mac).
J2ME, J2SE ו J2EE
חברת "סאן מיקרו-סיסטמס"(sun
microsystems) חילקה את java
לשלושה גירסאות ופירוטם להלן:
כל גירסה מתאימה לסוג של מכשירים.
א.J2EE שזה קיצור של(Java 2 platform, Enterprise Edition)גא'ווה
של עסקים יענו שרתים ענקיים ומכשירים מפלצתיים.
ב.J2SE שזה קיצור של(Java 2 platform, Standard Edition)גא'ווה
של מחשבים אישיים זאת אומרת ווינדוז ולינוקס.
ג.J2ME שזה קיצור של(Java 2 platform, Micro Edition)גא'ווה
של מכשירים קטנים כמו מצלמות פאלם פלאפונים יומנים אלקטרוניים וכו'.
לסיכום נסדר הכל בטבלה
|
שם |
פירוש |
לאיזה מכשירים |
|
J2EE |
Java 2 platform, Enterprise Edition |
גא'ווה של עסקים יענו שרתים ענקיים ומכשירים מיפלצתיים |
|
J2SE |
Java 2 platform, Standard Edition |
גא'ווה למחשבים אישיים לווינדווז ולינוקס וכל שאר מערכות ההפעלה |
|
J2ME |
Java 2 platform, Micro Edition |
מצלמות דיגיטליות,DVD,טלויזיות ,יומנים אלקטרונים, פלאפונים, ועוד |
שני הגירסאות J2EE וJ2SE בנויות עלJVM שזה בעצם קיצור של
Java Virtual Machine
והפירוש של זה הוא:
אוסף של class
ושל api (מי שלא יודע אלה הרבה
פונקציות ששמורות במערכת וכך המתכנת לא צריך לכתוב כל מיני פונקציות א.חוסך מקום
ב. חוסך כאב ראש יענו הרבה עבודה)
לעומת זאת הJ2ME
בנוי על גירסה הרבה יותר קטנה של קלאסים וapi שמתחלק לשני דברים שדומים לJVM
והם:
CDC הפירוש שלו זה connected device configuration.
והדבר השני הוא:
CLDC שהפירוש שלו הוא connected, limited device configuration
שזה בעצם אותו דבר כמו פשוט מוגבל (בגלל זה הוסיפו "limited" שהפירוש שלו זה מוגבל.)
שני דברים אלו(CDC וCLDC) מתאימים לשני סוגי
מכשירים בהתאמה(הראשון לראשון והשני לשני)
שני סוגי המכשירים הם:
סוג א' - (cdc)
מכשירים גדולים המאופינים ע"י שהם מחוברים לחשמל מסך גדול זיכרון גדול ולרוב
גם חיבור לאינטרנט.
למשל טלויזיה
סוג ב' - (cldc)
מכשירים קטנים שמאופינים ע"י שהם קטנים מסך קטן עובדים על סוללות אין הרבה
זיכרון.
למשל פלאפון.
עכשיו תמונה להמחשה:

תצורות
ופרופילים
אנחנו משתמשים בתצורה(configurations)
ובפרופילים כדי להתאים את הJ2ME
לצרכים שלנו
תצורה
התצורה של ה J2ME מגדירה
(מלשון גדר גבל תחום) את הJAVA
המכונה הוירטואלית(virtual
machine) ואת הסיפריה של הקלאסים
לקבוצות וסוגים של מכשירים (זה נקרא "שוק אופקי").
פרופיל
פרופיל זה בעצם שכבה מעל התצורה וגם כתובת של בקשה המסוימת מהמכשיר המסויים(זה
"המכשיר המסוים" נקרא שוק אנכי אבל עזבו את זה זה ממש לא חשוב)
הפרופיל בדרך כלל מכליל סיפריות של קלאסים(class) שבדרך כלל הרבה יותר מאשר התצורה מאפשרת.
מכשיר אחד יכול לכלול כמה תצורות ובגלל זה הוא יכול לתמוך בכמה פרופילים. בגלל זה
ה"חזון" לקחת תוכנה שיועדה
לפלאפון ולהפעיל אותה על טלויזיה (ע"י הוספת/שינוי התצורות והפרופילים) יכול
להתגשם.
תוכנה בJ2ME נכתבה לפרופיל ספציפי.
הפרופיל מבוסס על תצורה מיוחדת ולכן התצורה הזאת מוגדרת אוטומטית בפרופיל.
היצרן(של המכשיר) הוא בוחר באיזה פרופיל(ים) לתמוך במכשיר שלו , ברגע שהיצרן בוחר
פרופיל הוא צריך ליישם את התכונות
שלו(של הפרופיל) במכשיר.
כיום קיימים רק שתי תצורות תיקניות לJ2ME והם:
א. תצורת מכשיר קשורה(מחוברת)מוגבלת ((Connected, Limited Device Configuration (CLDC).
ב.תצורת מכשיר קשורה(מחוברת) ((Connected,
Device Configuration (CLDC).
התצורות האלה (cdc)
ו(cldc) יכולים לרשת (מלשון
ירושה במילים אחרות לקבל) קלאסים(class) מJ2SE או אחרים שלא קיימים בJ2SE.
התמונה הבאה תמחיש לכם את הקשר/ההבדל בין cdc לcldc

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

בסידרת מדריכים הזאת אנחנו נלמד רק על CLDC ועל MIDP(שזה
קיצור של MID profile).
הMID פרופיל נוצר למכשירים
ניידים כמו
פלאפונים יומנים אלקטרונים וזימונית.
פרופיל MID (בקיצור MIDP)
*הערה:
יום אחרי כתיבת קטע זה נודע לי שיש כבר MIDP 2 אבל זה לא רלוונטי לנו כי זה פלאפונים דור שלישי עולים לפחות 60
ש"ח לחודש
בדרך כלל (הסכמה כללית) שלמכשיר שפועל עליו פרופיל MID יהיה לכל הפחות:
- 128 KB של זיכרון "לא
נדיף" כמו הארד-דיסק שאתה מכבה את המחשב הDATA לא נמחק.
- 32 KB "זיכרון נדיף"
כמו זיכרון RAM
כדי לישמור בו את המשתנים וכדומה.
- 8 KB זיכרון "לא
נדיף" כמו הראשון בשביל שמירת נתונים לאורך זמן למשל שיאים במשחקים.
- מסך עם רזולוציה לפחות 96X54
פיקסלים.
- כל פיקסל ביחס של בערך 1:1 זאת אומרת שהאורך והרוחב שלו דומים.
- מנגנון קלט למשל מקלדת מקשים מסך מגע.
- שני דרכי התקשרות(בפאלפונים: א.קבל, ב.התקשרות, ג.אינפרא אדום).
הקלאסים(class)
של הMID נובעים מהCLDC ומהMIDP. הpackage של הCLDC הם:java.lang, java.io, java.util, javax.microedition. io.
והpackage של MID הם .microedition.lcdui, javax.microedition.midlet and
javax.microedition.rms.
*מי שלא יודע מה זה package
אני לא יודע איך להגדיר את זה אבל אפשר לומר שזה כמו include בC.
כל תוכנה מסוג MID
יכולה להכלל באחת מהסוגים האלו:
1. אפליקציה מקומית תוכנה שניבנתה בC או C++ או
כל שפה אחרת ומותאמת בדיוק ככה שתוכל לפעול על המערכת הפעלה
של המכשיר, החיסרון שזה יכול לרוץ רק על מכשיר אחד הספיציפי הזה.
2. אפליקצית JAVA MIDP
תוכנה זו נכתבה בMID
פרופיל וגם בCLDC אבל לא בכל הגא'ווה , תוכנה זו פועלת בכל מכשיר.
3. תוכנה למכשיר הספיציפי כמו 2 פשוט שזה פועל רק על אותו מכשיר ספיציפי.
בישביל לבדוק אילו מכשירים תומכים בCLDC ובMID ובJ2ME בכלל תכנסו לhttp://www.javamobiles.com
הידועים בישראל הם: הנוקיות(nokia)
רוב המוטורולה החדשיםוכל השאר שמוכרים בימים אלו היותר ישנים לא תומכים.
הפרופילים הCLDC והMID פועלים על KVM שזה בעצם(K Virtual Mchine) וירטואל מאשין זה דבר
שמריץ תוכנות של JAVA מי
שאין לו את זה לא
יכול להפעיל תוכנות של JAVA בPC הוירטואל מאשין נקראת JVM שזה קיצור של Java Virtual Mchine. הוירטואל מאשין זה בעצם
כל הclass. הKVM זה בעצם וירטואל מאשין
לפלאפונים.)
הK מהKVM מסמל KILO בגלל שכל הזכרונות שלו נמדדים בKB.
כתיבת MIDlet
מי שלא יודע applet זה
תוכנית (לרוב לאינטרנט) שנכתבה בJAVA.
applet זה קיצור של application let ולכן אנו יודעים שMIDlet
תוכנית שנכתבה בפרופיל MID
זאת אומרת מה שאנחנו לומדים.
בפיסקה זו אני יביא קוד קצר מכאן מי שלא למד C או JAVA בעבר יתקשה להבין אם יבקשו ממני
לכתוב טקסט על אחת מהשפות האלה
אני אכתוב אבל אני מניח שרובכם יודעים ומקווה שתבינו את הקוד שאני מביא פה.
כדי לכתוב MIDlet
צריך להוריד את ה“Java 2 Micro
Edition Wireless Toolkit” מהאתר www.javasoft.com
סתם דרך אגב זה אתר מצויין לכל הכלים של JAVA אם אי פעם תרצו איזה כלי של JAVA כדי להוריד מהאתר הזה.
מה שנכתוב עכשיו יהיה CLASS
קטן שיגיד "enter to our
site ikp.no-ip.com" מה שיש לנו פה זהclass פשוט שיש בו רק שלוש אירועים
משהוא כמו hello world
שעושים כל פעם שלומדים שפת תכנות חדשה.
הקוד הבא פעל על “Java 2 Micro
Edition Wireless Toolkit 1.0.2 Early Access 2” אבל הוא אמור לעבוד על
כל גרסה אחרת.
אם אתם רוצים אתם יכולים להוריד סביבות תכנות לפלאפונים ספציפים כמו של NOKIA ושל MOTOROLA מהאתרים שלהם.
בכללי עדיף שתורידו למכשירים ספיציפים כי מה שאני אמרתי לכם להוריד הוא לכל הJ2ME ומה שמורידים מהחברות
נוקיה ומוטורולה
זה במיוחד לMIDP
בגלל זה נראה לי שעדיף שתורידו את הסביבת פיתוח שלהם אבל תחליטו לבד.
בואו נעבור לקוד
1. //filename:EnterToSite.java2.3. //טקסט זה נלקח מהאתר http://www.zindell.com 4. //זה המקום להודות לאתר הזה שמשם התחלתי ללמוד J2ME 5. //תודה רבה6. //Copyright (c) 2001 Haim Michael & Zindell Publishing House, Ltd. 7. 8. import javax.microedition.midlet.*; 9. import javax.microedition.lcdui.*; 10. 11. public class EnterToSite extends MIDlet 12. {13. private Display display;14. private Form form;15. 16. public EnterToSite()17. {18. form = new Form("enter to our site ikp.no-ip.com");19. display = Display.getDisplay(this);20. }21. 22. public void startApp()23. { 24. display.setCurrent(form);25. }26. 27. public void pauseApp()28. {29. 30. }31. 32. 32. public void destroyApp(boolean cond) 33. {34. }35. } |
הסברים
1-6. סתם הערות
8. כמו אינקלוד שמודיע שאנחנו משתמשים בMIDP הכוכבית מראה שהוא מזמן גם את כל מה שמתחתיו
9.עוד כמו אינקלוד אבל זה של התצוגה של המסך אתם תראו בהמשך הכוכבית מראה שהוא
מזמן גם את כל מה שמתחתיו
11.הצהרה על הקלאס קוראים לוEnterToSite
והוא מסוג MIDlet
13. יוצר אובייקט בשם display
מסוג Display
14. יוצר אובייקט בשם form
מסוג Form
16. פונקציה/אירוע בשם EnterToSite
שמבצע את השורות18 ו19.
18. מכניס לאוביאקט form Form חדש
שבו כתוב enter to our site ikp.no-ip.com
19. מציג את this
22. פונקציה/אירוע בשם startApp
שמבצע את השורות 24.
24. מכוון את התצוגה לform ולכן שורה19
תציג את form
השאר נראה לי די מובן
קימפול
* מי שלא יודע קומפילציה (או הידור בעיברית) להפוך את הקוד שלנו לקובץ בר הרצה
לרוב זה קובץ EXE אבל בJAVA
זה קובץ JAR.
כשאנחנו מקמפל את הMIDlet
אנחנו מקמפלים כמו applet רק
משנים את הקלאס לקלאס של הMIDlet
במקום הקלאס של הJ2SE
יש עוד אפשרות לקמפל חוץ משורת הפקודה(דוס - התחל>הפעלה>CMD) אפשר גם לקמפל גם בתוכנה שאמרתי לכם להוריד יש
Ktoolbar
נכנסים לתקיה של התוכנה שם נכנסים לתקיה BIN
ונכנסים לקובץ “KToolbar.bat”
כשהKtoolbar נפתח לוחצים על NEW PROJECT
תלחץ על הSRC ותכניס את הקובץ שבנינו קודם
ותלחץ על "build".
אבל אם אתה רוצה להשתמש בשורת פקודה (אני אף פעם לא השתמשתי בזה לכן אני מסביר רק
מה שהבנתי לא מה שעשיתי) זה אמור להיות פשוט
בשורת הפקודה צריך לכתוב "javac -bootclasspath c:\j2mewtk\lib\midpapi.zip
EnterToSite.java"
ה -bootclasspath זה אחת הפונקציות שאנחנו יכולים לבקש מהJAVAC. הפונקציה הזאת מסמנת את המיקום של הקובץ class המחולץ
מקווה שהבנתם ונהנתי לכתוב לכם את הכתבה לרשותכם תמיד HFM