ProgettAzione
Tecnologie in movimento
V anno
Applicazioni per sistemi mobili
Parola d’ordine: App
Nel mondo del mobile la parola d’ordine è App.
Per la promozione di un sito, di un’attività, di un gioco o per la
divulgazione di informazioni di qualunque genere, non esiste modo più
efficace che creare un’App compatibile con tutti i maggiori sistemi
operativi del settore:
- Android,
- iOS,
- Windows Phone.
Ogni sistema operativo mette a disposizione delle App native che
garantiscono accesso immediato a tutte le funzionalità del dispositivo
oltre a permettere l’ottimizzazione delle prestazioni.
Lo sviluppatore e le App
Lo sviluppatore di software può indirizzarsi verso:
-
le classiche mobile App (cioè App da installare ed eseguire sul
proprio dispositivo),
le web App (cioè un’App per collegarsi a un’ applicazione in remoto
tramite una connessione a Internet).
Problematiche programmazione mobile
Scrivere codice affinché “giri” su dispositivi mobili comporta dover
affrontare tutta una serie di problematiche legate alla natura del
dispositivo.
Le caratteristiche degli smartphone che rendono più difficile creare
applicazioni che vi girino rispetto a crearle per PC, si possono
riassumere in:
• minor capacità di elaborazione;
• memoria limitata;
• ridotte dimensioni del display;
• assenza di alimentazione esterna;
• differenti tecnologie per l’accesso a Internet (WiFi, GPRS, HSDPA
ecc.);
• nuovi metodi d’immissione (touchscreen, minitastiere, pennini).
Il nuovo programmatore
Nonostante le maggiori difficoltà da affrontare, è ormai INDISPENSABILE
che nel bagaglio del tecnico informatico vi siano le conoscenze
fondamentali per saper scrivere programmi per dispositivi mobili.
Le motivazioni principali sono da ricercare nella crescita esponenziale del
settore.
Inoltre è un settore in cui Linux e l’open source hanno un ruolo di primo
piano contribuendo alla diminuzione dei costi e all’aumento degli
sviluppatori.
Non ultimo, è un argomento vicino alle nuove generazioni, quelle dei
cosiddetti “nativi digitali”.
La nuova mission
La mission è quella di arrivare a fare con uno smartphone o un tablet
tutto ciò che solitamente si fa con un desktop.
I dispositivi mobile
Stabilito che la nostra applicazione è destinata a un dispositivo mobile,
occorre definire quale.
Molti sono i dispositivi mobile in commercio:
• cellulari: dispositivi per la telefonia mobile;
• palmari (PDA, Personal Digital Assistant): minicomputer di dimensioni
tali da stare sul palmo di una mano;
• smartphone: combinazione di cellulare e palmare arricchito con le
funzionalità tipiche dei dispositivi multimediali in grado di riprodurre
musica, scattare foto e girare video;
• tablet: computer portatile di dimensioni compatte che utilizza come
sistema di input uno schermo controllato tramite tocco (penna o dita)
anziché una tastiera e un mouse.
I S.O. mobile
Chi scrive codice per App dovrà dunque scegliere il sistema operativo
sotto cui intende sviluppare le applicazioni.
I principali sistemi operativi per dispositivi mobili sono:
• Android (Google);
• iOS (Apple);
• Windows Phone (Microsoft Corporation);
• BlackBerry OS (BlackBerry);
• Symbian OS (Nokia);
• Bada OS (Samsung);
• Sailfish OS (Jolla);
• Tizen (Linux Foundation);
• Ubuntu Salamander OS (Ubuntu Mobile);
• Firefox OS (Mozilla).
Android
Android è un sistema operativo per dispositivi mobili sviluppato
inizialmente da Android Inc. e acquisito da Google nel 2005.
Android è stato sviluppato basandosi su diverse versioni del Kernel
Linux; ciò rende questo sistema operativo diverso dagli altri per la sua
natura open source e per la sua versatilità.
Architettura Android
L’architettura del sistema operativo Android è costituita da uno stack
software su quattro livelli ovvero un set di sottosistemi software
organizzato a strati che include:
- un sistema operativo basato su Kernel Linux,
- librerie,
- middleware,
- applicazioni importanti.
Ogni strato dell’architettura
fornisce diversi servizi allo
strato superiore.
Middleware
Con il termine middleware si intende un insieme di programmi che
fungono da intermediari tra le diverse applicazioni e le componenti
software.
L’utilizzo di uno strato software aggiuntivo (cuscinetto), consente di
ottenere un elevato livello di servizio per gli utenti e un elevato livello di
astrazione per i programmatori.
Kernel Linux
Lo strato di base è il Kernel Linux.
L’intero sistema operativo Android è costruito sopra il Kernel Linux 2.6
con alcune modifiche architettoniche apportate da Google.
Poiché il suo compito è quello di interagire con l’hardware, contiene tutti
i driver hardware necessari allo scopo.
I driver sono programmi che controllano e comunicano con l’hardware.
Android utilizza Linux per TUTTE le sue funzionalità di base come la
gestione della memoria e dei processi, il networking, le impostazioni di
sicurezza e così via.
Libraries
Il secondo livello è costituito dalle librerie native di Android.
Questo strato consente al dispositivo di gestire i diversi tipi di dati.
Le librerie sono scritte nel linguaggio C/C++ e sono specifiche per un
particolare hardware.
Alcune delle principali librerie native sono:
• Surface Manager
• Media Framework
• SQLite
• WebKit
• SGL (Scalable Graphics Library)
• OpenGL|ES
• SSL/TLS (Secure Socket Layer/Transport Layer Security)
• libc
Surface Manager
La libreria Surface Manager è utilizzata per la composizione delle
finestre con la tecnica off-screen buffering.
Con l’off-screen buffering lo sviluppatore NON può creare direttamente
disegni sullo schermo; le immagini andranno prima composte in un
apposito buffer off-screen.
Il contenuto del buffer combinato con altre immagini, andrà a formare la
schermata finale che l’utente vedrà.
Tale tecnica è alla base della trasparenza delle finestre.
Media Framework
Il Media Framework fornisce CODEC che permettono la registrazione e
la riproduzione di diversi formati multimediali.
È basato sulla libreria open-source OpenCore.
SQLite, WebKit, SGL, OpenGL|ES
SQLite è un leggero database utilizzato in Android per scopi di
archiviazione dati.
WebKit è il motore grafico e di layout del browser, usato per visualizzare
il contenuto html.
SGL (Scalable Graphics Library) è una libreria C++ per gestire la
grafica bidimensionale.
OpenGL|ES è un sottoinsieme delle OpenGL per gestire l’accelerazione
grafica 3D e per il rendering 2D o 3D di contenuti grafici sullo schermo.
SSL/TLS, Libc
SSL e TLS (Secure Socket Layer/Transport Layer Security)
permettono una comunicazione sicura e l’integrità dei dati su reti TCP/IP.
TLS e SSL cifrano la comunicazione dalla sorgente alla destinazione
(end-to-end) sul livello Transport.
Diverse versioni del protocollo sono ampiamente utilizzate in
applicazioni come i browser, l’e-mail, la messaggistica istantanea e il
Voice over IP.
Libc è la libreria standard Linux, adattata per i dispositivi mobili.
Runtime Android
La Runtime Android (inserita sempre nel secondo livello dello stack) è
composta da:
- Dalvik Virtual Machine
- Core Libraries
Dalvik Virtual Machine
L’esigenza di creare applicazioni in grado di rispondere in modo
immediato all’utente è fondamentale.
Con un hardware a risorse limitate la decisione è stata quella di adottare
una Virtual Machine (VM), diversa dalla Java Virtual Machine (JVM) di
Sun.
La scelta è caduta sulla Dalvik Virtual Machine (DVM), una macchina
virtuale, adattata per l’uso su dispositivi mobili, dotata di compilatore
Just-In-Time (JIT).
Dalvik Virtual Machine
L’esigenza di creare applicazioni in grado di rispondere in modo
immediato all’utente è fondamentale.
Con un hardware a risorse limitate la decisione è stata quella di adottare
una Virtual Machine (VM), diversa dalla Java Virtual Machine (JVM) di
Sun.
La scelta è caduta sulla Dalvik Virtual Machine (DVM), una macchina
virtuale, adattata per l’uso su dispositivi mobili, dotata di compilatore
Just-In-Time (JIT).
La necessità di cambiare VM nasce quindi dall’esigenza di risparmiare
quanto più spazio possibile per la memorizzazione e l’esecuzione
delle applicazioni.
Core libraries
L’altra componente della Runtime Android sono le core libraries.
Queste librerie forniscono la maggior parte delle funzionalità definite
nelle librerie Java J2SE (Standard Edition).
Le core libraries sono un insieme di librerie native per le funzionalità
core della piattaforma.
In sostanza, per eseguire un’App con la DVM non basta l’applicazione in
sé ma occorrono anche tutte le classi relative all’ambiente nella quale
l’applicazione stessa viene eseguita.
In esecuzione il device metterà a disposizione la versione dex del
runtime, che costituisce appunto la core library di un’App.
Application Framework
Tutte le librerie viste finora vengono poi utilizzate da un insieme di
componenti di più alto livello (terzo strato) che costituiscono
l’Application Framework (AF).
Si tratta di un insieme di API e componenti per l’esecuzione di
funzionalità specifiche e di fondamentale importanza in ciascuna App
Android.
L’AF è lo strato cuscinetto (programmi middleware) tra le App e il
software di sistema dei livelli bassi.
Componenti dell’Application Framework
Le componenti dell’Application Framework sono:
• Activity Manager
• Package Manager
• Window Manager
• Telephony Manager
• Content Provider
• Resource Manager
• View System
• Location Manager
• Notification Manager
• XMPP Service
Activity Manager
L’Activity Manager è lo strumento attraverso cui l’utente interagisce con
l’applicazione.
Il concetto di activity assume FONDAMENTALE IMPORTANZA IN
ANDROID.
A ogni activity è associata una schermata che permette:
- la visualizzazione e la raccolta di informazioni,
- l’interazione con l’utente.
Organizza le varie schermate di un’App in uno stack a seconda
dell’ordine di visualizzazione delle stesse sullo schermo dei dispositivi.
Package Manager
Il Package Manager gestisce il ciclo di vita delle App.
Ciascuna applicazione deve fornire al dispositivo un determinato
insieme di informazioni che sono descritte attraverso un apposito file
XML di configurazione; tale file va sotto il nome di AndroidManifest.
Window Manager
Window Manager è la componente che permette di gestire le finestre
delle diverse applicazioni in esecuzione in processi diversi, sullo
schermo del dispositivo.
Può essere considerato come un’astrazione dei servizi nativi del Surface
Manager (livello Libraries).
Telephony Manager
Il Telephony Manager permette una maggiore interazione con le
funzionalità caratteristiche di un telefono come la semplice possibilità di
effettuare una chiamata o di verificare l’attuale stato della chiamata
stessa.
Content Provider
Content Provider è una componente fondamentale nella realizzazione
di applicazioni Android.
Ha la responsabilità di gestire la condivisione di informazioni tra i vari
processi.
Resource Manager
Il Resource Manager mette a disposizione una serie di API di semplice
utilizzo per la gestione di informazioni diverse dal codice.
Un’applicazione Android è composta:
- da codice,
- da un insieme di file di tipo diverso (immagini, file di configurazione,
file di definizione del layout ecc.).
Il Resource Manager è una componente che ottimizza le risorse.
View System
View System è una componente che gestisce il rendering delle
componenti e degli eventi associati.
L’interfaccia grafica di un’applicazione Android è composta da
specializzazioni della classe View, ciascuna caratterizzata da una
particolare forma e da un diverso modo di interagire con essa attraverso
un’accurata gestione degli eventi associati.
Location Manager
Il Location Manager mette a disposizione le API per creare App che
gestiscono le informazioni relative alla localizzazione: Location Based
Application (LBA).
Quindi tra le varie applicazioni Android che è possi- bile creare, ci sono
quelle relative alla gestione delle mappe.
Notification Manager
Il Notification Manager mette a disposizione un insieme di strumenti
che l’App può utilizzare per inviare una particolare notifica al
dispositivo, questi la dovrà poi presentare all’utente con i meccanismi
che conosce.
L’App può quindi notificare un particolare evento al dispositivo che
potrebbe, per esempio, emettere una vibrazione, lampeggiare i led,
visualizzare un’icona e altro ancora.
XMPP Service
XMPP Service è un insieme di protocolli aperti di messaggistica
istantanea e presenza basato su XML.
L’acronimo sta per Extensible Messaging and Presence Protocol
(XMPP).
Il software basato su XMPP è diffuso su migliaia di Server disseminati
su Internet ed è usato da oltre dieci milioni di persone in tutto il mondo.
Applications
Sullo strato più alto dell’architettura, poggiano gli applicativi destinati
all’utente finale ossia le App vere e proprie che utilizzano i livelli
sottostanti appena descritti.
Molte App, naturalmente, sono già incluse con l’installazione di base: il
browser e il player multimediale sono dei facili esempi; in questo livello
si inseriranno anche le App sviluppate da terze parti.