2012-04-12 3 views
4

Перед тем, как кто-то выстрелит в меня, я знаю, что Java для двоичных компиляторов, и я не один из них.Инструмент для преобразования источника Java в источник C++

Я также знаю, что не будет идеального инструмента, который без проблем преобразует все. Я знаю, что недостающие библиотеки Java являются серьезной проблемой; однако мой источник не использует многие библиотеки Java, кроме таких вещей, как String и prints. Я хочу только инструмент для создания классов, которые ссылаются на источник Java. В случае String я рад заполнить пробелы или исправить на более позднем этапе. Я просто хочу, чтобы инструмент делал скучные биты, поэтому мне не нужно делать перевод вручную.

В случае необходимых классов и т. Д., Я буду вручную исправлять их на более позднем этапе, но по достоинству оценят указатель на то, что, по крайней мере, достает достаточно скучного материала.

Еще раз хочу, чтобы исходный текст был переведен, а не компилятор для создания двоичного файла. В основном я хочу взять некоторые Java-материалы и преобразовать их в C++ для последующего использования в других проектах.

EDIT ДОПОЛНИТЕЛЬНЫХ ПРИМЕЧАНИЯ

К сожалению, если бы я не был ясен в моих предыдущих частях этого вопроса. Я знаю, что Java очень сильно отличается от C++. У меня есть Java-код, который в основном заполнен массивами обработки и битами и почти не создает объектов. В некотором смысле это очень самодостаточно и имеет несколько обращений к другим классам. Эти классы, по-видимому, являются первыми кандидатами на конверсию; другие вещи должны быть переписаны, но по крайней мере некоторые части задействованы.

+0

Если вы действительно хотите получить доступ к своим утилитам java из C++, вы можете использовать JNI вместо их переноса. –

+0

Возможный ответ из дубликата: http://tangiblesoftwaresolutions.com/Product_Details/Java_to_CPlusPlus_Converter_Details.html - но инструменты поставляются с множеством оговорок и не являются бесплатными. –

+0

@jesse, если im спрашивает java -> C++, как это может быть дубликат предложения yor, который идет в другую сторону? –

ответ

11

j2c - один - он преобразует исходный код Java в его грубый эквивалент C++.

Очевидно, существует много предостережений, о которых упоминали другие (сбор мусора, синхронизация и т. Д.), Но это будет хорошей отправной точкой (и это открытый исходный код, чтобы вы могли легко улучшить эту точку =).

В зависимости от размера вашей базы кода, возможно, имеет смысл и бросить свое собственное - писать не все так сложно, как только у вас есть Java AST для работы с учетом того, что синтаксис Java в основном является подмножеством C++ , и есть много библиотек, которые будут анализировать Java-код для вас (j2c использует тот, который поставляется с Eclipse, например). Выполнение преобразования вручную намного более подвержено ошибкам, чем написание инструмента для него.

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