2. Che cos'è Android?
Android è uno stack software
per dispositivi mobili, che
comprede:
Il sistema operativo
Middleware
Key application
Distribuisce un SDK per
programmare le applicazioni
in linguaggio Java
3. Storia
Sviluppato inizialmente da Android Inc. una startup con
sede a Palo Alto, California, USA
2005, Google acquista Android Inc.
Nel Novembre 2005, viene rilasciata la prima versione di
Android, e viene resa nota la formazione della Open Handset
Alliance(OHA)
Da ottobre 2008, Android è disponibile con licenza Apache
Febbraio 2009, Android 1.5 (Cupcake) Based on Linux
Kernel 2.6.27
Settembre 2009, Android 1.6 (Donut) Based on Linux
Kernel 2.6.29
Ottobre 2009, Android 2.0 / 2.1 (Eclair) Based on Linux
Kernel 2.6.29
Maggio 2010, Android 2.2 (Froyo) Based on Linux Kernel
2.6.32
4. Open Handset Alliance
Open Handset Alliance (OHA) è una formazione
commerciale composta da 78 imprese.
Si occupa di sviluppare standard aperti per dispositivi
mobili.
I membri, si contraddistinguono in 5 categorie:
Mobile operators
Software companies
Commercialization companies
Semiconductor companies
Handset manufactures
5. Android/Linux
Android adotta la versione 2.6 di
Linux
- Gestione della sicurezza
- Memory Management
- Process Management
- Network stack
- Driver Model
Il kernel agisce anche da layer di
astrazione fra l'hardware e il resto dello
stack software.
7. Architettura/Linux Kernel
Android adotta la versione 2.6
di Linux:
Gestione della sicurezza
Memory Management
Network Stack
Driver Model
Abstract Layer tra hardware e
software stack
8. Architettura/Libraries
Android comprende un vasto set di librerie C/C++ :
System C library- derivate BSD ottimizzata
per dispositivi mobili Linux-based
Media Libraries- basate su PacketVideo's
OpenCORE
Surface Manager-accesso al sottosistema
di visualizzazione
LibWebCore
SGL-motore grafico 2D
3D libraries-derivate da OpenGL ES 1.0
APIs
FreeType
SQLite
9. Architettura/Android Runtime
Android include un set di librerie di base che fornisce la
maggior parte delle funzionalità disponibili nelle librerie di base
del linguaggio di programmazione Java.
Ogni applicazione Android gira in un proprio processo, con la
propria istanza della macchina virtuale Dalvik. La Virtual Machine
Dalvik esegue file Dalvik Executable (.dex), ottimizzata per
dispositivi con memoria ridotta.
La VM Dalvik si basa sul kernel Linux per le funzionalità di base
offerte da quest'ultimo, come il threading e di memoria a basso
livello di gestione.
10. Architettura/Application Framework 1/2
Android offre una piattaforma di programmazione che permette
agli sviluppatori di creare ricche e innovative applicazioni.
Gli sviluppatori possono utilizzare per le loro applicazioni tutto
l'hardware del device:
Possono accedere alle informazioni di posizione
Eseguire applicazioni in background
Impostare allarmi
Gli sviluppatori hanno pieno accesso alle APIs usate per le applicazioni
core.
Qualsiasi applicazioni può pubblicare le sue “capacità” e tutte le altre
possono utilizzarle: architettura molto orientata al riuso.
11. Architettura/Application Framework 2/2
Alla base delle applicazioni c'è un ricco insieme di servizi e
sistemi, che includono:
Un ricco ed estendibile insieme di View: elenchi, griglie, caselle di
testo, pulsanti e persino un browser web embeddable
Content Providers, che permette di accedere i dati di altre
applicazioni e di condividere i propri
Resource Manager, che provvede all'accesso alle risorse “non-code”
come: localized strings, graphics, e layout files
Notification Manager che permette alle applicazioni di attivare avvisi
nella status bar
Activity Manager che gestisce il ciclo di vita delle applicazioni
12. Android Features 1/5
Set di Layout
- VGA
- 2D Graphics
- 3D Graphics basate sulle specifiche OpenGL ES 2.0
- Layout tradizionali per smartphone
Storage
- SQLite
Connectivity
- GSM/EDGE
- IDEN
- CDMA
- EV-DO
- UMTS
- Bluetooth
- Wi-Fi
- LTE
- WiMAX
13. Android Features 2/5
Messaging
- SMS
- MMS
Web browser
- Utilizza WebKit come motore di rendering e V8 Chrome per il
motore Javascript
Java support
- Possiamo scrivere le nostre applicazioni in Java, ma Android non
ha una Java Virtual Machine e quindi il bytecode non sarà
interpretato, e quindi eseguito. E' necessario ricompilare il bytecode
Java in un eseguibile Dalvik, che sarà eseguito dall'apposita virtual
machine. Dalvik è una virtual machine progettata per Android ed
ottimizzata per sistemi alimentati a batteria con limitata memoria e
CPU. Il supporto a J2ME è offerto grazie a terze parti come
J2ME MIDP Runner.
14. Android Features 3/5
Media support
- H.263, H.264
- MPEG-4 SP
- AMR, AMR-WB
- AAC, HE-AAC
- MP3
- MIDI
- Ogg Vorbis
- WAV
- JPEG,PNG,GIF,BMP
Streaming media support
- RTP/RTSP streaming (3GPP PSS, ISMA)
- HTML progressive download (HTML5 <video> tag)
- Adobe Flash Streaming (RTMP)
- Apple HTTP Live Streaming
- Microsoft Smooth Streaming
- Adobe Flash HTTP Dynamic Streaming
15. Android Features 4/5
Multi-touch
- Supporto nativo al Multi-touch.
Bluetooth versione 2.2+ di Android
- A2DP, AVRCP
- Trasferimento file OPP
- Accesso alla rubrica PBAP
- Invio contatti tra dispositivi
Videocalling
- Non supportata su tutti i dispositivi, ma ci possono essere dei
dispositivi con una versione personalizzata del S.O. che può
permettere le videochiamate
Multitasking
- Il Multitask è supportato
16. Android Features 5/5
Voice based features
- La ricerca Vocale su Google è supportato
- Altre funzionalità attivabile con comendi Vocali sono supportate
dalla versione 2.2 in poi
Tethering
- Il Tethering è supportato ufficialmente dalla versione 2.2 ,
permettendo al dispositivo dotato di Android di funzionare da
wireless/wired hotspot.
17. Android e Java
Dalvik Virtual Machine
Esegue file .dex ottenuto da bytecode
Virtual Machine ottimizzata per dispositivi mobili
Dalvik non elimina il Garbage Collector
DVM implementa un Just In Time(JIT) solo dalla versione 2.2, in
quanto molte APIs Java Android sono wrapper che incapsulano le
funzionalità alle quali accedono attraverso Java Native Interface
(JNI)
DVM genera codice register based a differenza di JVM che genera
codice stack based
Un file .dex compresso è usualmente a parità di codice Java la
metà di un file .jar
18. stack based vs register based
Esempio:
c=a+b
JVM:
push a (load,store)
push b (load,store)
add (load,load,store);
store c (load,store)
Dalvik register based:
add a,b,c (load,load,store)
21. Android oltre il mobile
People of Lava Sweden
has produced the first TV
adopting Android 1.5,
and is called Scandinavia
22. Bibliografia
http://developer.android.com/index.html
Wikipedia
Internet
Android-Guida per lo sviluppatore di Massimo
Carli, Apogeo
Si prega di segnalare eventuali errori
al seguente indirizzo mail:
gioacchinodelprete[at]gmail.com
Gioachino Del Prete, Napoli