Porovnání Java a Android API - Comparison of Java and Android API
Tento článek porovnává aplikační programovací rozhraní (API) a virtuální stroje (VM) programovacího jazyka Jáva a operační systém Android.
Zatímco většina aplikací pro Android je napsána v jazyce Java, existují určité rozdíly mezi Java API a Android API a Android se nespustí Bajtový kód Java tradičním Virtuální stroj Java (JVM), ale místo toho a Dalvik virtuální stroj ve starších verzích systému Android a Android Runtime (ART) v novějších verzích, které kompilují stejný kód, na který běží Dalvik Spustitelný a propojitelný formát (ELF) spustitelné soubory obsahující strojový kód.
Bajtový kód Java v archivu Java (SKLENICE ) soubory Android zařízení neprovádí. Místo toho jsou třídy Java kompilovány do proprietárního formátu bytecode a běží dál Dalvik (nebo jeho kompilovaná verze s novějším ART), specializovaný virtuální stroj (VM) určený pro Android. Na rozdíl od virtuálních počítačů Java, které jsou stohovací stroje (stack-based architecture), je Dalvik VM a zaregistrovat stroj (architektura založená na registrech).
Dalvik má některé vlastnosti, které ho odlišují od ostatních standardních virtuálních počítačů:[1]
- Virtuální počítač byl navržen tak, aby využíval méně místa.
- The stálý bazén byl upraven pouze pro použití 32-bit indexy pro zjednodušení tlumočník.
- Standardní bajtový kód Java provádí 8bitové pokyny k zásobníku. Místní proměnné musí být zkopírovány do nebo ze zásobníku operandů samostatnými pokyny. Dalvik místo toho používá vlastní 16bitovou instrukční sadu, která pracuje přímo na lokálních proměnných. Místní proměnná je běžně vybírána 4bitovým způsobem virtuální registr pole.
Protože bytecode načtený virtuálním strojem Dalvik není bajtový kód Java a vzhledem k tomu, jak Dalvik načítá třídy, je nemožné načíst balíčky knihoven jako soubory jar. K načtení knihoven Androidu, ve kterých je obsah podkladu, je nutné použít jiný postup dex
soubor musí být před načtením zkopírován do oblasti soukromého interního úložiště aplikace.[2]
Systémové vlastnosti
Stejně jako v případě Java SE třída Systém
, Android Systém
třída umožňuje načítání vlastností systému. Některé povinné vlastnosti definované pro virtuální stroj Java však nemají v systému Android žádný význam nebo jiný význam. Například:
java.verze
vlastnost vrací 0, protože se v systému Android nepoužívá.java.specification.version
vždy vrátí 0,9 nezávisle na použité verzi Androidu.java.class.verze
vždy vrátí 50 nezávisle na použité verzi Androidu.uživatel.dir
má v systému Android jiný význam.uživatel.home
auživatelské jméno
vlastnosti v systému Android neexistují.
Knihovna tříd
Aktuální verze Androidu používají nejnovější jazyk Java a jeho knihovny (ale nejsou plné grafické uživatelské prostředí (GUI) frameworks), nikoli Apache Harmony Implementace Java, kterou používaly starší verze. Java 8 zdrojový kód, který funguje v nejnovější verzi systému Android, lze nastavit tak, aby fungoval ve starších verzích systému Android[Citace je zapotřebí ].
balíček java.lang
Ve výchozím nastavení výchozí výstupní proud System.out
a System.err
nic nevydávejte,[3] a vývojářům se doporučuje používat Log
třída, která zaznamenává řetězce do nástroje LogCat.[4] To se změnilo alespoň z HoneyComb a nyní se také zobrazí na konzole protokolu.
Knihovna grafik a widgetů
Android nepoužívá Sada nástrojů pro abstraktní okna ani Houpačka knihovna. Uživatelská rozhraní jsou vytvářeny pomocí objektů View. Android používá rámec podobný Swingu, založený na Pohled
spíše než JComponent
s. Widgety pro Android však nejsou JavaBeans: aplikace pro Android Kontext
musí být poskytnut widgetu při vytváření.
Podívejte se a cítit
Knihovna widgetů pro Android nepodporuje a zapojitelný vzhled a chování architektura. Vzhled a chování widgetů pro Android musí být součástí widgetů. Existuje však omezená schopnost nastavit styly a motivy pro aplikaci.[5]
Správce rozložení
Na rozdíl od Swingu kde správci rozvržení lze použít na jakýkoli widget kontejneru „Chování rozložení Androidu je zakódováno v kontejnerech.[6]
balíček java.beans
Android obsahuje pouze malou podmnožinu java.beans
balíček (PropertyChangeEvent
a související třídy).
Viz také
Reference
- ^ Rose, John (2008-05-31). „with Android and Dalvik at Google I / O“. Archivovány od originál dne 04.06.2008. Citováno 2008-06-08.
- ^ Fred Chung (2011-07-28). „Načítání vlastní třídy v Dalviku“. Google. Archivovány od originál dne 18. 2. 2014. Citováno 2011-11-27.
- ^ „Android Debug Bridge“. Google. Citováno 2009-05-31.
Ve výchozím nastavení systém Android odesílá výstup stdout a stderr (System.out a System.err) do / dev / null.
- ^ „Čtení a zápis protokolů“. Google. Archivovány od originál dne 22.11.2011. Citováno 2011-11-27.
- ^ „Použití stylů a motivů“. Google. Archivovány od originál dne 2014-03-28. Citováno 2011-09-03.
- ^ "Společné objekty rozložení". Google. Citováno 2011-09-03.