Насколько жизнеспособно портировать приложение C ++ на байт-код Java, используя LLVM (я думаю, LLJVM)?
Дело в том, что в настоящее время у нас есть процесс, написанный на C ++, но новый клиент сделал обязательным, чтобы иметь возможность запускать программу многоплатформенным способом, используя виртуальную машину Java без явно собственного кода (без JNI). Идея состоит в том, чтобы иметь возможность взять сгенерированный jar и затем скопировать его в разные системы (Linux, Win, 32 бит - 64 бит), и он должен просто работать.
Осмотр выглядит так, как будто можно скомпилировать C ++ в код LLVM IR, а затем этот код в байт-код Java. Сгенерированный код не нужен для чтения.
Я немного протестировал подобные вещи, используя emscripten, он берет код C ++ и компилирует его в JavaScript. Результат действительный JS, но совершенно нечитаемый (выглядит как ассамблер).
- Кто-нибудь сделал порт приложения из C ++ в Java байт-код, используя эту технику?
- С какими проблемами мы можем столкнуться?
- Является ли действительный подход для производственного кода?
Чтобы прояснить мою точку зрения после некоторых комментариев, возможно, порт используется недостаточно хорошо, я не ожидаю читабельный исходный код в результате, просто байт-код Java, так что это не «порт», который будет разрабатываться больше, просто целевой платформой должна быть Java JVM, а не нативная ассамбляр.
Примечание. Мне известно, что в настоящее время у нас есть несколько нестандартных библиотек C ++ и закрытых исходных кодов, мы собираемся удалить этот нестандартный код и все библиотеки закрытых исходных кодов и использовать бесплатное программное обеспечение с открытым исходным кодом Libre, поэтому предположим, что весь код является стандартным кодом C ++ весь код доступен во время компиляции.
Примечание 2: Это не вариант написания переносимого кода на C ++, а затем компиляции его на нужную целевую платформу, скомпилированная программа должна быть многоплатформенной, поэтому используется JVM.
Примечание 3: В настоящее время мы не рассматриваем похожие решения, применяемые к Python или другой языковой базе, но я также хотел бы услышать об этом. Под этим я подразумеваю, что нашим целевым исполняемым файлом должен быть байт-код java, но если есть варианты для компиляции C ++ в допустимый скомпилированный код на python, я также хотел бы услышать о них.