c++应用程序的Java GUI -这是一个好的设计吗?

A Java GUI for a C++ application - Is this a good design?

本文关键字:一个 GUI Java 应用程序 c++      更新时间:2023-10-16

是的,当面试官提到他们在C/c++应用程序中使用Java-swing GUI时,我有点惊讶。我很好奇,问他他们是如何将这些整合在一起的,他的回答是"通过消息传递"。有趣!嗯,我对这种方法很陌生,我很好奇那些公司是否真的使用这种设计。如果是,那么这种设计是否有很大的优势?我有点难以理解这个设计是如何工作的,如果你有任何参考,请分享。

仅供参考,该产品是基于数据备份的应用程序(可能在Linux/Unix平台上)。谢谢你。

CV

我看不出有什么问题。通过消息传递集成不同的组件是非常常见的。我确实认为拥有一个同质的环境(例如,所有的应用程序都是用Java编写的,而不是用Java和c++编写的),但是通常情况下,您必须集成用其他语言编写的遗留或第三方组件,要么是出于成本原因,要么是因为没有其他选择。

消息传递是实现此目的的常用方法。我认为HTTP是在"消息传递"的保护伞下,几乎每种语言都有一个HTTP库——这使得它成为一个很好的选择作为通用的消息传递"语言"。当集成一个非常异构的系统时,有专门的工具/框架不仅用于集成组件,而且还用于集成消息传递系统(例如esb)。

如果没有更多关于应用程序需求的信息,很难判断这是否是一个好的设计。

另一件要考虑的事情是,有时面试官会提出一些奇怪的设计,看看候选人的反应。当我招聘的职位不是我的个人能力,而是我有经验(通常是把事情搞砸)的时候,我通常会这样做。我的目标是看看候选人是否比我更擅长解决问题!不合格的候选人会盲目地接受我糟糕的解决方案。更好的候选人会立即提出更好的解决方案。最佳候选人将比较和对比我的弱解决方案和他们更好的解决方案,并探索每个选项的意义。

我猜选择Java前端是出于可移植性的原因。我认为基于浏览器的界面可以实现同样的目标,但也许他们的UI/UX人员真的很喜欢Java。

对于为什么他们必须首先调用c++函数,然后在此之上,他们可能有分布式客户端需求,这可能是有限制的。如何开发一个解决方案,构建一个消息传递系统并在服务器端与c++接口。在一天结束的时候,这是一个有效的解决方案。我不希望ui必须用c++构建,因为服务器端是用c++编写的,有时您需要将不同的技术组合在一起来实现您的解决方案。

这是一种可行/OK的方法。2005-2006年,我在一家非常大的公司(《财富》20强公司,如果有这样的公司的话)当合同工时,我看到这家公司采用了这种方法。

当我问为什么时,我被告知:

    需要Linux GUI, java/SWING是一个不错的选择。我还认为他们有一些Java开发人员需要工作。他们用c++/C编写了大量对性能至关重要的代码库。
  1. 他们已经广泛使用消息传递,并为此建立了库。
  2. 消息传递接口虽然开发成本更高,但允许团队编写测试程序(例如用python脚本替换生产GUI)。

也就是说,Qt和GTK/Gtkmm都是非常好的GUI框架,为什么不使用它们呢?