Gioachino Del Prete, Napoli
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
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
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
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.
Architettura
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
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
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.
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.
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
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
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.
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
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
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.
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
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)
Dalvik Virtual Machine
Android hardware/sensori opzionale


         GPS             Accelerometro




Termometro       Proximity sensor
                                         Giroscopio




   Touchscreen                      Magnetometro
Android oltre il mobile




              People of Lava Sweden
              has produced the first TV
              adopting Android 1.5,
              and is called Scandinavia
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

Android

  • 1.
  • 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 inizialmenteda 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 Androidadotta 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.
  • 6.
  • 7.
    Architettura/Linux Kernel Androidadotta 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 unvasto 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 Setdi 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 Mediasupport - 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 DalvikVirtual 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 vsregister 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)
  • 19.
  • 20.
    Android hardware/sensori opzionale GPS Accelerometro Termometro Proximity sensor Giroscopio Touchscreen Magnetometro
  • 21.
    Android oltre ilmobile 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