Come è fatto Android – Lezione 2 di Android

Differenti versioni di Android

Storia e struttura del sistema operativo mobile di Google

L’Android Inc. venne fondata nel 2003 da Andy Rubin e dai suoi colleghi Rich Miner e Nick Sears. L’azienda aveva come obiettivo quello di sviluppare un nuovo sistema operativo per dispositivi mobili. Ottenendo ottimi risultati, nel 2005 venne acquistata da Google che aveva intenzione di entrare nel mercato della telefonia mobile. Grazie alla Open Handset Alliance, alleanza tra grandi aziende come ASUS, HTC, Intel, eBay, ed ovviamente da Google, che ha come obiettivo lo sviluppo di nuovi standard open source per dispositivi mobili, venne ultimato nel 2007 questo nuovo sistema operativo. Un anno dopo venne lanciato sul mercato l’HTC Dream, il primo smartphone dotato di Android.
Dal 2007 in poi sono state rilasciate molte versioni di Android, e così come accade per molte versioni di Linux, queste seguono l’ordine alfabetico con un determinato tipo di nome. Per Android sono stati scelti i dolciumi, così la versione 1.0 prende il nome di Apple Pie, la 1.1 il nome di Banana Bread, la 1.5 Cupcake seguita dalla versione 1.6 Donut e così via.

Ecco la tabella con le varie versioni di Android e il relativo livello API (Application programming interface):

Versione Nome API Level
1.0 Apple Pie 1
1.1 Banana Bread 2
1.5 Cupcake 3
1.6 Donut 4
2.0 Eclair 5
2.2 Froyo 8
2.3 Gingerbread 9
3.0 Honeycomb 11
4.0 Ice Cream Sandwich 14
4.1 Jelly Bean 16
4.4 KitKat 19

La struttura di Android: kernel Linux, librerie, Dalvik e app

Android, pur essendo stato sviluppato per dispositivi mobili come tablet e smartphone, è un vero e proprio sistema operativo con una struttura tutt’altro che semplice. Il kernel su cui è costituito è la versione 2.6 di Linux, in questo kernel sono inseriti i driver per il controllo dell’hardware del dispositivo (ad esempio quelli per la tastiera, lo schermo, il touchpad, il Wi-Fi, il bluetooth, il controllo dell’audio e così via).

In Android le applicazioni vengono eseguite dal kernel Linux, in particolare ogni app viene eseguita:

  • In un processo separato che tramite l’utilizzo di Dalvik eseguirà il bytecode dell’applicazione, effettuando inoltre il controllo dei permessi di accesso alle risorse;
  • Con uno user ID distinto, ogni applicazione avrà un proprio user ID in modo che nessuna applicazione possa accedere ai file creati da un’altra applicazione se non espressamente dichiarato. Due applicazioni potranno condividere lo stesso processore e user ID solo se sono “firmate” dallo stesso autore.

Con questo schema di funzionamento, Android offre un ottimo livello di sicurezza garantendo un efficiente grado di separazione e isolamento delle applicazioni.

Struttura Android

Sopra il kernel troviamo le librerie fondamentali per il funzionamento del sistema che sono prese dal mondo open source. Tra le principali troviamo OpenGL, per la grafica, SQLite, per la gestione dei dati, e WebKit, per la visualizzazione delle pagine web. Per poter funzionare, Android richiede l’utilizzo di una macchina virtuale (Dalvik) e una libreria, questi elementi costituiscono la piattaforma di sviluppo per le applicazioni Android. La macchina virtuale utilizzata da Android è molto simile alla Java Virtual Machine ma a differenza di quest’ultima è basata su registri e non su stack, contiene un set di istruzioni ottimizzato per risparmiare memoria e aumentare la velocità di esecuzione (fondamentale per i dispositivi che hanno risorse limitate rispetto ai computer) ed è eseguibile da più processi con una sola istanza. La macchina virtuale di Java esegue il codice in bytecode, mentre Dalvik esegue il codice scritto in DEX (Dalvik EXecutable), sviluppato appositamente per avere migliori performance. Con l’aiuto di Android SDK, Eclipse genererà in automatico il codice DEX, ricompilando il bytecode generato inizialmente.
Il set di istruzioni ottimizzato per l’utilizzo su smartphone che abbiano appena citato è stato ottenuto personalizzando da parte di Google tutte le librerie di Java ed eliminando librerie inutili come quelle per le interfacce grafiche (AWT e Swing). Il package principale prende il nome di android e contiene al suo interno molte librerie (ad esempio il package android.menu contiene i componenti per la costruzione di menù in un’applicazione Android).

Android prevede anche un livello per i gestori e le applicazioni di base del sistema come i gestori per le risorse, per le applicazioni installate, per le telefonate, ecc. Infine, nell’ultimo livello troviamo le applicazioni destinate agli utenti che di norma si scaricano dal Play Store.

Indice Lezione PrecedenteLezione Successiva

ngg_shortcode_0_placeholder

Photo Credit David Recordon, melenita2012, ruSh.Me, nasaldemons, netzkobold e Jonas B.

Pubblicato in Android, Android, Guide, Informatica, Linux, Programmazione Taggato con: , , , , , , , , , , ,

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

*