User:Wielkimaly/sandbox

Porównanie Java i Android API

Ten artykuł porównuje Java, Android API oraz Maszyna wirtualna. Podczas gdy większość aplikacji na android zostało napisanych w Java, istnieje dużo różnic pomiędzy Java API i Android API. Android nie używa Wirtualna maszyna Javy, ale innej nazwanej Dalvik (maszyna wirtualna).

Maszyna wirtualna Dalvik w Androidzie
Android nie ma Wirtualna maszyna Javy. Kod bajtowy Javy nie jest wykonywany. Zamiast tego klasy Javy są kompilowane do plików wykonywalnych Dalvik oraz uruchamiane na maszynie wirtualnej (VM )Dalvik (maszyna wirtualna), zaprojektowanej specjalnie dla Androida. W przeciwieństwie do Wirtualna maszyna Javy, która jest Maszyna stosowa, Dalvik VM posiada Maszyna rejestrowa. Dalvik ma pewne specyficzne cechy, które odróżniają go od innych maszyn wirtualnych: Ponieważ kod bajtowy ładowny przez VM Dalvik nie jest kodem bajtowym Java, oraz Dalvik w specyficzny sposób ładuje klasy, nie jest możliwe załadowanie pakietów bibliotek Java jako plików jar, a nawet musi użyć specyficznej logiki aby załadować biblioteki Androida.
 * został zaprojektowany, aby wykorzystywać mniej miejsca.
 * Stała pula została zmodyfikowana do używania jedynie 32-bitowych indeksów w celu uproszczenia interpretera
 * Standardowy kod bajtowy Javy wykonuje 8-bitowe instrukcje stosu. Zmienne lokalne muszą być kopiowane do lub z operandu stosu przez oddzielną instrukcję. Dalvik zamiast tego używa własnego 16-to bitowego zestawu instrukcji, który działa bezpośrednio na zmiennych lokalnych. Zmienna lokalna jest zwykle odbierana przez pola 4-bitowego wirtualnego rejestru.

Właściwości systemu
Tak jak to ma miejsce w przypadku klasy System dla Java SE, klasa System Androida pozwala na pobieranie właściwości systemu. Jednakże niektóre właściwości zdefiniowane w maszynie wirtualnej Java nie mają znaczenia, lub posiadają inne znaczenie na Androidzie. Na przykład:
 * "java.version" właściwość ta zwraca 0, ponieważ nie jest używana na Androidzie
 * "java.specification.version" zawsze zwraca 0.9 niezależnie od wersji używanego systemu Android
 * "java.class.version" zawsze zwraca 50 niezależnie od wersji używanego systemu Android
 * "user.dir" ma inne znaczenie na Androidzie
 * "user.home" i "user.name" właściwości te nie istnieją na Androidzie

Bibliteka Class
Dalwik nie jest dostosowany do Java Platform, Standard Edition ani do bibliotek klasy Java Platform, Micro Edition (na przykład klasy Java Platform, Micro Edition,Abstract Window Toolkit lub Swing (Java) nie są wspierane). Zamiast tego używa własnych bibliotek zbudowanych na podstawie implementacji Apache Harmony Java.

Pakiet java.lang
Domyślnie, podstawowy strumień wyjścia [System.out] oraz [System.err] nic nie wyświetla, a deweloperzy są zachęcani do używania klasy Log, który rejestruje dane tekstowe za pomocą narzędzia LogCat.

Biblioteka „Graphics and Widget”
Android nie używa Abstract Window Toolkit ani biblioteki Swing (Java). Interfejs użytkownika jest zbudowany przy użyciu obiektów View. Android używa struktury podobnej do Swing opartej wokół Views zamiast JComponents. Jednakże widżety Androida to nie JavaBeans: aplikacja na Androida – Context musi być dostarczona do widżetu podczas tworzenia.

Look and feel
Biblioteka widżetów dla Androida nie wspiera. Look and Feel widżetów Androida musi być osadzone w nich samych. Istnieje jednak ograniczona możliwość ustawienia stylów oraz motywów dla aplikacji.

Zarządca układu graficznego
W przeciwieństwie do Javy w której zarządcy układu mogą być zastosowani do każdego kontenera, zachowanie zarządcy w Androidzie jest zakodowane w samych kontenerach.

Zobacz także

 * Android (system operacyjny)
 * Dalvik (maszyna wirtualna)
 * Java