Swift 和 Flutter 是考虑创建 iOS 应用程序的公司最想要的两种技术。开发者能用原生技术取胜吗?如何选择,哪种更适合您的应用?让我们一探究竟吧!

根据 Statista 的数据, 2019 年全球移动应用带来了 4620 亿美元的收入。两个最受欢迎的应用商店 Google Play 和 Apple App Store 分别提供了 29 和 200 万个应用。据Hootsuite 称,全球有 45 亿互联网用户消费了所有这些。

很遗憾不能成为这个不断增长的业务的一部分。现在,让我们来看看哪种技术可以帮助您达成更好的交易。在本文中,我们比较了谷歌和苹果两大巨头提供的解决方案。您的业​​务会产生什么结果?

什么是Swift?

Swift 是Apple 创建的一种编程语言,作为 Objective-C 的继承者。它由 Apple 自己使用,但也可供开发人员为 iOS 驱动的设备创建自己的应用程序。从 2020 年开始,您还可以使用它来开发适用于 Android 和 Windows 的应用程序。

Swift 于 2014 年推出,此后经历了大量更新和改进。最新的稳定版本 5.3.1 于 2020 年 11 月 13 日发布。

什么是Flutter?

根据Flutter 的文档,它是“一个跨平台的 UI 工具包,旨在允许跨操作系统(如 iOS 和 Android)重用代码”。这个免费的开源平台基于面向对象的编程语言 Dart。

Dart 和 Flutter 都是由 Google 开发的。Dart 于 2011 年首次发布,而 Flutter 于 2015 年才加入。

Flutter 允许一次创建两个版本的应用程序。与平台无关的 Flutter 使用一种代码在 iOS 和 Android 上工作。

虽然 Swift 本身是一种编程语言,但 Flutter 是一个结合了语言 (Dart) 和兼容小部件来构建应用程序的平台。

Flutter 与 Swift - 我们为什么要比较它们?

如果其中一个是编程语言,另一个是工具包或平台,我们为什么还要比较它们?它们都是流行的移动和Web 应用程序解决方案。您可以将它们中的任何一个用于您的 iOS 应用程序,它们都值得考虑。

多年的经验表明,您并不总是需要使用平台原生解决方案来创建成功的应用程序。特别是,如果您考虑扩大产品范围并在其他平台上提供相同的应用程序。

那么,它们中的哪一个会更好,更适合您的业务?让我们一探究竟吧!

如何比较 Flutter 和 Swift?

我们将使用 10 个因素来比较 Flutter 和 Swift。关于 UI,重要的是您的应用程序与平台的本机界面和功能的配合程度。编码速度对于上市时间和成本效率非常重要。性能告诉我们您的应用程序将如何充分利用设备的潜力。当您的开发团队遇到挑战时,社区和支持将证明它们的重要性。稳定性负责您的应用程序对用户的可靠性。全面且可访问的文档支持开发过程。平台的成熟度可能会影响性能和稳定性。开发成本对于商业论证至关重要。最后,人才库数量会影响应用程序的开发和维护及其成本。

用户界面

当然,由于 Swift 是 iOS 原生语言,因此实现任何原生 iOS 界面功能都没有问题。UX 将尽可能地是 iOS 类型的。但是,您必须从头开始创建每个功能,从头开始创建 UI 的每个部分。

使用 Flutter,您可以使用大量 UI 元素。首先命名 Material 和 Cupertino 小部件。通常,您不需要 Swift 的任何支持。从用户的角度来看,使用 Flutter 创建的 UI 应该与原生 Swift 没有区别。

编码速度

Swift 从一开始就非常适合快速创建 iOS 应用程序。总体而言,它运行良好,但反映代码中的更改需要更多时间。然而,Swift 开发人员声称它可以确保更短的构建时间,尤其是在应用程序的初始构建方面。

另一方面,Flutter 配备了大量小部件、库以及导航和测试工具,可提高编码速度。Flutter 开发人员不需要太专注于完善 UI 元素,因为 Flutter 已经为他们做好了。此外,Flutter 的 Hot Reload 缩短了查看代码最近更改所需的时间。因此,修改速度更快。此外,用 Flutter 编写的同一个应用程序通常需要比用 Swift 编写的版本更少的代码行。

性能

同样,Swift 作为 iOS 应用程序的母语具有很大的优势。对于需要大量计算能力的任务(例如图形效果),您可以依靠更好的性能。当谈到平台的榨汁时,Swift 可能是更好的选择。

然而,Flutter 并没有落后。首先,Dart 使用垃圾收集器。其次,它编译了 AOT(提前),允许与设备快速通信。除非你真的需要充分利用 iOS 平台,否则 Flutter 的性能几乎与原生 Swift 一样好。

