Vous êtes sur la page 1sur 6

CAPITOLO 1

LE RISORSE DISPONIBILI 1.1 Panoramica In Questo capitolo cercheremo di capire come gestire nel concreto ogni singola componente cominciando cos ad avere un primo approccio con il nostro progetto e a definire il sistema, il contesto e lambiente di lavoro in cui abbiamo operato. Si partiti dal voler realizzare unapplicazione sulla domotica, si deciso quindi di distribuirla su una piattaforma mobile in particolare, si comunque cercato una soluzione che non preveda una nuova riscrittura del codice per ogni versione ma che allo stesso tempo riuscisse a sfruttare le risorse hardware di un dispositivo come la fotocamera. Arrivati a questo punto in che modo e con che risorse intendiamo realizzare tutto ci? La fine del precedente millennio stata sicuramente caratterizzata da Internet: una vera e propria rivoluzione non solo tecnologica ma soprattutto culturale. La possibilit aperta a chiunque di pubblicare informazioni accessibili da una qualunque parte del mondo ha consentito una maggiore diffusione delle informazioni e una migliore distribuzione e condivisione della conoscenza. Dal punto di vista informatico, Internet ha introdotto un nuovo paradigma per lo sviluppo delle applicazioni, accompagnato da nuove tecnologie e scelte architetturali. Da programmi desktop in esecuzione sui diversi PC siamo passati ad applicazioni web accessibili ovunque attraverso quello che si definisce thin-client, categoria di cui il browser il principale esponente. Nonostante non sia passato molto tempo dallavvento di Internet, stiamo ora vivendo una nuova rivoluzione: quella dei dispositivi mobili. Quelle che prima erano informazioni e applicazioni raggiungibili ed eseguibili attraverso un qualunque PC sono ora accessibili attraverso

dispositivi sempre pi potenti che hanno la fondamentale caratteristica di essere mobili e di dimensioni sempre pi ridotte. Ci che finora stato considerato come un Personal Computer sta diventando sempre pi personale ma non solo perch utilizzato da un unico utente, ma proprio perch ci accompagna ovunque in ogni momento della giornata. Ci che prima stava sulla nostra scrivania ora pu stare nel nostro taschino. Stiamo parlando di dispositivi mobili, di ci che prima indicavamo in modo riduttivo con il termine cellulare, ma che ora stanno diventando veri e propri PC portatili in cui la funzione di telefono, sebbene fondamentale, solo una delle tante disponibili. Per gli sviluppatori si sta aprendo quindi un nuovo orizzonte: quello della creazione e dello sviluppo di applicazioni che sfruttino le caratteristiche di questi dispositivi caratterizzati dallessere definiti a risorse limitate. Ovviamente un PC di media potenza ha caratteristiche software e hardware (quantit di memoria, potenza di CPU e alimentazione) superiori a quelle di un qualunque dispositivo mobile attuale. Si stima che la potenza di calcolo di un cellulare di nuova generazione sia paragonabile a quella di un PC di 8 o 10 anni fa. Per quanto riguarda questa tesi si scelto di fornire esempi sulla realizzazione di alcuni moduli solo per uno dei principali sistemi operativi per dispositivi mobili sul mercato: Android di Google1. Questa scelta non limiter le aspettative iniziali, si vedr infatti come con una scelta accurata delle risorse render il processo di realizzazione di questi moduli simile per ogni sistema operativo mobile moderno.

Per essere precisi, dietro Android non c soltanto Google. Il colosso di Mountain View ha fatto la prima mossa e di sicuro lattore di maggior peso, tuttavia levoluzione di Android curata da un consorzio denominato Open Handset Alliance il cui sito ufficiale : http://www.openhandsetalliance.com/

