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. awk中printf的用法

    printf函数   打印输出时,可能需要指定字段间的空格数,从而把列排整齐.在print函数中使用制表符并不能保证得到想要的输出,因此,可以用printf函数来格式化特别的输出. printf函数返 ...

  2. Linux下使用Ansible处理批量操作

    Ansible介绍: ansible是一款为类unix系统开发的自由开源的配置和自动化工具.它用python写成,类似于saltstack和puppet,但是不同点是ansible不需要再节点中安装任 ...

  3. 使用Hugo框架搭建博客的过程 - 前期准备

    前言 这篇教程介绍了如何搭建这样效果的博客. 所需步骤 可以从这样的角度出发: 注册域名. 使用CDN加快网站访问速度. 网站内容需要部署在服务器或对象存储平台上. 重要的是放什么内容.博客需要选择框 ...

  4. varnish配置语言(2)

    目录 1. Backend servers 2. 多个后端 3. Varnish 中的后端服务器和虚拟主机 4. 调度器 5. 健康检查 6. Hashing 7. 优雅模式 Grace mode 和 ...

  5. IP地址详解

    讲之前了解一些网络设备的作用: 交换机:组建局域网 路由器:连接内外网 网关:一个网络的出口(Gate Way = GW)一般网关在路由器上 局域网(也称内网) 一个简单的局域网的基本组成设备:交换机 ...

  6. 团队开发day03

    完成安卓的登录和注册界面的设计,进行服务器端的开发,设计javabean实体 映射,零售商 ,商品,品牌商,订单类的构建 遇到问题:安卓发起网络请求,客户端回应请求,数据处理设置. 使用传统的方法 / ...

  7. 痞子衡嵌入式:嵌入式MCU中通用的三重中断控制设计

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是嵌入式MCU中通用的三重中断控制设计. 我们知道在 MCU 裸机中程序代码之所以能完成多任务并行实时处理功能,其实主要是靠中断来调度的, ...

  8. Docker编排利器DockerCompose

    Docker 编排利器 DockerCompose,编排之后可以一次性通过一条命令启动一组服务 例如一条命令启动 SpringBoot 项目,同时启动 SpringBoot 项目依赖的其他中间件(My ...

  9. mysql jdbc8.0连接mysql

  10. ui自动化,不显示UI界面运行

    from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options ...