2015-11-16 15 views
8

Ho scritto di recente TypeScript, per l'esecuzione in un browser. Quello che sto cercando di fare è eseguire lo stesso codice all'interno di un'applicazione Java. Ho una logica complessa che voglio scrivere una volta e utilizzare in un ambiente JavaScript all'interno di un browser e all'interno di un ambiente desktop Java. Ora so che posso ospitare javascript da java, ma quello che mi chiedo è se c'è un modo di convertire TypeScript in puro codice java?Converti TypeScript in Java

+0

Perché? La raison d'être di TypeScript consiste nell'aggiungere tipi statici a JS. Java ha già tipi statici, non sono sicuro di quale sia il vantaggio. –

+1

@Juan Mendes. In modo che io possa scrivere una volta una logica complessa e condividerla in entrambi gli ambienti. In modo efficiente. –

+1

GWT può essere una soluzione diversa allo stesso problema, scrivere la logica in Java e averla compilata in JavaScript usando GWT. –

risposta

0

TypeScript è una lingua ancora nuova e aggiunge le funzioni rapidly. Anche se ci fosse un tale traspolatore, si finirebbe in una situazione molto sfortunata perché il transpiler sarebbe sempre dietro le capacità TypeScript.

Un approccio "più sicuro" sarebbe quello di trascrivere TypeScript in JavaScipt e quello transpolare in Java. Ha più senso per me perché JavaScript è un linguaggio standardizzato che ha raggiunto una certa maturità ma sarebbe comunque una cattiva idea. Tuttavia, c'è il transpiler not even per l'ultimo passaggio.

Anche se ci fossero tali transpilers, non vorrei assolutamente farlo perché si finirebbe in una trappola. I transporter non sono affatto perfetti e il codice sarebbe più difficile da comprendere per le persone (example) e da verificare.

Edit:Mozilla Rhino progetto può tradurre JavaScript per Java.

+0

Lo stesso dattiloscritto ha un compilatore ts to js da eseguire nel browser. –

+0

Se il convertitore ha generato un output leggibile come il dattiloscritto nel compilatore javascript, sarei molto felice. Trovo che sia abbastanza leggibile –

+0

Convertendo JavaScript si perderebbero tutte le informazioni di digitazione complete che si hanno in un programma TypeScript, quindi non vedo perché sarebbe un'idea migliore. –

3

Ci scusiamo se questo sembra introdurre un'altra lingua nel mix.

Perché non considerare l'utilizzo di ScalaJS sia generano JavaScript E routine JVM-compatibile (Java), quindi, approfittando della Java-to-Scala interop e Java-like sintassi?

In sostanza, un progetto di codice di Scala/ScalaJS può essere configurato per output both Javascript and Java-compatible byte code libraries/JARs (quest'ultimo per l'integrazione di nuovo in altro codice/JVM Java).

Se l'apprendimento della lingua Scala sembra ancora un altro time-lavandino, si potrebbe anche prendere in considerazione programmatically converting your existing Java routines into Scala*, per l'ulteriore trasformazione in ScalaJS/Javascript, il tutto come un passaggio di generazione in più:

  • Scalagen - Java per la conversione Scala (tenta in linea here)

Infine, è possibile, con alcuni avvertimenti, convertire defintions dattiloscritto 3rd-party in Scala [JS] API di codice di, in modo da rendere le chiamate alle librerie dattiloscritto inclusi fortemente tipizzato codice Scala:

* ScalaJS codice può solo dipendere-on/cross-compilazione altro codice/librerie Scala-derivati, ma 'normale' Scala può importare qualsiasi libreria compatibile con Java.

UPDATE:Kotlin, da JetBrains (autori di varie grandi IDE, tra cui IntelliJ IDEA) è un altro JVM-centric, conciso, il linguaggio, anche con il supporto cross-compilazione Javascript. C'è anche uno strumento di conversione Java-to-Kotlin con un clic, sia per Intellij che per Eclipse.

Kotlin sembra guadagnare trazione, si dice che sia meno "complesso" di Scala e viene utilizzato anche per lo sviluppo di app Android e IOS (RoboVM Studio).

È possibile try out Kotlin here.

+1

Il motivo è che sicuramente l'OP vuole sviluppare dattiloscritto e non scalajs. La tua risposta è molto utile, ma solo per una domanda diversa. – peterh

0

Ho un obiettivo simile e sto per provare http://www.jsweet.org/ per trasporre java in javascript. Finora ci sono alcuni limiti (nessun supporto per l'operatore diamond, classi interne anonime, ecc), ma i vantaggi di poter scrivere e mantenere un codebase invece di due sono troppo grandi per ignorare

+0

Non è stato richiesto. L'OP ha richiesto dattiloscritto a java e non java a javascript. – peterh

5

Scrivi in TypeScript, compila sia per JVM che per browser, prova https://1c.wizawu.com

+0

Che cosa è esattamente 1c? Traspone da TS a Java il codice sorgente, il codice byte Java o esegue TS su una JVM utilizzando un interprete o Rhino? –

+0

@StefanHaustein Ha principalmente due parti di lavoro: 1) Costruire definizioni di dattiloscritto per JAR (librerie JDK o Maven) in modo da poter chiamare l'API Java da dattiloscritto. 2) Tradurre il codice sorgente del dattiloscritto in uno script eseguibile nashorn. – wizawu