Java ME ve olası yükseliş imkanı

____________________________________________________________________

Cep telefonları, cep bilgisayarları ve akıllı telefonlar günden güne hayatımızda daha fazla yer ediniyor. Trend metrelere göre de birçok gencin aklına bilgisayardan önce cep telefonu gelmeye başlamış durumda, yani bilgisayarım olmasa da cep telefonum olsun diyor. Tabi cep telefonlarının artan ilgi çeken yönlerinden biri de sahip oldukları fonksiyonları arttıran ve çeşitlendiren uygulamaları. Bu mobil araçlarda birçok mobil uygulama çalıştırılabiliyor ve bunlar ile yanımızda bir bilgisayar taşıma zorunluluğu olmadan çok farklı fonksiyona ulaşabiliyoruz. Ne var ki mobil platformlarda bol bir çeşitlilik var ki bir platform için geliştirilmiş bir uygulama başka bir platformda çalışmıyor. Bu platforma dağınıklığına platform bağımsızlığı iddiasıyla çözüm ise Java ME teknolojisi.

Önceden Symbian, Windows CE, Palm, BlackBerry gibi akıllı telefon işletim sistemleri çok yaygınken bazı üreticiler de bunlar yerine kendi gerçek zamanlı işletim sistemlerini kullanırdı ki bunlara pek akıllı telefon denmezdi. Java ME platformu ise tüm bu cihazlarda çalışmayı başararak hepsi için ortak bir uygulama ve oyun platformu oluşturdu. Mesela kendi işletim sistemlerini kullanan ve bu sebeple uygulama yükleme şansı pek olmayan işletim sistemlerine de Java ME yazılımı eklenerek uygulama desteği getirilmiş oldu ve bu da akıllı telefonlarla rekabetlerini sağladı tabii ki de.

Åžu anda ise yukarıdaki iÅŸletim sistemlerine Google’ın geliÅŸtirdiÄŸi Android ve Samsung’un geliÅŸtirdiÄŸi Bada OS’ da ekleniyor. BlackBerry cihazlar için de tek uygulama geliÅŸtirme yolu Java ME mesela. Apple’ın iPhone’u ise kısıtlamalarına raÄŸmen çok baÅŸarılı bir platform olsa da emülatör ve sanal makine uygulamaları yasak olduÄŸundan konumuz dışında.

Sorun:

Öncelikle bu kadar işletim sistemi için ayrı ayrı programlar geliştirmek uygulama geliştirme maliyetini arttırıyor. Geliştirilen bir uygulama sadece bir platforma hitap ediyor ki bu da desteklediği mobil cihaz sayısını azaltıyor. Yazılan kodu farklı platformlara uyarlamak da zor olabiliyor ki programın başka bir platform için yeniden yazılması ile sonuçlanabiliyor. Sonuç da her mobil dili bilen az sayıda uygulama geliştiriciye yüksek maaş ile iş vermek, ya da çok sayıda birer dil bilen geliştiriciye maaş vererek aynı masrafı onlara da yapmak gibi çeşitli maaş kombinasyonları.

Çözüm Java ME!

Java ME platformu ise çoÄŸu platform için bir kez geliÅŸtirilerek bu platformlara aynı kaynak koda sahip birçok uygulamanın bir kez yazılmasını saÄŸlayabiliyor. Cihaza Java ME yazılımını hazırlama iÅŸini Sun, IBM, Esmertec, Aplix gibi sanal makine geliÅŸtiricileri ya da üreticiler kendi yazılım takımlarına Sun’ın Java ME standartlarına uyarak yapabiliyor. Java ME standardına uygun geliÅŸtirilmiÅŸ tüm sanal makinelerin geliÅŸtirilen Java kodlu uygulamalara vereceÄŸi tepkiler aynı. Uygulama geliÅŸtiriciler için kolaylık ise bir kez yazdıkları kodun birden fazla cihazda çalışması. Böyle olunca da bir ÅŸirkette farklı platformlar için çok sayıda uygulama geliÅŸtiriciye ihtiyaç kalmıyor. Az sayıda iÅŸlerini iyi yapan Java geliÅŸtiricileri yeterince iÅŸ görebiliyor.

Problemler de olmasa!

