Java与C++,用于构建具有C++后端的GUI

spa*_*der 23 c++ java user-interface backend wrapper

我目前有一个C++后端,我需要连接GUI,因为我以前从未构建过GUI,所以我很困惑从哪里开始.

我很乐意用C++和Java编写代码,所以我更喜欢我的GUI使用其中一种语言.此外,GUI必须在Windows和Linux上合理地独立于操作系统(并且希望是因为Mac).

现在我明白,如果我使用Java来做这件事,我需要一些包装器才能做到 - 但我也听到(严格来说是二手)在C++中编写GUI是一件痛苦的事.

我不想在Java中重写太多的后端代码(谁做??)我希望输入:

  • 这两种语言与其他语言相比是否具有明显的优势/劣势?
  • 包装问题有多严重,如果我使用Java,会有多少重写.
  • 我应该看一下人们认为相关的具体资源吗?

谢谢,干杯全:)

Abh*_*hay 34

看看Qt.

根据我的经验,在两种不同的语言运行时间之间进行通 如果您有一个非平凡的应用程序来构建以下通常会带来挑战: -

  • 错误处理.
  • 内存管理.
  • 多线程和同步语义.

除了由于包装器而增加一个间接级别之外,它需要大量的思考,例如需要跨GUI和后端等传递数据结构的情况.

例如: - 考虑将Java String从GUI 传递到后端C++.本质上,我们必须从Java String对象中提取字符,并使它们可供C++开发人员使用,而不会泄漏保存它们的内存.这是一个基本问题的例子(还有其他方面也类似于返回字符的编码).


Len*_*mel 12

你说你已经了解C++和Java,而且你之前从未做过GUI.这意味着:

  • 无论您是使用Java GUI还是C++ GUI,都需要学习如何处理GUI框架
  • 如果您选择Java,您还需要学习如何在两种语言之间进行交互

所以留在C++中可以省去一件事.嗯,学习一些东西总是一个好主意,但同时学习两个新概念可能是一个坏主意.无论如何,学习可能是一个较小的负担,我想即使你使用像SWIG这样的工具,也会有大量的实际工作.

您可能想知道用Java编写GUI还是用C++编写GUI更容易.这取决于所选择的框架.对于Java,您有AWT和Swing,它们是默认Java发行版的一部分,然后是Eclipse使用的SWT,例如.对于C++,有许多工具包,其中Qt,GTK和wxWidgets是最受欢迎的工具包,并且这三个工具包都支持每个主要平台.大多数"C++"GUI工具包也有Java绑定甚至Java端口,因此您也可以将它们与Java一起使用.

到目前为止,我已经使用了Swing,Qt和其他一些对你的情况没有帮助的人(在.NET上使用Borland C++ Builder和WinForms附带的UI).基本上,所有这些框架的概念都是相同的,我发现它们都没有比另一个更难或更容易.唯一的例外可能是Java,因为我从未让这些LayoutManage工作,即使其他工具包具有易于掌握的LayoutManagers等效工具.但也许那就是我.

人们还会告诉你,Java GUI总是很难看,并且不适合主机系统.嗯,大多数Java GUI确实是,但恕我直言,这不是因为Java,而是因为编程不好.它需要两行代码才能让Swing应用程序适应操作系统的外观和风格,并且大多数程序员根本没有在他们的Java GUI中投入足够的精力来复制和粘贴这两行...你可以想象多少他们关心其他GUI设计.

对于你目前的情况,我会推荐一个C++ GUI,但是如果你知道你的未来计划是什么样的,并且如果你知道你将在你的余生中使用Java GUI,那么现在就可以开始这样做了.额外的努力.

如果您选择C++作为GUI,人们会告诉您所有类型的东西可以向您拉动任何方向.所有三大便携式框架都有其优点和缺点,但我不相信其中有任何一个最佳或最差.我推荐Qt只是因为我已经使用过了 - 但如果我很高兴使用GTK或wxWidgets,我可能会建议.


Tho*_*sen 8

根据您的需要,当您没有现有的前端代码时,简单的Web界面可能是最简单的.在您的应用程序中嵌入一个小型Web服务器,并在" http:// localhost:12345 "(或您最终使用的端口)上打开浏览器.

  • 狂热分子,我告诉你;-)。这也是一个很好的选择,今天有多少应用程序启用了网络......我认为他们阅读了网络并且吓坏了投票者​​。我再次将你置于 0 级。:-) (2认同)