البداية مع برمجة الجوالات J2ME

برمجة





بما أني بدأت تعلم برمجة الجوالات بإستخدام J2ME ولقلة المصادر العربية بهذه التقنية فأردت أن أكتب ما أتعلمه ولا أضمن أن أستمر بالكتابة في هذه السلسلة فلربما أتوقف فجأة .*ملاحظة:هذا المقال نظري فلذلك أنصح بقرائتة قرائة سريعة ولاتقلق إذا لم تفهم ، وعاود قرائته بالأخير .

J2ME هي جافا مخصصة للأجهزه الصغيرة micro كالجوالات وأجهزة PDA وغيرها من الأجهزة الصغيرة.

وطبعا لإختلاف الأجهزة الصغير من حيث قوة المعالج والذاكرة قسمت J2ME إلى :


1- Configuration (تشكيلات) :

أ- Connected Device ConfigurationCDC :

وهذه للأجهزة ذات المواصفات شبه عالية كأجهزة PDA المتطورة أو تلفيزيونات الإنترنت.

وتكون ذات المواصفا التالية :

– على الأقل 512ك.ب روم و 265ك.ب رام وصولا إلى 2.5 ميقا روم و 2 ميقا رام.

– أن يكون الجهاز يتصل بشبكة ما .

تدعم JVM الأساسية كاملة كما في الأجهزة الشخصية العادية.JSR 36

ب-Connected Limited Device ConfigurationCLDC :

وهذه للأجهزة المحدودة Limited مثل أجهزة الجوال أو الPagers .وهي لاتدعم الجافا الإفتراضية العادية بل لها جافا خاصة بها هي KVM نسبة إلى الكيلو بايت.

و KVM لا تحتوي على كل المكتبات الموجودة في JVM بل إن بها مكتبات محدودة للغاية .

وهنا ك إصدارين مختلفين من CLDC هما CLDC1.0 و CLDC1.1 و بصراحة لا أعرف معظم الفروق بينهما سوى القليل منها كإضافة float و Double و Reference و WeakReference في الإصدارة CLDC1.1 حيث لم تكن بالإصدارة الأولى .

JSR 30 : CLDC 1.0

JSR 139 : CLDC 1.1

2- Profiles (توصيفات) :

وهي تقسم آخر يقسم كل Configuration إلى عدة Profiles .

التشكيلCLDC مقسم إلى عدة أنواع منها:

أPersonal Digital Assistant Profile PDAP : وهي بروفايلز PDA صمت للبيئات الصغيرة ك أجهزة البالم PALM ووضعت مخصصة لوحدها لأن اجهزة ال PDA أكبر من أجهزة الجوالات العادية وهي ذات ذاكرة ليست أقل من 512 ك.ب(رام+روم) و ليست أعلى من 16 ميقا وهي MIDlet عادية مضاف إليها جزء من مكتبات AWT .

JSR 75 : PDAP

ب- :Mobile Information Device Profile MIDP :

وهي البروفايلز للجوالات العادية أو أجهزة البي دي إي الصغيرة (وهذه هي التي سوف نعمل عليها)

مكتبات MIDP 1.0 :
java.io
java.util
java.lang
javax.microedition.io
javax.microedition.rms
javax.microedition.lcdui
javax.microedition.midlet

المكتبات المضافة في MIDP 2.0 :
javax.microedition.pki
javax.microedition.media
javax.microedition.media.control
javax.microedition.lcdui.game

JSR 37 : MIDP1.0

JSR 118 : MIDP2.0

وهناك عدة بروفيلز أخرى كـ:
Personal Profile
Foundation Profile
RMI Profile
وهي لا تهمنا في الوقت الحالي ولكن للإستزادة تجدون شرح مبسط عنها في:
http://developers.sun.com/mobility/getstart/articles/intro

الخلاصة :

