İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır
Zafer Teker
tekzaf@yahoo.com

Taşınabilir Midlet Yaratmak

Java'nın ünlü sloganını bilirsiniz. "Bir kere yaz her yerde çalıştır-write once, run anywhere". Bu slogan cep telefonları için o kadarda geçerli değil. Çünkü cep telefonlarının özellikleri birbirinden çok farklı. Bu farklar hafıza kullanımı, database kullanımı (RMS-Record Manager System), ekran boyutu ve renk desteği, network destekleri olabilir. Yaptığınız programın bu birbirinden çok farklı özelliklere sahip cihazların hepsinde çalışması çok zor. Ancak birbirine yakın özelliklerdeki telefonlarda program çalışabilir. Ancak siz yine bir kere yazın ve tüm cihazlarda deneyin.

Özellikle şunlar sorun çıkarmaktadır.

Peki bu durumda ne yapılabilir. İlk ve en temiz çözüm sadece 1 cihaz için program geliştirmektir. Örneğin " Ben SonyEricsson P800 için program geliştiriyorum" diyebilirsiniz. İkinci çözüm ise her ortam için ayrı program yapmak. Örneğin önce P800 için program geliştiriyorsunuz. Daha sonra kodda bazı değişiklikler yaparak Nokia 7650'de çalışabilir hale getiriyorsunuz. Bunun için programınız başka platformalara bir kaç kod değişikliği ile uyarlanabilir halde olmalıdır. Örneğin ekran boyutuna ihtiyacınız varsa bunu ortamdan alabilirsiniz. Örneğin Canvas class'ında getWidth ve getHeight method'ları sizin için canvas'ın bilgisini verir. Böylece yaptığınız program değişik boyutlu ekranlarda çalışabilecek durumda olur. 3. yöntem ise programın istediğiniz platfomlarda sorunsuz çalışabilecek şekilde yapılmasıdır. Bu zor bir süreçtir. Her cihaz için ayrı denemeler yapmanız gerekir. Eğer bir cihazda bir özellik sorun çıkarıyorsa o özellik yerine başka bir özellik kullanabilirsiniz. Böylece istediğiniz tüm cihazlarda çalışacak bir program yaratabilirsiniz.

Cep telefonlarının çoğunda MIDP1.0 desteklenmektedir. Teorik olarak siz bu profile'a göre program yaparsanız MIDP1.0 desteklendiği telefonlarda programınız sorunsuz çalışır. Ancak gerçek böyle değil. Bunun nedeni telefon üreticilerin MIDP1.0 profile desteklerinin yanlış ve hatalı olmasıdır. Bu hatalar bazen küçük bazen de çok büyük hatalar olabiliyor. Örneğin yaptığım bir midlette bir text field kullandım. Bu text field'ın en fazla 1000 karakter kabul etmesini istedim. Denediğim telefonlarda sorunsuz çalıştı. Ancak Motorola 008 'de denediğimde text field'in boyu ekranı kaplamıştı. (Bir text field sadece tek bir satır olmalıdır. Aşağıya doğru büyümez.) en fazla 10 karakter dediğim zaman ise doğru göstermekteydi. (Motorola 008 ilk java destekli telefonlardandır. Bu yüzden bu tür hatalar olması normal.) Başka telefonlarda başka hatalar bulunmakta. İnşallah MIDP2.0'da bu tür bug'lar en aza indirilir. Hatta MIDP profile'ını doğru desteklemeyen telefonlara lisans verilmeyebilir. Bu güzel bir çözüm olurdu.

En zor süreç ise test süreci. Bir programı emulator'de test etmenin fazla bir anlamı yok. En başta emulator bilgisayarın ortamını kullanmakta. Bazı emülatorler ise arkada SUN'un geliştirdiği J2MEWirelessToolkit'i kullanıyorlar. Emulatorde sadece görüntü telefonun görüntüsü o kadar. Bu yüzden en iyi test etme yöntemi programı telefona kurmaktır. Bu da bir hayli vakit kaybettiren bir iş. Ve programı kurduktan sonra tüm durumları denemeniz gerekir. Bu yüzden cep telefonu üreticlerinin sitelerinden bug listesini almanız iyi olur.

Son olarak söylemek gerekir ki J2ME geçekten çok zor bir işe girişmiş. Birbirinden çok farklı cihazlar için standart bir ortam geliştirmeye çalışmış. Bunu kısmen başarmıştır. Diğer dillerde bu tür şeyleri düşünmek imkansızdır. Bu yüzden bu konuda javayı eleştirmek haksızlık olur. Üstelik henüz yolun başındayız. Giderek daha kolay taşınabilir midletler geliştirilebileciğini düşünüyorum.

İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır