Impara Java per lo sviluppo Android Introduzione a Java

In questa serie di tutorial, acquisirai familiarità con Java, il linguaggio di programmazione utilizzato per sviluppare applicazioni Android. Il nostro obiettivo è preparare coloro che hanno già familiarità con un linguaggio di programmazione, come PHP o Objective-C, per familiarizzare con il linguaggio di programmazione Java e immergersi nello sviluppo di app Android. In questo tutorial, avrai una breve introduzione ai fondamentali di Java, tra cui programmazione orientata agli oggetti, ereditarietà e altro ancora. Se sei nuovo in Java, o semplicemente stai cercando di rispolverare i dettagli, allora questa è la serie di tutorial per te!

Iniziare

Per quanto riguarda i prerequisiti, assumeremo che tu capisca come programmare (forse in PHP, o Visual Basic o C ++), ma che non hai familiarità con le specifiche della programmazione nel linguaggio Java. Non ti insegneremo a programmare; forniremo chiari esempi di costrutti e principi del linguaggio Java comunemente utilizzati, evidenziando alcuni suggerimenti e trucchi specifici per Android.

Cosa ti serve

Tecnicamente, non hai bisogno di strumenti per completare questo tutorial, ma sicuramente ti serviranno per sviluppare applicazioni Android.

Per sviluppare applicazioni Android (o qualsiasi altra applicazione Java, per quella materia), è necessario un ambiente di sviluppo per scrivere e creare applicazioni. Eclipse è un ambiente di sviluppo molto popolare (IDE) per Java e l'IDE preferito per lo sviluppo Android. È liberamente disponibile per i sistemi operativi Windows, Mac e Linux.

Per le istruzioni complete su come installare Eclipse (incluse le versioni supportate) e l'SDK Android, consultare il sito Web degli sviluppatori Android.

Cos'è Java?

Le applicazioni Android sono sviluppate utilizzando il linguaggio Java. A partire da ora, questa è davvero la tua unica opzione per le applicazioni native. Java è un linguaggio di programmazione molto popolare sviluppato da Sun Microsystems (ora di proprietà di Oracle). Sviluppato molto tempo dopo C e C ++, Java incorpora molte delle potenti funzionalità di quei potenti linguaggi mentre risolve alcuni dei loro inconvenienti. Tuttavia, i linguaggi di programmazione sono potenti quanto le loro librerie. Queste librerie esistono per aiutare gli sviluppatori a creare applicazioni.

Alcune delle principali funzionalità di Java sono:

  • È facile da imparare e capire
  • È progettato per essere indipendente dalla piattaforma e sicuro, utilizzando
    macchine virtuali
  • È orientato agli oggetti

Android fa molto affidamento su questi fondamentali Java. L'SDK di Android include molte librerie Java standard (librerie di strutture dati, librerie matematiche, librerie grafiche, librerie di rete e tutto il resto che desideri) e speciali librerie Android che ti aiuteranno a sviluppare applicazioni Android fantastiche.

Perché Java è facile da imparare?

Java è facile da imparare per una serie di motivi. Sicuramente non mancano risorse Java per aiutarti ad apprendere la lingua, inclusi siti Web, esercitazioni, libri e corsi. Java è uno dei linguaggi di programmazione più ampiamente discussi, insegnati e usati sul pianeta. È utilizzato per diversi tipi di progetti di programmazione, indipendentemente dalla loro scala, dalle applicazioni Web alle applicazioni desktop alle applicazioni mobili.

Se provieni da uno sfondo di programmazione tradizionale come C o C ++, troverai la sintassi Java abbastanza simile. Se non lo sei, conforta il fatto di aver scelto una delle lingue più facili da imparare. Sarai attivo e funzionante in pochissimo tempo.

Infine, Java è una delle lingue più leggibili al mondo, con cui intendiamo dire che una persona che non sa nulla della programmazione può spesso guardare un codice Java e avere almeno un indizio di quello che sta facendo. Considera il seguente esempio:

