是否有集成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 ++后端,那么已经提供的任何其他选项都同样适用。