Seleziona Pagina

Android e Java: binomio perfetto?

Android e Java: binomio perfetto?

Android, proprio come tutti gli ambienti di sviluppo, è caratterizzato da una serie di tool di sviluppo e da un linguaggio, fornendo inoltre un SDK in grado di facilitare e semplificare lo sviluppo delle applicazioni.

È risaputo che il successo di un ambiente si evince dalla quantità delle applicazioni disponibili per l’ambiente stesso e Google, per promuovere la propria piattaforma, ha deciso di fornire agli sviluppatori tutti gli strumenti necessari.

Google ha sapientemente deciso di utilizzare, per lo sviluppo, un linguaggio ampliamente conosciuto e padroneggiato già da diversi anni: Java di Sun Microsystems.

oracle-web-logo

Logo Java (Oracle).

Questa scelta potrebbe sembrare in contrasto con la natura open di Android e della licenza Apache 2.0 in quanto i dispositivi che intendono adottare la Virtual Machine (VM) associata all’ambiente J2ME devono pagare una royalty a Java (Oracle).

Per ovviare a questa problematica Google ha adottato una propria VM, chiamata Dalvik Virtual Machine, la quale è ottimizzata per l’esecuzione di applicazioni in dispositivi a risorse limitate.

Questa soluzione ha portato molti maliziosi a pensare che Google abbia operato di conseguenza solamente per evitare il pagamento delle royalties a Sun, ma d’altro canto Google ha sfruttato il momento per introdurre dei miglioramenti attraverso la Dalvik Virtual Machine, progettata a più di 10 anni dalla KVM di Java (Kernel-based Virtual Machine (KVM) è un’infrastruttura di virtualizzazione del kernel Linux.

KVM attualmente supporta una completa virtualizzazione usando Intel VT o AMD-V. Un supporto limitato per la paravirtualizzazione è anche disponibile per gli ospiti Linux e Windows nella forma di un driver di rete paravirtuale. La KVM è ora implementato come un modulo kernel caricabile).

La Dalvik Virtual Machine

La DVM è ottimizza per l’esecuzione di applicazioni in ambienti ridotti e sfrutta al massimo le caratteristiche del sistema operativo ospitante.

Altra sua peculiarità consiste nell’eseguire codice contenuto all’interno di file con estensione .dex, ottenuto dalla trasformazione del bytecode Java, con una compressione quasi al 50%. Questa caratteristica risponde all’esigenza di risparmiare quanto più spazio possibile per la memorizzazione ed esecuzione delle applicazioni.

Un altro aspetto importante della DVM riguarda il meccanismo di generazione del codice che viene definito register based (orientato all’utilizzo di registri). Attraverso questo meccanismo i progettisti della DVM si aspettano, a parità di codice Java, di ridurre del 30% il numero di operazioni da eseguire, ottenendo un minor tempo di esecuzione delle istruzioni, un miglioramento delle prestazioni.

Ultima, ma non meno importante caratteristica della DVM, riguarda la possibilità di eseguire efficacemente più processi contemporaneamente, infatti ciascuna applicazione sarà in esecuzione all’interno del proprio processo Linux, comportando vantaggi ma anche implicazioni dal punto di vista della sicurezza.

@Photo on Foter.com