carattere carattere = 'a'; if (character == 'a') doSomething ();  else doSomethingElse ();  

Se leggi semplicemente il codice ad alta voce, puoi dire che questo snippet di codice sta funzionando. C'è una singola variabile chiamata carattere. Se la variabile di carattere è uguale alla lettera a, allora facciamo qualcosa (chiama il metodo doSomething ()), altrimenti facciamo qualcos'altro (chiamando il metodo doSomethingElse ()).

Perché l'indipendenza dalla piattaforma è importante?

Con molti linguaggi di programmazione, è necessario utilizzare un compilatore per ridurre il codice in linguaggio macchina che il dispositivo può comprendere. Mentre questo è buono e buono, diversi dispositivi utilizzano diversi linguaggi macchina. Ciò significa che potrebbe essere necessario compilare le tue applicazioni per ogni diverso dispositivo o linguaggio macchina, in altre parole, il tuo codice non è molto portabile. Questo non è il caso con Java. I compilatori Java convertono il tuo codice da file sorgente Java leggibili da umani a qualcosa chiamato "bytecode" nel mondo Java. Questi sono interpretati da una Java Virtual Machine, che funziona come una CPU fisica potrebbe funzionare su codice macchina, per eseguire effettivamente il codice compilato. Sebbene possa sembrare che questo sia inefficiente, sono stati fatti molti sforzi per rendere questo processo molto veloce ed efficiente. Questi sforzi hanno ripagato in quanto prestazioni Java in generale secondo solo a C / C ++ nei confronti delle prestazioni linguistiche comuni.

Le applicazioni Android vengono eseguite in una speciale macchina virtuale chiamata Dalvik VM. Sebbene i dettagli di questa VM non siano importanti per lo sviluppatore medio, può essere utile pensare a Dalvik VM come una bolla in cui viene eseguita l'applicazione Android, che consente di non preoccuparsi se il dispositivo è un Motorola Droid, un HTC Evo o l'ultimo tostapane con Android. Non ti importa se il dispositivo è compatibile con Dalvik VM e questo è il compito del produttore del dispositivo di implementare, non il tuo.

Perché è Java Secure?

Prendiamo questa idea di bolla un po 'oltre. Poiché le applicazioni Java vengono eseguite all'interno della bolla che è una macchina virtuale, sono isolate dall'hardware del dispositivo sottostante. Pertanto, una macchina virtuale può incapsulare, contenere e gestire l'esecuzione del codice in modo sicuro rispetto alle lingue che operano direttamente nel codice macchina. La piattaforma Android fa un ulteriore passo in avanti. Ogni applicazione Android viene eseguita sul sistema operativo (basato su Linux) utilizzando un account utente diverso e nella propria istanza di Dalvik VM. Le applicazioni Android sono strettamente monitorate dal sistema operativo e si spengono se non suonano bene (ad esempio, usano troppa potenza di elaborazione, non rispondono, sprecano risorse, ecc.). Pertanto, è importante sviluppare applicazioni stabili e reattive. Le applicazioni possono comunicare tra loro utilizzando protocolli ben definiti.

Compilare il tuo codice

Come molti linguaggi, Java è ancora un linguaggio compilato anche se non viene compilato fino al codice macchina. Ciò significa che tu, lo sviluppatore, devi compilare i tuoi progetti Android e comprarli per l'implementazione su dispositivi. L'ambiente di sviluppo Eclipse (utilizzato con il plug-in di sviluppo Android) rende questo piuttosto indolore. In Eclipse, la compilazione automatica è spesso attivata per impostazione predefinita. Ciò significa che ogni volta che si salva un file di progetto, Eclipse ricompila le modifiche per il pacchetto dell'applicazione. Si vedono immediatamente errori di compilazione. Eclipse interpreta anche Java durante la digitazione, fornendo una comoda colorazione e formattazione del codice oltre a mostrare molti tipi di errori man mano che si procede. Spesso, puoi fare clic sull'errore e fare in modo che Eclipse aggiusti automaticamente un errore di digitazione, o aggiungere una dichiarazione di importazione, o fornire un metodo di stub per te, risparmiando un sacco di digitazione.

