La mia impressione è che gran parte dell'ecosistema che viene fornito con linguaggi "convenzionali" (come Java) è destinato a compensare la loro goffaggine.
La domanda non è, quanti strumenti ci sono per una data lingua (Scala), ma se gli strumenti esistenti per quella lingua sono migliori degli strumenti esistenti per la lingua di riferimento (Java). Perché 100 strumenti mediocri non ti daranno ciò che un buon strumento può darti. E una cosa che non dovresti dimenticare è che il linguaggio stesso fa parte di quegli strumenti.
La dichiaratività di una lingua
- è inversamente proporzionale alla quantità e alla severità dei bug che produci con esso, motivo per cui Java è così bravo a produrre bug e hai bisogno di molti strumenti per evitarli e rintracciarli
- è proporzionale alla tua produttività, ecco perché Java è così estremamente prolisso e hai bisogno di un sacco di generatori di codice e strumenti simili
Ad esempio, una volta ho letto un orribile post sul blog di un ragazzo Ruby, che sosteneva che la digitazione statica non ha senso, perché i test copriranno la sicurezza del tipo. Ciò veniva chiaramente da qualcuno che non aveva ancora lavorato con un sistema di tipo statico espressivo. Supponendo che io possa rappresentare tutte le relazioni di tipo in una semantica linguistica e non è molto lavoro da fare (e non lo è, dato che la maggior parte dei linguaggi moderni supporta l'inferenza di tipo), ottengo tutto questo gratuitamente.
Per spingere un pensiero un po 'più in avanti: i test unitari assicurano che un'unità funzioni come specificato, o per riformularlo, le unit test sono specifiche eseguibili. Tuttavia attraverso la programmazione dichiarativa, le unità stesse sono specifiche eseguibili. Di nuovo, ottieni qualcosa gratuitamente.
Quello che sto cercando di dire è che non dovresti sottovalutare ciò che le caratteristiche del linguaggio possono fare per te. E a meno che tu non li provi davvero sul campo, non capirai mai.
Quindi, tornando alla domanda iniziale: gli strumenti esistenti per Scala sono migliori di quelli di Java? Difficile da dire. Dipende da cosa vuoi fare. Penso che saremmo tutti d'accordo sul fatto che la lingua è significativamente migliore, ora la domanda è: quanto è buono un ecosistema che troverai nella tua zona d'affari.
Per il Web, Lift è davvero un'opzione valida. Non so su desktop o dispositivi mobili.