ANDROID
ANDROID NEDİR?
Android, Linux çekirdek yapısını kullanan bir işletim sistemidir. Google, Open Handset Alliance ve özgür yazılım bileşkeleri tarafından ortaya konulmaktadır. Asıl amacı dokunmatik ekranlar için tasarlanan Android, düşük fiyatlı ve özelleştirilebilen işletim sistemi arayan yüksek teknolojiye sahip cihazlar arasında da en göze çarpanlarından biridir. Teknoloji artık yaşamımızın her yerinde olduğundan dolayı android sistemlerde birçok alana yayılmıştır. Başlarda bu sadece tablet ve akıllı telefonları alanı arasına alsa da, günümüzde araçlar, televizyonlar, saatler, oyun konsolları ve dijital kameralar gibi cihazlarda da kullanılmaya başlanmıştır.
2007 yılında pek çok yazılım, donanım, telekomünikasyon firmalarının destekte bulunduğu Open Handset Alliance adı verilen şirketler birliği sayesinde ortaya çıkan Android’in kaynak kodları iki farklı lisans kullanmaktadır. Kullandığı Linux çekirdeği GPL, diğer dış bileşenler ise Apache Lisansı ile dağıtıma sunulmaktadır.Bu şekilde olan yapıların sayesinde yazılımcıları ve geliştiricileri Android sistemine katkıda ve destekte bulunması konusunda yüreklendirerek, sistemin sürekli gelişmesini yeni özellikler katmasını sağlamaktadır. Android sistemelerde kullanıcıların sadece bir takım kişilerin koydukları kısıtlamaları kabul etmeyip onu geliştirebilen, kendi zevkine göre dizayn edebilen ve yeni sürüm güncellemesi gelmeyen kullanıcılar için yapılmış CyanogenMod veya Miui gibi Android sürümlerinin de (custom ROM) ekosisteme dâhil olmasını sağlamaktadır.
1. Android’in Özellikleri
Android platformu OpenGL (Open Graphics Library) ile VGA, 2D ve 3D grafik kütüphaneleri ile uyumu sağlanmıştır. SQLite veritabanı, Firebase Database veri depolama aracı olarak kullanılabilir.
Android GSM/EDGE, IDEN, CDMA, EV-DO, UMTS, Bluetooth, Wi-Fi, LTE, NFC ve WiMAX teknolojilerini desteklemektedir. Mesaj servisleri ile ilişkili olarak SMS ve, Android Push Messaging, MMS, C2DM (Android Cloud To Device Messaging), GCM (Google Cloud Messaging) FCM (Firebase Cloud Messaging) teknolojileri ile desteklenmektedir.
Android web tarayıcı olarak açık kaynak kodlu WebKit Application Framework’u kullanmaktadır. Bu framework Chrome V8 JavaScript Engine bağlantılıdır.
Android uygulamalr java ile yazılmaktadır fakat Android sistemi içerisinde Java Virtual Machine mevcut değildir.Java sınıfları Dalvik çalıştırılabilir dosyaları haline getirilerek Android sisteme özgü bir virtual machine olan Dalvik sistemde çalıştırılır. J2ME desteği ise ancak 3. parti uygulamalar sayesinde elde edilebilir.
Android, özgür bir işletim sistemidir ve Google kaynak kodunun büyük bir kısmını Apache License 2.0 ile yayınlamaktadır. Linux çekirdeğine ait değişikliklerse GNU General Public License 2.0 altında yayımlanmaktadır.
2.Android İşletim Sistemi Mimarisi
Android sisteminin Google, Open Handset Alliance ve özgür yazılım geliştiricileri tarafından oluşturulan bir mobil işletim sistemi olduğundan bahsetmiştim.Android işletim sistemi 4 ana gruptan oluşmaktadır.Bunlar;
Çekirdek (Kernel)
Sistem Kütüphaneleri
Uygulama Geliştirme Çatıları(Frameworks)
Yerleşik Temel Uygulamalar şeklindedir.
Android mimarisi aşağıdaki şekildeki gibidir.
2.1. Linux Kernel Yapısı
Android platformunun temelini Linux çekirdeği oluşturmaktadır. Örneğin, Android Runtime (ART) , iş parçacığı ve düşük seviyeli bellek yönetimi gibi temel işlevler için Linux çekirdeğini kullanır.Linux çekirdeğine Android için eklelen ya da özgür yazılım geliştiricileri tarafından oluşturulan bu kodlar ve kütüphaneler Genel Kamu Lisansına sahiptir.Fakat diğer kısımları üretici olan firmaların kendi kapalı ROM’larını oluşturmalarına izin verir ama Apache Lisansı ile birlikte dağıtılmaktadır. Bir Linux çekirdeğini kullanabilir hale getirmek için Android’in temel güvenlik özelliklerinden fayda sağlamasına ve cihaz üreticilerinin iyi bilinen bir çekirdek için donanım sürücülerini geliştirmelerine olanak vermektedir. Linux çekirdeğinin doğrudan kaynak sağladığı yapıları şu şekilde sıralayabiliriz;
Security (güvenlik)
Memory (bellek)
Process (hafıza ve süreç) kontrolü
Dosyalama ve bağlantı için I/O işlemleri ve cihaz sürücüleridir.
Çekirdekte Android için özelleştirilmiş başlıca alanlar ise güç kontrolü, paylaşılan hafıza, low memory killer ve süreçler arası iletişimi kuvvetlendirmek içindir.
Bu katmanda kısaca donanımsal içerikler bulunmaktadır.(Wi-Fi Sürücüleri, Kamera Sürücüleri, Görüntü Ve Görüntü Sürücüleri, Güç Denetimi, Klavye Sürücüleri, Ses Sürücüleri, İşlem Ve Hafıza Denetimi).
2.2. Hardware Abstraction Layer (Hal)
Donanım soyutlama düzeyi (HAL) üst düzey için Java API çerçevesi ile cihaz donanım özelliklerini açığa çıkartarak standart arabirimleri bize sunmaktadır. Donanım soyutlama düzeyi (HAL) , ses, kamera, bluetooth gibi belirli modülleri gibi belirli bir donanım bileşeni, türü için bir arabirim uygulayan ve sistematik şekilde çalışmasını sağlayan birden çok kitaplık modülünden oluşmaktadır. Bir çerçeve API, cihaz donanımına erişmek için bir çağrı yaptığında, Android sistemi bu donanım bileşeni için kitaplık modülünü yükler. Ve yüklenen bu modül sayesinde kullanıcın işlemini gerçekleştirmesi için modülün çalışması sağlanır.Bu katmanın amaçlarından biri de hemen sisteme erişebilmesini engelleyerek bir arabirim oluşturmasıdır. Böylelikle güvenlik daha iyi şekilde elde edilebilir.
2.3 Android Runtime
Android Runtime, android cihazları mobil Linux uygulamasından ayıran en önemli katman olarak yer almaktadır. Bu katmanı oluşturan iki bileşen vardır. Bunlar Dalvik Sanal Makine ve Çekirdek Kütüphanaleridir. Android sürümü 5.0 (API seviyesi 21) veya daha üst düzeyini çalıştıran cihazlar için her uygulama kendi sürecinde ve kendi Android Runtime (ART) sistemiyle çalışmaktadır. ART, en düşük bellek ayak izi bırakmak için yenilenmiş ve Android için özel olarak hazırlanmış olan bir bayt kodu formatında DEX dosyalarını çalıştırarak minimum bellekli cihazlarda birden fazla sanal makine çalıştırmak üzere hazırlanmıştır. ART’ın başlıca temel özelliklerinden bazıları şunlardır:
Optimize edilmiş çöp toplama (GC)
Zamanın ilerisinde (AOT)
Tam zamanında (JIT) derleme
Android 9 (API seviyesi 28) ve daha yüksek sürümlerde, bir uygulama paketinin Dalvik Yürütülebilir format (DEX) dosyalarının daha kompakt makine koduna dönüştürülmesi. Özel bir örnekleme görüntü oluşturucusu, ayrıntılı teşhis istisnaları ve kilitlenme sorunu raporlaması ve belirli alanları izlemek için izleme noktalarını ayarlama yeteneği de sisteme dahil olmak üzere daha iyi hata ayıklama desteği vermektedir. Android Runtime (ART) ise Dalvik’e alternatif olarak 4.4 sürümünde gelmiştir fakat 5.0 ile Dalvik’in yerini almıştır. Uygulamanız ART üzerinde iyi çalışıyorsa, Dalvik’te de çalışmalıdır, ancak bunun tersi doğru olmayabilir . Android ayrıca alt seviye işler için Java API yörüngesinde kullandığı bazı Java 8 dil özellikleri dâhil olmak üzere Java programlama dilinin işlemlerinin çoğunu sağlayan bir dizi temel çalışma zamanı kütüphanesi içermektedir.
2.4 Native C/C++ Libraries
ART ve HAL’e benzer birçok temel Android sistem bileşenleri ve hizmeti, C ve C ++ ile yazılmış lokal kitaplıkların bulunması gereken lokal kodlardan oluşturulmaktadır. Android sistemi, bu lokal kitaplıklardan bazılarının fonksiyonlarını uygulamalara sunmak için Java çerçeve API’leri sağlamaktadır. Örneğin, ulaşabildiğiniz OpenGL ES Android çerçevenin içinden Java OpenGL API çizimlerini ve uygulamanızda 2D ve 3D grafik manipülasyonu sağlamak için kullanılabilir. Android işletim sisteminde verilerin saklanabileceği SQLite veri tabanları vardır. Burada gerekli kütüphanelerde yer almaktadır. C veya C++ diliyle bir uygulama geliştiriyorsanız lokal kodunuza erişmek için Android NKK’yı sisteminizde kullanabilirsiniz.
2.5 Java API Framework
Android işletim sisteminin tüm özelliklerini Java dilinde yazılmış API’ler aracılığıyla kullanabilirsiniz. API’ler sayesinde aşağıda bahsettiğim modülleri, sistemleri ve hizmetleri yeniden kullanımlarını kolaylaştırarak oluşturacağınız Android uygulamaları için ihtiyaç duyduğunuz parçaları oluşturmanızda kolaylık sağlayacaktır. Uygulama geliştiriciler , Android sistem uygulamalarının kullandığı aynı çerçeve API’lerine tam erişime ulaşabilirler. Görüntüleme Sistemi: Uygulamanın kullanıcı ara yüzünü oluşturabilmeniz için genişletilmiş bir sistemdir. Kaynak Yöneticisi: Kod dışı yani grafikler, diziler ve düzen dosyaları gibi ihtiyaç duyulan kaynaklara erişim sağlamanızı kolaylaştırır. Bildirim Yöneticisi :Oluşturulan tüm uygulamaların durum çubuğunda özel bildirimler görüntülemesini sağlayan bir yapıdır. İçerik Sağlayıcılar: Uygulamalardaki verilerin paylaşılmasını sağlar. Örneğin müzik, rehber gibi verilerin uygulamalar tarafından erişimini sağlamaktadır. Aktivite Yöneticisi: Uygulamaların etkinliklerini yönetir.
2.6. System Apps
Android, e-posta, SMS mesajlaşma, takvimler, internet taraması, kişiler ve daha fazla uygulama ile birlikte gelir. Bunun sayesinde kişilerin herhangi bir işlem yapmasına gerek kalmadan sistemi kullanarak işlemlerini gerçekleştirebilir. Sistem uygulamaları, hem kullanıcılar için uygulama işlevi görür hem de geliştiricilerin kendi uygulamalarından erişebilecekleri başlıca özellikleri sağlamaktadır.