Lingue moderne e JVM [duplicato]

7

Molti linguaggi di programmazione moderni (Scala, Erlang, Clojure, ecc.) stanno prendendo di mira la JVM. Quali sono le principali ragioni dietro questa decisione?

  • La maturità di JVM?
  • Portabilità?
  • Perché JVM esiste semplicemente e i progettisti linguistici non erano disposti a scrivere una nuova VM / interprete?
posta sakisk 05.10.2011 - 20:01
fonte

5 risposte

9

Erlang è un linguaggio autonomo, ma su Erjang è in corso un lavoro mirato alla JVM. Hai ragione che Scala e Clojure hanno come target la JVM, e ci sono anche versioni di Ruby e Python indirizzate alla JVM (JRuby, Jython).

Sì, la JVM è una piattaforma molto matura e le JVM moderne sono in grado di ottimizzare il codice e compilarlo on-demand al codice nativo dell'host per migliorare le prestazioni.

Sì, portabilità. Compiled Scala, Clojure, ecc. Possono essere impacchettati usando strumenti standard e distribuiti a qualsiasi sistema che abbia una JVM (di un livello di versione adatto).

Sì, la JVM significa che i nuovi linguaggi "solo" devono scrivere un compilatore in bytecode (e qualsiasi libreria di supporto che desiderano fornire). Non devono scrivere un nuovo runtime (che è quello che Erlang, Ruby, Python, JavaScript ecc hanno fatto tutti in passato).

Ma penso che tu abbia perso uno dei maggiori vantaggi della JVM: l'enorme ecosistema di librerie - sia la libreria standard Java che la vasta gamma di librerie di terze parti sono accessibili a qualsiasi linguaggio che si rivolge alla JVM.

    
risposta data 05.10.2011 - 20:25
fonte
9

Direi che è un'opzione del 10% (a), un'opzione del 70% (b) e un'opzione del 20% (c).

Scrivere una macchina virtuale affidabile è difficile . È una grande parte del motivo per cui Perl6 aveva 10 anni di ritardo - funziona su una VM basata su registro a differenza di quelle comuni e doveva essere scritto essenzialmente da zero). Inoltre, puoi sfruttare non solo la VM ma anche le librerie standard, che sono enormi in Java.

Ma il fattore principale è probabilmente che è già su ogni piattaforma immaginabile: il concorrente diretto .NET è, in pratica, solo per Windows. E quando hai già deciso di non fare la tua VM, riutilizzare quello che è più disponibile è un gioco da ragazzi.

    
risposta data 05.10.2011 - 20:20
fonte
2

Una nota storica interessante è che Martin Odersky, il creatore di Scala, è stato anche il creatore di un linguaggio di breve durata chiamato Pizza che è stato uno dei primi linguaggi non-Java per il targeting della JVM. La sua implementazione di generici è stata infine incorporata in Java 5. Puoi leggere la sua intervista su origini di scala a avere un'idea del perché gli piace scegliere come target la JVM.

    
risposta data 05.10.2011 - 20:44
fonte
0

Dimentichi di aggiungere un altro motivo:

  • È ciò che i designer di lingue sanno.

Significativi pezzetti di istruzione (e, di conseguenza, precoci esperienze lavorative) per potenziali progettisti di linguaggi sono ora condotti in Java. Vedi, per esempio, la storia di Wikipedia per Scala . Man mano che sempre più sviluppatori si stanno muovendo verso l'utilizzo di Javascript e della sua VM, vedrai invece i nuovi linguaggi in esecuzione su quella VM.

    
risposta data 05.10.2011 - 20:26
fonte
0

Le mie stime:

  • 20% della maturità di JVM
  • Portabilità del 50%, in particolare di tutte le librerie Java già disponibili per JVM
  • 30% Poiché JVM esiste semplicemente e i designer di linguaggio non erano disposti non hanno avuto il tempo di scrivere una nuova VM / interprete.
risposta data 05.10.2011 - 23:21
fonte

Leggi altre domande sui tag