Подтвердить что ты не робот

Автоматически преобразовывать код Scala в код Java

У меня есть приложение, написанное в Scala, и некоторые из моих членов команды хотят получить версию Java. Это демонстрационное приложение для использования другого API, написанного в Scala, и они хотят, чтобы Java-версия приложения могла использовать API с Java. Тем не менее, приложение несколько велико, и я не хочу вручную перезаписывать Java (и они не хотят изучать Scala). Есть ли какой-нибудь инструмент, который автоматически генерирует (читаемый) код Java из кода Scala?

4b9b3361

Ответ 1

они хотят, чтобы Java-версия приложения имела возможность использовать API с Java

Scala классы могут использоваться с Java (так как все байт-коды JVM в конце). Можете ли вы просто упаковать банку с вашими классами для их использования?

Ответ 2

Я не думаю, что можно преобразовать из scala обратно в стандартную java, поскольку scala выполняет некоторые довольно низкоуровневые манипуляции с байтовым кодом. Я на 90% уверен, что они делают некоторые вещи, которые не могут быть точно переведены обратно в нормальный Java-код.

Ответ 3

Нет, такого инструмента нет.
Scala в некотором смысле является coffescript Java. Посмотрите, как все эти фанки-классы в coffescript переведены на javascript. Тот же * будет с scala.
Я не думаю, что есть много функций, которые нельзя каким-либо образом перевести на Java, но большинство функций будут переведены на чрезвычайно загроможденный код, даже если человек сделает эту работу.

Но есть java для переводчиков scala.

* не говоря буквально о классах

Ответ 4

Не уверен, что это сработает, но вы можете запускать файлы классов через декомпилятор java.

Если он работает вообще, результат должен быть уродливым, как черт.

Ответ 5

Вы должны декомпилировать файлы .class в исходные файлы java, будьте осторожны, что scala создает еще много файлов .class

Вы можете использовать javap из oracle, включенного в декомпилятор sdk или jad

для подробного объяснения прочитайте следующую статью:

Ссылка scala класс на источник java