Bilindiği üzere Sun Microsystems 1999 yılında Java 2 Micro Edition (J2ME) platformunu duyurmuştu. Günümüzde Java’nın diğer platformları olan Java 2 SE (Standard Edition) ve Java 2 EE (Enterprise Edition)’a göre Java 2 ME’nin önemi giderek artmıştır. Özellikle cep telefonu kullanımının ve özelliklerinin hızla artması bu alana olan ilgiyi artırmıştır.Java ME platformu sadece mobil cihazlarda değil aynı zamanda gömülü sistemlerde de yaygın bir şekilde tercih edilmektedir. Zaten bu gibi kodlamanın kısıtlı olabileceği yerler düşünülerek geliştirilmiş bir teknolojidir Java ME. Bu alandaki gereksinimleri karşılamak için JRE (Java Runtime Environment) ya da JVM (Java Virtual Machine) diyebileceğimiz Java Sanal Makinesi özel olarak tasarlanmıştır.Son hali Java’nın yeni sürümüyle J2ME olarak geçen platform şöyle bir yapıdan oluşmaktadır:

Java Platformları
Java Platformları (Resim)

Platform, konfigürasyon ve profillerden oluşmaktadır. Konfigürasyon, benzer özelliklerdeki cihazlar için alt yapı ve API‘ler oluşturabilmek için tanımlanmıştır. Profil ise tanımlı konfigürasyonlar üzerinde ortak bir uygulama geliştirme altyapısını oluşturmaktadır. İki tip konfigürasyon bulunmaktadır:* Connected Device Configuration (CDC, Sürekli Bağlantılı Aygıt Konfigürasyonu)* Connected Limited Device Configuration (CLDC, Kesikli Bağlantılı Aygıt Konfigürasyonu

CDC - CLDC
CDC – CLDC (Resim)

1. CDC
Hafızası 2MB ve daha fazla olan cihazları hedefler. İşlemci hızı, ağ bağlantıları, hafıza özellikleri CLDC’ye göre daha iyi olan cihazlarda yer alır. Sanal makinesi CVM (Compact Virtual Machine) olarak adlandırılır ve JVM (Java Virtual Machine)’e çok benzerlik gösterir. CDC’de tanımlanmış paketler şunlardır:* java.lang, java.lang.ref, java.lang.reflect* java.util, java.util.zip, java.util.jar* java.net* java.io* java.text* java.security, java.security.cert* java.math* javax.microedition.ioTanımlanan profiller şunlardır:Foundation Profile: java.lang, java.util, java.net, java.io ve java.security’deki J2SE’de bulunup CDC’de bulunmayan sınıfları eklemektedir.
Personal Profile: Swing gibi bir arayüz kullanabilmek için AWT paketleri bu profil ile desteklenmektedir.RMI Profile: Bir nesnenin networkte yer alan başka bir aygıtta çalışan bir nesnenin herhangi bir metodunu doğrudan çağırmasını sağlayan RMI (Remote Method Invocation, Uzaktan Yöntem Çağırma) özelliğinin kullanılmasını sağlamaktadır.Görüldüğü gibi bu profiller geliştirilerek Java ME, bilgisayarımızda kullandığımız teknoloji olan Java SE’ye yaklaşmaktadır.2. CLDC
Hafıza ve işlem gücü düşük cihazlar (telsiz, şarj gibi düşük güç kaynakları olanlar vs.) için tasarlanmıştır. Kesirli ya da noktalı işlemler (floating point), hata sınıfları (Error class) ve Object Serialization yoktur.CLDC’deki sanal makine ise KVM (Kilobyte Virtual Machine) olarak geçmektedir. Şu paketleri içerir:* java.lang* java.util* java.io* javax.microedition.ioCLDC için en önemli profil MIDP (Mobile Information Device Profile)’dir. Bu profil ile gelen paketler şunlardır:* java.lang* java.util* java.io* javax.microedition.io* javax.microedition.lcdui* javax.microedition.midlet* javax.microedition.rmsCLDC üzerinde MIDP ile çalışmayı sağlayan MIDLET‘tir. Bir mobil aygıtta J2ME uygulaması denildiğinde MIDLET’ten bahsediliyordur. Arayüz için LCD UI (Limited Connected Device User Interface) kullanılmaktadır. Veri saklama ve erişim için ise RMS (Record Management System) kullanılmaktadır. CLDC üzerinde çalışması için tanımlı bir başka profil de PDA Profile‘dır.Örnek bir java kodu:
import javax.microedition.midlet.*;import javax.microedition.lcdui.*;public class Main extends MIDlet {public void startApp(){TextBox box=new TextBox(“Mesaj”,”Merhaba Dünya”,100,TextField.ANY);Display.getDisplay(this).setCurrent(box);}public void pauseApp(){}public void destroyApp(boolean unconditional){}}Görüldüğü MIDLET’ten türettiğimiz Main sınıfı cep telefonunda çalışabilir. MIDLET’teki Temel metotlar ise görüldüğü gibi uygulamayı başlatan startApp(), durduran pauseApp() ve bitiren destroyApp(boolean) metotlarıdır.Bildirgec.org’un harfleri küçültülmesinden dolayı kodda büyük harfler küçük harfe dönüşmektedir. Bu nedenle bu harflerin kodlama sırasında büyük yazılması gerekmektedir.Son olarak da J2ME uygulama geliştirme araçlarını sıralayalım:* J2ME WTK, Sun Microsystems
* Sun One Studio, Sun Microsystems* Mobility ToolKit, Siemens
* J2ME MIDP 2.0* Nokia Developers* Motorola iDEN, Motorola* JBuilder MobileSet, Borland* WebSphere ME, IBM* Mobile Master, Zentek Technology* Palm OS Emulator, Palm
* Micro Emulator, SourceForge.NET* NetBeans Mobility, NetBeansBu yazıda faydalandığım ve bu konu ile uğraşanlar için çokça faydası olacak kaynaklar:* http://www.godoro.com/Divisions/Ehil/Mecmua/Magazines/Articles/txt/html/article_J2mePremier.html* http://www.bilgiportal.com/v1/idx/55/1942/Cep-Telefonlar/makale/J2ME-Java-2-Micro-Edition.html* http://www.mobilpro.com/makaleler/arsiv/J2ME_temelleri/J2ME_temelleri.html* http://www.java.com/tr/download/faq/whatis_j2me.xml