使用LLVM(我猜是LLJVM)将C ++应用程序移植到Java字节码的可行性如何?
事实是,我们目前有一个用C ++编写的过程,但是新的客户端已经强制要求能够使用显然没有任何本地代码(没有JNI)的Java虚拟机以多平台方式运行该程序。这个想法是要能够将生成的jar并复制然后复制到不同的系统(Linux,Win,32位-64位),它应该可以正常工作。
环顾四周似乎可以将C ++编译为LLVM IR代码,然后将该代码编译为Java字节码。不需要所生成的代码是可读的。
我已经使用emscripten对类似的东西进行了一些测试,这需要C ++代码并将其编译为JavaScript。结果是有效的JS,但完全不可读(看起来像assambler)。
- 是否有人使用此技术将应用程序从C ++移植到Java字节码?
- 我们可能面对什么问题?
- 生产代码是否有效?
在发表一些评论后,为了更清楚地表明我的观点,也许端口没有被很好地使用,因此我不希望可读的源代码只是Java字节码,因此它不再是将要开发的“端口”,只是目标平台必须是Java JVM,而不是本机。
注意:我知道目前我们有一些非标准C ++和关闭源代码库,我们正在寻求删除此非标准代码和所有关闭源代码库,并使用Free Libre开源软件,因此,假设所有代码均为标准C ++代码,所有代码在编译时可用。
注意2:不能编写可移植的C ++代码然后将其编译到所需的目标平台,因为编译后的程序必须是多平台的,因此要使用JVM。
注意3:现在我们不在研究适用于Python或其他语言库的类似解决方案,但我也想听听它。我的意思是我们的目标可执行文件必须是java字节码,但是如果有一些选项可以将C ++编译为有效的python编译代码,我也想听听它们。