Esiste un compilatore di codice macchina nativo per JavaScript? Non sto parlando di una VM. Se non esiste può essere fatto?
Mi chiedo se possa essere compilato in binario a causa della natura dinamica della lingua.Esiste un compilatore di codice macchina nativo per JavaScript?
risposta
Per quanto ne so, non ci sono compilatori statici per JavaScript. È certamente teoricamente possibile; tuttavia, una compilazione statica di JavaScript richiede un runtime molto pesante per supportare tutte le sue funzionalità (come la digitazione dinamica e l'eval). A parte il piccolo, quando si presentava la necessità di compilare staticamente Python (un altro linguaggio dinamico), gli sviluppatori PyPy hanno finito per creare un linguaggio che era un sottoinsieme molto ristretto di Python (chiamato RPython), privo di alcune delle funzionalità più dinamiche di Python, che era in grado di essere compilato staticamente.
Se lo stai chiedendo allo scopo di creare un eseguibile standalone dal codice JavaScript, sono sicuro che ci devono essere wrapper che essenzialmente creerebbero un eseguibile contenente il tuo script e una VM JavaScript incorporata (purtroppo, non lo faccio ne conosco in modo casuale).
Il primo JIT basato su browser è stato rilasciato con FF 3.5 circa un mese prima della risposta a questa domanda. –
+1 per PyPy. 'RPython' non è compilato staticamente di per sé, invece, il programma' RPython' è avviato in 'CPython', e viene catturata un'istantanea di tutti gli oggetti attualmente in memoria. Ciò garantisce che tutti i tipi di specializzazione ecc. Siano già stati eseguiti. Ciò significa anche che l'input del programma RPython è severamente limitato, ad es. non è possibile 'json.load' qualcosa e ottenere i tipi al volo. –
È teoricamente possibile, ma ci sarà un sacco di bagaglio di supporto in fase di esecuzione (e anche un compilatore o interprete Javascript completo per supportare eval
).
Stai cercando un compilatore di codice nativo o stai cercando qualcosa che possa unire codice Javascript insieme a un runtime in un singolo binario eseguibile?
Sto cercando un compilatore di codice nativo attuale –
E 'sicuramente fattibile, anche se l'unico modo che conosco come farlo in questo momento è un processo in due fasi ...
- Compilare il javascript per Java utilizzando Mozilla Rhino JSC.
- Compilare il file di classe java risultante in eseguibile utilizzando qualcosa come GNU's GCJ.
Perché vorresti, però? Quale vantaggio ti aspetti di trovare?
È solo per curiosità. Mi piace molto il javascript. –
TraceMonkey in FF3.5 fare questo per alcune parti del codice javascript. Potresti essere in grado di ottenere alcune indicazioni da lì!
Non proprio. Non ho trovato nulla di utile lì. –
Ciò non aiuta, poiché Tracemonkey non è in grado di eseguire questa operazione su * tutte * le parti del codice. – Bergi
Sono sicuro che Microsoft ha un Jscript scaricabile ("javascript Microsoft") compilatore
se si dispone di Windows: Se si scrive un file di testo javascript è possibile compilarlo da: aprendo il prompt dei comandi utilizzando cd per arrivare alla directory dei file di testo (se avete Windows) tipo: C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ jsc.exe textfile.js
altrimenti: scaricare un compilatore jscript digitare la directory del compilatore jscript e quindi il nome del javascript tex t file
è possibile aggiungere variabili di ambiente se non si desidera digitare l'intero nome della directory sul compilatore.
questo ragazzo spiega meglio: http://www.phpied.com/make-your-javascript-a-windows-exe/
io personalmente penso che questo è davvero cool. Spero solo che ci fosse più documentazione per questo.
Sono quasi sicuro che questo è quello che stai cercando, ma sono un po 'nuovo.
La compilazione su .net IL-code non viene compilato in una lingua nativa come interrogato, il codice IL è in realtà interpretato (Just in time). Solo così sai;) – Remco
@Remco: IL è ** sempre ** compilato per le istruzioni del codice macchina, prima che venga eseguito. A differenza del bytecode Java, IL non viene mai interpretato. – IInspectable
Si prega di notare che tutte queste soluzioni sono DOM
meno, in modo che nessun librerie come angular.js
o jquery
, solo underscore.js
/lodash
In seguito alla risposta Falaina s', PyPynon ha un dist per JavaScript
Inoltre, Appcelerator Titanium ha un js
>JavaBit
>android
Infine, node.js
può usare nexe spiegato in questo altro answer
motore V8 di Google compila JavaScript in codice macchina nativo. Questa funzione è utilizzata nel compilatore EncloseJS che ho scritto per i progetti node.js e io.js.
Come posso farlo? –
(* Meta *) Non è e non dovrebbe essere invadente, ma un semplice * mio * al posto giusto è sufficiente. Sono andato avanti e modifica la tua risposta qui. Si prega di tenere questo in mente per le risposte future. –
Il compilatore AOT di Adobe AIR per iOS compila staticamente un superset di JavaScript denominato Actionscript 3.0 fino al codice byte ABC, quindi il codice macchina tramite LLVM. Se dovessi scrivere il tuo codice AS3 senza classi e senza annotazioni di tipo, sarebbe essenzialmente JavaScript, e quindi il compilatore sarebbe felice di compilarlo fino al codice macchina. Purtroppo questo non è un software open source e non si ha accesso a nessun DOM (a cui molti pensano quando pensano di JavaScript) perché è in esecuzione essenzialmente in un'istanza di Flash Player.
- 1. Esiste un compilatore/interprete per eseguire codice per php 5.3?
- 2. Esiste un compilatore R?
- 3. Esiste un compilatore come servizio per C++?
- 4. Esiste un compilatore C portatile per Windows?
- 5. Javascript migliorato nativo per ciclo
- 6. Compilando java nel codice nativo?
- 7. Posso compilare Java nel codice nativo?
- 8. È possibile scrivere un compilatore JIT (in codice nativo) interamente in un linguaggio .NET gestito
- 9. Access AsyncStorage dal codice nativo
- 10. Esiste un editor come jsfiddle disponibile per la macchina locale
- 11. Estensione per Firefox: esecuzione del codice nativo?
- 12. codice nativo per Java Math classe
- 13. Win32 Nativo (api o altro) per leggere la geolocalizzazione della macchina corrente?
- 14. Creare un div trascinabile in javascript nativo
- 15. Equivalente javascript nativo di jQuery: contiene() selettore
- 16. Esiste un compilatore C# per Mac OS X?
- 17. metodo nativo javascript nel GWT
- 18. Esiste una libreria Java per accedere all'API di Windows nativo?
- 19. Debug di codice nativo di HelloJni
- 20. È possibile scrivere un compilatore con Javascript?
- 21. Esiste un equivalente JavaScript per C# 'params'?
- 22. perdita di memoria java con codice nativo
- 23. Avviso "Codice macchina inaspettato" da iTunes Connect
- 24. Esiste un modo per eseguire il codice JavaScript all'interno di IDE di Aptana Studio 3?
- 25. visualizza codice nativo da Eclipse
- 26. Three.js portato su codice nativo?
- 27. immissione javascript tramite popup nativo
- 28. Novità. Nativo Nativo
- 29. Differenza tra codice nativo e codice gestito?
- 30. Disassembla codice macchina x64 grezzo
Stavi parlando di JScript.NET? – Shimmy
Mi chiedo un piccolo chiarimento: con "compilatore nativo di codice macchina", intendi un compilatore che accetta un programma Javascript e produce un eseguibile (Static Compilation), o vuoi solo dire che è tutto possibile tradurre codice javascript in macchina codice (ad esempio i compilatori JIT in Tracemonkey (Firefox) e V8 (Chrome) produrranno il codice macchina nativo dall'attuale javascript in esecuzione, quindi non è necessario interpretarli più volte.) – Falaina
Sto chiedendo la compilazione statica . –