ANDROID

Negli ultimi anni abbiamo assistito ad una vera e propria rivoluzione tecnologica incentrata principalmente sulla mobilità, che ha portato alla nascita e allo sviluppo di nuovi settori di mercato in fortissima crescita. Il settore alla testa di questa rivoluzione è sicuramente quello dei telefoni cellulari, ed in particolare quello dei dispositivi conosciuti come smartphone.

La vera sfida innovativa nel campo della telefonia mobile non si gioca più solo sull’hardware dei telefoni, ormai giunti a livelli altissimi di prestazioni e funzionalità, ma sui sistemi operativi che li animano. L’attenzione dei principali produttori di tecnologie mobili, infatti, si è spostata prevalentemente sull’esperienza-utente, sulla semplicità delle interfacce e sull’ottimizzazione dei software per un uso in mobilità. Android è un sistema operativo per dispositivi mobili costituito da uno stack software che include un sistema operativo di base, i middleware per le comunicazioni e le applicazioni di base. Caratteristiche principali di Android sono la struttura open source (escluse alcune versioni intermedie), e il suo basarsi su kernel Linux.

La piattaforma usa il database SQLite, la libreria dedicata SGL per la grafica bidimensionale (invece del classico server X delle altre distribuzioni Linux) e supporta lo standard OpenGL ES 2.0 per la grafica tridimensionale. Le applicazioni vengono eseguite tramite la Dalvik Virtual Machine, una macchina virtuale adattata per l’uso su dispositivi mobili. Android è fornito di una serie di applicazioni preinstallate: un browser, basato su WebKit, una rubrica e un calendario. Le applicazioni sono la forma più generica per indicare software installabili su Android. Dato che su Google Play tali applicazioni vengono definite “apps“, questo termine è ampiamente diffuso nella comunità di utilizzatori. Per motivi di sicurezza informatica, le apps possono essere scaricate e utilizzate mediante un servizio di distribuzione fidato, quindi un sito internet che fornisca sia l’applicazione stessa che le relative certificazioni (software).

Per venire incontro alle necessità degli sviluppatori, è stata però prevista la possibilità di disattivare il controllo di tali certificati, attraverso una voce presente nel menu “Impostazioni” (Android versione 2.2). Tutto iniziò un pò di tempo fa quando Google decise di adottare il linguaggio di programmazione Java per lo sviluppo delle applicazioni Android e di abbandonare la JVM (Java Virtual Machine) e la JME (Java Mobile Ecosystem) a favore di un'alternativa, la Dalvik Virtual Machine. Ma che cos’è una VM, una Virtual Machine? E’ un software che può essere un sistema operativo, un emulatore o una virtualizzazione hardware completa. In sostanza, e in poche parole, vi possono essere due tipi di Virtual Machine: la System VM e la Process VM ove VM sta per Virtual Machine. Nel primo caso, la VM supporta l’esecuzione di un sistema operativo completo (conosciuta anche come Hardware Virtual Machine), mentre nel secondo caso la VM supporta l’esecuzione di processi singoli.

SOFTWARE & LIBRERIE

Android è un sistema operativo open source per dispositivi mobili, basato sul kernel 2.6 di Linux, rivale decennale di Windows. A livello tecnico, la piattaforma open source di Android è un set di sottosistemi software composto da applicazioni Java, che vengono eseguite su uno speciale framework, basato anch’esso su Java e orientato agli oggetti, a sua volta eseguito su un nucleo costituito da librerie Java eseguite tramite la macchina virtuale Dalvik, specifica per dispositivi mobili, dotata di compilatore just-in-time (JIT). Dalvik è una macchina virtuale, progettata da Dan Bornstein, dipendente Google, ed è uno dei componenti di Android. È ottimizzata per sfruttare la poca memoria presente nei dispositivi mobili, consente di far girare diverse istanze della macchina virtuale contemporaneamente e nasconde al sistema operativo sottostante la gestione della memoria e dei thread. Dalvik è spesso associato alla Macchina virtuale Java, anche se il bytecode con cui lavora non è Java. Altre differenze con la JVM tradizionale sono la mancata gestione delle eccezioni.

Dalla versione 2.2 include un compilatore Just In Time per migliorare le prestazioni della macchina virtuale. Diversi sono i componenti che compongono le librerie Android e sviluppate in linguaggio C: un surface manager, un framework multimediale OpenCore, un sistema a database relazionali SQLite, API grafiche 3D OpenGL ES 2.0, un motore grafico e di layout basato su WebKit, un motore grafico SGL, SSL ed una libreria libc Bionic, libreria standard per C basata in gran parte su BSD. Il sistema operativo Android è composto in tutto da 12 milioni di righe di codice che comprendono 3 milioni di righe XML, 2,8 milioni di righe di C, 2,1 milioni di righe di Java e 1,75 milioni di righe di C++.

ARCHITETTURA DI ANDROID

I componenti base dell’architettura di Android sono: il sistema operativo, le librerie native, una Virtual Machine, le librerie Java. L’architettura di Android è distribuita in vari livelli o layer dove quello inferiore offre un servizio a quello superiore (Figura 1).

Figura 1: architettura di Android.

Figura 1: Architettura di Android

Commentando l’immagine, al livello più basso è presente il Kernel di Linux nella versione 2.6. Questo livello comprende vari driver per la gestione delle diverse periferiche: dallo schermo alla tastiera, dalla scheda di rete Wi-Fi all’alimentazione. A un livello superiore si trovano le librerie native sviluppate nei linguaggi di programmazione C e C++. Queste, tutte insieme, rappresentano il cuore di Android e sono: Il Surface Manager (in poche parole, il componente che gestisce la visualizzazione grafica); il Media Framework (il componente che gestisce i codec audio e video basato sulla libreria open-source OpenCore); SQLite, un DBMS relazionale che permette di registrare i dati in modo persistente sul dispositivo scritto in linguaggio C; il motore di rendering dei font FreeType; LibWebCore ossia un browser-engine basato sul browser open source WebKit che può essere integrato in varie applicazioni.; le due librerie SGL e OPENGL ES che gestiscono rispettivamente la grafica 2D la prima e la grafica 3D la seconda; la libreria SSL che gestisce il Secure Socket Layer; la libreria Libc chiamata anche Bionic libc che non è altro che un’implementazione della libreria standard C; le core library che permettono l’esecuzione delle applicazioni (versione dex del runtime). Al terzo livello verso l’alto è presente l’APPLICATION FRAMEWORK (AF) costituito da una serie di componenti e API che eseguono dei compiti di seguito descritti: l’Activity Manager è uno degli strumenti fondamentali per mezzo del quale l’utente interagisce con l’applicazione, il Content Provider condivide le informazioni tra i vari processi, una sorta di cartella condivisa, il Window Manager gestisce le finestre delle varie applicazioni, il Telephony Manager consente la gestione di quelle funzionalità peculiari di un telefono, il Resource Manager ha il compito preciso di ottimizzare le risorse, il Package Manager gestisce il ciclo di vita delle applicazioni nel dispositivo, il Location Manager gestisce le informazioni relative alla localizzazione, in pratica “serve” le applicazioni Location Board application o LBA. La gestione degli eventi associati alle applicazioni grafiche e il rendering è possibile grazie al View System. Il Notification Manager gestisce le informazioni di notifica tra il dispositivo e l’utente. Infine, al quarto livello troviamo le applicazioni vere e proprie che utilizzano i livelli sottostanti appena descritti. Tra le applicazioni di esempio possiamo citare la gestione dei contatti, la calcolatrice o la gestione delle chiamate.

Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend