15 września 2011

Zapiski z pierwszej części "Hello, Android"

Dzięki uprzejmości wydawnictwa Pragmatic Programmers oraz Bartka (komentarz do wpisu Wrześniowy Android) zabrałem się za lekturę "Hello, Android", wydanie 3, pióra Ed Burnette.

Czytanie połączyłem z rozpoznawaniem smartfona Samsung Galaxy S II, na którym zainstalowałem Amazon Kindle Reader i jestem zachwycony - treścią i stylem książki oraz samym urządzeniem, na którym mogę doświadczać owych achów i echów. W końcu skończyłem moją gehennę związaną z czytaniem pRaSSówki na Nokii E51 z mikroskopijnym ekranem (nie wspominając o podchodach do czytania na nim książek!). Ten splot wypadków pozytywnie wpływa na moje poznawanie Androida - jakoś tak się bardziej chce i napawa wszechogarniającym optymizmem.

"Preface" oraz część 1. "Introducing Android" przeczytałem w mgnieniu oka. Styl pisania Ed'a odpowiada mi w stu procentach. Język żywy i zachęcający do czytania, jak również własnych prób. Dokładnie taki, aby pozwolić sądzić, że czytanie książek jest wciąż wartościowe (nawet najbardziej zagorzałym przeciwnikom, a niestety spotykam takowych coraz częściej).

W "Preface" dowiadujemy się o powodach, dla których Android jest fajny, ale skoro ja czytam tę książkę dla niego właśnie, można ten rozdział śmiało pominąć, chyba że któregoś dnia przyjdzie nam przedstawić powody, dla których Android jest fajny i wtedy ten rozdział będzie nieoceniony. W mojej profesji wymaga się ode mnie i praktycznego, i bardziej naukowego podejścia do problemu, więc wcale nie żałuję, że go przeczytałem.

Cześć 1. "Introducing Android" składa się z dwóch rozdziałów: "Quick Start" oraz "Key Concepts".

W "Quick Start" rozpoczynamy przygodę z programowaniem prostej, żeby nie napisać prostackiej, aplikacji mobilnej "Hello, Android". Jej prostota jest jednocześnie siłą tej aplikacji, bo pozwala na przejście przez instalację środowiska Eclipse IDE, Android SDK oraz Android Development Tools (ADT). W tym rozdziale, definiujemy pierwsze wirtualne urządzenie Android Virtual Device (AVD) z Android 2.2 - API Level 8 i rozpoczynamy tworzenie aplikacji. W międzyczasie dowiadujemy się o różnicach między poszczególnymi wersjami Androida począwszy od Android 1.5 (Cupcake) aż do Android 2.3 (Gingerbread).

Znacznie sprawniej przyjdzie nam weryfikować postępy przy tworzeniu aplikacji, jeśli raz uruchomiony emulator użyjemy każdorazowo przy testowaniu zmian, bez jego ponownego odpalania. Wielokrotnie słyszałem o powolnym uruchamianiu emulatora i że znacznie łatwiej od razu testować na fizycznym urządzeniu - smartfonie - ale rozumiem, że przy włączonym emulatorze, nie jest to już problem (przetestuję przy najbliższej okazji skuteczność tej tezy).

Rozdział "Key Concepts" to oswojenie czytelnika ze składowymi Android SDK i środowiska uruchomieniowego. Jak mi to przypomina OSGi, w którym mamy Activator (w Androidzie Activity) oraz usługi, których na obu platformach wiele. Deklaratywne konstruowanie aplikacji za pomocą Intents i XML również nie jest niczym nowym (szczególnie w ostatniej deklaratywnej wersji OSGi Declarative Services albo OSGi Blueprint). Mam jednak wrażenie, że podobieństwo kończy się na koncepcjach i wiedza o OSGi na niewiele się tutaj zda. Obym się mylił.

Warto przeczytać ten rozdział, aby mieć pogląd na składowe platformy androidowej, które wspomagają pośrednio (niedostępne dla aplikacji wprost), albo bezpośrednio nasze aplikacje mobilne.

Android oparty jest na specjalnie zestrojonym jądrze Linuksa, które tworzone jest przez producenta urządzenia. Jasnym jest, że tam znajdują się sterowniki urządzeń, z których korzystają biblioteki, środowisko uruchomieniowe Androida - Dalvik Virtual Machine oraz wyżej - zarządcy (ang. managers) jak Activity Manager, Window Manager, Content Providers, itp. Jest tego sporo, a ich użycie określa się deklaratywnie w pliku XML - AndroidManifest.xml. Można również oprogramować całość i zrezygnować z deklarowania w XMLach. Jest wybór, aczkolwiek zaleca się, aby korzystać z deklaratywnego sposobu, który pozwala dostawcom urządzeń na łatwiejsze, własne ich realizowanie.

Zabieram się za część 2. "Android Basics" i liczę, że do końca tygodnia będę mógł pochwalić się własną aplikacyjką na moim S2. Nabieram przekonania, że pisanie aplikacji mobilnych jest wyjątkowo proste, a wszystko sprowadza się do poznania narzędzi, które wspomagają programowanie. Optymizm mnie nie opuszcza (i liczę, że nie skończy się na pustych przechwałkach o łatwości stworzenia aplikacji).