İçeriğe atla

Dalvik (yazılım)

Dalvik
Dalvik yazılımıyla çalışan bir Motorola
Geliştirici(ler)Google
Geliştirme durumuDurduruldu
Programlama diliC, C++
PlatformAndroid, ARM mimarisi, MIPS mimarisi, x86
TürÇalıştırma ortamı
LisansApache Lisansı
Resmî sitesisource.android.com/devices/tech/dalvik/index.html Bunu Vikiveri'de düzenleyin
Kod deposu Bunu Vikiveri'de düzenleyin

Dalvik yazılımı Google tarafından geliştirilmiş, Android için yazılmış uygulamaları yürüten ve şu an durdurulan sanal makine (VM) 'dir.[1] Dalvik, Android 4.4 "KitKat" ve önceki Android sürümlerinin yazılım yığınının ayrılmaz bir parçasıdır; tipik olarak cep telefonları ve tablet bilgisayarlar gibi mobil cihazlarda ve daha yakınlarda Smart TV'ler ve giyilebilir bilgisayar gibi cihazlarda kullanılırdı. Dalvik, açık kaynaklı yazılım, Dan Bornstein tarafından yazılmıştır ve ismini Eyjafjörður, İzlanda da yerleşen Dalvik balıkçı köyünden almıştır.[2] Android için programlar yaygın olarak Java ile yazılmış ve Java sanal makinesi için baytkodu derlemiştir. Daha sonra Dalvik bytecodeye çevrilmiş ve .dex (Yürütülebilir Dalvik Dosyası) ve .odex (Optimize Edilmiş Yürütülebilir Dalvik Dosyası) dosyalarında saklanır. Kompakt Dalvik yürütülebilir biçimi sistemleri için tasarlanmış, bellek ve işlemci hızı açısından sınırlandırılmıştır.[3]

Dalvik ve ART mimarileri karşılaştırılması

Dalvik'in halefi, Android Runtime (ART) 'dir; aynı bayt kodu ve .dex dosyaları kullanır (ancak .odex dosyası olmayan), son kullanıcılara şeffaf performans iyileştirmeleri hedefler.[4] Yeni çalıştırma ortamı, bir teknoloji önizlemesi olarak Android KitKat sürümünde ilk kez yer aldı ve tamamen sonraki sürümlerinde Dalvik yerine geldi; Android 5.0 "Lollipop"-tan başlayan sürümler sadece ART ile çalışıyorlar.

Mimari

İstif makineleri Java'nın aksine Dalvik VM, genellikle daha karmaşık, sanal makine talimatları, daha az gerektiren bir kayıt tabanlı mimari kullanır.[5] Dalvik programları, Android uygulama programlama arabirimi (API) kullanarak Java dilinde yazılmış, Java bytecode derlenmiş ve gerektiği gibi Dalvik talimatlara dönüştürülür. dx denilen bir araç .dex biçime Java .class dosyalarını dönüştürmek için kullanılır. Çoklu sınıflar tek bir .dex dosyasında bulunur. Yinelenen dizeleri ve çoklu sınıf dosyalarında kullanılan diğer sabitler sadece bir kez .dex-de dahildir. Java bytecode da Dalvik VM tarafından kullanılan alternatif bir komut kümesine dönüştürülür.

Sıkıştırılmamış .dex dosyası, genellikle boyut olarak aynı sınıf dosyalarından türetilmiş sıkıştırılmış bir Java arşivinden (JAR) birkaç yüzde küçüktür. Bir mobil cihaz üzerine monte edildiğinde Dalvik yürütülebilir tekrar modifiye edilebilir. Daha fazla optimizasyonları kazanmak için bayt sırası, bazı verilerde takas edilebilir, veri yapıları ve fonksiyon kütüphaneleri basit çevrimiçi bağlantılı olabilir ve boş sınıf nesneleri kısa devre olabilir.

Düşük bellek gereksinimleri için optimize edilen Dalvik'in bazı özel özellikleri vardır:[6]

  • VM az alanı kullanmak için aşağı zayıflama oldu.
  • "Sabit havuz" yalnızca 32 bit endeksleri kullanmak için yorumlayıcını basitleştirmek için modifiye edilmiştir.
  • Standart Java bytecode 8-bit yığın talimatları gerçekleştirir. Yerel değişkenlerin ayrı talimatlardan işlenen yığınından kopyalanması gerekir. Dalvik yerel değişkenler üzerinde doğrudan çalışır, kendi 16-bit komut setini kullanır. Yerel değişken yaygın 4-bit "sanal register" alanı tarafından seçilir. Bu, Dalvik talimat sayısını düşürür ve tercüman hızını yükseltir.

Google'a göre, Dalvik tasarımı verimli VM-den birden çok örneğini çalıştırmak için bir cihaz izin verir. Android 2.2 "Froyo", Dalvik içine iz tabanlı just-in-time (JIT) derleme getirdi, sürekli uygulamaları her zaman profilleme ile uygulamaların yürütülmesine optimize edir. Dalvik uygulamanın baytkodunu geri kalanını, "ipucu" olarak adlandırılan bu kısa baytkod segmentlerinin yerli yürütme, yorumlayıcı ederken, önemli performans geliştirmeleri sağlar.[7][8]

Performans

Kayıt-tabanlı yaklaşımlara karşı yığın makinelerin göreli yararları devam eden tartışma konusudur. Genellikle yığın tabanlı makineler yığın üzerinde veri yüklemek ve bu verileri işlemek için talimatları kullanmaları gerekir ve böylece aynı yüksek seviyede kodu uygulamak için kayıt makineleri daha fazla talimat gerektirir, ama bir kayıt makinesinde talimatların kaynak ve hedef kayıtlarının kodlamak gerekir ve bu nedenle, daha büyük olma eğilimindedir.[9] Testler Oracle (Java teknolojisinin sahibi) tarafından 2010 yılında ARMv7 cihazlarda yapıldı. Standart olmayan grafik Java kriterler ile Android 2.2 JIT tabanlı Dalvik VM-e göre (JIT derleyicisi içeren ilk Android sürümü) Java SE HotSpot VM 2-3 kat daha hızlı gömülü gösterdi. 2012 yılında, akademik kriterler aynı Android cihazında HotSpot ve Dalvik arasında 3 faktör doğruladı, ayrıca Dalvík kodunun HotSpot-dan daha küçük olmayan olduğuna dikkat çekti. Ayrıca, Mart 2014 itibarıyla, hala bir Android cihaz üzerinde gerçekleştirilen kriterler 100 yerli uygulamalar ve Dalvik uygulaması arasında bir faktör gösterir.

Lisanslama ve patentler

Dalvik Apache Lisansı 2.0 şartları altında yayınlandı. Google standart Java çalışma zamanı üstünde bir gelişmenin yerine Dalvikin bir temiz oda uygulaması olduğunu söylüyor. Oracle ve bazı yorumcular buna itiraz etdiler. 2009 yılı Nisan ayında Oracle Sun Microsystemsi satın aldı ve Oracle bu nedenle Java haklarına sahiptir. 12 Ağustos 2010 tarihinde, telif hakları ve patent iddia ihlali üzerine Google'ye dava açtı.[10] Oracle, Googleni, Android'i gelişmekte, bilerek, doğrudan ve sürekli olarak Oracle'ın Java ile ilgili fikrî mülkiyetini ihlal ettiğini iddia etti. Mayıs 2012'de, bu durumda jüri Googlenin Oracle'ın patentleri ihlal etmediğini buldu ve duruşma hakimi Google tarafından kullanılan Java API'lerin yapısının telif olmadığına karar verdi.[11] Taraflar kopyalanan kodun 9 hatları için yasal tazminat sıfır dolara anlaştılar.[12] 9 Mayıs 2014 tarihinde, Federal Devre ABD Mahkemesi kısmen bölge kararı bozmuştur, Oracle lehine iktidar etti ve ve bölge mahkemesine geri adil kullanım sorununu geri gönderdi.

Kaynakça

  1. ^ "Arşivlenmiş kopya". 16 Temmuz 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 8 Ağustos 2016. 
  2. ^ "Arşivlenmiş kopya". 11 Ocak 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 8 Ağustos 2016. 
  3. ^ "Arşivlenmiş kopya". 13 Ekim 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 8 Ağustos 2016. 
  4. ^ "Arşivlenmiş kopya". 17 Nisan 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 8 Ağustos 2016. 
  5. ^ "Arşivlenmiş kopya". 17 Ağustos 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 8 Ağustos 2016. 
  6. ^ "Arşivlenmiş kopya". 4 Ağustos 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 8 Ağustos 2016. 
  7. ^ "Arşivlenmiş kopya" (PDF). 6 Kasım 2015 tarihinde kaynağından (PDF) arşivlendi. Erişim tarihi: 8 Ağustos 2016. 
  8. ^ "Arşivlenmiş kopya". 8 Nisan 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 8 Ağustos 2016. 
  9. ^ "Arşivlenmiş kopya" (PDF). 2 Ekim 2016 tarihinde kaynağından arşivlendi (PDF). Erişim tarihi: 8 Ağustos 2016. 
  10. ^ "Arşivlenmiş kopya". 9 Ağustos 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 8 Ağustos 2016. 
  11. ^ "Arşivlenmiş kopya". 2 Haziran 2012 tarihinde kaynağından arşivlendi. Erişim tarihi: 8 Ağustos 2016. 
  12. ^ "Arşivlenmiş kopya". 14 Temmuz 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 8 Ağustos 2016. 

Dış bağlantılar

Ayrıca bakınız

İlgili Araştırma Makaleleri

<span class="mw-page-title-main">Java</span> açık kaynak kodlu, nesneye yönelik, zeminden bağımsız, yüksek verimli, çok işlevli, yüksek seviye, adım adım işletilen bir programlama dili

Java, Sun Microsystems mühendislerinden James Gosling tarafından geliştirilmeye başlanmış açık kaynak kodlu, nesneye yönelik, platform bağımsız, yüksek verimli, çok işlevli, yüksek seviye, hem yorumlanan hem de derlenen bir dildir.

<span class="mw-page-title-main">Derleyici</span> kaynak kodunu bilgisayarın işleyebileceği koda dönüştüren program

Derleyici, kaynak kodu makine koduna dönüştüren yazılımdır. Bir programlama dilinin derleyicisi, o programlama dili kullanılarak yazılmış olan kodu hedef işlemci mimarisine göre uygun şekilde makine koduna derler ve genellikle çıktı olarak yürütülebilir dosyanın oluşturulmasını sağlar. Bu eyleme derleme denir. Bir başka ifadeyle derleyici, bir tür yazı işleyicidir; girdi olarak yazı alır ve çıktı olarak yazı verir.

<span class="mw-page-title-main">Android</span> Mobil işletim sistemi

Android, Google ve Open Handset Alliance tarafından, cep telefonları, tabletler ve televizyonlar için geliştirilmekte olan, Linux tabanlı, özgür ve ücretsiz bir işletim sistemidir. Sistem açık kaynak kodlu olsa da, kodlarının ufak ama çok önemli bir kısmı Google tarafından kapalı tutulmaktadır. Google tarafından ücretsiz sunulmasının sebebi, sistemin daha hızlı ve çabuk gelişmesi, birçok popüler marka tarafından kullanılması ve bu sayede reklamlarının daha fazla kişiye ulaşmasını sağlamaktır. Google, Android sistemi üzerinde çalışan Google Play marketteki oyun ve uygulamalar üzerinde aldığı reklamları yayınlayarak para kazanmaktadır. Android'in desteklenen uygulama uzantısı ".apk"dır.

Chrome OS, Google tarafından geliştirilen Linux çekirdeğini kullanan, web uygulamaları ile çalışan işletim sistemidir. 7 Temmuz 2009 tarihinde duyurulan Chrome OS, 15 Haziran 2011 tarihinde Chromebook ile piyasaya çıkmıştır. Chrome OS bilinenin aksine özgür yazılım değildir.

<span class="mw-page-title-main">Java sanal makinesi</span>

Java Sanal Makinesi (JSM), Java platformunun nesne modülü formatı olan class uzantılı sınıf dosyalarının belleğe yüklenip çalıştırılması için gereken hizmetleri sunan bir sistem programıdır ve temel görevinin sınıf dosyalarını yorumlamak olduğu söylenebilir. Ancak, JSM'ni salt bir yorumlayıcı olarak görmek büyük haksızlık olur. Zira, yorumlama ile birlikte JSM'nin şu görevleri de vardır.

Java Geliştirme Kiti (JDK) Java geliştiricilerine yönelik bir Oracle Corporation ürünüdür. Java'nın kullanıma sunulmasından beri en geniş kullanım alanı bulan Java SDK'dır. 17 Ekim 2006'da, Sun GNU General Public License (GPL) altında sunulacağını duyurdu ki bu özgür yazılım olacağı anlamına geliyordu. Bunun gerçekleşmesi ise 8 Mayıs 2007'de oldu; Sun kaynak kodu OpenJDK'ya bağışladı.

Bilgi işlem platformu, bir uygulama yazılımı çalıştırmak için donanım mimarisi ve bir yazılım çerçevesi, yazılım, çeşitli bazı kombinasyon veya sıralamalarını içermektedir. Tipik platformlarda bir bilgisayar mimari, işletim sistemi, programlama dilleri ve ilgili kullanıcı arabirimi içerir.

<span class="mw-page-title-main">APK</span> android işletim sistemi uygulama dosyası biçimi

APK ya da tam adıyla Android Package Kit, Android platformunda kullanılan öntanımlı paket dosyası formatıdır.

<span class="mw-page-title-main">Android KitKat</span> android işletim sisteminin 4.4 sürümü

Android KitKat veya Android 4.4 - 4.4.4 KitKat Android sürümünün Google tarafından geliştirilen 11. sürümüdür. Sürümün ilk 4.4 sürümü 31 Ekim 2013 yılında kullanıcılara tanıtılmıştır. Sürüm Linux kernel 3.10 bazında yaratıldı.

<span class="mw-page-title-main">Android Nougat</span> Android işletim sisteminin yedinci ana sürümü

Android 7.0 - 7.1.2 "Nougat" Android sürümünün Google tarafından geliştirilen 14. versiyonudur. Yeni sürümün daha önceki kod adı Android N oldu. 9 Mart 2016 tarihinde önce mevcut Nexus cihazları için fabrika görüntüleri ile bir geliştirici önizlemesi olarak yeni "Android Beta Programı" ile piyasaya sürüldü. Versiyon API level 24'te oluşturulmuştur. Resmen ilk olarak Google Nexus cihazları için güncelleme almakla, 22 Ağustos 2016 tarihinde serbest bırakıldı. LG V20, Nuga ile piyasaya çıkan ilk akıllı telefon oldu.

<span class="mw-page-title-main">Android Runtime</span>

Android Runtime veya ART, Google tarafından geliştirilen, Android işletim sistemi tarafından kullanılan Bir uygulama çalıştırma ortamıdır. Android tarafından kullanılan işlem sanal makine, Dalvik-in yerini almıştır. ART yerli talimatlar içine uygulamanın bayt çevirisini (Bytecode) gerçekleştirir, daha sonra cihazın çalışma ortamını yürütür.

<span class="mw-page-title-main">Nokia X platform</span>

Nokia X platform, Bir Linux tabanlı mobil işletim sistemi ve yazılım platformudur. ilk olarak Nokia, sonradan Microsoft Mobile tarafından tarafından geliştirildi. C, C++, Java dilinde yazılmıştır. 24 Şubat 2014 tarihinde tanıtılan sistem Android'den çatallıdır ve Nokia X ailesinin tüm cihazlarında kullanılır.

Evrensel Windows Platformu Microsoft tarafından oluşturulmuş ve ilk olarak Windows 10'da tanıtılan, platforma özgü bir uygulama mimarisidir. Bu yazılım platformunun amacı, her biri için yeniden yazılmaya gerek kalmadan Windows 10, Windows 11 ve Windows 10 Mobile'da çalışan evrensel Windows Platformu uygulamaların geliştirilmesine yardımcı olmaktır. C++, C#, Visual Basic .NET veya XAML kullanarak Windows uygulaması geliştirmeyi destekler. API, C++ ile uygulanır ve C++, VB.NET, C#, F# ve JavaScript'de desteklenir. Windows Server 2012 ve Windows 8'de ilk tanıtılan Windows Runtime platformunun bir uzantısı olarak tasarlanan UWP, geliştiricilere potansiyel olarak birden fazla cihazda çalışacak uygulamalar oluşturmasına olanak tanır

