Sceglilo tu
Se vuoi sviluppare applicazioni Android, inizia scegliendo un linguaggio. Le differenze tra i vari linguaggi di programmazione Android possono essere un po' complesse e sfumate. Scegliere con quale iniziare richiede una comprensione dei singoli punti di forza e di debolezza, quindi non voglio darti un'insufficienza.
Ma non voglio neanche annoiarti a morte e con questo in mente, troverai qui una breve descrizione di ogni opzione di linguaggio, seguita da informazioni più dettagliate. Scegliete quello che vi sembra interessante e poi saltateci sopra.
Le lingue che potreste considerare di imparare per lo sviluppo Android includono:
- Java - Java è il linguaggio ufficiale dello sviluppo Android ed è supportato da Android Studio. Tuttavia ha una ripida curva di apprendimento.
- Kotlin - Kotlin è stato recentemente introdotto come linguaggio Java "ufficiale" secondario. È simile a Java in molti modi, ma è un po' più facile da utilizzare.
- C/C++ - Android Studio supporta anche il C++ con l'uso del Java NDK. Questo permette la codifica nativa delle applicazioni, che può essere utile per cose come i giochi. Il C++ è comunque più complicato.
- C# - C# è un'alternativa leggermente più amichevole per i principianti al C o C++ che offusca maggiormente il codice. E' supportato da alcuni strumenti molto utili come Unity e Xamarin che sono ottimi per lo sviluppo di giochi e per lo sviluppo cross platform.
- BASIC - Un'opzione bonus è imparare il BASIC e provare l'IDE B4A di Anywhere Software. Questo è uno strumento facile ma potente, anche se decisamente più 'di nicchia'!
- Corona/LUA - Un altro strumento multipiattaforma basato su LUA. Semplifica enormemente il processo di costruzione delle app e ti permette di chiamare librerie native.
- PhoneGap (HTML, CSS, JavaScript) - Se sai già come costruire pagine web interattive, allora puoi usare questa conoscenza con PhoneGap per costruire un'app multipiattaforma di base.
Java
Quando arriva il momento di sviluppare applicazioni Android, la prima e più popolare opzione è Java. Java è il linguaggio ufficiale per lo sviluppo di Android, il che significa che è quello che ha il maggior supporto da parte di Google e quello che la maggior parte delle applicazioni sul Play Store sono costruite utilizzando.
Il modo numero uno per sviluppare applicazioni Android, è quello di andare avanti e scaricare Android Studio. Questo è un pezzo di software chiamato 'IDE' o 'Integrated Development Environment'. Viene fornito con l'SDK di Android (un insieme di strumenti per facilitare lo sviluppo di Android in particolare) e fondamentalmente questo vi darà tutto ciò di cui avete bisogno in un unico posto per essere operativi.
I tutorial ufficiali e la documentazione di Google faranno riferimento a questo metodo e troverete il maggior numero di librerie (codice gratuito per migliorare le vostre applicazioni) e tutorial che si concentrano su questo metodo.
Java stesso è stato rilasciato da Sun Microsystems nel 1995 ed è utilizzato per una vasta gamma di applicazioni di programmazione. Il codice Java viene eseguito da una 'macchina virtuale' che gira sui dispositivi Android e interpreta il codice.
Purtroppo, Java è anche un po' complicato e non è un grande 'primo linguaggio'. Questo è ciò che fornirà la più grande barriera per molte persone che vogliono iniziare con lo sviluppo Android, infatti. Android è un linguaggio di programmazione orientato agli oggetti con argomenti confusi come costruttori, eccezioni puntatore nullo, eccezioni controllate e altro ancora. Non è terribilmente leggibile e userete un sacco di codice 'boiler plate' per fare cose semplici. Aggiungete l'SDK Java e le cose diventano ancora più complicate - un programmatore alle prime armi può fare fatica a sapere cosa è Java e cosa è Android! Lo sviluppo utilizzando questo percorso richiede anche una comprensione di base di concetti come Gradle, come l'Android Manifest e il linguaggio di markup XML.
Questo non vuol dire che Java sia un cattivo linguaggio - tutt'altro. Non solo sarebbe sbagliato chiamare qualsiasi linguaggio 'cattivo', ma è anche vero che la maggior parte degli 'inconvenienti' di Java sono in realtà lì per il nostro bene e incoraggiano il codice pulito. Molte persone amano Java per questo motivo ed è anche uno dei più versatili e ampiamente utilizzati. Secondo la tabella PYPL (PopularitY of Programming Languages), Java è il linguaggio di programmazione più ricercato dai datori di lavoro.
A rendere la vita molto più semplice è Android Studio, che è andato di bene in meglio negli ultimi anni. Caratteristiche come un designer visivo e suggerimenti rendono il processo un po' più fluido, mentre funzioni avanzate e potenti vengono aggiunte continuamente per dare agli sviluppatori l'accesso a cose come il cloud storage con una facile implementazione. Vale la pena salire a bordo, anche se questo rapido progresso rende difficile tenere il passo a volte.
Quindi, qual è il verdetto? Per coloro che vogliono un'esperienza di sviluppo Android "completa", immergersi in Java è il posto migliore per iniziare. Per coloro che sono scoraggiati dal codice complesso, è possibile lavorare in gran parte con il designer e seguire i tutorial per qualsiasi cosa più complicata. Se però sei un principiante e stai cercando di fare un gioco, o vuoi solo iniziare ad imparare per il gusto di imparare e ti piacerebbe far partire qualche progetto gratificante; allora ti consiglio di iniziare con qualcosa di più facile e poi tornare a questo quando avrai un po' più di basi.
Guarda l'introduzione di Gary a Java qui.
Nota:
Detto questo, è anche possibile usare Java con Unity. Discuterò di Unity nella sezione su C# - ma basta notare che si potrebbe optare per il linguaggio Java leggermente più complicato quando si segue questa strada e poi usarlo per passare più facilmente allo sviluppo con Android Studio.
Kotlin
Kotlin è recentemente entrato in scena come "altro" linguaggio ufficiale per lo sviluppo Android. Alcune speculazioni suggeriscono che questo probabilmente aumenterà il profilo del linguaggio e che potrebbe diventare il prossimo 'Siwft'.
Come Java, Kotlin gira sulla Java Virtual Machine. È anche completamente interoperabile con Java e non causa alcun rallentamento o aumento delle dimensioni dei file. La differenza è che Kotlin richiede meno codice 'boiler plate', il che significa che è un sistema più snello e facile da leggere. Fa anche a meno di errori come le eccezioni di punto nullo e vi scagiona anche dal terminare ogni riga con i punti e virgola. In breve, è ottimo se state imparando a sviluppare applicazioni Android per la prima volta.
Quindi Kotlin è sicuramente un punto di partenza più facile per i principianti e il fatto che potete ancora usare Android Studio è un grande vantaggio. Non è ancora così semplice da prendere come per esempio C# con Unity però, e il supporto della comunità è nella sua relativa infanzia. Infatti, attualmente è necessario scaricare una versione beta di Android Studio per ottenere il supporto out-the-box.
Ancora, Kotlin dovrebbe essere sicuramente sul vostro radar e potrebbe offrire un punto di ingresso più facile per lo sviluppo 'proprio' di Android. Questo è probabilmente il motivo per cui Google l'ha introdotto in primo luogo.
Scopri perché dovresti provare Kotlin qui.
C/C++
È giusto dire che la maggior parte delle persone che leggono questo articolo non dovrebbero scegliere questa strada per sviluppare applicazioni Android. Android Studio offre supporto per il codice C/C++ usando l'Android NDK (Native Development Kit). Questo significa che scriverete codice che non viene eseguito sulla Java Virtual Machine, ma piuttosto viene eseguito 'nativamente' sul dispositivo e vi dà più controllo su cose come la memoria. Per applicazioni intensive come i giochi 3D, questo può permettervi di spremere prestazioni extra da un dispositivo Android. Significa anche che sarete in grado di utilizzare librerie scritte in C o C++.
Tuttavia, tende anche ad essere molto più difficile da configurare, introduce più bug ed è meno flessibile. E se volete creare un gioco per computer, probabilmente fareste meglio ad usare un motore di gioco già pronto
C#
C# è fondamentalmente una versione più facile e orientata agli oggetti di C e C++ sviluppata da Microsoft. Mira a portare la potenza del C++ e la facilità di Visual Basic e si legge un po' come una versione semplificata di Java. Come Java, C# è garbage collected, il che significa che non c'è bisogno di preoccuparsi di cose come le perdite di memoria e di liberare la memoria da soli. Allo stesso tempo, però, C# è più moderno di Java con una sintassi più pulita - anche se questo potrebbe essere solo un mio pregiudizio. Il miglior linguaggio per sviluppare applicazioni Android spesso si riduce al gusto.
Se volete un'introduzione particolarmente facile e accogliente allo sviluppo di applicazioni Android, allora vi consiglio la combinazione di C# e Unity. Unity è un 'motore di gioco' (nel senso che fornisce cose come i calcoli fisici e il rendering della grafica 3D) e un IDE come Android Studio. Si tratta di uno strumento gratuito che rende incredibilmente facile creare i propri giochi - con poche righe di codice si può avere un gioco di piattaforma di base impostato in meno di un'ora. Nessuna esagerazione. Ed è anche perfettamente potente, essendo lo strumento utilizzato dalla maggior parte degli studi di gioco sul Google Play Store. Ed è anche multipiattaforma. Oltre a tutto questo, sviluppare in questo modo fornisce un modo molto pratico per imparare la codifica orientata agli oggetti (perché gli oggetti in questo caso sono effettivamente oggetti la maggior parte del tempo).
Il limite? Unity è utile per la creazione di giochi, ma sub-parte per la creazione di applicazioni Android standard, soprattutto se si vuole conformarsi al linguaggio Material Design di Google. Se vuoi diventare uno sviluppatore Android professionista, allora questo percorso non standard limiterà le tue opportunità di lavoro - a meno che il tuo obiettivo sia quello di diventare uno sviluppatore di giochi, nel qual caso questo è un background perfettamente rilevante e professionale.
Non sei appassionato di Unity? Allora potresti considerare Unreal (grafica migliore, meno adatta al mobile) o game-maker semplificati come GameMaker Studio.
C# può anche essere usato con Xamarin attraverso Visual Studio. Questo è più simile al tradizionale sviluppo Android con il vantaggio di essere cross platform (una base di codice per Android e iOS). Per un completo principiante, questo percorso è ancora una volta un punto di ingresso un po' ottuso allo sviluppo Android - ma per una piccola azienda che vuole creare un'app per iOS e Android ha senso e c'è un sacco di supporto e informazioni là fuori per aiutarti.
BASIC
Ricordi che ho detto che C# era un tentativo di offrire la potenza del C con la facilità del Visual BASIC? Bene, perché BASIC (Beginners All-Purpose Symbolic Instruction Code) è incredibilmente piacevole da usare e un punto di partenza assolutamente ideale per imparare a scrivere codice.
Purtroppo, non è supportato ufficialmente da Android Studio e non si può usare in Unity o Xamarin. La buona notizia è che c'è un'opzione meno conosciuta per sviluppare applicazioni Android in BASIC chiamata 'B4A' da Anywhere Software. Questo è un acronimo per 'BASIC 4 Android' e, come ci si potrebbe aspettare, consente di codificare le applicazioni Android con BASIC. Non è certamente la prima scelta per la maggior parte dei programmatori che vogliono sviluppare applicazioni Android, ma è sempre bello avere più opzioni.
B4A è progettato come un ambiente 'RAD' o Rapid Application Development. Ci sono un sacco di altre decisioni di design intelligenti per rendere la vita più facile e c'è una comunità molto solidale se hai qualche domanda.
Questo è un ottimo modo per imparare a scrivere codice secondo la mia opinione personale e si possono costruire alcune applicazioni piuttosto potenti usando solo questo metodo. Non è l'ideale per fare giochi di fascia alta però e ancora una volta soffre di essere un'opzione 'non ufficiale' - quindi è più difficile creare qualcosa che soddisfi esattamente le specifiche del Material Design e troverete più difficile lavorare come sviluppatore professionista con solo BASIC. L'altro grande svantaggio è che questa è l'unica opzione sulla lista che non è gratuita da utilizzare.
Corona
Corona offre un'altra opzione considerevolmente più semplice per lo sviluppo di applicazioni Android, pur dandovi una discreta quantità di potere e controllo. Codificherai in LUA, che è già molto più semplice di Java, e in più, il Corona SDK (Software Development Kit) renderà le cose ancora più facili. Supporta tutte le librerie native, permette di pubblicare su più piattaforme. È in gran parte utilizzato per la creazione di giochi, ma può essere utilizzato anche in una varietà di altri modi. Avrete bisogno di usare un editor di testo come Notepad++ per inserire il vostro codice e potrete eseguire tale codice su un emulatore senza nemmeno bisogno di compilare prima. Quando sarete pronti a creare un APK e a distribuirlo, sarete in grado di farlo utilizzando uno strumento online.
Questo richiede competenze di base di codifica, ma offre una bella e gentile introduzione al mondo della programmazione. Allo stesso tempo, però, è sicuramente limitato in una certa misura ed è un paio di passi lontano dal territorio di 'app builder'. Questo è più utile per qualcuno che vuole creare qualcosa di relativamente semplice e non è così preoccupato di sviluppare le proprie capacità di codifica o diventare un professionista. Se si desidera utilizzare funzioni come l'acquisto in-app, allora è necessario pagare una tassa. Lo stesso vale per l'utilizzo delle API native di Android.
PhoneGap
Infine, l'ultima grande opzione 'semplificata' a cui ci si può rivolgere per sviluppare applicazioni Android è PhoneGap, a meno che non si voglia invece rivolgersi ad un programma 'app builder'. PhoneGap è alimentato da Apache Cordova e consente essenzialmente di creare applicazioni utilizzando lo stesso codice che normalmente si usa per creare un sito web: HTML, CSS e JavaScript. Questo viene poi essenzialmente mostrato attraverso una 'WebView' ma confezionato come un'app. PhoneGap agisce quindi come un ponte, permettendo agli sviluppatori di accedere ad alcune caratteristiche native di base del telefono o del tablet - come l'accelerometro o la fotocamera.
Questo non è davvero 'vero' sviluppo Android però e l'unica vera programmazione sarà JavaScript. Per molti compiti di base farà il lavoro, ma se si vuole essere in grado di rivendicare il vero 'sviluppatore di app Android' (che è una cosa), allora si dovrebbe affrontare una delle altre scelte in questa lista.