Android – Architettura

Android non è Java

Anche se le App Android si implementano in Java, Android non è scritto in Java.

Il titolo è volutamente provocatorio e non dobbiamo pensare che Java non c’entri nulla con Android (OS), piuttosto dobbiamo capire dove si ferma Java e dove comincia il resto.

Per prima cosa Android è scritto in C. Il kernel è Linux e tutti i ricami sovrastanti sono scritti ovviamente in C. Sembra banale ma si sente dire che il kernel di Android è scritto in Java… giusto per essere puntuali.

Seconda cosa. La gran parte dello strato applicativo poggia su
Dalvik o ART.

Kernel

Il kernel è semplicemente la parte di software che sta direttamente a contatto con l’hardware.

Rappresenta quella parte di codice che permette al dispositivo di “mettersi in moto” e funzionare nella maniera corretta.

È il vero cuore del sistema operativo e fornisce tutte le funzioni principali di cui tale sistema ha bisogno, come la gestione della memoria principale, delle risorse hardware e delle periferiche assegnandole ogni volta ai processi in esecuzione.

I programmi più esterni (le app per intendersi) non possono accedere
direttamente all’hardware ma devono richiederne l’accesso al kernel tramite delle chiamate (system call).

Il kernel si occupa anche di gestire il tempo processore (frequenza di
clock) quindi attraverso opportune modifiche è possibile alzare o abbassare la frequenza di funzionamento della CPU, di allocare la memoria necessaria all’esecuzione delle applicazioni e gestire le altre risorse hardware e software.

Runtime e Virtual Machine

Sostanzialmente una macchina virtuale la possiamo definire come un
computer dentro un altro computer, questo tipo di architettura
semplifica l’esecuzione e la scrittura di software.

Importante nel caso di Android poiché ci sono tantissimi dispositivi
con configurazione hardware diversa.

Lo strato Dalvik è fondamentalmente una “macchina virtuale”.

Dalvik

I pro di poter scrivere un codice unico per tutti i dispositivi, si riducono apparentemente quando si parla di livello di complessità che riduce ovviamente le prestazioni.

Quindi un codice mal ottimizzato, e la complessità che si aggiunge alla macchina virtuale, alza la probabilità che si verifichino dei lag o rallentamenti significativi.

Complessità causata dal fatto che il codice non viene eseguito direttamente dal SoC del nostro smartphone, ma prima tradotto dalla macchina virtuale e poi eseguito dal SoC.

Queste operazioni portano ad Android sulla carta ad essere un sistema che consuma maggiori risorse e può essere più lento rispetto ad esempio a iOS, che diversamente lavora con il codice nativo, cioè tradotto direttamente dal SoC.

In conclusione Dalvik esegue il Classes.dex contenuto nelle applicazioni, lo interpreta e successivamente viene immesso nella cache Dalvik e poi viene eseguito.

Beh Android è un sistema che ha bisogno di tanta ottimizzazione e hardware, ma ora almeno “il perché” lo sappiamo!

ART

ART cerca di risolvere o almeno mitigare il problema con una soluzione intermedia chiamata AOT (Ahead Of Time compilation): il codice dell’applicazione non è più interpretato a ogni esecuzione, ma una volta sola quando la installiamo.

In questo modo dovremmo ottenere prestazioni comparabili a quelle del codice nativo ma senza compromettere il lavoro dello sviluppatore.

Librerie Native

Le librerie native sono scritte in linguaggi di programmazione a basso livello come il C e il C++, e sono utilizzate per garantire efficienza, prestazioni ottimali e accesso diretto all’hardware del dispositivo.

Queste librerie coprono una vasta gamma di funzionalità, dai servizi di base del sistema operativo fino alle interfacce grafiche avanzate, alla gestione multimediale e alla connettività di rete.

Tra le librerie native più importanti troviamo:

  • OpenGL: Librerie grafiche per la parte 3D;
  • SGL: Librerie grafiche per la parte 2D Media Framework;
  • Media Framework: Gestione contenuti multimediali audio/video;
  • FreeType: Gestione dei Font;
  • SQLite: DBMS di riferimento;
  • WebKIT: Browser-engine;
  • SSL: Librerie per gestire il protocollo ssl;
  • Libc: Porting delle principali librerie C;

Componenti principali Android

Android architettura
Android architettura

Riassumendo, i componenti essenziali dell’architettura di Android sono
sostanzialmente:

  • Sistema Operativo;
  • Librerie;
  • Application Framework;

Application Framework

L’application framework delle applicazioni di Android rappresenta il cuore pulsante dello sviluppo delle app.

Costruito su una base robusta di librerie native, l’application framework fornisce agli sviluppatori gli strumenti e le API necessari per creare applicazioni ricche di funzionalità, reattive e intuitive.

Tra i componenti principali possiamo trovare:

  • View System: Si occupa della renderizzazione dei componenti;
  • Content Provider: Consente la condivisione delle informazioni tra le varie applicazioni;
  • Resource Manager: Mette a disposizione una serie di API per la gestione delle risorse dell’applicazione;
  • Notification Manager: Abilita le applicazioni a visualizzare le notifiche come ad esempio nella barra di stato;
  • Activity Manager: Gestisce completamente il ciclo di vita dell’activity;
  • Application Manager: Manager per la gestione delle applicazioni;
  • Package Manager: Gestione dei package che consente tra le altre cose al sistema operativo di conoscere la configurazione delle applicazioni installate;
  • Telephony Manager: API specifica per la gestione delle funzionalità telefoniche;
  • Location Manager: Gestione dei dati spaziali e relative API;

Lascia una risposta

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Share via
Copy link
Verificato da MonsterInsights