Questa è davvero una bella domanda! Non ho mai pensato a persone che imparano Java solo così hanno più facile imparare Scala ...
Oltre a tutte le nozioni di base come lo for
loop e simili, l'apprendimento di Java Generics può essere davvero utile. L'equivalente Scala è molto più potente (e molto più difficile da capire) rispetto a Java Generics. Potresti voler cercare di capire dove sono i limiti di Java Generics, e in quali casi i costruttori di tipo Scala possono essere usati per superare tali limiti. A livello più basilare, è importante sapere perché i Generics sono necessari e in che modo Java è un linguaggio fortemente tipizzato.
Java consente di avere più costruttori per una classe. Questa conoscenza sarà inutile quando impari Scala, perché Scala ha un altro modo che ti permette di offrire diversi metodi per creare istanze di una classe. Quindi, preferiresti non avere una visione approfondita di questo concetto di Java.
Ecco alcuni concetti che differiscono molto fortemente tra Java e Scala. Quindi, se impari i concetti Java e poi vuoi imparare l'equivalente in Scala, dovresti sapere che l'equivalente Scala differisce così tanto dalla versione Java che un tipico sviluppatore Java avrà qualche difficoltà ad adattarsi alla Scala di pensare. Tuttavia, di solito aiuta ad abituarsi prima al modo Java, perché di solito è più semplice e più facile da imparare. Personalmente preferisco pensare a Java come al corso introduttivo, e Scala è la versione pro.
- Java collezione mutevole concetto vs. Scala mutevole differenziazione/immutabile
static
metodi (Java) vs. Singleton oggetti (Scala)
for
loop
- Java
return
dichiarazione vs.stile funzionale Scala ("ogni espressione restituisce un valore")
- l'uso di Java di
null
per "nessun valore" vs. più esplicito Option
tipi di Scala
- importazioni
- di Java
switch
vs Scala match
E qui c'è una lista di cose che probabilmente userete dalla libreria standard Java, anche se sviluppate in Scala:
- IO
- GUI (Scala ha un wrapper per Swing, ma hey)
- URL, URI, file
- data
- timer
E, infine, alcune delle caratteristiche di Scala che non hanno equivalente diretto in Java o la libreria standard di Java:
- overloading degli operatori
- impliciti e impl conversioni ICiT
- molteplici liste di argomenti/currying
- funzioni anonime/funzioni come valori
- attori
- ruscelli
- modello Scala di corrispondenza (che rocce)
- tratti
- inferenza di tipo
for
Comprensioni
- operazioni di raccolta impressionanti lik e
fold
oppure map
Naturalmente, tutte le liste sono incomplete. Questa è solo la mia opinione su ciò che è importante. Spero possa essere d'aiuto.
E, a proposito: è necessario conoscere il percorso classe e altre nozioni di base di JVM.
Puoi citare quali sono alcune delle nozioni di base di JVM a cui ti stai riferendo? Potrebbe essere più utile della conoscenza di Java Generics, dato che influenzerà la vita quotidiana con Scala – pmn
Si prega di non prendere la data dalla libreria standard di Java. – Debilski
@icey: Sarebbe una comprensione di base di ciò che è il bytecode Java (non i dettagli, solo l'idea di esso e che risiede nei file .class), la garbage collection, il comando della riga di comando 'java' ei suoi parametri, il percorso di classe, JAR come formato di distribuzione e forse - solo forse - anche thread e sincronizzazione. Ma: Generics influenzerà la tua vita quotidiana con Java e Scala. Almeno devi sapere come riempirli, in seguito anche come sviluppare classi generiche. – Madoc