Puoi comunque compilare manualmente il tuo codice se lo desideri. All'interno di Eclipse, troverai le impostazioni di Build sotto il menu del progetto. Se hai attivato "Crea automaticamente", puoi comunque scegliere l'opzione "Pulisci ..." che ti consentirà di eseguire una ricostruzione completa di tutti i file. Se "Build Automatically" è disattivato, le opzioni del menu "Build All" e "Build Project" sono abilitate. "Crea tutto" significa costruire tutti i progetti nell'area di lavoro. Puoi avere molti progetti in uno spazio di lavoro di Eclipse.

Il processo di compilazione, per i normali progetti Java, genera un file con l'estensione di JAR - Java ARErba cipollina. Le applicazioni Android prendono i file JAR e li impacchettano per la distribuzione su dispositivi come UNndroid Pcorrente alternataKfile di età con estensione .apk. Questi formati non includono solo il codice Java compilato, ma anche qualsiasi altra risorsa, come stringhe, immagini o file audio, che l'applicazione richiede per l'esecuzione e il file manifest di applicazione, AndroidManifest.xml. Il file manifest di Android è un file richiesto da tutte le applicazioni Android, che vengono utilizzate per definire i dettagli di configurazione della tua app.

Cos'è un linguaggio di programmazione orientato agli oggetti?

Va bene. Tempo per una visione molto breve e di 20.000 piedi di programmazione orientata agli oggetti (OOP). OOP è uno stile o una tecnica di programmazione che si basa sulla definizione di strutture di dati chiamate oggetti. Per chi è nuovo a OOP, un oggetto può essere considerato molto simile a un tipo di dati personalizzato. Ad esempio, potresti avere un oggetto Dog, che rappresenta il modello per un cane generico, con un nome, una razza e un genere. È quindi possibile creare diverse istanze dell'oggetto Dog per rappresentare cani specifici. Ogni oggetto Dog deve essere creato chiamando il suo costruttore (un metodo che ha lo stesso nome dell'oggetto stesso e può o non può avere parametri per l'impostazione dei valori iniziali). Ad esempio, i seguenti oggetti Dog utilizzano un costruttore con tre parametri (nome, razza, genere):

Cane cane1 = nuovo cane ("Lassie", collie, femmina); Dog dog2 = new Dog ("Fifi", barboncino, femmina); Cane dog3 = nuovo Cane ("Asta", foxterrier, maschio); 

Quindi, dove è definito questo oggetto Dog? Bene, qui abbiamo bisogno di iniziare a definire alcuni dei blocchi fondamentali del linguaggio di programmazione Java. UN classe fornisce una definizione per un oggetto. Pertanto, esiste una classe Dog da qualche parte, definita da te o in qualche libreria da qualche parte. In generale, una classe verrà definita nel proprio file, con il nome file corrispondente al nome della classe (ad es. Dog.java). Ci sono delle eccezioni a questa regola, come le classi definite all'interno di altre classi (quando una classe è dichiarata all'interno di una classe, è generalmente definita per l'uso all'interno della classe genitore solo come classe helper e viene chiamata classe interiore).

Quando vuoi fare riferimento a un oggetto all'interno di un'altra classe, devi includere un dichiarazione di importazione nella parte superiore del tuo file di classe, in modo simile a come useresti un'istruzione #include in un linguaggio compilato come C.

Una classe in genere descrive i dati e il comportamento di un oggetto. Il comportamento è definito usando la classe metodi. Metodo è il termine comune per una subroutine in un linguaggio OOP. Molte classi di oggetti comuni sono definite in librerie di classi condivise come i kit di sviluppo software (SDK), mentre altre sono definite dall'utente, lo sviluppatore, per i propri scopi. Il software viene quindi creato utilizzando e manipolando le istanze dell'oggetto in modi diversi.

