2011-01-19 14 views
20

Molte delle risorse disponibili per l'apprendimento di Scala assumono un certo background in Java. Questo può rivelarsi difficile per qualcuno che sta cercando di imparare Scala senza background Java.Quali parti dell'ecosistema e del linguaggio Java dovrebbero uno sviluppatore imparare a ottenere il massimo da Scala?

Quali sono alcuni Java-ismi che un nuovo sviluppatore di Scala dovrebbe conoscere mentre apprendono la lingua?

Ad esempio, è utile sapere che cos'è un CLASSPATH è, quali sono le opzioni da linea di comando java sono, ecc ...

risposta

9

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.

+0

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

+0

Si prega di non prendere la data dalla libreria standard di Java. – Debilski

+0

@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

4

La libreria standard, sopra ogni altra cosa, perché è quello che alla Scala ha più in comune con Java .

Si dovrebbe anche avere un'idea di base della sintassi di Java, perché molti libri finiscono per confrontare qualcosa in Scala con qualcosa in Java. Ma a parte la piattaforma e alcune delle librerie, sono linguaggi totalmente distintivi.

Esistono alcune convenzioni banali passate da una all'altra (come le opzioni della riga di comando), ma mentre leggi libri e tutorial su Scala dovresti selezionarli man mano che passi, indipendentemente dalla precedente esperienza di Java.

4

La serie "Scala for Java Refugees" può dare alcune indicazioni su argomenti tipici di Java che si suppone di conoscere e come si traducono in Scala.
Per esempio, il molto di base main() funzione Java che si traducono nella Application tratto, once considered harmful, e now improved (per Scala 2.9 comunque).

Problemi correlati