感谢您阅读这个问题。
我正在做这个作业,它需要一个 GUI 作为前端,以与用 C++ 编写的后端代码集成。
我想用java编写这个前端GUI作为它的跨平台特性和强大的图形组件。
有什么好方法可以很好地集成 java 和 C++ 吗?
谢谢
假设您是后端组件在同一台机器上,您可以使用其他人描述的接口层
这些都要求您在 dll 中提供 c++ 后端,并且通常为 C 函数和有时为 c++ 类提供 Java 代理。所有这些都有一个学习曲线,并且需要一些工作来启用代理。
另一种方法是使用 c++ 进程并使用
如果您想支持跨网络的通信
这些也有学习曲线和一些设置成本
其中,命令行或 stdin/stdout 可能是用最少的精力和知识就能最快完成工作的。但是它不能很好地扩展到大型接口,因为您必须将每条消息的输入和输出编码为文本
对于命令行方法,您使用选项的命令行开关执行 c++ 进程,结果是从进程标准输出或其退出代码中读取的。
对于标准输入/标准输出,您启动进程,每个请求都发送到进程的标准输入,结果从标准输出读取。
看看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++ 后端,那么已经提供的任何其他选项都同样适用。