Per favore, renditi conto che questa è una definizione molto generalizzata di OOP. Ci sono interi libri scritti su questo argomento. Se desideri saperne di più su OOP, ecco alcune risorse che potresti voler controllare:

Nota: in questo tutorial utilizziamo molti termini diversi. Esistono diversi modi per fare riferimento a un dato concetto (ad esempio superclasse vs. genitore), che confonde quelli nuovi con la programmazione orientata agli oggetti. Diversi sviluppatori usano termini diversi e quindi abbiamo cercato di menzionare i sinonimi dove appropriato. Decidere quali termini userete è una scelta personale.

Comprensione dell'eredità

Ecco un altro importante Concetto Java ti imbatterai in un sacco: eredità. In poche parole, l'ereditarietà significa che le classi Java (e quindi gli oggetti) possono essere organizzate in gerarchie con classi più basse e specifiche nella gerarchia ereditando comportamento e tratti da classi più alte e più generiche.

Questo concetto è meglio illustrato dall'esempio. Facciamo finta che stiamo sviluppando un'applicazione Java per simulare un acquario. Questo acquario ha alcuni pesci in esso. Pertanto, potremmo definire una classe per rappresentare un pesce. Questa classe, chiamata Fish, potrebbe includere alcuni campi di dati (chiamati anche attributi o variabili dei membri della classe) per descrivere un oggetto di pesce: specie, colore e dimensione; così come alcuni dei suoi comportamenti sotto forma di metodi (chiamati anche subroutine, o funzioni nei linguaggi procedurali), come eat (), sleep () e makeBabyFish ().

Un tipo speciale di metodo, chiamato a costruttore, è usato per creare e inizializzare un oggetto; i costruttori hanno lo stesso nome della loro classe e possono includere parametri. La seguente classe Fish ha due costruttori: uno per la creazione di un oggetto Fish generico e un altro per la costruzione di un oggetto Fish specifico con alcuni dati iniziali. Vedrai anche che la classe Fish ha due metodi eat (): uno per mangiare qualcosa di casuale, e l'altro per mangiare un altro pesce, che sarebbe rappresentato da un'altra istanza della classe Fish:

public class Fish private String mSpecies; private String mColor; private int mSize; Fish () // generic fish mSpecies = "unknown"; mColor = "unknown"; mSize = 0;  Pesce (specie di corde, colore stringa, dimensione int) mSpecies = species; mColore = colore; mSize = size;  public publicoid eat () // eat some algae; pubblico vuoto mangia (Fish fishToEat) // mangia un altro pesce! ; public void sleep () // sleep; public void makeBabyFish (Fish fishSpouse, int numBabies) // Produce numBabies valore di baby fish con Fish spouse;  

Le classi possono essere organizzate in gerarchie, dove a classe derivata (o sottoclasse) include tutte le funzionalità del suo classe genitore (o superclasse), ma affina e aggiunge a loro per definire un oggetto più specifico utilizzando la parola chiave extends. Questo è chiamato ereditarietà.

Ad esempio, la classe Fish potrebbe avere due sottoclassi: FreshwaterFish e SaltwaterFish. Queste sottoclassi avrebbero tutte le caratteristiche della classe Fish, ma potrebbero ulteriormente personalizzare gli oggetti attraverso nuovi attributi e comportamenti o comportamenti modificati dalla classe padre Fish. Ad esempio, la classe FreshwaterFish potrebbe includere informazioni sul tipo di ambiente di acqua dolce vissuto in (ad esempio fiume, lago, stagno o pozzanghera). Allo stesso modo, la classe SaltwaterFish potrebbe personalizzare il metodo makeBabyFish () in modo tale che il pesce mangia il suo compagno dopo la riproduzione (come definito nella super classe) utilizzando il meccanismo di override, come questo:

public class SaltwaterFish estende Fish @Override public void makeBabyFish (Fish fishSpouse, int numBabies) // chiama il metodo genitore super.makeBabyFish (fishSpouse, numBabies); // mangia mate eat (fishSpouse);  

