عرفنا فيما سبق ان J2ME هي القسم الثالث من اقسام الجافا بعد J2SE و J2EE
وهذا القسم J2ME يعمل على الاجهزة الصغيرة Small device
والان سنتعرف على المكتبات الخاصة بهذة اللغة وكذلك انواع المعطيات المستخدمة و هيكلية بناء البرنامج ثم ننتقل الى بناء التطبيق الاول باستخدام J2ME
* المكتبات الاساسية الخاصة بالـ J2ME هي :javax.microedition.lcdui : تزودنا هذة المكتبة بالعديد من واجهات المستخدم مثل النوافذ والازرار وصناديق النصوص
javax.microedition.rms : تزودنا هذة المكتبة بالطرق المستخدمة لخزن البيانات على وحدة الخزن الرئيسية للموبايل
javax.microedition.midlet : تزودنا هذة المكتبة بال MIDP وكذلك بالبيئة التي سيعمل فيها التطبيق
javax.microedition.io : تزودنا هذة المكتبة بالمناهج الخاصة بعمليات الاتصال GenericConnection framework GCF
java.io : تزودنا هذة المكتبة بالمناهج الخاصة بعمليات الادخال والاخراج
java.lang : تحتوي على المناهج الخاصة بال J2SE وانواع المعطيات
java.util : تحتوي على المناهج الملحقة
كما ان هناك العديد من المكتبات الاخرى التي تعمل على اجهزة معينة فقط
بينما هذة المكتبات هي المكتبات الاساسية الخاصة بال J2ME
* انواع المعطيات في J2ME
java.lang.Boolean java.lang.Byte java.lang.Character java.lang.Integer java.lang.Long java.lang.Short
ونلاحظ هنا ان J2ME لا تدعم الاعداد ذو النقطة العائمة float , double
وذلك لان النقطة العائمة تحتاج الى عتاد كبير وبرمجيات ذو تكلفة عالية
* بناء البرنامج الاول
عند قراءة هذا الموضوع يفترض ان يكون عندك معلومات لا بأس بها عن البرمجة الكائنية
في برنامج الجافا او السي مثلا نرى ان بداية تنفيذ الكود يبدأ من الدالة main
اما بالنسبة لل J2ME فإن الامر مختلف قليلا وسيبدأ تنفيذ البرنامج في J2ME من الدالة startApp وذلك لسبب بسيط وهو
انه عندما نقوم بتحديد برنامج ما هو البرنامج الرئيسي في الجافا او السي يكفي ان نقوم بكتابة الدالة Main لنشير للمترجم ان يبدأ من هنا
اما في J2ME فاننا نقوم بانشاء منهج مشتق من المنهج MIDlet الموجود في الحزمة javax.microedition.midlet
ويوجد في هذا المنهج الطرق المجردة abstract Methods الثلاث التالية destroyApp , pauseApp , startApp
ومن اساسيات البرمجة الكائنية ان الطرق المجردة في صنف مشتق منه يجب ذكرها كاملة
ولهذا فإن البرنامج الرئيسي سيكون هو البرنامج الذي سيتم اشتقاقه من الصنف MIDlet وسيبدأ تنفيذ البرنامج من الدالة startApp
ايظا هناك الطريقتان destroyApp , pauseApp
pauseApp : يتم تنفيذ هذة الدالة عند انتقال التطبيق من الحالة النشطة الى الحالة الغير نشطة
destroyApp : يتم تنفيذ هذة الدالة عند اغلاق التطبيق
* دورة حياة البرنامج الرئيسي MIDlet
وكما هو واضح من الرسم نجد ان التطبيق يمر بثلاثة مراحل او حالات
الحالة الابتدائية النشطة ثم الحالة غير النشطة (التوقف المؤقت) ثم حالة الاغلاق وانهاء التطبيق
لا تهتم حاليا بالحالة pauseApp
ولكن سنركز على الحالتين startApp , destroyApp
يجب ملاحظة انه عند تنفيذ اي تطبيق فإنه سيقوم اولا بتنفيذ الكود الموجود في المشيد Constructor والذي يحمل نفس اسم المنهج
وبعد ذلك سينتقل التنفيذ الى الدالة startApp
* والان سنقوم بكتابة المثال التالي
قم بكتابة هذا الكود مع ملاحظة انه يجب حفظ هذا الملف بنفس اسم المنهج HelloMidlet
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class HelloMidlet extends MIDlet
{
private Display display;
TextBox box = null;
public void HelloMidlet(){}
public void startApp(){
display =Display.getDisplay(this);
box =new TextBox("Simple Example ","Hello ",20,0);
display.setCurrent(box);
}
public void pauseApp(){ }
public void destroyApp(boolean unconditional){}
}*لتحويل هذا البرنامج الى تطبيق على الجوال سنتبع الخطوات
هذا اذا كنت تستخدم Wireless Toolkits
اما بالنسبة لمستخدمي Borland JBuilder MobileSet فإنه يكفي تشغيل الامر Run من القائمة