社区和支持

主要的 Swift 社区聚集在提到的 Swift.org 周围。在 GitHub 上,有超过 830 名 Swift 贡献者,大约有 2600 名关注线程。您还可以在 Stack Overflow 上遇到超过 28.4 万个标有“swift”的问题。

Flutter 的数字看起来很相似。在 GitHub 上被 3400 人观看,有 770 名贡献者。但是,Stack Overflow 上标记为“flutter”的问题数量不到 7 万。不过,也许 Flutter 的问题较少?

Flutter 社区聚集在 Google Groups 和其他论坛(例如 Flutter 的 Slack 社区)。此外,作为一个开源解决方案,Flutter 对社区更加友好。

稳定性

尽管这两种技术都相对年轻,但它们不会引起很多稳定性问题。它们由每天使用它们的专业人员开发和维护。理论上,作为原生技术,Swift 在 iOS 上应该比 Flutter 更稳定可靠。但是,只有当您找到并聘请能够充分利用 Apple 解决方案的一流 Swift 开发人员时,情况才会如此。

文档

Swift 和 Flutter 都有完整的在线文档。对于 Swift,您应该查看Apple Developer 文档Swift.org。对于 Flutter,请查看Flutter.dev并在一个地方享受全面且编写良好的文档。

平台成熟度

这些平台很年轻,是的,但这并不意味着它们不成熟。在发布 Swift 之前,Apple 借鉴了 Objective-C 的多年经验,并从那时起引入了许多改进。

在推出 Flutter 之前,谷歌也积累了他们几年的经验。

开发成本

两者都是开源的,所以你不需要在这里花额外的钱。有经验的开发人员也收取类似的费用。如果只考虑 iOS 应用,成本差异不会那么大。但是,Flutter 允许您同时创建一个 Android 版本。这将改变游戏规则。

开发人员人才库

想成为开发人员的人不知道是学习 Flutter 还是 Swift,公司应该注意这些选择。了解和使用某些技术的人越多,就越容易为您的项目寻找人才。

至于 2020 年,寻找 Swift 开发人员将比 Flutter 专家更容易。根据Stack Overflow 2020 调查, Swift 在 6.1% 的专业开发人员中受欢迎,而 Flutter 背后的语言 Dart 仅达到 3.7%。

但是,请考虑这样一个事实,即 Flutter 允许您同时开发 iOS 和 Android 应用程序。

使用 Flutter 和 Swift 的应用示例

如果以上比较无法帮助您做出决定,那么让我们看看企业如何使用这两种解决方案。显然,它们被大小公司都使用。

使用 Swift 的应用程序:

  • Firefox for iOS - 出于安全原因,Mozilla 的 Web 浏览器使用本地 iOS 语言。
  • Asana - 它是作为 SaaS(软件即服务)交付的项目管理 Web 和移动应用程序。
  • Lyft是一家全球性公司,提供用于租车的移动应用程序、自行车共享系统和送餐服务。

使用 Flutter 创建的应用程序:

  • Realtor.com - 有人说它是美国最大的采用创新营销解决方案的房地产网站。
  • Google Ads - 当然,Google 也使用其产品。Ads 是一个提供多种服务的在线广告平台。
  • 飞利浦 Hue - 这款移动应用程序可让您根据您当前的心情或突发奇想,将家中的智能灯调整为您的媒体。

总结

所以?Flutter还是Swift?无论我们提供多少数据,对于这一选择都没有万能的答案。最后决定为您的 iOS 应用程序选择哪一种取决于每个业务的个人技术能力。

如果您的公司在比较两者中的任何一个方面都有一些经验,那么选择会更容易。

iOS公众号推荐:iOS小客栈 (摸鱼学习的小客栈)

文末推荐:iOS热门文集

