Android genel olarak mobil cihazlarda çalışan bir işletim sistemi olarak bilinsede aslında işletim sistemi artı bir ara katman ve e-mail istemcisi, sms programı, takvim, google maps, telefon rehberi vb. gibi bir kaç çekirdek programdan oluşur diyebiliriz. Tabi android'i kullanacağınız ortama göre bunlar değişiklik gösterebilir. Örneğin bir tablet pc'de telefon rehberi pek işinize yaramayabilir.
Şimdi biraz daha teknik konulara girelim.
Android Mimarisi
Aşağıdaki diagram Android mimarisini temel bileşenleriyle gösteriyor.
Aşağıdaki diagram Android mimarisini temel bileşenleriyle gösteriyor.
Uygulamalar
Yukarıda bahsedildiği gibi e e-mail istemcisi, sms programı, takvim, google maps, telefon rehberi gibi temel uygulamalar ve sonradan yüklediğiniz 3. parti yazılımlar(twitter istemcisi gibi)
Uygulama Çatısı
Android yazılım geliştiriciler için oldukça zengin bir platform sunar. Geliştiriciler yazılımlarında donanım bilgileri, lokasyon bilgisi, arka plan servisleri gibi bir çok bilgiye hiç bir kısıt olmadan rahatlıkla erişebilirler. Bunun dışında uygulamalar kendi servislerini diğer uygulamalarla paylaşabilirler ve diğer uygulamaların sundukları servislere erişebilirler. (Telefon rehberi kayıtlarına erişebilmek gibi).
Kütüphaneler
Android içerisinde yer alan genelde c ve c++ yazılmış olan kütüphanelerdir. Sistem kütüphaneleri, mp3, mpeg4, jpg gibi ses ve görüntü formatları için medya kütüphaneler, veri tabanı için sqlite kütüphaneleri gibi temel kütüphaneleri bulunur. Genellikle bunlara uygulama çatısı aracılığıyla erişiriz.
Android Runtime
Android alt seviye işler için (hafıza yönetimi, donanım sürücüleri gibi) linux kernelini kullanmaktadır ve temel java kütüphanelerini içerir.
Anroid uygulamaları Dalvik adı verilen sanal makine üzerinde çalıştırılır. Dalvik java uygulamaları çalıştırmak üzere google tarafından geliştirilmiş bir sanal makinedir. jvm'e göre memory yönetimi mobil aygıtlar gibi küçük cihazlarda daha performanslı çalışmak üzerine tasarlanmıştır.
Temel uygulama yapısı
Android uygulamaları java programlama diliyle yazılır ve dalvik sanal makinesi üzerinde çalışır. Uygulama uzantısı .apk'dır. Bir .apk dosyasını telefonunuza atarak android paket yöneticisi aracılığı ile kurabilirsiniz.
Her android uygulaması ayrı bir linux processi şeklinde çalışır. Bir uygulama çalışmak istediğinde android yeni bir process yaratır ve uygulama kapatılana kadar bu process altında çalışır. Tabi sistem kaynakları yeterli olmadığı durumda android uygulamalanın kapatılması beklenmeden processi sonlandırabilir.
Android'in en önemli özelliklerinden birisi de bir uygulamanın diğer bir uygulamayı ve onun istenilen parçalarını kullanabiliyor olmasıdır. (Uygulamanın buna izin vermesi halinde) Örneğin uygulamanızın bir dizi resimi kaydırması gerekiyor ve başka bir uygulama bu işi çok iyi yapıyor ve başka uygulamaların bu özelliği kullanmasına izin vermişse siz uygulamanızdan bu uygulama parçasını çağırabiliyorsunuz. Yani bu sizi büyük bir iş yükünden kurtarmış oluyor.
Bunu yapabilmek için sistemin bir uygulama processi yaratıp gerekli java objelerini hazırlaması gerekir. Androidde diğer sistemlerden alışkın olduğumuz tek bir main() methodu yoktur. Onun yerine ihtiyaç duyulduğunda çalıştırılmak üzere 4 temel bileşenden oluşur.
1)Aktiviteler
Bir aktiviteyi kullanıcıyla iletişimde olan bir form gibi düşünebilirsiniz. Örneğin bir mesajlaşma uygulaması mesaj gönderilecek kişiyi seçmek için kişileri listeleyen bir aktiviteye sahip olabilir. 2. aktivite seçilen kişiye mesaj yazmayı sağlarken bir diğer aktivite de gönderilen mesajları gösterebilir. Tüm aktiviteler birlikte çalışıyor gibi görünsede her aktivite bir birinden bağımsız çalışır ve Activity sınıfının alt sınıflarıdır.
Bir uygulama tek bir aktiviteye ya da mesajlaşma uygulamasındaki gibi bir çok aktiviteye sahip olabilir. Genelde uygulamalar ilk açıldıklarında aktif olan bir aktivite ve o aktivite aracılığı ile aktive edilen diğer aktiviteler şeklinde çalışır.
Servisler
Servislerin görsel bir arayüzü yoktur, servisler genellikle arkaplan işlerini gerçekleştirmek için kullanılırlar.
Bir müzik çaları düşünelim, listeden bir şarkıyı seçeriz dinlemeye başlarız. Fakat bu sırada başka işlerimizide halletmek isteriz (tarayıcıda gezmek gibi) Bunun için müzik çaların ekranını kapatırız (activiteyi sonlandırırız). İşte servisler tam bu sırada işimize yarıyor. Aktivite kapatılırken arka planda müziğin çalması için servisleri kullanırız.
Broadcast receivers
Broadcast receiverslar batarya zayıf, sistem dili değiştirildi gibi sistem tarafından üretilen ya da diğer yazılımlar tarafından üretilen mesajları dinlemek ve yanıt vermek için kullanılır. Broadcastler bir arayüz görüntülemezler fakat bir mesaj alındığında yeni bir activity başlatabilirler ya da NotificationManager'i kullanarak kullanıcıyı bilgilendirebilirler. Bunlar telefonu titreterek, bir ses çalarak vs. olabilir. Genellikle sistemin tepesinde gördüğümüz uyarılarla görüntülenebilirler.
İçerik Sağlayıcılar
İçerik sağlayıcılar uygulamalarımız verilerini diğer uygulamaların kullanımına açmak için kullanılır.
Genel anlamda Android uygulamalarının çalışma mantığını anlatmaya çalıştım. İleriki yazılarda örnek uygulamalarda ekleyerek bu terimlerin daha iyi yerleşeceğini umuyorum.