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应用程序时.让程序具有良好的性能是非常关键的.这也是用户所期望的. ...
随机推荐
- 测试基础(三) Jmeter安装
前言 JMeter是Apache组织开发的基于Java的压力测试工具,用于对软件做压力测试. 进入Jmeter官网:https://jmeter.apache.org/,进行Jmeter压缩包的下载. ...
- 利用 PGO 提升 .NET 程序性能
引子 .NET 6 开始初步引入 PGO.PGO 即 Profile Guided Optimization,通过收集运行时信息来指导 JIT 如何优化代码,相比以前没有 PGO 时可以做更多以前难以 ...
- Dijkstra和堆优化
Dijkstra算法 由于我之前一直记的迪杰斯特拉的翻译导致我把dijkstra写成了dijstra--所以下文#define dijstra dijkstra 我以后叫她迪杰克斯歘! Dijskra ...
- [考试总结]noip模拟19
连挂3场 \(\color{green}{\huge{\text{菜}}}\) 真 . 挂分王 ... 没什么好说的了,菜就是了. \(T1\) 一波手推想到了性质 \(1\),然后因为数组原因挂成比 ...
- kali操作系统安装google浏览器
安装的kali操作系统版本是kali-linux-2020.2-installer-amd64.iso 参考链接:https://www.cnblogs.com/Young-wind/p/585502 ...
- 多项式求值问题(horner规则)——Python实现
# 多项式求值(Horner规则) # 输入:A[a0,a1,a2...an],x的值 # 输出:给定的x下多项式的值p # Horner迭代形式实现 1 # 在此修改初值 2 A = [2, 6 ...
- SQL_之 递归_START WITH id ='102' CONNECT BY PRIOR pid=id
oracle 递归用法 SELECT * FROM menu START WITH id ='102' CONNECT BY PRIOR pid=id 一种应用 SELECT * FROM menu ...
- 题解 P6892 [ICPC2014 WF]Baggage
解题思路 非常好的一道构造题. 在手动模拟几个样例(也许不止几个)之后呢. 就可以发现其实这些操作的开始以及最后几步是有相通之处的. 关于手动模拟的样例放在了文章末尾,需要的自取. 先考虑操作次数. ...
- Redis.conf分析
Redis.conf 单位 配置文件对大小写不敏感 # 1k => 1000 bytes # 1kb => 1024 bytes # 1m => 1000000 bytes # 1m ...
- QT: 如何移动和缩放一个无边框窗口
一个QT窗口如下可以做到无边框: Window { id: window //Designer 竟然不支持..., 设计模式时要注意 flags: Qt.FramelessWindowHint wid ...