Domanda

Come Oracle Sues Google oltre il Dalvik VM diventa chiaro, che non è possibile implementare una VM Java senza licenza da Oracle (EDIT:. Matthew Flaschen fa notare, che le pretese di Oracle potrebbero non essere valide Comunque abbiamo attualmente una situazione , dove Oracle minacce VM-implementazioni.). Che possono diventare la morte per Open-Source-implementazioni di Java (come Apache Harmony ).

Non voglio per discutere l'impatto e la legittimazione di questa causa. ma come un Java-programmatore voglio dare uno sguardo più in profondità le alternative, per essere pronti per ogni caso. Come vedo la creazione di un compilatore come un problema minore, il mio interesse principale sono alternative VM-implementazioni, che servono uno scopo simile come la JVM.

Il VM che sto cercando, deve soddisfare alcune condizioni:

  • privo di brevetti-problemi
  • un Open-Source-implementazione esiste
  • potenziale di ottimizzazione / buone prestazioni
  • indipendente dalla piattaforma (la VM può essere portato su diverse piattaforme senza ostacoli più grandi)

Si prega di aggiungere alcune raccomandazioni per me.

È stato utile?

Soluzione

LLVM è davvero una buona ottimizzazione, macchina virtuale di basso livello. Può supportare linguaggi come C e C ++, e non dispone di un supporto incorporato per alto livello caratteristiche come la raccolta dei rifiuti.

VMKit è un'implementazione della Java e macchine virtuali CLI in cima LLVM. Dal momento che utilizza Java bytecode, questo probabilmente non sarebbe di aiuto con le questioni relative ai brevetti.

HLVM è un'altra macchina virtuale elevato livello interessante costruito sopra LLVM. E 'sufficiente probabilmente diverso per evitare più noti brevetti, ma è soprattutto destinato al calcolo numerico e la programmazione funzionale.

Sul lato digitato in modo dinamico, non v'è Parrot .

Sono in realtà lavorando su un compilatore e VM per un linguaggio del mio disegno, ma non contate su di esso essere mai finito. ; -)

tenere a mente che qualsiasi grande pezzo di software sarà violare numerosi brevetti, la cosa importante è come noto sono (e quanto proprietari dei brevetti cercano attivamente trasgressori). Naturalmente, l'intero sistema dei brevetti è assurdo, e ci sarebbe stato molto meglio sbarazzarsi di esso.

Altri suggerimenti

Non credo che ci sia alcun pezzo significativo di software che è esente da questioni di brevetti.

Se si è uno sviluppatore indipendente o di lavorare per una società più piccola che probabilmente non sarà possibile ottenere colpito direttamente dai problemi però. E 'improbabile che le grandi aziende in possesso di brevetti andrà dopo un sacco di modesta entità - è un processo costoso e provoca un sacco di risentimento. SCO ha provato qualcosa del genere e non ha funzionato troppo bene per loro.

I sarebbe concentrato sulla ricerca del miglior strumento per il lavoro, senza preoccuparsi troppo delle questioni relative ai brevetti, altrimenti non si sarà mai ottenere nulla di fatto.

GraalVM è un progetto di ricerca sviluppato da Oracle Labs e già in produzione a Twitter. Non posso credere ai miei occhi che nessuno menziona nulla, è così strano. Comunque, GraalVM è un'estensione ben promettente della macchina virtuale Java per supportare più modalità di linguaggio ed esecuzione per eseguire applicazioni come JavaScript, Python, Ruby, R, linguaggi come Java, Scala, Kotlin, Clojure, e le lingue LLVM-based come C e C ++ JVM-based. Il progetto GraalVM include un nuovo compilatore Java ad alte prestazioni, si chiama Graal, che può essere utilizzato in una configurazione just-in-time sul HotSpot VM, o in un avanti-di- configurazione tempo sul SubstrateVM. L'obiettivo principale di questo progetto è quello di migliorare le prestazioni della lingua di base Java Virtual Machine per abbinare le prestazioni delle lingue native. somma di mollare le caratteristiche di novità che questo progetto offerte e fare una breve spiegazione in base ai documenti per cui si dovrebbe adottarlo

  
      
  • Polyglot: tutte le lingue (anche LLVM-based) condividere la stessa macchina virtuale e le sue capacità. Zero in testa l'interoperabilità tra i linguaggi di programmazione consente di scrivere applicazioni poliglotti e di selezionare il miglior linguaggio per l'attività
  •   
  • Native:. immagini native compilati con GraalVM ahead-of-time di migliorare il tempo di avvio e ridurre l'occupazione di memoria delle applicazioni JVM-basate
  •   
  • Codice Embed: GraalVM può essere integrato in entrambe le applicazioni gestite e native. Ci sono integrazioni esistenti in OpenJDK, Node.js, Oracle Database, e MySQL GraalVM rimuove l'isolamento tra i linguaggi di programmazione e consente l'interoperabilità in un runtime condivisa. Può funzionare sia stand-alone o nel contesto di OpenJDK, Node.js, Oracle Database, o MySQL.

  •   
  • Performance: rapporti di benchmark Graal mostrano grandi miglioramenti delle prestazioni in quasi tutte le sue implementazioni grazie al modo in cui esegue GraalVM obiettano assegnazioni

  •   

Se qualcuno non ottenere convinto ormai che è una scelta buona ed è un progetto davvero impressionante si può vedere questo parlare da Christian Thalinger su ‘sul perché Graal è una buona misura per Twitter’

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top