29 Ocak 2012 Pazar

Android Platform Bileşenleri

Merhaba arkadaşlar,

Bugünkü yazımda Android programlamaya giriş seviyesinde kısa teorik bilgiler vermek istiyorum. Android programlamaya başlamadan önce platformla tanışmak programlama açısından size epey avantaj sağlayacaktır.

Android platformunun Open Handset Alliance grubu tarafından desteklenen ve geliştirilen açık kaynaklı bir platform olduğunu belirtmekte fayda var.

Şimdi öncelikle Android platformunun bileşenlerinden bahsetmek gerekiyor. Android denince sadece mobil cihazlar için geliştirilmiş bir işletim sistemi mi yoksa işletim sisteminden öte bir programlama arayüzü sağlayan bütün bir platform mu olduğuna bakacağız. Android platform'u ve bileşenlerini tanıtmak açısından şurdan arakladığım oldukça açıklayıcı diyagramı paylaşmak istiyorum





Yukarıdaki resimden görüldüğü gibi Android platformu işletim sistemi çekirdeğinden(kernel), uygulama katmanı ve uygulamalara kadar uzanan bütün bir platformdur. Bu bileşenlerden her birini kısaca ve örneklerle açıklayalım

Linux Kernel

Android platformunun en alt katmanıdır. Android kernel olarak Linux 2.6 nın kernel ini kullanmaktadır. Bu katmanda çekirdek sistem kütüphaneleri, memory yönetimi, process yönetimi, network stack, sürücü model gibi işletim sisteminin çok temel servisleri bulunmaktadır. Bu katmanda donanımla haberleşmek amacıyla cihaz sürücüleri bulunmaktadır. Örnek verecek olursak bu katmanda yer alan camera driver kamera ile bir üst katman arasında arayüz görevi görmektedir. Android açık bir platform olduğu için bir android cihazına sürücüsünü yazdığınız sürece fazladan bir donanım bağlayabilir ve platform içine kolaylıkla gömebilirsiniz. Kernel katmanı daha çok c programlama dili kullanılarak yazılmıştır.


Libraries

Bu katmanda üst katmana sunulmak üzere çeşitli c-c++kütüphaneleri bulunmaktadır. Katmanın esas amacı uygulama katmanı tarafından kullanılacak işlevleri uygulama programcıları açısından kolaylaştırmaktır. Ayrıca grafik kütüphaneleri gibi performans kritik kütüphanelerin kaynak kodu buradadır. Bu katman C ve C++ dilleriyle yazıldığı için performans açısından oldukça elverişlidir. Bu katmanda ayrıca Android Runtime, runtime için çekirdek kütüphaneler ve Dalvik Virtual Machine bulunmaktadır. Bunların her birine detaylı olarak değinmeyeceğim ancak kısaca anlatmakta fayda görüyorum. Android runtime ve ilgili çekirdek kütüphaneler Android platformunun çalışması için gerekli olan bileşenleri içerir. Dalvik Virtual Machine optimize edilmiş Java Virtual Machine'dır. Dalvik Virtual Machine class dosyalarını Dalvik executable (dex) dosyalarına çevirir. (2.2 Froyo ile birlikte JIT complier sayesinde bytecode'lardan native makine koduna çeviri yapabilmektedir) Dalvik Virtual Machine java kodlarını dex'e çevirirken JVM'e oranla daha performanslı kod üretebilmektedir ve mobil cihazlar için çok uygundur. Ayrıca native program yazıp derlemek isteyenler bu katmanı kullanabilirler.

Application Framework

Uygulama geliştiricilerin esas olarak ilgilenmesi ve bilgi sahibi olması gereken katman application framework katmanı. Türkçe'de bazen "uygulama çatısı" olarak da kullanılıyor fakat şahsen bu şekilde kullanmak çok yapay ve zorlama duruyor. Bu yüzden yazımda oturmuş bazı şeyler için türkçe karşılık kullanmaktan çekineceğim. Neyse konumuza dönersek; uygulama katmanında Android platformunun uygulama geliştiricileri açısından kolayca kullanılmak üzere bileşenler üzerine Java dilinde yazılmış bir framework olduğunu söyleyebiliriz. Burada bileşenden kastettiğim platform değil uygulama bileşenleridir. Peki uygulama bileşenleri nedir? Kullanıcı arayüzüne sahip bir programı düşünün, bir programda kullanıcıyla etkileşim kurmak üzere butonlar, metin alanları vs gibi grafiksel bileşenler, onların tetiklenmesi için gerekli özellikler olması gerektiğini bilirsiniz ve uygulama bileşeni olarak da kastedilen tam da budur. Android platformunun uygulamalar için geliştirdiği mimariyi bilmek ve ona göre düzgün programlar yazabilmek için uygulama katmanı iyice anlaşılmalıdır. Örneğin android uygulamalarının temel bileşenlerinden biri Activity'dir ve Activity Manager bu bileşeni yönetmek, bu bileşenle diğer bileşenler arasındaki kontrolü sağlayabilmek için vardır. Bunun gibi telefon özelliği taşıyan bir mobil cihazda Application Framework'ta bulunan Telephony Manager telefon işlevlerinin sağlanması için yazılmış bir framework'tur. Kısacası yazacağınız uygulamalarda size en yakın dost, en iyi aracı Application Framework'taki bileşenler olacaktır. Bu bileşenler ve yazacağınız uygulamaların ikisinin de Java dilinde yazılmış olması sebebiyle kolaylıkla istediğiniz bileşeni veya bileşenleri kullanabileceksiniz

Applications

Burada artık diğer katmanların en üzerinde çalışan uygulamalar vardır. Bir rehber uygulaması, sizin yazacağınız bir Hello World uygulaması bu katman sınırları içerisindedir ve siz eğer bir uygulama programcısı olacaksanız bu katmandaki bileşenleri artırmak sizin görevinizdir.

Bitirmeden önce bir kaç not eklemek gerekirse; Android'te uygulamaları genellikle Java dilinde yazarsınız. Bunun için JDK ile birlikte kullanmanız gereken Android SDK'dır. Eğer çok performans kritik bir işlem yapıyorsanız veya düşük düzeye ulaşması gereken bir işlem yaparsanız C, C++ dillerinde native kod yazabilirsiniz. Bunun için Android Native Development Kit (NDK) kullanmalısınız. Ayrıca yukarıda belirttiğim katmanlar içerisindeki bileşenleri en alt katmandan başlayarak genişletebilirsiniz. Android programlama geliştirmek için Java dilini en az temel düzeyde bilmelisiniz. Eğer C# gibi nesne yönelimli bir programlama dili biliyorsanız java öğrenmeniz çok kolay olacaktır fakat Java'yı bilmeniz gerektiği gerçeğini değiştirmez bu.

Bu yazıda Android platformunun kurulumu, gerekli araçlar ile ilgili bilgi vermek niyetinde değilim. Platformun kurulumuyla ilgili yazılmış çok fazla yazı var. http://developer.android.com/sdk/installing.html adresinden sdk yüklemeniz için adımlar var. Bundan sonraki yazılarımda platformun kurulmuş olduğunu varsayarak yazacağım. Lütfen yazıyla ilgili yorumlarınızı paylaşmaktan çekinmeyin. Yazıda hata, eksiklik ve fazlalık gibi durumlar varsa lütfen belirtiniz. Sağlıcakla kalın

1 yorum:

  1. Paylaştığınız bilgiler çok yararlı bilgiler . Herkesin bilmesi gerekiyor bunları . Karın germe olarak paylaşımlarınızın devamını bekleriz .

    YanıtlaSil