2009-06-10 13 views
11

Sto utilizzando GWT, che include un compilatore Java-to-JavaScript. Prima di questo progetto, non mi era venuto in mente il targeting del runtime JavaScript da una lingua diversa e mi sto godendo l'esperienza GWT.Quali compilatori utilizzano i runtime in JavaScript?

Una ricerca rapida ha rivelato Java2Script come un'altra soluzione Java-to-JavaScript. Ci sono altri compilatori maturi che hanno come target il runtime di JavaScript?

+0

Sviluppiamo http://websharper.com/ che compila F # in JavaScript. – t0yv0

risposta

3

OpenLaszlo è in XML aperto -> Javascript (tecnicamente DHTML, può compilare anche in Flash). Ho giocato un po 'con esso e mi è sembrato interessante, anche se non l'ho mai usato sul serio (cattivo supporto IDE quando l'ho provato).

Objective-j è un progetto simile all'obiettivo-c, sebbene sia eseguito come javascript (non è sicuro se lo compila o ha un interprete js). Non ne so molto, ma di tanto in tanto ne vedo dei post sullo Ajaxian.

+0

ogg-j compila sia in fase di runtime che in anticipo. Per lo più è javascript con alcuni costrutti extra. – cobbal

+0

L'obiettivo-j è interpretato (da un motore javascript). Sembra un po 'strano per i miei gusti, ma questo http://280atlas.com/ è scritto in obiettivo-j, e sembra fantastico. Anche se sono sicuro che una cosa simile è possibile in GWT. – Chii

+0

Il codice J obiettivo sembra brutto. Odio anche il codice Objective-C, quindi ... OpenLaszio sembra davvero bello, potrei anche provarlo un po 'di tempo. –

2

Mentre ci sono altri prodotti che possono essere compilati a JavaScript (osservato negli altri commenti), io credo che GWT è, di gran lunga , il più maturo là fuori, in termini di utilizzo del mondo reale. Il semplice fatto che alcune applicazioni principali di Google utilizzano GWT (ad es. La nuova GUI di AdWords, Google wave, ecc.) Significa che puoi avere fiducia che il prodotto verrà mantenuto per almeno i prossimi anni, non lo è solo andando a svanire in qualsiasi momento presto.

Un'altra cosa da tenere a mente è che GWT è molto più di un compilatore java-per-javascript, è anche un compilatore ottimizzante, ha la modalità host, è completamente interoperabile con il javascript nativo, fa il bundling delle immagini, fa lo splitting del codice nella nuova versione, ecc.

+0

Google ha sospeso lo sviluppo Wave a meno di 3 mesi dalla sua uscita pubblica, quindi in retrospettiva non sono sicuro che sia stato il miglior esempio della longevità anticipata di GWT. :-) – Ken

4

Parenscript è "un traduttore da una piccola lingua di Lispy in JavaScript". Non è Common Lisp - è per lo più solo sintassi Lisp per Javascript, anche se per cose semplici puoi scrivere lo stesso codice per indirizzare entrambi, se stai attento. Non sono nemmeno sicuro che lo definirei "maturo".

4

Pyjamas compila da Python a JavaScript.

HotRuby esegue il codice sorgente Ruby sotto JavaScript e Flash.

Orto è (era?) Una JVM implementata in JavaScript. (Il sito originale è inattivo, il collegamento è a un post di blog.)

ZK framework, che ama confrontarsi favorevolmente con GWT, utilizza Java e XML per generare JavaScript. (Sostengono che richiede molto meno codice rispetto a GWT per fare le stesse cose.)

E l'ho sentito ben argomentato che jQuery è una lingua separata che sembra essere implementata ed eseguita sotto JavaScript. :-)

4

Hai anche haXe. Caratterizza la tipizzazione statica, strutturale, forte e dedotta; tipi di dati algebrici; espressioni lambda con supporto di chiusura; un sistema di moduli e può compilare non solo JavaScript ma anche Flash, C++, Neko, PHP. Anche il supporto Java è in fase di sviluppo.

0

Ecco una spina spudorato per un progetto ho iniziato e sto continuando a sviluppare: scxml-js, uno Statecharts-to-JavaScript compilatore

1

Gli inventori di Clojure (una JVM basata dialetto Lisp) ha lanciato ClojureScript a metà 2011. ClojureScript compila il codice sorgente Clojure in JavaScript, facendo uso del compilatore Google Closure e del framework Closure. Il codice ClojureScript può essere eseguito sia nel client browser, sia nei server node.js.

Problemi correlati