1.2 Che cos Android Android non un linguaggio di programmazione ma un vero e proprio stack di strumenti e librerie per la realizzazione di applicazioni mobili. Esso ha come obiettivo quello di fornire tutto ci di cui un operatore, un vendor di dispositivi o uno sviluppatore hanno bisogno per raggiungere i propri obiettivi. A differenza di alcuni degli ambienti citati in precedenza, Android ha la fondamentale caratteristica di essere open, dove il termine assume diversi significati: Android open in quanto utilizza, come vedremo meglio successivamente, tecnologie open, prima fra tutte il kernel di Linux nella versione 2.6. Android open in quanto le librerie e le API che sono state utilizzate per la sua realizzazione sono esattamente le stesse che andremo a usare per creare le nostre applicazioni. Quasi la totalit dei componenti di Android potranno essere rimpiazzati dai nostri, cosicch non ci sar limite alla personalizzazione dellambiente se non per alcuni casi legati ad aspetti di sicurezza nellutilizzo, per esempio, delle funzionalit del telefono. Android open in quanto il suo codice open source, consultabile da chiunque possa contribuire a migliorarlo, lo voglia documentare o semplicemente voglia scoprirne il funzionamento. La licenza scelta dalla Open Handset Alliance ( www.openhandsetalliance.com ) la Open Source Apache License 2.0, che permette ai diversi vendor di costruire su Android le proprie estensioni anche proprietarie senza legami che ne potrebbero limitare lutilizzo. Ci significa che non bisogna pagare alcuna royalty per ladozione di Android sui propri dispositivi.

1.3 Sdk e ambienti di sviluppo In questo paragrafo faremo una breve descrizione degli ambienti di sviluppo e degli sdk per la piattaforma scelta.

1.3.1 Android

Figura 1.1: Larchitettura di Android

Android, essendo un sistema operativo di moderna fattura, abbastanza complesso. Anche se il suo target sono i dispositivi mobili, larchitettura di Android ha poco da invidiare a quelle dei comuni sistemi per desktop o laptop. Tale architettura presentata schematicamente in Fig.3.1 dalla quale si evince come Google ha attinto a piene mani dal mondo Open Source. Il cuore di ogni sistema Android, tanto per cominciare, un kernel Linux. Direttamente nel kernel sono inseriti i driver per il controllo dellhardware del

dispositivo: driver per la tastiera, lo schermo, il touchpad, il Wi-Fi, il Bluetooth, il controllo dellaudio e cos via. Sopra il kernel poggiano le librerie fondamentali, anche queste tutte mutuate dal mondo Open Source. Da citare sono senzaltro OpenGL, per la grafica, SQLite, per la gestione dei dati, e WebKit, per la visualizzazione delle pagine Web (queste librerie saranno di fondamentale importanza per il nostro progetto). Larchitettura prevede poi una macchina virtuale e una libreria fondamentale che, insieme, costituiscono la piattaforma di sviluppo per le applicazioni Android. Questa macchina virtuale si chiama Dalvik2, e sostanzialmente una Java Virtual Machine. Nel penultimo strato dellarchitettura possibile rintracciare i gestori e le applicazioni di base del sistema. Ci sono gestori per le risorse, per le applicazioni installate, per le telefonate, il file system e altro ancora: tutti componenti di cui difficilmente si pu fare a meno. Infine, sullo strato pi alto dellarchitettura, poggiano gli applicativi destinati allutente finale. Molti, naturalmente, sono gi inclusi con linstallazione di base: il browser ed il player multimediale sono dei facili esempi. A questo livello si inserir anche la nostra applicazione. Per sviluppare applicazioni in grado di girare su sistemi Android, necessario installare sul proprio PC un apposito kit di sviluppo (SDK), che disponibile gratuitamente per i principali sistemi operativi allindirizzo: http://developer.android.com/sdk/. Allinterno di questo kit di sviluppo presente anche un Android Virtual Device (AVD), ovvero un emulatore di dispositivi Android, con il quale si pu testare unapplicazione senza il bisogno di acquistare necessariamente un dispositivo reale. Nel nostro caso questo emulatore ci servito solo nella fase iniziale, infatti non essendo direttamente in grado di simulare la fotocamera del dispositivo
2

Citazione tratta da Wikipedia: 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.

emulato (ad esempio attraverso una webcam), rendeva impossibile testare la scansione di codici QR-code. Per programmare applicazioni in qualsiasi linguaggio, uno degli strumenti fondamentali lambiente di sviluppo (ide). Per quanto concerne lo sviluppo in Android lide ufficiale Eclipse (corredato di un plugin aggiuntivo), anchesso reperibile per tutto le piattaforme gratuitamente allindirizzo: http://www.eclipse.org/downloads/. Infine, Android per i suoi sviluppatori mette a disposizione allindirizzo: http://developer.android.com tutte le informazioni che possono servire ad uno sviluppatore come: la documentazioni delle classi, guide, tutorial, ed esempi pratici, ecc.

Vous aimerez peut-être aussi