我正在为多个桌面平台构建一个应用程序:Windows,Mac,以及稍后可能用于Linux。
我想知道哪种编程语言和IDE组合最适合我:
我陷入了这三种解决方案之中:
对于#2和#3,我需要一个建议,考虑到我的应用程序的设计,哪种语言更适合我。我的意思是,哪一个对我的目标有更好的GUI构建能力?
BTW GTK#为每个平台使用不同的库,所以这应该是我的核心架构的混乱,不是吗?!
答案 0 :(得分:7)
这听起来像是Xojo或类似的工作:http://www.xojo.com
Mac,Windows,Linux使用简单的GUI设计和本机应用程序构建。自定义UI也很容易完成,然后您就可以为所有三个平台提供一个代码库。您可以免费下载和使用该软件进行开发和测试,只需在您决定构建应用程序后需要许可证。
答案 1 :(得分:7)
三年后,Javascript现在也是这场辩论的有力竞争者。
空间内有多种选择。
和其他人
甚至微软也发布了Visual Studio Code,它是用Javascript编写的开发环境的跨平台版本。
What is the Visual Studio Code editor built on
其好处包括利用许多可用的网络库,以及建立/使用您的网络开发技能。
答案 2 :(得分:3)
“GTK#为每个平台使用不同的库”,你的意思是不同的渲染后端(例如X11,Cairo)?
您只需要构建一次GTK#app。但是,您必须将GTK#运行时(对于Windows和Mac而言不同)与您的应用程序捆绑在一起。 Banshee是您可以效仿的一个很好的例子。
答案 3 :(得分:2)
您还可以考虑使用Livecode
动态代码:http://livecode.com 对于除web之外的任何平台,它都是开源的,如果你的代码足够灵活,不是C#或Java,它也包含移动目标。
一个选项是使用C#和GUI独立性在已编译的库中构建核心逻辑,然后将其插入到livecode中,使UI能够用于该工具。
答案 4 :(得分:1)
最好的选择是使用Nevron Open Vision。它是一个基于C#的跨平台用户界面平台,可实现构建企业级应用程序所需的大多数控件。它是MyDraw(www.mydraw.com)背后的框架-MyVis是类似于Visio的专业绘图程序。 MyDraw是使用Nevron Open Vision完全构建的,不需要任何其他第三方库。我们主要是在Windows下开发它,只是将其编译为Mac。不久,我们将添加对Linux和WebAssembly主机的支持。
答案 5 :(得分:1)
Microsoft刚刚发布了.NET MAUI,这是一个基于Xamarian.forms的跨平台GUI框架。
当我们考虑在统一的.NET中构建设备应用程序的外观时,我们看到跨多个平台使用的许多设备,从Android和iOS到Windows和macOS。为了满足这一需求,我们很高兴地宣布一个新的一流的UI框架来实现这一目的:.NET多平台App UI,亲切地调用.NET MAUI。
这似乎可以满足您的所有要求。他们没有在文章中明确提及Linux,而是声称在Github Repo的说明中支持Linux。
答案 6 :(得分:0)
这取决于应用程序的受众:消费大众市场或业务/ IT
电子或本机UI,也许带有共享的非UI代码。例如,Visual Studio Code是用Electron制作的(我最后检查过)。 Google Flutter是值得评估的新进入者。 Dropbox是Python(或以前是Python)。 (a)正确包装Python以便顺利进行x平台安装,并且(b)GUI工作将花费很多时间。不幸的是,对于大众市场的消费者应用程序(不是IT人员使用的实用程序,而是Dropbox,Skype等大众使用的精美设计),您将花费大量时间使安装系统正常工作,并使应用程序外观和感觉合适。无论采取哪种方式,这都是一项非常耗时的工作。
如果它是可以使用基本UI的基本业务应用程序或实用程序,则我主要出于比较的目的而评估Xojo和/或LiveCode。 Xojo非常接近.NET。由于Google Flutter即将推出,因此也是如此。在您阅读本文时,Flutter可能是最佳选择。
B2B:Java吗?这是针对“大型”企业应用程序的经过反复尝试,测试和真正解决方案。鉴于Java应用程序会耗尽内存,因此最终用户可能不会喜欢您。但是对于企业级应用程序,主要关注的是非常激烈的业务逻辑是否会起作用。对于IT工具,这取决于。如果它是一个三屏实用程序,请避免使用Java。如果是复杂的ERP,那么Java就是很好的选择。记住要四处寻找不同的打包工具,以免引起消费者对JVM的困扰。同样,我喜欢的一个Java桌面应用程序是Freemind。这是用Java制作合理的桌面应用程序的一个很好的例子。我在Windows和Mac中都使用过它,它很棒。您还可以查看编译为Java字节码的Kotlin或Groovy(用于测试用例)。
B2B .NET?这里有很多要解压的东西。在我看来,关键是.NET Windows桌面开发的开发时间比Windows Java桌面开发快2到4倍。从制作GUI到更好的代码完成,到更快的编译时间,到更少的打包和安装障碍。就是说,在撰写本文时,“。NET Core”或Mono对于MacOS来说还很薄。我真的非常希望这种变化。但是,我一直在等待Mono或.NET Core提供无限制的MacOS全套套件,并且这种情况尚未发生。如果它是企业应用程序,则可以使用Mac的.NET Core摆脱困境。但是,请首先使用您要使用的所有控件/库构建一个基本的.NET Core“ hello world”应用程序。然后尝试在MacOS上为其构建安装程序,然后随机找一个人查看Mac是否真正安装并运行。您可能会发现您今天在这个领域苦苦挣扎(尽管我希望它会好起来,但已经好几年了。)
如果这是一个较小的应用程序,不需要出色的UX和超深度的OS集成,那么我考虑使用Xojo或LiveCode,也许用于UX元素。就像@merlucin所说的那样,您可以在共享的东西中编写核心逻辑-也许是C#,python等。
这就是为什么-Xojo和LiveCode已经存在了10年了。他们更多地是要保持一致。而我发现.NET和QT一直在变化。跟上Joneses和维护安装程序的成本很高。因此,对于小型应用程序或实用程序-XML编辑器,IT帮助工具,Xojo或LiveCode可以帮助您更快地到达那里。
例如,当您按下Xojo上的build按钮时,它实际上为Windows,Mac和Linux创建了3个可执行文件。坦白地说,这与打包跨平台的Python应用程序甚至打包用于Windows的.NET应用程序的疯狂。
需要权衡的是这些工具-Xojo和LiveCode通常最终会缺少您需要的一些关键内容,这需要一点技巧。您可以在他们的论坛附近阅读。 Xojo有点像.NET,尽管LiveCode是完全基于“堆栈”的另一种编程范例。
也请牢记开发人员的幸福。许多开发人员不想使用Xojo或LiveCode进行编码,因为它们是鲜为人知的语言。因此,请确保您能接受。如果您被解雇并在Xojo拥有5年经验,会发生什么?嗯。
在评估中,无论您选择什么,都必须在要评估的平台上编译基本的GUI应用程序,并需要3个人将其正确安装在Mac上。您会对所需的库和疯狂感到震惊。特别是如果您是Web开发人员,您会发现仅维护安装程序是跨3个平台的大量工作。没关系,GUI的一致性。
答案 7 :(得分:-1)
我的两分钱:现在 Flutter 也可以创建桌面应用了