Flutter 与 Swift - 在创建 iOS 应用程序时应该押注什么技术?
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 应用程序时应该押注什么技术?的更多相关文章
- swift 第一个IOS应用程序
swift 出来也有一阵子了,一直没有时间来研究.简单的看了看.随手写几篇文章.特此声明:本博客纯属个人学习,有不足之处,属于正常,希望多多见谅. 第一个IOS应用程序开发 一.准备工作: (1)Ma ...
- 开发iOS应用程序需要的工具和编程技术
似乎每个iOS应用开发学习者都是从这篇文章开始写博客的,我也不例外,也从这里写吧,内容雷同,但绝对是原创.因为一直相信,通过自己的理解写出来,是掌握技术一个很好的途径. Xcode苹果最为优秀的集成开 ...
- 2021 年 iOS 应用程序开发七种最佳语言
移动应用程序现在几乎是每个在线业务的必备品.最新的 StatCounter 数据显示,多达56% 的在线连接是通过移动设备建立的,这使它们高于平板电脑和计算机.更重要的是,同一个消息来源说,其中27% ...
- 25个增强iOS应用程序性能的提示和技巧(高级篇)(1)
25个增强iOS应用程序性能的提示和技巧(高级篇)(1) 2013-04-16 14:56 破船之家 beyondvincent 字号:T | T 在开发iOS应用程序时,让程序具有良好的性能是非常关 ...
- 25个增强iOS应用程序性能的提示和技巧(初级篇)
25个增强iOS应用程序性能的提示和技巧(初级篇) 标签: ios内存管理性能优化 2013-12-13 10:53 916人阅读 评论(0) 收藏 举报 分类: IPhone开发高级系列(34) ...
- 增强iOS应用程序性能的提示和技巧(25个)
转自 http://www.cocoachina.com/newbie/basic/2013/0522/6259.html 在开发iOS应用程序时,让程序具有良好的性能是非常关键的.这也是用户所期望的 ...
- (转)25个增强iOS应用程序性能的提示和技巧--初级篇
在开发iOS应用程序时,让程序具有良好的性能是非常关键的.这也是用户所期望的,如果你的程序运行迟钝或缓慢,会招致用户的差评.然而由于iOS设备的局限性,有时候要想获得良好的性能,是很困难的.在开发过程 ...
- 25个增强iOS应用程序性能的提示和技巧(0基础篇)
在开发iOS应用程序时,让程序具有良好的性能是非常关键的. 这也是用户所期望的,假设你的程序执行迟钝或缓慢,会招致用户的差评.然而因为iOS设备的局限性,有时候要想获得良好的性能,是非常困难的. 在开 ...
- 25个增强iOS应用程序性能的提示和技巧 — 中级篇
本文由破船译自:raywenderlich 转载请注明出处:BeyondVincent的博客 _____________ 在开发iOS应用程序时.让程序具有良好的性能是非常关键的.这也是用户所期望的. ...
随机推荐
- MyEclipse中,编写properties文件,输入中文显示乱码
我在properties文件中输出中文,结果显示的是乱码,额......好吧,其实不是乱码,哪有这么规范的乱码 其实是在输入中文时发生了转码,就是下面这个样子: 字符集不支持中文,修改方法: 选中你工 ...
- 《TCP/IP详解 卷1:协议》第4章 ARP:地址解析协议
4.1 引言 本章我们要讨论的问题是只对TCP/IP协议簇有意义的IP地址.数据链路如以太网或令牌环网都有自己的寻址机制(常常为48 bit地址),这是使用数据链路的任何网络层都必须遵从的.一个网络如 ...
- 链表逆序---python
class ListNode: Value = '' # 节点要储存的值,因为Python是弱类型,因此无需传入泛型 Next = None # 下一个节点,初始化时为空值 def __init__( ...
- MySQL | Xtrabackup 安装
rpm方式安装 # xtrabackup 2.4.8 安装包 wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup- ...
- Django基础06篇 分页
1.导入Django自带的分页类 from django.core.paginator import Paginator 2.分页类的使用 def index(request): # return H ...
- 传统.NET 4.x应用容器化体验(2)
上一篇我们基于Windwos Server 2019 with Container初步跑了一个ASP.NET WebForm应用程序.本篇我们来自己编译部署一个ASP.NET MVC应用程序到Wind ...
- 打造一个window桌面应用:在线聊天对话机器人
大家好,我是辰哥~~~ 本文目标:打造一个window桌面应用:在线聊天对话机器人. 今天辰哥教大家做一个在线聊天对话机器人桌面应用,已经打包成exe可执行文件,读者可以直接拿来使用, 先上演示图 聊 ...
- ES6 模块export import
在 ES6 前, 实现模块化使用的是 RequireJS 或者 seaJS(分别是基于 AMD 规范的模块化库, 和基于 CMD 规范的模块化库).ES6 引入了模块化,其设计思想是在编译时就能确定模 ...
- 网络损伤仪WANsim的队列深度功能
什么是队列深度 在网络损伤仪WANsim中,队列是指一个用于缓存报文的缓冲池.深度是指缓冲池可以存储的最大数据量.当WANsim接受的报文超出了带宽限制的量时,溢出的报文会进入队列中. 我们可以在WA ...
- CF1032G Chattering
CF1032G Chattering 题意 思路 对于每一个位置,它转移的范围是确定的. 对于一段可以走到的区间,我们可以求出区间中所有点再能走到区间范围. 于是这个就可以倍增进行转移. 如何快速求出 ...