| Makale Adı | MIDP ile Programlamaya Giriş |
| Derleyen | Mobilpro |
| Tarih | 02.11.2003 |
|
MIDlet Temelleri MIDlet MIDlet , Java 2 Micro Edition (J2ME) - Mobile Information Device Profile (MIDP) ortamı için geliştirilmiş uygulamalara verilen isimdir. MIDP tanımlamasında [MIDSPEC] hedef cihazlar için minimum donanım , yazılım , ağ bağlantısı ve uygulama yönetim gereksinimleri tarif edilmiştir. Bu tanımlarda MIDP destekleyen cihazlar için standart sistem API lerinin ve HTTP ile ağ bağlantısının tanımları yapılmıştır. MIDP bilindiği gibi cep telefonu gibi işlem gücü açısından kısıtlı CPU , hafıza , klavye ve görüntü özelliklerine sahip cihazlar için tanımlanmıştır. MIDlet yaşam döngüsü (lifecycle) MIDlet in MID (Mobile Information Device) üzerinde çalışmasını sağlar.Bu dökümanda MIDP uygulamasının (MIDlet) nasıl geliştirildiği anlatılacaktır.MIDP uygulamasının nasıl yer aldığı Şekil-1 de gösterilmiştir.
Şekil - 1 Bir MIDlet geliştirmek ve çalıştırmak için bilinmesi gereken bazı temel kavramlar vardır : MIDletin yaşam döngüsü , kullanıcı arayüzü (high-level ve low-level API ler) , klavye ve komut kontrolü , MIDlet 'in cihaz üzerine uygulanması ve cihaz üzerinde çalışan uygulama yönetimi gibi.MIDlet geliştiren bir programcının bu kavramlar dışında zamanlayıcılar (timers) , Cihaz üzerinde saklama (Persistent storage), ve ağ bağlantıları gibi kavramlarıda bilmesi gereklidir fakat bu kavramlar bu dökümanın konusu olarak ele alınmamıştır. MIDlet Yaşam Döngüsü (LifeCycle) Uygulama yönetim yazılım (AMS : Application Management Software) MIDlet'in install edildiği , çalıştırıldığı , durdurulduğu ve uninstall edildiği ortamdır. AMS için JAM (Java Application Manager) isimide kullanılır. AMS , her yeni MIDlet için bir instance oluşturur ve bu instance'ın çalıştırılmasını , durdurulması kontrol eder. Bir MIDlet aşağıdaki durumlardan herhangi birinde olabilir : Bir MIDlet ilk oluşturulduğunda ve çalıştığında Durdurulmuş (PAUSED) durumundadır. MIDlet ilk kurulurken (MIDlet constructor eventinde) bir hata olursa , MIDlet'in statüsü AMS tarafından Sonlandırılmış (DESTROYED) durumuna getirilir ve kurulum ve çalıştırma işlemi durdurulur.MIDlet Aktif durumundan Durdurulmuş (PAUSED) durumuna , MIDlet'in pauseApp() metodu çağırılısa yada durdurulmuş durumda olan bir MIDlet aktif hale getirilmek için startApp() metodu çağırıldığında , bu metod içindeki kod bir hata vermiş ise geçer. MIDlet durdurulmuş (PAUSED) durumundan aktif duruma MIDlet'in startApp() metodu çağırıldığında bu işlemin hata vermeden tamamlanması sonucu geçer. MIDlet 'in sonlandırılmış (DESTROYED) durumuna geçmesi için destroyApp(boolean) metodu çağırılmalıdır.Bu metod çağırıldığında cihaz üzerindeki tüm kaynaklar (hafıza, nesne referansları) serbest bırakılır ve böylece Garbage Collector (GC) MIDleti sonlandırabilir. destroyApp metodundaki boolean eğer "true" atanırsa , MIDlet hemen sonlandırma (destroy) durumuna geçer. Eğer "false" atanırsa MIDletStateChangeException oluşur ve MIDlet sonlandırma durumuna girmez. Bu durumların geçişlerini Şekil-2 de görebiliriz :
Şekil - 2 Bir programcının MIDletin aktif olduğu zamanlar için kod yazması gerekmesine rağmen , uygulamanın durdurulduğu yada sonlandırıldığı durumlardada işler yapması (o anki uygulamanın durumunun cihaz üzerinde saklanması , hafıza temizlik yada timerların durdurulması gibi) gerekiyorsa bu durumlar içinde kod yazmalıdır. MIDlet Kullanıcı Arayüzü Program Geliştirme Arayüzleri (API) MIDP kullanıcı arayüzlerini geliştirmek için iki farklı API vardır : Üst seviye API (High Level API) ve alt seviye API (Low Level API).İsimlerininde ifade ettikleri anlamlardan anlaşılacağı gibi , High Level API kolay ve hızlı program geliştirmekte kullanılan elemanları (Alert , Text Box , Form , List gibi) içerir. Low Level API ler ise tasarımın programcıya kaldığı geliştirme yöntemidir. Alt Seviye (Low Level) API ler soyut (abstract) bir sınıf olan " Canvas " sınıfını kullanırlarken , Üst seviye API ler ise gene bir soyut sınıf olan " Screen " sınıfını kullanırlar. Üst seviye API kullanılarak tasarlanan önyüzler birçok MID (Mobile Information Device) cihazda kullanılabilir.Kullanılan bileşenlerinin ekrandaki görünümü , yazı fontları , kaydırması (scrolling) , yönetimi (navigasyon) gibi özeliklerinin donanım ve önyüz görünümü olarak farklı cihazlarda çalışabilmesi , ancak tasarımda kullanılan nesnelerin ve özelliklerinin diğer cihazlardada desteklenmesi ile mümkün olur. Alt seviye (Low Level) API lerin kullandığı soyut sınıf olan "Canvas" sınıfı ile ekrana çizilen her nesnenin ve alt seviye klavye komutlarının üzerinde her türlü kontrole sahip oluruz.Fakat Alt seviye API ler kullanıldığında geliştirilen kodların farklı cihazlar (ekran boyu,renk ve farklı klavye tipleri) üzerinde çalışması için programcının ekstra gayret sarfetmesi gerekir. Şekil-3 te MIDP ekran tiplerinin sınıf şeması görülmektedir :
Şekil - 3 MIDlet Grubu (Suite) ve Uygulama Tanımlayıcı (Application Descriptors) Cihazlar üzerinde çalışan Uygulama Yönetim Yazılımı (Application Management Software) MIDlet ler için kurulum (instalation) , güncelleme , çalıştırma , durdurma ve silme işlemlerinin yapıldığı bir ortam sağlar. Bir veya daha fazla MIDlet bir JAR dosyası içinde olmak üzere bir MIDlet Grubu (Suite) oluştururlar.Aynı grup içindeki MIDlet ler çalışma esnasında aynı çalışma ortamını (execution environment) kullanırlar ve biribirileri ile etkileşim içindedirler. Her MIDlet grubunun JAR dosyası için, uygulama hakkında bilgi veren bir Uygulama Tanım (Application Descriptor) dosyası oluşturulmalıdır.Uygulama tanımlayıcısının MIME tipi "text/vnd.sun.j2me.app-descriptor" ve dosyanın uzantısı "jad" olarak belirlenmiştir. Bu tanım dosyası , cihazın uygulama yükleme ve çalıştırma işlemlerini yürüten Uygulama Yöneticisi tarafından kullanılır ve bu dosyanın içindeki bilgiler ile uygulama yöneticisi bu uygulamanın cihaz üzerinde çalışmaya uygun olup olmadığını belirler. Örnek : İki adet MIDlet (HelloWorldMIDlet ve BouncingTextMIDlet) için tek bir MIDlet grubu ve helloExamples.jad isimli uygulama tanım dosyası oluşturulmuştur.Uygulama tanım dosyasında (JAD) zorunlu olması gereken tanımlar , opsiyonel tanımlar ve uygulama değişkeni bulunmaktadır. Bu uygulama değişkeni sayesinde MIDletlere parametre geçirilebilir ve böylece JAR dosyası değişmeden bazı değerler uygulamalara parametre olarak gönderilebilir : Şekil - 4 MIDlet-1: HelloWorld , , example.hello.HelloWorldMIDlet MIDlet-2: BouncingText , , example.hello.BouncingTextMIDlet MIDlet-Jar-Size: 9222 MIDlet-Jar-URL: HelloExamples.jar MIDlet-Name: HelloExamples MIDlet-Vendor:Forum Nokia MIDlet-Version: 1.0.2 BouncingText-InitString: MIDP is fun ! Cihazın Uygulama Yöneticisi MIDlet grubunu yüklediğinde kullanıcıya hangi MIDlet 'i çalıştırmak istediğini seçmesini ister :
Şekil - 5 -> Makalenin Devamı için tıklayınız-> |