سوف يكون عملنا كله حكراً على التشكيل (CLDC : (Configuration

و التوصيف (MIDP : (Profiles

وأنت ستختار ما يناسب الجوال الذي تريد أن يعمل البرنامج عليه فأنت ستختار بين CLDC 1.0 و CLDC 1.1 حسب ما يدعمه جهازك و حسب حاجتك فإذا كنت تريد إستخدام float و كان جهازك يدعم CLDC 1.1 فبإمكانك إختيارها أما إذا كان جهازك لايدعمها فليس بإمكانك بأي حال من الأحوال إستخدامها .

وأيضا نفس الكلام بالنسبة لـ MIDP ستختار بين MIDP 1.0 و MIDP 2.0 حسب حاجتك وقريبا MIDP 3.0 ولكن لن نتطرق لها في الوقت الحالي .




عدد التعليقات : 17 على “البداية مع برمجة الجوالات J2ME”


mygif
حسن العراقي يعلق يوم 14 June, 2008 الساعة 10:55 am

السلام عليكم
شكرا جزيلا يا اخ ماجد هذا التوضيح فادني كثيرا ارجوا الاستمرار
اتمنى لك الموفقيه والنجاح

mygif
احمد على يعلق يوم 8 August, 2008 الساعة 3:53 pm

بسم الله الرحمن الرحيم
مشكور ما قصرت لم اكن اعرف المكتبات التى تعمل على الجوال وفرت على الكثير من البحث

mygif
سالم عبدالله يعلق يوم 27 September, 2008 الساعة 8:08 pm

بارك الله فييك على الشرح

mygif
فاضل البياتي يعلق يوم 21 October, 2008 الساعة 9:11 am

مشكور أخ ماجد وأتمنى لك دوم الموفقية والنجاح

mygif
bonabuny يعلق يوم 25 November, 2008 الساعة 5:03 pm

بجد شكر جدااااااااااااااااا

mygif
محمد روقة palastine يعلق يوم 29 April, 2009 الساعة 2:05 am

شكرا اخ ماجد

mygif
أكرم يعلق يوم 24 May, 2009 الساعة 4:50 pm

1000 شكر لك أخي الكريم
أكثر الله من أمثالك …

mygif
رياض الحسيني يعلق يوم 18 August, 2009 الساعة 10:57 am

السلام عليكم
شكرا جزيلاً على المقال وأتمنى من الله لك التوفيق والاستمرار

mygif
منة الله يعلق يوم 16 October, 2009 الساعة 11:22 pm

شكرا كتير على هذا الطرح
بس حبيت أطلب منك المزيد عن هالبرمجة
لإنو انا محتاجاها كتير بمشروع التخرج
ياريت تفيدني أكتر عن هيك
وياريت تبعتلي على إيميلي ايا شي ممكن يفيدني
مشكور أخي

mygif
غرائب يعلق يوم 9 January, 2010 الساعة 6:21 pm

طرح مميز شكرا

mygif
asiri يعلق يوم 25 January, 2010 الساعة 11:10 pm

شكرا على الطرح لكن الشرح بالصور افضل من الف سطر

mygif
رغد محمد يعلق يوم 2 September, 2010 الساعة 9:59 am

ارجو ارسال تقرير مفصل عن J2ME لاني احتاج اعمل بحث عن هذا الموضوع…. جزاك الله الف خير

mygif
متولي اكرام يعلق يوم 13 April, 2011 الساعة 4:51 pm

شكراعلى الطرح لكن الشرح با الصور افضل من 100 سطر

mygif
Java Dev يعلق يوم 6 November, 2011 الساعة 6:11 am

رائع جدا بارك الله فيك و أيضا هناك دورة لتعلم j2me هذه اللغة على الرابط
http://www.mawj.net/vb/showthread.php?t=14674

mygif
كريم يعلق يوم 25 November, 2012 الساعة 1:50 pm

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package hello;

import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;

/**
* @author Mahmoud Mahrous
*/
public class FirstMidlet extends MIDlet implements CommandListener {

private Form firstForm;
private Form secondForm;
private List friendsList;
// Commands
Command gotoSecondFormCmd;
Command gotoFriendsListCmd;
Command backFromSecondFormCmd;
Command backFromFriendsListCmd;

public void startApp() {
Display.getDisplay(this).setCurrent(getFirstForm());
}

public void pauseApp() {
}

public void destroyApp(boolean unconditional) {
}

/**
* @return the firstForm
*/
public Form getFirstForm() {
if (firstForm == null) {
firstForm = new Form(“First Form”);

StringItem message = new StringItem(“Hello”, “Welcome”);
firstForm.append(message);

Ticker ticker = new Ticker(“Welcome to my first test application with my self”);
firstForm.setTicker(ticker);

// Commands
gotoFriendsListCmd = new Command(“Friends”, Command.ITEM, 0);
gotoSecondFormCmd = new Command(“Second”, Command.ITEM, 0);

firstForm.addCommand(gotoSecondFormCmd);
firstForm.addCommand(gotoFriendsListCmd);
firstForm.setCommandListener(this);
}
return firstForm;
}

/**
* @return the secondForm
*/
public Form getSecondForm() {
if (secondForm == null) {
secondForm = new Form(“Second Form”);

StringItem message = new StringItem(“Second form”, “Welcome to second form”);
secondForm.append(message);

// Commands
backFromSecondFormCmd = new Command(“Back”, Command.BACK, 0);
secondForm.addCommand(backFromSecondFormCmd);
secondForm.setCommandListener(this);
}
return secondForm;
}

/**
* @return the friendsList
*/
public List getFriendsList() {
if (friendsList == null) {
friendsList = new List(“Friends List”, List.EXCLUSIVE);
friendsList.append(“Mahmoud”, null);
friendsList.append(“Mahrous”, null);
friendsList.append(“Waleed”, null);

// Commands
backFromFriendsListCmd = new Command(“Back”, Command.BACK, 0);
friendsList.addCommand(backFromFriendsListCmd);
friendsList.setCommandListener(this);
}
return friendsList;
}

public void commandAction(Command cmd, Displayable d) {
if (cmd == gotoSecondFormCmd) {
Display.getDisplay(this).setCurrent(getSecondForm());
} else if (cmd == gotoFriendsListCmd) {
Display.getDisplay(this).setCurrent(getFriendsList());
} else if (cmd == backFromFriendsListCmd || cmd == backFromSecondFormCmd) {
Display.getDisplay(this).setCurrent(getFirstForm());
}
}
}

عندى مشكلة فى سطر13

mygif
sousou12 يعلق يوم 30 August, 2013 الساعة 1:39 pm

سلام
اود انشاء برنامج مقسم الى 3 اقسام و تكون servlet هي الوسيط بين البرنامج java و j2me بحيث :
1 ارسال request من j2me الى servlet
2 ارسال من servlet الى البرنامج
3 البرنامج يقوم بالاجراءات اللازمة و يبعث الاجابة الى servlet ثم من servlet الى j2me

الاجابة الصحيحة هي كالاتي :
debut inputManager-FunctionalEngine
inputManager.readDataEntry -FunctionalEngine
debut functionalMatcher-FunctionalEngine
debut servicesMatched -FunctionalEngine
inputManager.matcher-FunctionalEngine
ligne = C:/xampp/htdocs/services/1.1/city_bedandbreakfast_service.owls
fichier2 = C:/xampp/htdocs/services/1.1/city_bedandbreakfast_service.owls
location = ARZEW
ligne = LING
Matching based location
C:/xampp/htdocs/services/1.1/city_bedandbreakfast_service.owls
ARZEW
NameService = ARZEW
resultat service loc : C:/xampp/htdocs/services/1.hs1/city_bedandbreakfast_service.owls
Matching based device
ligne = C:/xampp/htdocs/services/1.1/city_bedandbreakfast_service.owls
fichier2 = C:/xampp/htdocs/services/1.1/city_bedandbreakfast_service.owls
device = iPad4
SERVIÇO: file:/C:/xampp/htdocs/services/1.1/city_bedandbreakfast_service.owls
SIMILARIDADE: SIBLING
اما انا فيظهر لي الا هذا بالرغم من انه ياتيني رد على j2me (رسالة)
debut discoverServices
debut FunctionalData
debut FunctionalEngine
debut inputManager-FunctionalEngine
servlet

mygif
فوركس السعودية اون لاين يعلق يوم 12 July, 2015 الساعة 3:09 pm

تحليلات

أضف تعليق :