Flutter 与 Swift - 在创建 iOS 应用程序时应该押注什么技术?的更多相关文章

  1. swift 第一个IOS应用程序

    swift 出来也有一阵子了,一直没有时间来研究.简单的看了看.随手写几篇文章.特此声明:本博客纯属个人学习,有不足之处,属于正常,希望多多见谅. 第一个IOS应用程序开发 一.准备工作: (1)Ma ...

  2. 开发iOS应用程序需要的工具和编程技术

    似乎每个iOS应用开发学习者都是从这篇文章开始写博客的,我也不例外,也从这里写吧,内容雷同,但绝对是原创.因为一直相信,通过自己的理解写出来,是掌握技术一个很好的途径. Xcode苹果最为优秀的集成开 ...

  3. 2021 年 iOS 应用程序开发七种最佳语言

    移动应用程序现在几乎是每个在线业务的必备品.最新的 StatCounter 数据显示,多达56% 的在线连接是通过移动设备建立的,这使它们高于平板电脑和计算机.更重要的是,同一个消息来源说,其中27% ...

  4. 25个增强iOS应用程序性能的提示和技巧(高级篇)(1)

    25个增强iOS应用程序性能的提示和技巧(高级篇)(1) 2013-04-16 14:56 破船之家 beyondvincent 字号:T | T 在开发iOS应用程序时,让程序具有良好的性能是非常关 ...

  5. 25个增强iOS应用程序性能的提示和技巧(初级篇)

    25个增强iOS应用程序性能的提示和技巧(初级篇) 标签: ios内存管理性能优化 2013-12-13 10:53 916人阅读 评论(0) 收藏 举报  分类: IPhone开发高级系列(34)  ...

  6. 增强iOS应用程序性能的提示和技巧(25个)

    转自 http://www.cocoachina.com/newbie/basic/2013/0522/6259.html 在开发iOS应用程序时,让程序具有良好的性能是非常关键的.这也是用户所期望的 ...

  7. (转)25个增强iOS应用程序性能的提示和技巧--初级篇

    在开发iOS应用程序时,让程序具有良好的性能是非常关键的.这也是用户所期望的,如果你的程序运行迟钝或缓慢,会招致用户的差评.然而由于iOS设备的局限性,有时候要想获得良好的性能,是很困难的.在开发过程 ...

  8. 25个增强iOS应用程序性能的提示和技巧(0基础篇)

    在开发iOS应用程序时,让程序具有良好的性能是非常关键的. 这也是用户所期望的,假设你的程序执行迟钝或缓慢,会招致用户的差评.然而因为iOS设备的局限性,有时候要想获得良好的性能,是非常困难的. 在开 ...

  9. 25个增强iOS应用程序性能的提示和技巧 — 中级篇

    本文由破船译自:raywenderlich 转载请注明出处:BeyondVincent的博客 _____________ 在开发iOS应用程序时.让程序具有良好的性能是非常关键的.这也是用户所期望的. ...

随机推荐

  1. 如何使用Jdk查看源码?

    先看再点赞,给自己一点思考的时间,如果对自己有帮助,微信搜索[程序职场]关注这个执着的职场程序员.我有什么:职场规划指导,技能提升方法,讲不完的职场故事,个人成长经验. 最近,有很多读者问我,有没有j ...

  2. python03篇 字符串常用方法和文件操作(一)

    一.字符串常用方法 s1 = ' abcsfsfaadfdd ' s = s1.strip() print(s) print(len(s.strip())) print(s.count('a')) # ...

  3. Java基础00-基础语法3

    1. 注释 1.1 注释概述 1.2 注释分类 1.3 示例 2. 关键字 2.1 关键字概述 2.2 关键字的特点 3. 常量 3.1 常量的概述 3.2 常量分类 以上常量除了空常量都是可以直接输 ...

  4. 龙芯 loongnix20 rc2 初体验

    2021-07-24 v0.0.1 版权声明:原创文章,未经博主允许不得转载 3A5000 昨天发布啦,历史上的昨天是中共一大的第一天. 3A5000 的团购还没开始(大概还是3999左右整机的样子) ...

  5. PAT甲级:1152 Google Recruitment (20分)

    PAT甲级:1152 Google Recruitment (20分) 题干 In July 2004, Google posted on a giant billboard along Highwa ...

  6. win 10,Maven 配置

    来源:https://www.cnblogs.com/lihan829/p/11503497.html 所需工具 : JDK 1.8 Maven 3.6.2 Windows 10 注Maven 3.2 ...

  7. Deepin 20.1打造软件开发环境

    支持国产操作系统,替代Windows势在必行,不能让美国卡"脖子"是广大计算机爱好者的共同心愿,下面列举一下Deepin V20.1下如何安装常用软件 ============== ...

  8. 在js中对属性的操作

    一:访问属性 两种方法: ①:对象名.属性名 function  test(sno,age,sex){      this.sno=sno,      this.age=age, this.sex=s ...

  9. springboot整合mybatis源码分析

    springboot整合mybatis源码分析 本文主要讲述mybatis在springboot中是如何被加载执行的,由于涉及的内容会比较多,所以这次只会对调用关系及关键代码点进行讲解,为了避免文章太 ...

  10. 微信小程序 -- 英语词典 (小程序插件)

    英语词典小程序 基于英语词典小程序插件 - 提供开源地址 项目地址 英语词典小程序插件: 微信小程序 词典 真题基础服务插件(gitee.com) 功能特色 [x] 全面详实的经典词库,详细释义覆盖约 ...