我正在写一个客户端应用程序,非常老派,相当保守.在Windows上,我可能会使用.NET Forms,或者可能是WPF,我不确定.在Mac上,我会使用Objective-C,Cocoa和所有这些东西.但我希望这个应用程序同时适用,我宁愿只写一次.
我应该在QT写吗?我听说当你开始使用它时,QT在跨平台使用时会出错.诺基亚最近的麻烦是什么让我担心连续性?社区对Digia的看法是什么?
我应该用Java写吗?较新的Mac OS不再带有Java,Windows也没有.如何创建这样的良好设置体验?那么USB设备呢?有一些Java USB项目,但它们都是基于Windows或Linux的,没有Mac.我也担心得到一个原生的外观和感觉,但我想Swing让我在那里覆盖.
我应该用Python编写吗?我担心这里的表现.此外,我之前编写过大型Python应用程序,并且我发现由于缺乏静态分析,Python很难扩展到大型代码库.
你是怎么写的?
几周前我问了一个类似的问题构建一个Mac和Windows GUI应用程序.
关于"本机外观和感觉":如果您需要,请不要使用跨平台GUI库.为每个平台编写一次GUI层.您可以共享核心应用程序逻辑.你也许可以蒙混过关,因为对外观要求,使用Qt或Windows和Linux上的wxWidgets更轻松,但它看起来相当出来的地方在Mac上.
如果"原生的外观和感觉"不是必不可少的,我会说Qt或wxWidgets可以让你自己避免头痛.我不担心Qt的连续性.它的桌面框架非常成熟,不是由诺基亚维护(他们维护移动部分).开源社区将保持活力.不知道它是多么的错误,但什么跨平台框架没有它的错误份额?
如果"本机外观"很重要,请继续阅读核心应用程序逻辑的语言选择.
Java:不要.Swing实际上并没有提供原生的外观和感觉.试着用它做任何全面的GUI.Swing对于编程也很痛苦.有很多替代Swing,但我怀疑它们中的任何一个都会比Qt更好.此外,大多数应用程序可能需要挂钩操作系统.Mac上的Java桥接已弃用.您必须使用JNI进行任何扩展.对于Windows可能也是一样的.
Python:那是我走的路.Python不仅是跨平台的,它还带有一组丰富的跨平台库.在任何操作系统上也很容易编写C/C++扩展.缺点是启动速度相对较慢,占用的内存比本机C++应用程序多.尝试设置可部署的应用程序也很痛苦.除非你计划进行严肃的数据处理,否则我不会过分担心性能.
C++:也是一个不错的选择.如果您使用像Qt或Boost这样的跨平台库(没有尝试过,问题和研究得出结论),用C++编写跨平台应用程序并不难.还兼容xCode,Visual Studio等,因此可以轻松设置项目.