Java in the future!

Certamente sapere come si é evoluto il sistema operativo Android nel tempo ci aiuta meglio a inquadrare anche il grand dinamismo che ritroviamo sulle sue versioni. Quali sono le origini di Android, qual’ è il suo ecosistema? Potremmo liquidare la cosa con una definizione secca e asciutta noir: Android é un sistema operativo OPEN SOURCE basato su KERNEL LINUX mentre le API o utility sono state riscritte in JAVA. In rete c’è molta confusione sull’ origine di Android, il sistema di fatto ha un KERNEL chiaro ma che è stato successivamente modificato per cui non possiamo considerarlo certo un sistema LINUX. Android si utilizza in tutti i settori non solo il mobile, anche per televisioni, Android Auto, orologi da polso con Android Wear occhiali come Google Glass et. La società nasce nel 2003 e non apparteneva a Google. Nel 2003 non esistevano gli smartphone. Ad Agosto del 2005 Google entra in scena e acquisisce la società sviluppando il sistema operativo Android che viene presentato ufficialmente il 5 novembre 2007 da un consorzio di aziende, mentre nel 2008 esattamente il 22 ottobre, viene presentato il primo smartphone Android, l’HTC Dream.A questo punto verrebbe da chiedersi: ma quale linguaggio di programmazione posso utilizzare su questo sistema? Innanzitutto Java perché le API sopra il kernel linux sono state riscritte in questo rigoroso linguaggio che non è certo visual basic come intelaiatura di base. Posso scrivere APP anche con il linguaggio KOTLIN che oltre a invocare API Java ha il vantaggio di essere più facile come curva di apprendimento. Quando si parla invece di Android Package invece si fa riferimento al famoso file che ha estensione APK, che è una scatola magica che comprende tutte le risorse utilizzate per svolgere le funzionalità dell’ APP. Un file compresso che abbraccia immagini, file compilati e file di configurazione. Sostanzialmente l’SDK, il software development kit di Android, compila il codice sorgente e crea un file APK, Non resta a questo punto che parlare di C++, il famoso C sharp, in quanto il kernel linux ha delle parentele a sostegno. Ci sono anche software che consentono di creare APP native Android utilizzando anche il più semplice e intuitivo Visual Basic per esempio, che poi convertono in bytecode i file sorgente trasformando tutto in un formato compatibile java. Sempre simulando il lavoro di un registra che si avvicina sempre di più zoomando al suo obiettivo, andiamo a vedere il primo piano di una ACTIVITY. Si definisce Activity una schermata dotata di interfaccia utente, trattasi di primo livello di interazione con l’utente, parliamo sempre di entry poin indipendenti come mandare una mail, consultare una mappa. Importante sottolineare come ogni ACTIVITY abbia un ciclo di vita ben definito. Questa modularità consente di richiamare altre activity nell’ APP e richiamare anche activity esterne, di altre APP, come la fotocamera per esempio, senza necessità di scrivere il codice ma solo richiamando una istruzione che apre l’activity dell’ APP che gestisce la fotocamera, senza necessità di scrivere la logica per scattare le foto. Poi dopo l’activity abbiamo i SERVICES che sono componenti che richiedono un tempo di esecuzione elevato che vengono eseguiti in background. I Services non hanno interfaccia utente, esempio il player che ci fa ascoltare la musica lavora in background quando facciamo altre con altre applicazioni, il services ha delle analogie con Ajax perchè mentre stai facendo qualcosa nel frattempo si sta verificando qualcos’ altro come per esempio potrebbe essere un backup in background. Per implementare un Service dobbiamo creare una classe che estenda una classe Services che estenda la classe Service analogamente alle activity. Le broadcast receiver servono a gestire le notifiche anche quando l’applicazione non è in uso. Il content provider è un componente che mette a disposizione delle risorse, tipo contatti a cui possiamo accedere su un file system, quindi avremmo a disposizione una serie di metodi di lettura e scrittura da settare tramite permessi. Una APP puù richiamare altri componenti di APP e non devo riscrivere il codice per ripristinare la stessa funzionalità, quindi l’implementazione delle funzionalità è supportata da librerie per cui prima di sviluppare e inventare l’acqua calda conviene verificare che il tutto non sia già disponibile. Per attivare i componenti di una APP si sfruttano gli INTENT che collegano i singoli componenti tra loro in una fase di runtime. Questo vale solo per i services, le activity e i broadcast receiver, in quanto i content provider vengono attivati tramite richieste definite content resolver che ha lo scopo di gestire le transazioni con il server. Tutti i componenti vanno dichiarati all’ interno di un file che si chiama AndroidManifest.xml che contiene una serie di informazioni relative all’ APP come appunto i componenti, la versione supportata, quella corrente, la versione dell’ APP , il tutto all’ interno dell’ elemento application. I componenti implementati vanno dichiarati in questo file XML, altrimenti la classe non verrà attivata, fanno eccezione solo i broadcast receivers. A questo punto diamo un occhiata al grattacielo architetturale partendo dal basso. Al piano terra troviamo il Kernel linux, al primo piano abbiamo l’hardware abstraction layer, al terzo abbiamo le librerie native in C e C++ con le android runtime, al quarto piano ci abitano le java api framework, e sopra al quinto piano alla Buzzato le systems APP. Il vantaggio di avere un piano terra con questo inquilino dà modo agli addetti lavori di stare tranquilli sulla robustezza delle applicazioni e nello stesso tempo i produttori di device possono liberare i loro prodotti per un sistema collaudato e conosciuto che funziona. In questo modo viene semplificata la gestione dei driver per esempio. Come tutti i palazzi che si rispettano i palazzi inferiori servono a supportare il peso degli strati superiori, così l’inquilino del primo piano che ha scritto sul campanello HAL dovrà sostenere le funzionalità hardware del dispositivo al livello Java superiore passando per le librerie di C. HAL ha al suo interno diversi moduli a comportamenti stagni come la gestione della fotocamera, la libreria che gestisce il wireless e un API Java quando inoltra una richiesta scende con l’ascensore fino al primo piano, fino a trovare il componente richiesto, tipo la libreria per l’utilizzo dell’ audio (componente hardware). HAL è scritto in codice natico C per cui al secondo piano ci ritroviamo proprio le librerie C e C++, quindi possiamo anche utilizzare questo linguaggio per le nostre APP. La versione 5 di Android ha introdotto l’importante funzionalità di RunTime (ART) che serve ad alleggerire il carico di lavoro su quei computer che hanno poca memoria, lanciando a compartimenti stagni i processi della singola app. L’intero set di funzionalità del sistema operativo scritte in java vengono definite API. Con KOTLIn reso disponibile solo da qualche mese cambia qualcosina rispetto a Java ma la curva di apprendimento é più bassa. Le system apps sono categorie che android mette a disposizione per classificazione, come la gestione delle mail e del calendario, della fotocamera, il telefono etc. Tramite queste librerie di codice il nostro lavoro risulterà semplificato, pensiamo solo ad esempio alla preoccupazione di scrivere codice per la gestione degli SMS che di fatto possono essere implementate subito senza perdite di tempo. Oppure pensiamo alla famosa condivisione dove cliccando sui puntini della foto si apre una interfaccia utente in automatico che mi fa scegliere la mia modalità di divulgazione dei contenuti, questo è gestito dalle app di sitema. Dopo aver visto l’architettura e la piattaforma Android basata sulla piattaforma linux che consente una facilità di distriubuzione dei driver in sicurezza, passiamo ad analizzare i famosi ambienti di sviluppo, il JRE e il JDK. Per JRE si intende il Java runtime environment ossia una implemetazione della macchina virtuale java. Infatti il JRE contiene la macchina virtuale più le API predisposte per avviare i codici compilati (metodo main). Il JRE non è un ambiente di sviluppo e non va confuso con il java development kit, che serve per scriverr software java, cosa che esula dalla piattaforma android e che contiene nel pacchettone da scaricare da oracle la macchina virtuale, quindi JDK in sintesi = JRE + JVM. Come mostrato in figuyra il JDK contiene molti comandi essenziali da eseguire a riga di comando. La differenza tra JDK e le IDE consistono nel fatto che i primi sono ambienti di sviluppo a riga di comando mentre i secondi ambienti di sviluppo hanno una interfaccia grafica. Gli ide segnalano errori di scrittura in modo visibile a video, forniscono delle risorse per sviluppare più velocemente, il debug avviene in maniera visuale. Esistono diversi IDE. Eclipse è un ambiente di sviluppo messo in piedi nel 2000 , https://www.eclipse.org/downloads/packages/release/photon/r/eclipse-ide-java-ee-developers , oggi molto diffuso, ma esistono anche IntelliJdea, https://www.jetbrains.com/idea/ e Net Beans, https://netbeans.org/ .Il workspace di Eclipse é una directory dove vengono organizzati i progetti creati con questo IDE. Ogni progetto avrà la sua cartella all’ interno del workspace. Gli IDE sfruttano le librerie del JDK, ad esempio Eclipse per debaggare richiama una libreria presente nel kit di java, dove le informazioni a riga di comando vengono convertite dal software specifico a video per dare una interazioni grafica. Il JDK si scarica all’ indirizzo http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html mentre il JRE http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html. Dopo le installazione in cartelle nostre specifiche dobbiamo configurare la variabile di ambiente per fare in modo che quando lanciamo dal path generale il comando java sia visibile. Per ora ci fermiamo qui, occorre approfondire come configurare Eclipse dopo l’installazione, scegliendo la prima cosa che ci chiede dopo l’avvio, ossia la posizione della famosa cartella di lavoro workspace. Java è un linguaggio rigoroso, solido, pignolo ma commerciale: ha un ampia distribuzione e serve a costruire qualsiasi tipo di software in tutti gli ambienti, richiestissimo a livello specialistico dalle aziende. L’ambiente di sviluppo IDE per costruire applicazioni android é android studio scaricabile all’ indirizzo: https://developer.android.com/studio/

Annunci

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...