Organizzazione del comportamento degli oggetti con le interfacce

In Java, è possibile organizzare i comportamenti degli oggetti nelle cosiddette interfacce. Mentre una classe definisce un oggetto, un'interfaccia definisce un comportamento che può essere applicato ad un oggetto. Ad esempio, potremmo definire un'interfaccia Swimmer che fornisce un insieme di metodi comuni a tutti gli oggetti che possono nuotare, siano essi pesci, lontre o androidi sommergibili. L'interfaccia Swimmer potrebbe specificare quattro metodi: startSwimming (), stopSwimming (), dive () e surface ().

interfaccia pubblica Swimmer void startSwimming (); void stopSwimming (); void dive (); superficie vuota ();  

Una classe come Fish potrebbe quindi implementare l'interfaccia Swimmer (usando la parola chiave implements) e fornire implementazioni del comportamento di nuoto:

classe pubblica Fish implementa Swimmer // Fornire implementazioni dei quattro metodi nell'interfaccia Swimmer 

Organizzazione di classi e interfacce con i pacchetti

Le gerarchie di classi, come le nostre classi di pesci, possono quindi essere organizzate in pacchi. Un pacchetto è semplicemente un insieme di classi e interfacce, raggruppate insieme. Gli sviluppatori usano gli spazi dei nomi per denominare i pacchetti in modo univoco. Ad esempio, potremmo usare com.mamlambo.aquarium o com.ourclient.project.subproject come nome del pacchetto per tenere traccia delle nostre classi relative ai pesci.

Avvolgendo

Wow! Ti sei appena imbarcato in un corso intensivo in Java per lo sviluppo Android. Abbiamo coperto una quantità piuttosto intensa di materiale qui, quindi lascia che le cose si sistemino per un po 'prima di passare alla lezione successiva di questa serie di tutorial. Nella Lezione 2, passiamo a concentrarci sui dettagli nitidi della sintassi Java.

Hai solo graffiato la superficie dello sviluppo Java per lo sviluppo Android. Scopri tutti gli altri fantastici tutorial su Mobiletuts + per approfondire lo sviluppo di Java e Android. In bocca al lupo!

Riguardo agli Autori

Gli sviluppatori mobili Lauren Darcey e Shane Conder hanno coautore diversi libri sullo sviluppo di Android: un libro di programmazione approfondito intitolato Sviluppo di applicazioni wireless Android e Sams TeachYourself Sviluppo di applicazioni Android in 24 ore. Quando non scrivono, passano il loro tempo a sviluppare software mobile presso la loro azienda ea fornire servizi di consulenza. Possono essere contattati via email a [email protected], tramite il loro blog su androidbook.blogspot.com e su Twitter @androidwireless.

Hai bisogno di più aiuto nella scrittura di app per Android? Consulta i nostri ultimi libri e risorse!

  • Sviluppo di applicazioni wireless Android 2a edizione>
  • Sams ti insegna a sviluppare applicazioni Android in 24 ore
  • Codice Mamlambo al Code Canyon

Esercizi correlati:

  • Impara Java per lo sviluppo Android: Sintassi Java
  • Introduzione allo sviluppo dell'SDK Android
  • Inizio Android: Introduzione a FortuneCrunch
  • Configurazioni comuni di dispositivi virtuali Android
  • Avvio di mappe in-app
  • Abilitare gli utenti a inviare e-mail in-app
  • Utilizzo di avvisi, toast e notifiche
  • Creazione di moduli utente semplici

Risorse utili:

Se si desidera iniziare con lo sviluppo di Android, un modello di app Android è un ottimo punto di partenza. Controlla la selezione su Envato Market o potresti guardare in modo più specifico per gli elementi Java.

Modelli di app Android su Envato Market

Puoi inoltre trovare sviluppatori Android su Envato Studio per aiutarti con tutto, dalla progettazione dell'interfaccia utente alla creazione di un'app Android nativa.

Sviluppatori Android su Envato Studio