<span class="mw-page-title-main">Nexus 9</span>

Nexus 9, Android işletim sistemini çalıştıran Google ve HTC tarafından ortak olarak geliştirilen bir tablet bilgisayardır. Nexus 10-un yerini aldı. Nexus 9, 15 Ekim 2014'te önceden sipariş verildi ve 17 Ekim'de piyasaya çıktı. 3 Kasım 2014 tarihinde serbest bırakıldı. 12 Aralık 2014 tarihinde ABD'de 4G LTE sürümü yayınlandı. Google tarafından pazarlanan ve bir OEM ortak tarafından inşa edilen bir dizi Android tüketici cihazı olan Google Nexus serisindeki dördüncü tablettir. Cihaz iki saklama boyutunda, 16 GB ve 32 GB olarak mevcuttur.

<span class="mw-page-title-main">Android yazılımı geliştirme</span>

Android yazılım geliştirmesi Android işletim sistemi için yeni uygulamaların oluşturulduğu süreçtir. Uygulamalar genellikle Android yazılım geliştirme kiti (SDK) kullanılarak Java programlama dilinde geliştirilir; ancak diğer geliştirme ortamları da mevcuttur. Google, Android uygulamaları Kotlin, Java ve C++ dilleri kullanılarak Android yazılım geliştirme kiti (SDK) kullanılarak yazılabilir" ve diğer dilleri kullanmak da mümkün olduğunu belirtiyor. Go, JavaScript, C, C++ veya Assembly gibi Java sanal makinesi (JVM) dışı tüm diller, muhtemelen kısıtlı API desteğiyle araçlar tarafından sağlanabilecek JVM dil kodunun yardımına ihtiyaç duyar.

JIT ; bilgisayar kodunu çalıştırmanın bir yoludur. Yürütülmeden önce bir program yürütülürken çalışma zamanında derleyici içerir. Genellikle bu, kaynak kodu ve daha sonradan makine diline bytecode kod çevirisini içerir ve bu kod doğrudan doğruya çalıştırılır. Bir JIT derleyicisi uygulayan bir sistem genellikle yürütülen kodu sürekli olarak analiz eder, daha sonra derleme veya tekrar derlemeden elde edilen hızlanmanın bu kodun derlenmesinin yükünden daha ağır olacağı kod bölümlerini tanımlar.

AOT derlemesi C veya C++ gibi daha üst düzey bir programlama dili, Java bytecode veya .NET Framework Ortak Ara Dil kodu gibi bir ara temsilciliğin yerli bir makine diline derleme eylemidir. Sonuçta ortaya çıkan ikili dosya yerel olarak çalıştırılabilir.

TJIT, bir programın çalışma zamanında yürütülmesinin program optimizasyonunu yapmak için sanal makineler tarafından kullanılan bir tekniktir. Bu, sık yürütülen işlemlerin doğrusal bir sırasını kaydetmek, bunları yerel makine dili koduna derlemek ve yürütmek suretiyle yapılır. Bu yöntem bazında çalışan geleneksel just-in-time (JIT) derleyicilere karşıdır.

<span class="mw-page-title-main">Xamarin</span>

Xamarin, Mayıs 2011'de Mono, Xamarin.Android ve Xamarin.iOS'u yaratan mühendisler tarafından kurulan ve Microsoft'un sahip olduğu San Francisco merkezli bir yazılım şirketidir. Ortak Dil Altyapısı (CLI) ve Ortak Dil Özellikleri'nin platform uygulamalarıdır.

VMOS, konuk işletim sistemi olarak başka bir Android işletim sistemini çalıştırabilen, Android üzerinde bir sanal makine uygulamasıdır. Kullanıcılar isteğe bağlı olarak konuk Android sanal makinesini köklü bir Android işletim sistemi olarak çalıştırabilir. VMOS konuk Android işletim sisteminin Google Play Store ve diğer Google uygulamalarına erişimi vardır. VMOS, Android için Google Play hizmetlerini ve diğer Google uygulamalarını destekleyen ilk sanal makineydi.