Mobil Uygulama Geliştirme

Note: This is the Turkish version of an introductory article about Mobile Application Development.

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

Merhaba arkadaşlar,

Son zamanlarda mobil uygulama geliştirmekle uğraşıyorum, ve sizlere de bir giriş yazısı hazırlayayım dedim.

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

10 Comments

  1. August 23, 2008 at 3:03 pm

    Guzel yazı olmuş Ozan, mobil programlama ile ilgilenmek isteyip ilgilenemeyenler için iyi bir başlangıç yazısı. devamını bekliyoruz.

  2. Ozan said,

    August 23, 2008 at 6:03 pm

    teşekkürler fuat; zaman elverdiği sürece yazmaya çalışacağım. iPhone’a yazılım geliştirmek hakkında da bir tane yazmayı düşünüyorum; aynı zamanda Windows Mobile ve JME için tutorial tarzında yazılar yazmak da var planlarım arasında.

  3. Mustafa Celik said,

    March 19, 2009 at 10:54 am

    Ozan ellerine sağlık,çok güzel olmuş.Devamını bekliyoruz

  4. April 3, 2009 at 8:31 am

    […] recorded first by eXtraordinarycat on 2009-02-17→ Mobil Uygulama Geliştirme […]

  5. kemal tutuman said,

    April 29, 2009 at 5:10 am

    bu yazı için teşekkürler,, kaynak olarak neler önerirsiniz özellikle symbian C++ ile yada j2me ile ilgili. symbian tabanlı sistemlere çalışacak java kodları oluşturduktan sonra nasıl derlenip telefon üzerinden çalıştırılabilir, java destekli tüm telefonlar aynı kod yapısını çalıştırabilirmi…

  6. Ozan said,

    May 1, 2009 at 3:02 am

    Selam Kemal,
    JME için türkçe kaynak olarak şuna bakmıştım ben:
    http://www.godoro.com/Divisions/Ehil/Mahzen/Java/J2ME/txt/html/category_top.html
    Symbian C++ için de şunlara bakabilirsin:
    http://www.symbiantutorial.org/symbian-tutorial/
    http://www.mikolaj.zalewski.pl/symbdev/tut/tut5.php
    http://www.newlc.com/en/Getting-started-with-Symbian%2C134.html

    Kullandığın APIlerin telefon tarafından desteklenmesi gerekiyor, yani Java destekleyen her telefonda çalışmıyor kodun. Ayrıca her telefonun desteklediği CLDC konfigürasyonları ve profiller de farklı; projeyi açarken ona göre açmalısın.

    • kemal Tutuman said,

      May 7, 2009 at 12:42 am

      Verdiğiniz bilgiler için gerçekten teşekkür ederim, düşündüğüm bir projeyi geliştirmek için bu konularda bilgimi kısa zamanda arttırmak istiyorum. Eğer verdiğiniz kurslar varsa ders almak yada sizinle tanışmak isterim..

      • Ozan said,

        May 12, 2009 at 8:56 am

        Merhaba,
        Geçtiğimiz hafta biraz yoğundum ancak cevap yazabiliyorum.
        Herhangi bir yerde ders vermiyorum aslında, ancak geçmişte özel ders vermişliğim var. Tanışabiliriz tabii.

  7. kemal said,

    August 2, 2009 at 8:25 pm

    Çok memnun olurum. Benim telefonum 0532 2550248 . Uygun bir zamanınızda görüşmek isterim…

    Sevgiler

  8. Uğur Akgöz said,

    February 23, 2011 at 7:55 pm

    Bilgiler için teşekkürler, bu konuda daha çok konu başlığı bekleriz.


Leave a reply to Ozan Cancel reply