mmmh, no su quasi tutta la linea!
- Android NON E' un linguaggio di programmazione ma un sistema operativo quindi
- Android NON estende Java e chiaramentente non lo modifica
- sebbene Java sia sicuramente il linguaggio di programmazione più usato per creare app in Android, è possibilissimo usare linguaggi totalmente differenti da Java per farlo: C, C++, C#, HTML+CSS+Javascript, Kotlin (che si prevede che in un futuro, non prossimo, potrebbe prendere il posto di Java come linguaggio preferito dagli sviluppatori)
- i servlet sono componenti software Java lato server, non servono a mostrare layout in un'app, tranne ovviamente che in risposta ad un'interrogazione di una app client ad un server web.
- i libri su Android che "spiegano l'essenziale di Java" non sono buoni neanche per usarli in bagno perché invece di pulire ti sporcano.
Invece concordo che, prima di iniziare a pensare di sviluppare qualcosa su/per/in Android, se non si ha alcuna conoscenza di altri linguaggi di programmazione, allora conviene sicuramente iniziare con lo studio di Java. Per inciso, l'essenziale di Java da sapere per approcciarsi ad Andorid è ben poco essenziale e consiste in:
- nozioni basilari: variabili, tipi primitivi, identificatori, costanti, stringhe, operazioni aritmetiche e logiche
- nozioni basilari di programmazione strutturata: istruzioni di controllo, cicli, metodi statici (grossolanamente: simili alle funzioni in linguaggi come il C)
- array mono e multidimensionali, operazioni su di essi
- ricorsione
- nozioni fondamentali di programmazione a oggetti: classi, metodi, incapsulamento ed information hiding, ereditarietà, polimorfismo
- classi astratte, interfacce
- eccezioni e loro gestione
- stream e file
- un po' di strutture dati (collection)
Non è invece richiesta la conoscenza di Swing e/o JavaFX (per la creazione delle GUI), sebbene un'occhiatina sarebbe il caso di darcela.
Dopo aver fatto un po' di esperienza su tutto questo (voglio dire minimo 3 mesi? meglio 6...), allora ci si avvicina ad Android.
Ciao, non concordo con quanto detto da te, ma premetto che su molte cose sono punti di vista, mi spiego meglio:
1) Android non è un linguaggio di programmazione bensì un sistema operativo esattamente come hai detto(leggerezza nel parlato mia), ma siccome nel linguaggio comune si dice "programmare android" o "programmare per android" o "programmare su android" si tende a trattare android come un linguaggio, in virtù anche del fatto che molte librerie standard sono proprie di android e di nessun altro linguaggio e ciò lo dimostra il package d'appartenenza:
import android.content.*;
import android.graphics.*;
import android.net.*;
import android.os.*;
import android.support.*;
import android.view.*;
import android.widget.*;
Ragion per cui potevo certamente esprimermi meglio e chiedo scusa, presterò maggiore attenzione :)
Per quanto riguarda il discorso delle servlet: esse sono classi java, ragion per cui, come fatto anche lato android, ho parlato in modo molto semplicistico, mi sembrava scontato dire che sono classi java(ergo lato server ovviamente).
"android usa adapter e fragment per per mostrare i layout, java le servlet."
Tu probabilmente avrai avuto da ridire con questa frase, ma sia chiaro(e pensavo lo fosse in modo molto più generico e semplicistico) che intendevo dire: android tramite le activity, gli adapter ed i fragment esegue il setContentView o l'inflate per mostrare un layout, mentre java mostra genericamente le jsp tramite una servlet e la request(in genere tramite il requestDispatcher).
Ti devo dare totalmente ragione per il tuo terzo punto in quanto non sapevo si potessero usare oltre al java per un app android SOLO la triade HTML CSS Javascript. non ho neanche citato gli altri linguaggi perchè per sviluppare su android il java è la scelta ottimale(facilità, documentazione e supporto per integrare lib esterne).
Per quanto riguarda i libri non sono del tutto d'accordo: come già anticipato nella risposta i libri java sono ovviamente un paio di mondi al di sopra dei libri "all-in-one android-java", ma se studi da qualche buono libro android si riescono a ricavare abbastanza nozioni, ma dipende dai libri. Ce ne sono davvero tanti e io ne ho letti 3 di cui uno ha abbastanza teoria di java. Sono un po' in disaccordo con quanto hai detto sull'essenziale java da sapere per fare android:
secondo me non ci sono argomenti fissi da sapere: dipende sempre dall'app che si vuole fare, ad esempio nei miei sviluppi android non sono mai serviti array(ho sempre preferito le collection e le reputo molto più importanti come argomento ma è un parere), non mi sono mai serviti i file(ovviamente dipende sempre dall'app che si vuol creare) ma soprattutto non mi è mai servita la ricorsione che è una scelta implementativo propria. Torno a ripetere che bisogna fissare degli obiettivi e poi si parla di argomenti, ma siamo sicuramente d'accordo che un buon libro java è la cosa migliore da consigliare ad un novizio così da coprire al meglio tutti gli argomenti ed avere una conoscenza a 360° del linguaggio che male non fa MAI. Se mi permetti un'ultima osservazione poi: swing è totalmente deprecato da anni, javaFX invece lo trovo di per sè verboso ma soprattutto inutile per android che ha un ottimo supporto per gli sviluppi delle UI. Grazie per la critica, devo sicuramente rivedere il mio modo di parlare!