开发应用程序本地运行或跨平台?

时间:2008-11-24 22:52:51

标签: java macos cross-platform

您对是否应该为特定平台编写应用程序或使用跨平台方法以及覆盖更多潜在客户有何看法?

这将是一个基于GUI的应用程序,我正在考虑使用Java。

我在Java上使用的大多数应用程序都没有像各自平台上的本机应用程序一样流畅。

我想到的两个平台是windows和mac。

如果我正在创建仅供我自己使用的应用程序,而且我必须选择一个系统,我会选择专注于mac。

我想听听你的想法。

15 个答案:

答案 0 :(得分:6)

我会使用Qt,是的,绝对是跨平台的目标...

主要原因实际上并不是你认为的那样(本身就是跨平台),但实际上,通过针对多个平台,你的代码通过一些奇怪的神奇原因往往最终会有更好的代码质量。我在自己的项目中看到过这种情况无数次。每次添加新平台时,代码质量都会提高,代码也会变得更加干净......

此外,每个认真的应用程序应该尽可能少的“依赖”,跨平台意味着你有更少的依赖...;)

然后作为“奖励”,您可以在多个平台上运行您的应用......

答案 1 :(得分:4)

要求,要求,要求。

严肃地说,“它取决于”是正确的答案。

真正的跨平台是艰苦的工作;在您/您的用户熟悉的地方工作是值得的。以有效的方式解决问题确实是最优先考虑的问题。

答案 2 :(得分:4)

一般而言,跨平台开发作为一种艺术形式有点过高。 Java是这里的领先技术,但即使在这种情况下,大多数Java程序员也不会真正跨平台。有一些很棒的工具,比如Vuze和LimeWire以及JRipper,几乎可以在任何地方使用,但从统计学角度来看,这些都是例外。大多数Java应用程序,尤其是公司类型的应用程序,都是在考虑一个平台的情况下编写的,而且它们从未真正移动过。

如果您想使用Mac和Windows,请考虑花时间在Limewire和Vuze代码库中。这两个应用程序在这两个平台上都运行得非常好。

你肯定需要两个版本。一个构建可能不会。

答案 3 :(得分:3)

我建议首先为您感觉舒适的平台开发它,以及在哪里可以使用所有平台噱头;在这种情况下,这将是OS X。

稍后,如果您的应用成功使用Mac,请查看移植选项。在确定应用程序首先会对应用程序产生重大兴趣之前,IMO不值得投入到移植中。

答案 4 :(得分:2)

在这个时代,是否真的有理由编写本机代码?

是。可用的语言和库不能很好地完成优秀的编程。他们最多允许一个人编写跨平台正常工作的代码,但从不擅长。

选择一个并专注于它。专注于那些观众(无论如何,你会发现观众的口味和欲望各不相同)。

一旦你有了应用程序,人们就会在另一边吵着要求,就在有人成为竞争对手之前,评估将精心调整和精心设计的产品移植到其上的成本/收益。

如果你试图“为两个主人服务”,你将根据两个平台最简单的方式做出设计决策,这不是一个好的设计过程。

- 亚当

答案 5 :(得分:1)

如果您的应用程序使用MVC设计,您可以使用C ++编写可移植模型类,并为要支持的每个平台编写本机控制器和视图类。这为您提供了两全其美的优势 - 可行的实用性,以及用户会感谢您的原生界面。

答案 6 :(得分:1)

我同意您对Java应用程序与本机应用程序的观察,但我确信经验丰富的Java程序员可能会使其工作。

最重要的是,Mac和Windows的编程API是用于在各自系统上构建接口的最佳工具。如果您希望应用程序在特定系统上顺利运行,则应使用该系统的API。

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

答案 7 :(得分:1)

恕我直言,这个讨论应该由客户的需求来回答。

大多数时候,IT提供解决方案,构建解决方案的方式只是客户的一个细节。

但是,如果您首选的开发环境错误,那么使代码可重用可能很有用。

许多其他标准可能会进入思考。 例如,如果您的软件用于医疗保健,您可能需要支持10年,那么您必须选择支持超过10年的操作系统(忘记Windows和Mac)。等

答案 8 :(得分:1)

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

答案 9 :(得分:0)

为什么不考虑Web应用程序。

您可以构建在浏览器中运行的丰富UI网站,该网站遍布各处和所有平台, 如果您熟悉Java,可以尝试使用GWT进行“Weblication” 查看demo page of GWT

答案 10 :(得分:0)

将其设为网络应用? 不管Java我猜。这取决于很多事情,你的应用类型,目标等。

答案 11 :(得分:0)

我使用SWT对跨平台Java运气不错。这将为您提供任何操作系统上的原生外观,并且没有很多问题需要任何JNI代码。运气好的话,你应该能够将完全相同的代码库分发给两个目标,它应该可以正常工作。

话虽如此,您应该评估您是否真的需要跨平台功能。至少,它需要您在每个操作系统上测试应用程序的GUI层(测试布局,演示文稿等)。使用大型应用程序,这很快就会变得很麻烦。

在任何一种情况下,从一开始就选择跨平台语言将为您提供未来的灵活性。如果您从一开始就编写本机代码,将代码移植到另一个平台将是非常重要的。它可能伴随着几个错误,并且还需要将所有测试代码的端口连接到新平台。您将遇到任何新功能,错误修复等同步问题。使用Java,您可以编写将在两个操作系统中运行的JUnit测试,并且任何错误或新功能都将自动传播到这两个版本。

这确实取决于您的具体应用。如果您预计两个操作系统都有用户,那么这应该决定您的语言选择。

答案 12 :(得分:0)

可以在Windows,Linux和Java上运行一个漂亮的Java应用程序 - 例如SBCommander - 并注意即使你不这样做也可以运行它并查看UI拥有它应该控制的硬件。

另一方面,我发现很难做的一件事就是编写一个跨平台的应用程序,其外观和行为就像每个平台上的本机应用程序;关于应用程序应该如何表现,有太多不同的假设。

答案 13 :(得分:0)

这实际上取决于您的用户是谁。不要因为可以而跨平台。无论使用哪种工具,都需要真正的需求。测试会耗费相当多的时间。您仍需要在两个平台上进行彻底测试。

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

答案 14 :(得分:0)

我经常发现PC开发者试图利用Mac市场(有些人成功)。反过来,他们在上面描述的“跨平台”架构(Java,或者某些Qt框架等)中开发应用程序。结果通常是一个看起来很糟糕的应用程序,操作系统集成支持很差,社区的反弹开始于评论。

我的建议,移植它。做好工作,了解您的市场,然后再将您的跨平台产品倾销到地毯炸弹营销方式中。