2009-11-14 3 views
11

Sono impressionato da Twitter e sto studiando per utilizzare Scala per un nuovo progetto web su larga scala con Hibernate e Wicket. Cosa ne pensi di Scala, e dovrei usarlo al posto di Java?Per utilizzare o non utilizzare Scala per nuovi progetti Java?

EDIT: E, secondo te, Noop, Fan o Scala di Google possono prendere il comando da Java nel prossimo futuro, quali sono le tue possibilità?

risposta

13

Non dimenticare che è possibile utilizzarlo insieme a Java. Ad esempio, puoi usare compilati .classes e .jars in un ambiente con script Scala.

Quindi si consiglia di codificare i livelli inferiori della soluzione in Java e quindi avvolgerli in Scala per fornire una soluzione più flessibile e agile (in termini di riscrittura della logica di business a un livello superiore).

Qualcosa da considerare è chi altri lo accudirà e lo manterrà. Per tutto il clamore di Scala, relativamente poche persone possono codificarlo (a partire da Nov 2009), e potrebbe essere necessario assumere persone in futuro per occuparsene. Alla ricerca di persone Scala significherà che stai cercando in una piscina molto più piccola di candidati (alcuni potrebbero voler imparare Scala sul posto di lavoro, ma c'è ancora un costo di start-up)

+1

punto di vista perfetto. Grazie mille – sirmak

3

Un problema particolare con Scala è che come lingua scalabile , ha livelli di funzionalità di vari gradi di accessibilità allo sviluppatore medio. Usarlo come linguaggio di scripting per la JVM è una cosa, sviluppare un linguaggio specifico per il dominio usando la programmazione funzionale è un'altra.

5

Don 'dimenticare che si tratta di un pezzo relativamente piccolo di Twitter, in particolare le code dei messaggi, che sono scritti in Scala. Da quello che ho capito, il front-end è ancora Ruby-on-Rails.

Detto questo, sono migrato su scala meno di un anno fa: non ho guardato indietro. Inoltre:

  • c'è una grande piscina di laureati che sono molto interessati a venire a lavorare in un negozio di scala
  • il fatto che la scala è costruito per funzionare su una JVM significa che gli sviluppatori Java ottenere un vantaggio temporale nella lingua (se sei interessato potrei approfondire perché è così).
+1

"c'è una grande piscina di laureati che sono molto interessati a venire a lavorare in un negozio scala" Riferimento? –

+2

@Derek - Ho prove di prima mano che questo è il caso; tuttavia, non è abbastanza trasformato in un diario sottoposto a revisione paritaria. Ancora. –

6

Qui ci sono i pro ei contro di Scala relativa a Java IMHO:

Pro:

  • sintassi molto più conciso di idiomi comuni nel codice Java moderna
  • Chiusure
  • Altro potente sistema di tipi che include mixine
  • Corrispondenza modello
  • Grande REPL, 2.8 saranno anche avere scheda di completamento

In sintesi: si ottiene molto di più funzionalità con molto meno codice di Java

Contro:

  • supporto IDE è ancora di alfa o beta di qualità , anche se IDEA ha il miglior supporto attualmente
  • La libreria standard non è immune alle modifiche con ogni nuova versione (2.8 avrà modifiche incompatibili all'indietro)
  • La libreria standard aveva sig. nificant bug almeno fino a un anno fa (quando ne ho trovato uno nel supporto JSON)

Penso che Scala sarà pronto per l'uso di produzione maggiore in 6-8 mesi, ma non scommetterei il mio progetto su di esso oggi.

+0

grazie per questa recensione completa – sirmak

+1

Personalmente, penso che parlare di "bug significativi" sia inappropriato. Non era così male 1 anno fa, e certamente non è male adesso. Non è che Java non abbia una buona parte dei biglietti in circolazione (alcuni anni di incontri). –

+1

Daniel, ho trovato un incidente durante l'analisi di JSON che sarebbe stato rilevato anche dai test di unità più rudimentali. Considero un bug significativo in una libreria standard. – sanity

3

Se si sta considerando l'utilizzo di Java e Scala in un singolo ambiente di progetto, suggerirei di utilizzare Maven come sistema di dipendenza del progetto. Ecco il codice che utilizzo per generare i miei progetti Scala:

mvn archetype:generate -DarchetypeCatalog=http://scala-tools.org/ 

Ecco alcune usage information per l'utilizzo di Maven con Scala. Se si utilizza Maven come compilatore, è possibile avere sia i file di origine di Java e Scala nello stesso pacchetto senza alcuna configurazione aggiuntiva. Funziona e basta.

Here is a talk ospitato da LinkedIn. È un pannello con Scala, Twitter, e il framework web di Scala (che uso io). Se stai ancora decidendo se usare l'id di Scala suggerisci di guardarlo.

3

Un vantaggio di Scala è che è possibile costruirlo insieme a Java nello stesso progetto. Entrambi Maven (vedi il commento di luigi-prog) e simple build tool hanno ganci abbastanza semplici che costruiranno tutto in una volta sola.

Un altro modo è prendere i test unitari esistenti, cambiare l'implementazione, vedere la differenza.

Daniel Spiewak had a few nice entries on the gotchas of Java-Scala interop.

Ho usato Scala sul posto di lavoro nell'ultimo anno e direi che si tratta di una curva di apprendimento di 3 mesi per diventare abbastanza abili. Si tratta di un gruppo abbastanza piccolo di tipici di persone Java. C'è molta volatilità in termini di convenzioni e standard, quindi aspettatevi di fare qualche revisione su qualsiasi progetto ogni pochi mesi.

Non penso che sia ancora possibile cercare "programmatori Scala". Ma tu puoi trovare molti programmatori Java che sono interessati ad imparare Scala.

Se dovessi indovinare, Scala e Clojure potrebbero essere i primi a sradicare Java. Non mi aspetto un grande cambiamento prima del 2012 al più presto. Scala probabilmente porta con slancio: ora ci sono diversi libri in più lingue.

+1

Volevo aggiungere che con Scala probabilmente vorresti un facile sistema di "compilazione incrociata" per costruire il tuo codice con la versione corrente "di produzione" + nuove versioni. sbt (semplice strumento di costruzione) lo rende facile. –

+0

grazie. Voglio chiedere fa scala migliora la produttività? E causa qualche tipo di problema nei progetti? – sirmak

+1

"Migliora la produttività" è molto relativo ai programmatori che fanno il lavoro. Penso che sia un linguaggio molto complicato e, in qualche modo instabile, quindi, se le persone non sono interessate a passare il tempo semplicemente esplorando nuove idee, probabilmente vedrai un sacco di tempo sprecato per "come faccio a far funzionare le cose per me tempo "tipi di domande. Nelle mani di buoni sviluppatori, rimarrai sorpreso dalla velocità con cui puoi iniziare a mettere insieme i sistemi e la riduzione complessiva di SLOC. Si tratta di persone disposte a esplorare le possibilità. –