Ne yazık ki madalyonun diÄŸer yüzü Java ME ile çalışmayı biraz zorlaÅŸtırıyor. Java ne kadar platform bağımsızlığı iddiaları ile yükselmiÅŸ olsa da mobil ortamda platform bağımsızlığı çok kolay bir ÅŸey deÄŸil. Bunun nedeni deÄŸiÅŸen ekran çözünürlükleri, veri giriÅŸ yöntemleri, sanal makine farklılıkları. Bir kez mobil ortamlarda ekran çözünürlükleri PC platformunda olduÄŸundan çok daha fazla. 110 x 90 ekran çözünürlüğüne sahip mobil cihaz da var 840 x 480 ekran çözünürlüğü olan da. Bu problem neyse ki Java ME uygulama geliÅŸtiricisinin biraz daha fazla çabası ile çözülebiliyor. GiriÅŸ yöntemleri ise genellikle tuÅŸ takımından ve dokunmatik ekrandan olmak üzere ikiye ayrılıyor. GeliÅŸtiriciler iki giriÅŸ yöntemi için de kod yazmak zorunda. Ayrıca dokunmatik ekran desteÄŸi de Java ME’de çok kapsamlı deÄŸil ve uygulama geliÅŸtiricinin sanal klavye geliÅŸtirmesini de gerektirebiliyor. Bir de sanal makine üreticilerinin sebep oldukları farklılıklar var ki bunlar biraz daha çözmesi zor problemler. Mesela bazı cihazların Java sanal makinelerinin Java uygulamalarına ayırdığı nesne belleÄŸi 512 KB ve civarı. BaÅŸka cihazlar ise 1.5 – 2 MB’a kadar sabit ya da 4 MB’a kadar deÄŸiÅŸebilen dinamik bellek miktarlarına sahipti ki kod ve standart özellikleri olarak tüm cihazlarda çalışabilecek 3D oyunlar bellek problemi nedeniyle her cihazda çalışmıyordu. Bundan baÅŸka iÅŸlemci farklılıkları nedeniyle performans farklılıkları meseleleri de var. Ha kendi geliÅŸtirdiÄŸim Cep Ingilizce ve TR Sözlük gibi uygulamalar ise son moda olan ama Java uygulama sınırları 1 MB olan uygulamalar yüzünden bu cihazlarda çalışmıyordu. Problemler ile biraz daha detaylı olarak Cep telefonunda Java yazısını yazmıştım.

Bu gibi problemler Java ME’nin Sun tarafından yeterince standartlaÅŸmış olmamasının sonucu. Mesela Java ME MIDP 2.0 desteÄŸi olacak her cihazda 5 MB Java uygulaması yüklenebilmeli, uygulamanın bellekte oluÅŸturacağı nesneler için 1.5 MB bellek olmalı, 200 MHz ARM iÅŸlemcisi ya da xxx iÅŸlemci gücüne sahip bir iÅŸlemcisi olmalı gibi sert standartlar olsa  Java ME uygulamaları çok daha baÅŸarılı olabilirdi.

Biraz rahatlama:

Bu problemler yüzünden Java’nın platform bağımsızlığı özelliÄŸini tam olarak kullanmak imkansız deÄŸil. Ancak yine de bir çok uygulama bunlara takılmadan geliÅŸtirilebilir. Öncelikle geliÅŸtirilen uygulamalar video uygulaması ya da 3D oyunlar olmadıkça iÅŸlem gücü problemi pek de önemli olmayabilir. Zaten video uygulamaları platformun kendisinde de iÅŸlemciye çok fazla yüklenerek çalışıyor ve hatta iÅŸlemcilerin donanımsal video hızlandırıcılarını kullanarak çalışıyor. Bu sebeple video uygulamalarını Java ME ile yazmak sadece bir problem üretmekten baÅŸka bir ÅŸey deÄŸildir. 3D oyunlarda ise hızlanan cep telefonu iÅŸlemcileriyle iÅŸler biraz daha rahat. ÇoÄŸu yeni iÅŸlemci 500 MHz gibi hızlarda çalışıyor ki QVGA çözünürlükte 3D oyunları rahatça oynatabiliyorlar. Burada tabi mobil cihaz olduÄŸnu düşünerek farklı optimizasyonlar da yapılabilir ki oyun rahatça oynanabilir. Bellek problemi için ise geliÅŸtiriciler biraz daha fazla dikkatli olmaz zorunda. Bellek meselesi için de uygulamalar aynı anda 500 KB üzerinde nesne oluÅŸturmama fikri düşünülerek optimizasyonlar mümkün. Sanal makine ile ilgili diÄŸer meseleler ise biraz çözümü zor olan ÅŸeyler.

Özetle, mobil platformlardaki artan çeÅŸitlilik aslında Java ME uygulama geliÅŸtiricileri için iyi bir fırsat olabilir. Mobil uygulama geliÅŸtirmenin artan önemi karşısında mobil operatörler de bunları çeÅŸitli yarışmalarla destekliyor. (ÖR; Turkcell.) Ancak Java ME’nin standart eksikliÄŸi iÅŸi zorlaÅŸtırıyor. Yani Java’nın platform bağımsızlığı özelliÄŸini mobil alanda biraz etkisizleÅŸtiriyor ya da kısıtlıyor. Buna raÄŸmen çok yüksek hıza ve belleÄŸe ihtiyaç duymayan uygulamalar Java ME ile geliÅŸtirilip, diÄŸerleri platform bağımlı uygulamalar ÅŸeklinde geliÅŸtirilerek buna bir çözüm saÄŸlanabilir.

Not: Şu uygulama geliştirme yarışmasına ben de katılmak istiyorum ama aklımda fikir yok. 🙂 Fikir eksikliği çekiyorum. 😀

Yorum yok

Henüz bir yorum yok.

Bu yazıdaki yorumlar için RSS beslemesi. Geri izleme URI

Yorum yaz