2013-07-26 14 views
18

mi sono chiesto se Scala ha alcuna caratteristica che lo rendono intrinsecamente dipendente dalla JVM, o se potrebbe essere praticabile in cima a qualcosa d'altro. Posso vedere come sia ubiquità della JVM e continui miglioramenti, e l'interoperabilità tra Java e Scala, sono forti argomenti per questa scelta strategica. Tuttavia, ho capito che per questo motivo, compromises sono stati creati nella progettazione della lingua.Quanto è legato lo scala a JVM?

Se i giorni di declino dovessero venire per la JVM, sarebbe Scala affondare con la nave, o ci potrebbe essere vita dopo la JVM?

+3

Sarebbero gli utenti che hanno votato per chiudere qualsiasi commento sul perché questa è una domanda non appropriati? – mitchus

+5

non ho votato a chiudere perché trovo la questione personalmente interessante - ma, ad essere onesti: dov'è il problema di programmazione? Forse più adatto per i programmatori SE. – Ingo

+0

Ricordo di aver letto akka funzionerà solo su hotspot Oracle o openJDK, ma non riesco a trovare un riferimento –

risposta

20

C'erano progetti per avere Scala in esecuzione su .NET runtime (fuori produzione, la persona che ha lavorato su di esso is improving the compiler backend for future versions of Scala) e LLVM (bloccato). Inoltre, ci sono diversi backend per Scala -> Javascript (ad esempio scala js), quindi direi che è possibile sciogliere Scala dalla JVM in un certo senso.

Allo stesso tempo molte API Scala dipendono API Java, molte ottimizzazioni e meccanismi interni sono implementate rispetto alla JVM. C'è una serie di discussioni sulle mailing list su Scala senza JVM, Scala with it's own virtual machine e così via, ad esempio this one, ma per quanto ne so, la dichiarazione ufficiale è di supportare anche JVM non mainstream (Avian per esempio), piuttosto di avere un proprio runtime. In questo modo Scala può essere eseguito su iOS e Android (e PC ovviamente).

Come Simon Ochsenreither noted, Avian is not just yet-another JVM, ma viene fornito con alcuni distinti vantaggi rispetto alle HotSpot:

  • Capacità di creare nativi, self-contained, binari embeddable
  • Funziona su iPhone, Android e altro braccio rivolge
  • AOT e la compilazione JIT sono entrambi pienamente supportati
  • Supporto per chiamate di coda e continuazioni
  • Una base di codice comprensibile
  • manutentori Responsive
  • Aperto per miglioramenti (classi di valore, la specializzazione, ecc)
+1

Scala funziona già bene su Android. E per ora mentre. – pedrofurla

+2

@pedrofurla sì, questo è un altro vantaggio di essere basato su JVM dal modo in cui –

+0

@ om-nom-nom ho riscritto alcune parti dell'ultimo paragrafo, per favore controlla, se sono riuscito a conservare la tua dichiarazione – Beryllium