2015-11-16 3 views
8

Я недавно писал TypeScript для работы в браузере. Что я нахожу, я хочу запустить тот же код из приложения Java. У меня есть сложная логика, которую я хочу написать один раз и использовать в среде JavaScript в браузере и в среде рабочего стола Java. Теперь я знаю, что я могу разместить javascript из java, но мне интересно, есть ли способ преобразования TypeScript в чистый Java-код?Преобразование TypeScript в Java

+0

Почему? Подлинность типа TypeScript для добавления статических типов в JS. Java уже имеет статические типы, я не уверен, что такое преимущество. –

+1

@Juan Mendes. Чтобы однажды написать кусок сложной логики и поделиться ею в обеих средах. Эффективно. –

+1

GWT может быть другим решением одной и той же проблемы, написать логику на Java и скомпилировать ее в JavaScript с использованием GWT. –

ответ

0

TypeScript - это еще новый язык, и он добавляет функции rapidly. Даже если бы существовал такой транспилер, вы оказались бы в очень неудачной ситуации, потому что транспилятор всегда был бы отставать от возможностей TypeScript.

«Безопасный» подход заключается в том, чтобы преобразовать TypeScript в JavaScipt и перевести на Java. Это имеет больше смысла для меня, потому что JavaScript - это стандартизированный язык, который достиг какой-то зрелости, но все равно будет плохой идеей. Тем не менее, есть not even транспилер для последнего шага.

Даже если бы были такие транспилеры, я бы определенно не хотел этого делать, потому что вы попали в ловушку. Транспилеры отнюдь не идеальны, и код будет более сложным для понимания людьми (example) и для проверки.

Edit:Mozilla Rhino проект может перевести JavaScript в Java.

+0

В самой дескрипторной строке есть компилятор ts to js для запуска в браузере. –

+0

Если конвертер сгенерировал вывод как читаемый как машинопись для javascript-компилятора, я был бы очень доволен. Я нахожу это вполне читаемым. –

+0

. Преобразуя JavaScript, вы потеряете всю богатую информацию о типе, которая у вас есть в программе TypeScript, поэтому я не понимаю, почему это было бы лучшей идеей. –

3

Извините, если это, кажется, представляет еще один язык в миксе.

Почему бы не рассмотреть вопрос об использовании ScalaJS к обоим генерировать JavaScript И JVM-совместимый (Java) рутин, поэтому пользуясь Java-to-Scala interop и Java-подобный синтаксис?

В принципе, код проекта Scala/ScalaJS может быть настроен на output both Javascript and Java-compatible byte code libraries/JARs (последний для интеграции обратно в другой код/​​JVM Java).

Если изучение языка Scala кажется, еще один раз раковиной, вы могли бы также рассмотреть programmatically converting your existing Java routines into Scala* для дальнейшего превращения в ScalaJS/Javascript, все, как дополнительный шаг сборки:

  • Scalagen - Java для преобразования Scala (попробуйте онлайн here)

Наконец, вы можете, с некоторыми оговорками, конвертировать третьи стороннюю машинопись ОПРЕДЕЛЕНИЙ в Scala [JS] код API, так что, чтобы делать звонки включены библиотекам машинописи сильно типизированные Scala код:

* ScalaJS код может зависеть только от включения/кросс-компиляции других Scala-производных кода/библиотек, но 'нормальный' Scala может импортировать любой Java-совместимую библиотеку.

UPDATE:Kotlin, по JetBrains (авторы различных великих Иды, в том числе IntelliJ IDEA) является еще одной виртуальной машины Java-ориентированной, лаконичными, язык, а также с поддержкой Javascript кросс-компиляции. Также есть инструмент конвертирования Java-to-Kotlin с одним щелчком мыши для Intellij и Eclipse.

Kotlin, похоже, набирает обороты, считается менее сложным, чем Scala, а также используется для разработки приложений Android и IOS (RoboVM Studio).

try out Kotlin here.

+1

Причина этого в том, что OP хочет разработать машинописные, а не scalajs. Ваш ответ очень полезен, но только для другого вопроса. – peterh

0

У меня есть аналогичная цель, и я собираюсь попробовать http://www.jsweet.org/ перевести java на javascript. До сих пор некоторые из них были ограничены (нет поддержки для оператора алмазов, анонимных внутренних классов и т. Д.), Но преимущества, связанные с возможностью писать и поддерживать одну кодовую базу вместо двух, слишком велики, чтобы игнорировать

+0

Не просили. ОП запросил машинопись для java, а не java для javascript. – peterh

5

Написать в TypeScript, скомпилируйте как JVM, так и браузер, попробуйте https://1c.wizawu.com

+0

Что такое 1c? Передает ли он TS исходный код Java, код байта Java или запускает TS на JVM с помощью интерпретатора или Rhino? –

+0

@StefanHaustein В основном это две части работы: 1) Построить определения машинописных описаний для JAR (библиотеки JDK или Maven), чтобы мы могли вызывать Java API из машинописного текста. 2) Перевести исходный код машинописного текста на исполняемый скрипт nashorn. – wizawu

Смежные вопросы