是否有集成Java和C ++的工具?
谢谢你阅读这个问题。
我正在做这个功课,需要一个GUI作为前端,以集成用C ++编写的后端代码。
我想在java中编写这个前端GUI作为其跨平台function和强大的图形组件。
有没有什么好方法可以很好地集成java和C ++?
谢谢
Swig工作得很好。 它是将C / C ++绑定到各种语言的手段。 我有使用它与C ++交谈的经验,非常悲伤。 这是一起使用Swig和Java 的手册页 。 本教程可以帮助您快速完成,包括Java在内的许多示例。
但是,我会调查将您的应用程序拆分为客户端/服务器体系结构,以便将C ++后端与Java前端分开。 您将避免C ++ / Java开发和集成的痛苦=虽然您必须根据需求在前端和后端之间实现一些通信协议(例如基本套接字/ webservice / HTTP + REST或可能CORBA – 本身就是Java和专为跨语言交流而设计)。
假设您是后端组件在同一台计算机上,您可以使用其他人描述的接口层
- JNI
- JNA
- 痛饮
- QTJambi
这些都需要c ++后端才能在dll中使用,并且通常为C函数提供Java代理,有时还提供c ++类。 所有这些都有学习曲线,有些工作可以启用代理。
另一种方法是使用c ++进程并使用其中任何一个进行通信
- 命令行
- 标准输入/输出
如果要支持通过网络进行通信
- sockets
- CORBA
- 网页服务
- 节约
这些也有学习曲线和一些设置成本
其中命令行或stdin / stdout可能是最快的,只需要最少的努力和知识。 但是它不能很好地扩展到大型接口,因为您必须将每条消息的输入和输出编码为文本
对于命令行方法,您可以使用命令行开关为选项执行c ++过程,结果可以从标准输出过程或其退出代码中读取。
对于stdin / stdout,您启动进程,将每个请求发送到进程的stdin,并从stdout读取结果。
Hava看看JNI (Java Native Interface)。 Sun有一本关于JNI的在线书籍 。
节俭怎么样?
Thrift是可扩展的跨语言服务开发的软件框架。 它将软件堆栈与代码生成引擎相结合,构建可在C ++,Java,Python,PHP,Ruby,Erlang,Perl,Haskell,C#,Cocoa,Smalltalk和OCaml之间高效无缝地工作的服务。
如果您不是自己编写C ++后端库,而只是想使用第三方库,那么更好的选择是使用JNA 。
在这种情况下,使用JNA而不是JNI的主要好处是桥接代码都是用Java编写的(而不是用本机语言编写,在你的例子中是C ++)。 这意味着您不需要通过构建C ++ JNI接口来使构建过程复杂化,所有的接口工作都将使用主项目的语言编写。
但是,如果您自己编写C ++后端,那么已经提供的任何其他选项都同样适用。