Скомпилируйте проект Java в нативную библиотеку и создайте оболочку C / C ++ поверх - PullRequest
0 голосов
/ 17 декабря 2018
  1. Я работаю над проектом C / C ++.

  2. В сети я нашел несколько очень ценных ресурсов в виде библиотек Java, которые я хотел бы интегрировать вмой проект C / C ++.Это большие проекты, которые я бы не подумал перенести на C / C ++.

  3. Я прочитал в посте Stackoverflow , что код Java можно скомпилировать в собственный код, таким образомможно было бы запустить проект Java без виртуальной машины Java в середине.Я также обнаружил, что существует даже коммерческий инструмент для этого, называемый ExcelsiorJET , что еще больше заставляет меня верить, что это может быть надежной вещью.

Принимая 1,Принимая во внимание 2 и 3, я задавался вопросом, можно ли взять библиотеку Java, скомпилировать ее в собственную библиотеку и затем создать оболочку C или C ++ поверх этой библиотеки.Это означает, что таким образом виртуальная машина Java больше не будет нужна.Таким образом, я избавлюсь от уровня Java Virtual Machine.Может ли это быть возможно?

Я искал в Интернете, чтобы увидеть, если кто-то когда-либо успешно создал этот вид конвейера, но не мог прийти к выводу ...

Что я хотел быСпросите, возможен ли этот конвейер, по крайней мере, теоретически, если в Интернете нет примеров людей, успешно его создававших.

Если это возможно, может ли кто-нибудь указать мне правильное направление?

1 Ответ

0 голосов
/ 18 декабря 2018

Посмотрите на JNI и последовательность запуска JVM: все это кодирование C / C ++ на этом уровне.

Вы можете либо скомпилировать java заранее (AOT), либо вызвать JVM так, как если быбыла библиотека (именно так работают исполняемые оболочки, такие как Launch4j).

Один из способов упростить взаимодействие с Java / C / C ++ - использовать IDL.После того как вы определили свой интерфейс IDL, его можно использовать для генерации кода Java / C / C ++.

...