domenica, gennaio 13, 2008

Cosa è Android?

Android è una piattaforma software per i terminali mobili che include un sistema operativo, middleware e applicazioni. L'Android SDK fornisce i tools e le API necessarie ad iniziare lo sviluppo di applicazioni per questa piattaforma usando Java come linguaggio di programmazione.

Le caratteristiche principali sono:

  • L'Application framework utilizzato favorisce il riuso e la sostituzione dei componenti

  • Dalvik virtual machine ottimizzata per i dispositivi mobili

  • Web browser integrato basato su software open source (WebKit engine)

  • Grafica ottimizzata data da una propria libreria 2D; grafica 3D basata sulle specifiche OpenGL ES 1.0 (accelerazione hardware opzionale)

  • SQLite per lo storage di dati strutturati

  • Supporto al multimedia per i piu diffusi formati audio, video, ed immagine (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)

  • Telefonia GSM (dipendente dall'hardware)

  • Bluetooth, EDGE, 3G, e WiFi (dipendente dall'hardware)

  • Videocamera, GPS, bussola, e accellerometro (dipendente dall'hardware)

  • Ricco ambiente di sviluppoche include un emulatore di periferica, tool per il debugging, gestione della memoria e delle performance, plugin per lo sviluppo su Eclipse


L'Architettura di Android è riassunta nell'immagine sottostante e viene spiegata componente per componente di seguito:



Clicca sull'immagine per ingrandire

Applications
Android viene distribuito con un set di applicazioni minimodi applicazioni che includono un email client, programma per gli SMS, calendario, mappe, browser, contatti, ed altri. Tutte le applicazioni sono scritte in Java.

Application Framework
Gli sviluppatori hanno il pieno accesso alle stesse framework API usate dalle applicazioni integrate. L'architettura delle applicazioni sono state progettate per il riuso dei componenti; ogni applicazione può mettere a disposizione le proprie potenzialità e qualsiasi altro programma le può sfruttare (nei limiti di sicurezza imposte dal framework). Questo stesso meccanismo permette all'utente di sostituire i componenti stessi delle varie applicazioni. Ragione per cui tutte le applicazione sono costituite da set di sistemi e servizi che includono:


  • Un ricco ed estensibile set di Views (Viste) che possono essere usate per costruire le applicazioni, quali liste, griglie, caselle di testo, bottoni e tutto ciò che può essere eseguito in un web browser.

  • Content Providers che abilitano le applicazioni ad accedere a dati di altre applicazioni (come ad esempio i Contatti), o a condividere i propri.

  • Resource Manager, (gestore di risorse) forniscono il supporto all'accesso a risorse di altro tipo, diverso dal codice, come ad esempio stringhe per la localizzazione delle applicazioni, elementi grafici e file di layout

  • Un Notification Manager (gestore delle notifiche) che abilita ogni applicazione a mostrare le proprie notifiche nella barra di stato

  • Un Activity Manager (gestore delle attività) che gestisce il ciclo di vita di ogni applicazione e fornisce un navigation backstack condiviso


Per maggiori dettagli e spiegazioni esaurienti su come scrivere applicazioni vi rimando a questo link ufficiale, che spero presto tradurre o quantomeno commentare, Writing an Android Application.

Libraries
Android include un set di librerie C/C++ usati dai vari componenti di sistema. Queste potenzialità sono accessibili dallo sviluppatore attraverso il framework di Android. Alcune di queste librerie sono elencate qui sotto:


  • Libreria C di sistema - una implementazione BSD-derived della libreria standard C di sistema (libc), ottimizzata per periferiche embedded Linux-based

  • Librerie Multimediali - basate sulle PacketVideo OpenCORE; queste librerie supportano l'esecuzione e la registrazioni dei più diffusi formati audio, video ed immagine, incluso MPEG4, H.264, MP3, AAC, AMR, JPG, e PNG

  • Surface Manager - fornisce il supporto per la gestione del display e degli elementi grafici 2D e 3D alle varie applicazioni

  • LibWebCore - un moderno web browser engine che fornisce supporto al browser di Android e permette di integrare viste in stile web

  • SGL - 2D graphics engine

  • Librerie 3D - una implementazione basata sulle API OpenGL ES 1.0; le librerie usano o l'accelerazione hardware 3D (dove disponibile) o il software di rasterizzazione 3D ottimizzato per questa piattaforma

  • FreeType - librerie di rendering bitmap e vettoriale per i font

  • SQLite - un potente e leggero database relazionale disponibile a tutte le applicazioni


Android Runtime
Android include un set di librarie interne che forniscono molte delle funzionalità disponibili nelle libreria di Java.
Ogni applicazione su Android viene eseguita in prorpio processo, in una prorpia istanza nella Dalvik virtual machine. Dalvik ha scritto che ogni periferica può eseguire efficientemente più Virtual Machine. La Dalvik VM esegue file in un formato eseguibile proprio (Dalvik Executable format, .dex appunto) ottimizzati per un utilizzo minimo di memoria. La VM è register-based cioè basata su registri, ed esegue classi compilate da compilatori Java e trasformate nel formato .dex grazie al traduttore "dx" incluso nel framework.
La Dalvik VM conta sul kernel Linux per fornire funzionalità come il threading e la gestione a basso livello della memoria.

Linux Kernel
Android conta su di un kernel Linux versione 2.6 for per la gestione del sistema base avendo supporto alla sicurezza, gestione della memoria, gestione dei processi, stack di rete e gestione dei driver. Il kernel fornisce anche un layer di astrazione tra l'hardware ed il resto del software.



Con questo penso di aver finito, vi ricordo che questa è una traduzione molto personale di questa pagina senza nessun desiderio/aspirazione di completezza e vi rimando alla stessa per ogni altra informazione.

Inoltre vi segnalo questi 3 video che potete anche trovare direttamente su Youtube che spiegano meglio il framework e la struttura di Android, logicamente in lingua inglese:


Nessun commento: