Dalvik to historyczne środowisko uruchomieniowe aplikacji w systemie Android, odpowiedzialne za wykonywanie kodu napisanego w języku Java. Było to rozwiązanie stosowane w Androidzie od pierwszych wersji systemu aż do Androida 4.4, zanim zostało zastąpione przez ART (Android Runtime).
Dalvik został zaprojektowany specjalnie z myślą o urządzeniach mobilnych, które w pierwszych latach rozwoju Androida miały bardzo ograniczoną ilość pamięci RAM, słabe procesory i niewielką moc obliczeniową. Jego głównym celem była efektywność i oszczędność zasobów.
Dlaczego powstał Dalvik
Standardowa maszyna wirtualna Java (JVM) nie była zoptymalizowana pod kątem urządzeń mobilnych. Wymagała stosunkowo dużej ilości pamięci i była projektowana z myślą o komputerach desktopowych oraz serwerach.
Zespół Androida stworzył więc Dalvika jako alternatywną maszynę wirtualną, która:
- działała na zmodyfikowanym modelu wykonywania kodu,
- była zoptymalizowana pod kątem niskiego zużycia pamięci,
- umożliwiała uruchamianie wielu aplikacji jednocześnie w izolowanych instancjach,
- była lepiej przystosowana do architektury ARM.
Każda aplikacja w Androidzie działała w osobnym procesie z własną instancją Dalvika, co zwiększało stabilność i bezpieczeństwo systemu.
Jak działał Dalvik
Aplikacje Android były pisane w Javie (a później również w Kotlinie), a następnie kompilowane do plików .class.
W kolejnym kroku pliki te były przekształcane do formatu .dex (Dalvik Executable), który był zoptymalizowany pod kątem:
- mniejszego rozmiaru,
- efektywnego zarządzania pamięcią,
- współdzielenia klas między aplikacjami.
Dalvik korzystał z mechanizmu JIT (Just-In-Time compilation), który kompilował kod do postaci natywnej w trakcie wykonywania programu. Oznaczało to, że aplikacja przy pierwszym uruchomieniu była interpretowana, a często wykonywane fragmenty kodu były dynamicznie kompilowane w celu zwiększenia wydajności.
Zalety Dalvika
- niskie zużycie pamięci w porównaniu do klasycznej JVM,
- izolacja aplikacji w osobnych procesach,
- dostosowanie do architektury mobilnej,
- dobra skalowalność w pierwszych generacjach smartfonów,
- otwarta architektura wspierająca rozwój Androida.
Dzięki Dalvikowi Android mógł działać na szerokiej gamie urządzeń – od tanich smartfonów po bardziej zaawansowane modele.
Ograniczenia Dalvika
Mimo swoich zalet Dalvik miał też istotne wady:
- wolniejsze uruchamianie aplikacji,
- wyższe zużycie CPU przy interpretacji kodu,
- ograniczenia wydajności przy bardziej złożonych aplikacjach,
- zależność od kompilacji JIT w czasie rzeczywistym,
- większe obciążenie baterii w porównaniu do późniejszego ART.
Wraz ze wzrostem mocy urządzeń mobilnych pojawiła się potrzeba bardziej wydajnego rozwiązania.
Dalvik vs ART
W Androidzie 4.4 wprowadzono opcjonalnie nowe środowisko – ART (Android Runtime), które od Androida 5.0 całkowicie zastąpiło Dalvika.
Najważniejsze różnice:
- Dalvik używał głównie kompilacji JIT,
- ART wprowadził kompilację AOT (Ahead-Of-Time) podczas instalacji aplikacji,
- ART oferował szybsze uruchamianie aplikacji i lepszą wydajność,
- ART poprawił zarządzanie pamięcią i działanie garbage collectora.
Dzięki ART aplikacje uruchamiają się szybciej i działają bardziej płynnie niż w czasach Dalvika.
Znaczenie Dalvika
Dalvik odegrał kluczową rolę w początkowym sukcesie Androida. Był dostosowany do realiów sprzętowych pierwszych smartfonów i umożliwił dynamiczny rozwój ekosystemu aplikacji mobilnych.
Choć dziś nie jest już używany w nowych wersjach systemu, pozostaje ważnym elementem historii Androida i rozwoju środowisk uruchomieniowych dla urządzeń mobilnych.