
Od ukazania się w 2008 roku Androida 1.0, ekosystem Android przeszedł olbrzymią ewolucję, szczególnie w ostatnich latach, dzięki nowym elementom języka Java, zmianom związanym z terminalami i pojawieniem się nowych narzędzi. Ewoluowały również zalecenia oraz dobre praktyki.
Ewolucja środowiska programistycznego
W roku 2008 gdy pojawił się Android 1.0, terminale były o wiele mniej wydajne niż obecnie. Pierwsza wersja Androida, bazująca na architekturze Dalvik, spełniała wymogi ograniczonej pamięci. Obecnie (a nawet już od pewnego czasu), ograniczenia te nie istnieją. Android Runtime (ART) zastąpił Dalvik, optymalizując nie tylko wydajność aplikacji, ale również wykorzystanie pamięci. Równolegle do tej aktualizacji, pozytywnie zmieniły się dostępne narzędzia. W 2013 roku powstało narzędzie Android Studio, które poprawiło jednocześnie REST API. Z prostego edytora kodu z kilkoma niejasnymi narzędziami, które niewiele osób potrafiło obsługiwać, aplikacja stała się kompletnym środowiskiem programistycznym.
Android Studio 1.0:
Android Studio 3.1:
Od samego początku, Android Studio zawierało narzędzie profiling (TraceViewer) oraz narzędzie podglądu wykorzystania pamięci (DDMS). TraceViewer był graficznie skomplikowany i mało przydatny, szczególnie ze względu na trudność w odnalezieniu i w zrozumieniu. DDMS pozwoliło zobaczyć ile pamięci wykorzystuje dana aplikacja, ale bez szczegółów i bez możliwości podglądu stanu otoczenia. Te dwie aplikacje znajdują się obecnie w Android Profiler, zintegrowanym narzędziu w Studio, które umożliwia podgląd CPU, pamięci, sieci oraz interakcji użytkowników. Wszystko w jaśniejszym i prostszym interfejsie, który może być szybciej zrozumiany przez mniej doświadczonych programistów. Pozostali mogą zagłębić się w swoje analizy aplikacji, wykorzystując narzędzie Android Systrace, które dostarcza informacji na temat stanu całego systemu, a nie wyłącznie na temat podglądanej aplikacji. Jest to bardzo praktyczne, gdy trzeba odnaleźć przyczyny problemów podczas programowania.
TraceViewer:
Android Profiler. O wiele przyjemniejszy i bardziej użyteczny interfejs:
Od Java do Kotlin
Ci sami programiści mają od teraz możliwość wykorzystania w swoich projektach języka Kotlin, wspieranego oficjalnie przez Google od 2017 roku i który wnosi do języka Java wiele nowych elementów:
null-safety: kompilator rozróżnia zmienne, które mogą być zerowe i te, które zerowe być nie mogą
przeciążenie operatora
data classes: kompilator automatycznie tworzy to, czego potrzebujemy dla klas, których celem jest przechowywanie danych (a niekoniecznie ich przetwarzanie)
Wszystkie nowości sprawiają, że Kotlin jest językiem wyższego poziomu niż Java, zapewniającym programistom prostsze środki do tworzenia aplikacji, a jednocześnie pozostającym zoptymalizowany w taki sposób, aby nie zwalniać ich działania.
Dodatkowo, wprowadzenie architektury ART zamiast Dalvik pozwoliło jeszcze bardziej zoptymalizować działanie aplikacji w systemie Android.
Wszystkim poprawkom towarzyszy zmiana API oraz bibliotek udostępnianych przez zespół Androida.
Nowości w API
Layouty (wykorzystywane do definiowania sposobu wyświetlania aplikacji) zostały zmienione. Layout „ConstraintLayout” wprowadzony w ubiegłym roku, powinien stać się nowym standardem wprowadzania elementów aplikacji systemu Android.
ConstraintLayout w edytorze layoutu w Android Studio:
W konsekwencji, nowy layout umożliwia wstawienie ograniczeń między elementy interfejsu użytkownika, podobnych jak w poprzednim standardzie (RelativeLayout), ale z większą elastycznością i w pełnej integracji z edytorem layoutu w Android Studio.
Aby w pełni wykorzystać ten layout, nowy rodzaj widoku zastąpiły widoki ListView, wykorzystywane w większości do elementów widoku. Widoki RecyclerView oferują większą elastyczność i są bardziej funkcjonalne niż ListView.
RecyclerView sam sobie przeprowadza optymalizację, którą wcześniej trzeba było wykonywać ręcznie;
Widok tworzy automatycznie elementy obejmujące widoczną listę, aby były już gotowe, gdy użytkownik przegląda elementy widoku.
Widok nie tylko tworzy dodatkowe elementy, gdy użytkownik przegląda listę, ale również zapisuje elementy już przeglądane, aby były gotowe do ponownego użycia w razie potrzeby.
Jeżeli elementy wyświetlane się zmienią, istnieje możliwość automatycznego połączenia zachowań do nowych elementów.
Lista wykorzystująca RecyclerView:
Inne poprawki oraz innowacje dotyczące zarządzania cyklem życia aplikacji dodano do bibliotek Androida oraz ogólnie do architektury aplikacji. Wszystkie te zmiany ogromnie ułatwiają tworzenie aplikacji i sprawiają, że programowanie staje się jeszcze bardziej dostępne dla wszystkich zainteresowanych programistów.