در اين مقاله ابتدا با مفهوم MIDlet آشنا مي‌شويم و س‍پس به APIهاي عالي J2ME مي‌پردازيم. و سپس یک محیط برنامه نویسی را معرفی می کنیم امید وارم برای شروع برنامه نویسی با موبایل بتونه مفید باشه سعی می کنم بعد از این سورس یه بازی با موبایل رو هم براتون بزارم که بتونه کمکتون کنه

برای نوشتن برنامه ابتدا باید زبان برنامه نویسی خود را مشخص کنید برای این کار 2 راه حل مناسب دارید یکی جاوا که تقریبا روی تمام گوشی ها پشتیبانی می شود و قابل استفاده است و دیگری SDK های سیمبین است که می توانید با آن به زبان C برنامه نویسی کنید البته این کار باعث می شود که برنامه شما فقط روی گوشی هایی که سیستم عامل سیمبین دارند اجرا شود در هر حال من جاوا را پیشنهاد می کنم
برای شروع کار با آن می توانید یک IDE مانند NetBeans را از سایت آن (http://www.netbeans.org) به صورت رایگان در یافت کرده البته پکیج مخصوص موبایل آنرا فراموش نکنید ( http://www.netbeans.org/products/mobility) و محصول خود سان را هم فراموش نکنید (http://developer.java.sun.com/develo.../j2mewtoolkit/) در ادامه هم چند خطی از کتابم(و یکی از دوستان) رو که در حال چاپه رو اضافه می کنم شاید به دردتون بخوره
MIDletها
MIDP بستر نرم‌افزار‌ي دستگاهها‌ي همراه يا Mobile Information Device Profile است. تمامي برنامه‌هاي MIDP براساس کلاس مخصوصي بنام MIDlet شکل مي‌گيرند که در شاخه javax.microedition.midlet قرار دارد.
MIDlet را مي‌توان با اپلتهاي J2SEمقايسه كرد تنها با اين فرق که MIDlet بمراتب مستقل‌تر از صفحه نمايش خود است. هر MIDlet چهار حالت به خود مي‌گيرد: فراخوانده‌شده، فعال،متوقف و باطل‌‌شده مي‌باشد.
نمايش و قابليت نمايش آن
با کلاس Display مي‌توان يک رابط با کاربر ايجاد کرد. دسترسي MIDlet به صفحه نمايش با فراخواني Display.getDisplay(MIDlet midlet امکان‌پذير است. کليه ابزار ارتباطي با کاربر در شاخه javax.microedition.lcdui قرار دارند. کلاس Display با دستور setCurrent()نمايش فعلي MIDlet ميسر مي‌سازد. در اين حالت وضعيت MIDlet به صورت Displayable درمي‌آيد. تفاوت Display و Displayable در اين است که Display کلاسي است که وظيفه آن هدايت صفحه نمايش سخت‌افزار است و Displayable همان چيزهائي است که بر صفحه نمايش، نمايش داده‌مي‌شوند. MIDlet با دستور isShown() مي‌تواند آن چيزي که بايد نمايش داده‌شود را مشخص و معين سازد.
نوشتن HelloMidp
مثل اکثر زبانهاي ديگر کار را با يک Hello! آغاز مي‌کنيم. در بدو امر بايد کلاسهاي midlet و lcdui را فراخواني کنيم.

import javax.microedition.midlet.*;
import javax.microedition.midlet.*;
public class HelloMidp extends MIDlet {
حال شما يک Display ايجاد کرده و بعد يک فرم مي‌سازيد:
Display display;
Form mainForm;
public HelloMidp() {
mainForm= new Form("HelloMidp");
}
فرم يک کلاس مخصوص از Displayable است. فرم يک عنوان دارد که در بالاي صفحه نمايش ديده‌مي‌شود. در اينجا مطلب زيادي در فرم نمي‌آوريم. اين برنامه تنها همان عنوان را در بالاي صفحه نمايش خواهد داد.
در بدو اجراي يک MIDlet مجري برنامه زيرروال startApp() را فرامي‌خواند. در اينجا شما دستور نمايش فرم را مي دهيد و مي‌خواهيد که فرم قابل ديدن باشد.(تفاوت نمايش و قابل ديدن يا همان Display و Displayable را بياد بياوريد.)

public void startApp() {
display = Displayable.getDisplay(this);
display.setCurrent(mainForm);
}
از آنجا که حافظه يا متغيرهاي خاصي را نداريد که در حالت توقف برنامه نيازي به آزادکردن آنها داشته‌باشيد، بنابراين فقط بايد يک زيرروال خالي pauseApp() بنويسيد:
public void pauseApp() {
}
مثل زيرروال pauseApp() زيرروال destroyApp() هم به همان دليل بايد خالي باشد:
public void destoryApp(Boolean unconditional) {
}
}


در ابتداي هر برنامه MIDP بايد کلاس MIDlet را براي آن برنامه به صورت زير تعريف نمود: