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 זיכרון "לא נדיף" כמו הראשון בשביל שמירת נתונים לאורך זמן למשל שיאים במשחקים.
- מסך עם רזולוציה לפחות 96
X54 פיקסלים.
- כל פיקסל ביחס של בערך 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.java
2.
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