17 Ağustos 2008 Pazar

Mobil Uygulama Geliştirme

Not: Bu yazıya buradan da ulaşabilirsiniz.

Merhaba arkadaşlar,

Bu yazıda mobil uygulama geliştirmede hedefleyebileceğiniz çeşitli platformlardan, bunlar için uygulama geliştirilebilecek programlama dillerinden, kullanabileceğiniz IDElerden, ve telefon spesifik SDKlardan bahsedeceğim.


Platformlar


Aslen 2 ana platform var. Symbian ve Windows Mobile. En çok bunlar kullanılıyor.
Google Android ve iPhone'u da unutmamak lazım tabii; ancak onlar bu yazının konusu değiller.


Symbian'a JME(Java Micro Edition) ve Symbian C++ ile yazabiliyoruz. Ancak farketmişsinizdir; direk C++ yazmak yerine Symbian C++ yazdım; çünkü C++ biliyor olmanız rahat bir şekilde Symbian C++ da yazabileceğiniz anlamına gelmiyor. En basitinden Symbian C++'ta stringleri kullanamıyorsunuz; çünkü Symbian'ın yazılım geliştiricilere açtığı API'ler parametre olarak 'descriptor' adı verilen şeyler alıyor. Descriptorları kullanmalarının amacı string'leri yazılım geliştiriciler için daha güvenli bir hale getirmeleri imiş. Aynı zamanda descriptorlar unicode; c++ stringleri ise değil. Exception handling de dahil olmak üzere daha birçok konuda farklılıklar var. Ancak Symbian C++'a derinlemesine girmek istemiyorum; Symbian C++ cidden bir derya ve anlatılabilecek cidden çok fazla şey var.


Peki ya, neden Symbian C++'ı kullanıyoruz ki o zaman diyebilirsiniz; JME çok daha rahat yazılıyor sonuçta değil mi?


Evet, aslında bir bakıma haklısınız; eğer birşeyi JME'de yapabiliyorsanız orda yapmalısınız, size çok zaman kazandıracaktır. Ancak, bazı özellikler telefonlardaki JME implementasyonları tarafından desteklenmiyor. Örneğin cell id'yi JME'den alamıyorsunuz; symbian telefonların büyük bir kısmında. Eski 3650'de alınabiliyordu diye hatırlıyorum, N96'da da alınabilecekmiş; ancak dediğim gibi, telefon üreticisinin buna izin vermesi gerekiyor. Bu tip durumlarda native(yerli) kod kullanarak hangi Symbian telefon olursa olsun, Symbian'ın bize açmış olduğu herşeye erişebiliyoruz. Ancak tabi bu sefer de Symbian işletim sistemi olmayan telefonlarda çalışmıyor :( Görüldüğü gibi, bu bir tradeoff aslında; hangisi sizin durumunuza daha uygunsa onu seçmelisiniz.


Başka bir husus da tabii doğal olarak Symbian C++'ta yazılmış bir uygulama JME'den daha hızlı çalışacaktır yerli kod olduğu için. Her 2 dildeki aynı özelliklere sahip uygulama geliştirme süreleri göz önüne alındığında, bu hız farkı çok da önemli olmayabilir tabi duruma göre. Symbian C++ ve JME karşılaştırması hakkında son bir cümle daha söyleyeyim ve bitireyim: Symbian C++ çok daha güçlü; ancak çok daha eziyetli de güzel bir kelime olurdu :)


Symbian'a aynı zamanda Python'la da yazabilirsiniz, ancak daha önce herhangi bir tecrübem olmadı, o yüzden pek fazla birşey yazamayacağım bu konuda.


Symbian'a .NET'le yazabiliyor olmak ister miydiniz? Birkaç sene önce aslında buna izin veren bir firmanın IDE'si(Appforge CrossFire) vardı, ancak daha sonra Oracle şirketin entellektüel mülkiyetini satın almıştı ve şirket operasyonlarına son vermişti. O zamandan sonra bu mümkün olmamıştı, ancak şimdilerde yine bir firma bir library aracılığı ile Symbian'a .NET uygulamaları yazılmasına izin veriyor. Ancak Net60 adı verilen bu library paralı ve sadece .NET CF 1.0 uygulamaların geliştirilmesine izin veriyor. Hali hazırdaki .NET CF 1.0 uygulamalarınızı Symbian'da çalıştırabiliyorsunuz böylece.


Windows Mobile'a ise herhangi bir para ödemeden daha geniş bir dil havuzuyla yazabiliyoruz denebilir sanırım..


Windows Mobile için uygulamalar daha çok .NET framework'ü ile ve C# ile yazılıyor; ancak bildiğiniz gibi .NET framework'ü aslında herhangi bir dile has değil, bildiğim kadarıyla yaklaşık bir 35-40 dilde yazılabiliyor. Ancak bunların hepsi 'managed' olmuş oluyor, yani .NET framework sonuçta hepsini tek bir dile çeviriyor. 'Managed' olmayan bir şekilde C++ ile yazmak da mümkün tabii. Aynı zamanda JME ile de yazabiliyorsunuz, ancak ben hiç denemedim. Benim gözlemlediğim, C# ile gerektiğinde DLL çağrıları yaparak istediğiniz herşeyi yazabildiğiniz. Ancak yine de önceden belirttiğimiz gibi uygulamanızın geniş bir telefon yelpazesinde çalışmasını istiyorsanız JME vazgeçilemez durumda şu an.


IDEler


IDE'leri inceleyecek olursak; JME uygulamaları için Mobility Pack'li Netbeans en iyi seçenek gibi gözüküyor.(Eclipse ME de bir seçenek) Windows Mobile uygulamaları için tabii ki Visual Studio'yu, ve son olarak Symbian C++ için Nokia'nın Eclipse'i baz olarak alıp ve onu geliştirerek yarattığı bedava olan Carbide.c++ IDE'sini kullanabiliriz. Aslında bazı özellikler sadece 1 aylığına bedava,(telefon üzerinde debuglama gibi) bundan sonra gerekli ücreti ödeyerek satın almanız isteniyor kullanmaya devam etmek için.


SDKlar


Ancak IDEler dışında, hedeflediğiniz telefon platformu ve işletim sistemi için gerekli SDK'ları(Software Development Kit) da yüklemeniz gerekiyor. Örneğin N95 için 3rd Edition Feature Pack 1 SDK'sını yüklemiştim ben, ona uygulama geliştirdiğimde. Aynı zamanda Windows Mobile için de işletim sistemi versiyonlarına göre ayrılıyor. Windows Mobile 5.0 veya 6.0 SDK gibi işletim sistemi versiyonuna uygun SDKyı yüklemeniz gerekiyor uygulama geliştireceğiniz sisteme.


Hangi SDK'yı yüklemem gerektiğini nasıl anlayabilirim diyorsanız; dostumuz Google'a "[telefonModeli] spec" tarzında aramalarda bulunarak, telefonun spesifikasyonunun olduğu bir sayfaya yönlenip oradan gerekli bilgiyi alabilirsiniz.


Evet, şimdilik bu kadar, umarım faydalı olmuştur, aklıma başka şeyler gelirse gerektiğinde eklemede bulunabilirim.


Ozan Safi
Soru ve önerileriniz için: ozansafi@gmail.com

Hiç yorum yok: