开发原生应用还是跨平台开发?

5

你认为是应该为特定平台编写应用程序,还是采用跨平台方法并覆盖更多潜在客户?

这将是基于GUI的应用程序,我打算使用Java。

我使用过的大多数基于Java构建的应用程序在各自平台上都不能像本地应用程序一样流畅运行。

我正在考虑的两个平台是Windows和Mac。

如果我只是为了自己使用而创建应用程序,并且必须选择一个系统,我会选择关注Mac。

我想听听你的想法。


这个应用程序是关于什么的?一般来说。 - OscarRyz
总的来说,这个应用程序的主要工作是帮助跟踪研究笔记。 - Gaius
15个回答

6
我会使用Qt,并且肯定会针对跨平台进行目标设置...主要原因并不是您认为的那样(仅仅是跨平台),而是通过针对多个平台,您的代码由于某种神奇的原因往往会获得更高的代码质量。我在自己的项目中见过这种情况发生无数次。每次我添加一个新平台,代码的质量都会提高,代码变得更加清晰...此外,每个严肃的应用程序应该尽可能少地依赖其他库,跨平台意味着您有更少的依赖...然后作为一个“额外福利”,您可以让您的应用程序在多个平台上运行...

1
我认为代码更“干净”的原因是因为你需要按照标准编写,因为一些平台,主要是Mac OS X和Linux对标准偏差的容忍度非常严格。 - Brock Woolf

4

需求,需求,需求。

说真的,“这取决于”是正确的答案。

真正的跨平台是一项艰巨的工作;在你/用户熟悉的地方工作是有价值的。以有效的方式解决问题才是最高优先级。


4
跨平台开发一般被高估为一种艺术形式。Java是这里的领先技术,但即使在这种情况下,大多数Java程序员也不会真正实现跨平台。有一些非常出色的工具,如Vuze、LimeWire和JRipper,几乎可以在任何地方正常工作,但从统计学上来说,这些都是例外。大多数Java应用程序,特别是企业类型的,都是针对一个平台编码的,并且它们从未真正移动过。
如果您想要在Mac和Windows上进行开发,请考虑花时间研究Limewire和Vuze的代码库。这两个应用程序在两个平台上都表现非常出色。
你肯定需要两个版本。一个版本可能不够用。

3

我建议先在你熟悉的平台上开发,利用所有平台的特性;在这种情况下,这将是OS X。

如果你的Mac应用程序成功后,再考虑移植选项。在我看来,在确定第一时间有足够的兴趣之前,投入精力进行移植是不值得的。


2
在当今时代,是否真的有写本地代码的好理由?
是的。可用的语言和库不允许优秀的编程完成得很好。最多只能让人在各个平台上编写可以工作的代码,但永远无法卓越。
选择一种并专注于它。专注于那个受众群体(你会发现他们的口味和需求都不同)。
一旦你在另一端拥有人们渴望的应用程序,并且就在有人制作竞争产品之前,评估将您精心调整和设计的产品移植的成本/效益。
如果你试图“服务两个主人”,你将基于两个平台上最容易的设计决策,这不是一个好的设计过程。
-Adam

1
如果您的应用程序使用MVC设计,您可以使用C++编写可移植的模型类,并为每个要支持的平台编写本机控制器和视图类。这样可以兼顾两全 - 在实际情况下具有可移植性,并为用户提供本地界面,让他们感激不尽。

1

我同意你对Java应用程序与本地应用程序的观察,尽管我相信有经验的Java程序员可能可以使其正常工作。

关键是Mac和Windows的编程API是构建其各自系统界面的最佳工具。如果您希望您的应用程序在特定系统上平稳运行,您应该使用该系统的API。

如果绝对必要实现跨平台,考虑编写程序的所有核心功能(非用户界面部分)为可编译为两个系统的库(C++是一个明显的选择),然后为每个目标系统构建漂亮的用户界面,可以调用公共库。


1

依我看,这个讨论应该根据客户的需求来回答。

大多数情况下,IT提供解决方案,解决方案的构建方式对于客户来说只是细节。

然而,使代码可重用可能会在您选择的开发环境错误的情况下非常有用。

许多其他标准可能会考虑进去。例如,如果你的软件是为医疗保健而设计的,你可能希望支持10年,那么你就必须选择一个支持超过10年的操作系统(忘记Windows和Mac)等。


1

这取决于您希望在应用程序上花费多少时间。最快的方法是使用Java,否则您可以使用C++构建模型,并使用MFC和Cocoa编写单独的GUI代码。


0

这真的取决于你的用户是谁。不要仅仅因为你可以而选择跨平台。无论使用何种工具,都需要有真正的需求。测试将会占用相当多的时间。你仍然需要在两个平台上进行彻底的测试。

我使用REALbasic从单一代码库创建各种跨平台桌面应用程序,并且它对我和我的客户都很有效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接