Java与C++,用于构建具有C++后端的GUI [已关闭]

2022-09-01 18:13:06

我目前有一个C++后端,我需要与GUI连接,并且由于我以前从未构建过GUI,因此我对从哪里开始感到困惑。

我很乐意用C++和Java编写代码,所以我更喜欢我的GUI使用其中一种语言。此外,GUI必须合理地独立于Windows和Linux(希望如此,因此是Mac)。而不是Windows和Linux。

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

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

  • 与另一种语言相比,任何一种语言是否具有严重的优点/缺点?
  • 包装问题有多严重,如果我使用Java,会有多少重写。
  • 是否有任何我应该查看人们认为相关的特定资源?

感谢和欢呼所有:)


答案 1

看看Qt

根据我的经验,在两个不同的语言运行时之间进行通信总是具有挑战性的。如果你有一个非平凡的应用程序来构建以下内容,往往会带来挑战:

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

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

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


答案 2

你说你已经知道C++和Java,而且你以前从未做过GUI。这意味着:

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

因此,留在C++可以为您节省一件事。好吧,学习一些东西总是一个好主意,但同时学习两个新概念可能是一个坏主意。无论如何,学习可能是较小的负担,我想有很多实际工作涉及,即使你使用像SWIG这样的工具。

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

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

人们还会告诉你,Java GUI总是很丑陋,不适合主机系统。好吧,大多数Java GUI确实是,但恕我直言,这不是因为Java,而是因为糟糕的编程。让Swing应用程序适应操作系统的外观和感觉需要两行代码,而大多数程序员根本没有在他们的Java GUI上投入足够的精力来复制和粘贴这两行...你可以想象他们有多关心他们的GUI设计的其余部分。

对于您目前的情况,我建议您使用C++ GUI,但是如果您知道将来的计划是什么样的,并且如果您知道您将在余生中执行Java GUI,那么现在开始并进行额外的努力可能是可以的。

如果你选择C++作为GUI,人们会告诉你各种各样的事情,把你拉向任何方向。所有三个大型可移植框架都有其优点和缺点,但我不相信它们之间有任何最好或最差的框架。我会推荐Qt,只是因为我已经用过它 - 但是如果我愿意使用GTK或wxWidgets,我可能会建议这样做。


推荐