Инструменты для преобразования не-Java в исходный код Java

Есть ли какие-нибудь хорошие инструменты для автоматического преобразования исходного кода, отличного от Java, в исходный код Java?

Я не жду чего-то идеального, просто чтобы избавиться от наихудшей работы.

Думаю, есть скользящая шкала сложности. C# должен быть относительно простым (пока вы игнорируете все библиотеки). (хорошо написано) C++ не так уж и плох. C требует немного OO. Функциональные языки (статического типа) могут быть легко изучены. Для динамических объектно-ориентированных языков может потребоваться нелокальный анализ.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
6
0
2 664
7

Ответы 7

Вы можете попробовать найти компилятор байт-кода Java для языка, о котором вы говорите (существуют компиляторы JVM для всех типов языков), а затем декомпилировать байт-код обратно в Java с помощью декомпилятора, такого как Jad.

Это чревато опасностями. Восстановленный код будет отстойным и, вероятно, будет нечитаемым.

Google: ANTLR

Хороший момент, но в зависимости от исходного языка это будет огромная задача.

user181750 14.10.2009 13:47

Из ADA в Java можно выполнить поиск и замену!

как насчет обратного? Я парень java, желающий изучить ADA

WolfmanDragon 12.12.2008 21:45

ADA не слишком отличается, шаблоны все похожи, пакеты похожи на статические классы Java, классы ADA похожи на классы Java. Стандартный ввод-вывод является общим в ADA <?>. Единственная странность - это расширение пакета, и то, что деревья файлов и имена пакетов не совпадают 1: 1, как в Java. Так что вроде C++ :)

Tim Williscroft 12.01.2009 09:16

Если вы просто хотите использовать устаревший код C / Pascal, вы также можете использовать JNI для его вызова из Java.

Если вы хотите запустить его в Java-апплете или аналогичной ограниченной среде, и он не должен быть очень эффективным, вы можете использовать Вложенная виртуальная машина (который является преобразователем байт-кода из MIPS в Java) в сочетании с кросс-компилятором gcc, который компилируется в MIPS). Но не ожидайте от этого получить читабельный код Java.

Набор инструментов NestedVM довольно тяжелый и немного устаревший. В основном вы конвертируете инструкции MIPS в байт-код Java (MIPS32 был выбран как самый близкий к JVM)

Thorbjørn Ravn Andersen 25.10.2009 19:04

Преобразование языка довольно простое, но вы обнаружите, что библиотеки разные. Скорее всего, это будет большая часть вашей работы.

Любой из этих инструментов может помочь, только если ваш код, отличный от java, недостаточно велик.

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

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

Миграции от источника к источнику подпадают под действие Трансформация программы. Program-Transformation.org отслеживает куча инструментов, которые полезны для распознавания, анализа и преобразования языков. Вот некоторые из них, которые могут выполнять миграцию из исходного кода в исходный:

Если вы проведете какое-то время с одним из инструментов с открытым исходным кодом, вы заметите, что, хотя они включают в себя миграцию из исходного кода в качестве функции, трудно найти рабочие примеры. Я полагаю, это потому, что не существует такой вещи, как универсальная миграция. Каждый проект / группа использует уникальный язык и может различаться в зависимости от используемых библиотек, сложности типов, идиом, стиля и т. д. Имеет смысл определять некоторые преобразования для каждой миграции. Это означает, что проект должен достичь некоторой критической массы, прежде чем автоматическая миграция окупится.

Несколько связанных документов:

Другие вопросы по теме