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应用程序时.让程序具有良好的性能是非常关键的.这也是用户所期望的. ...
随机推荐
- mongodb,redis,mysql的区别和具体应用场景(转)
一.MySQL 关系型数据库. 在不同的引擎上有不同 的存储方式. 查询语句是使用传统的sql语句,拥有较为成熟的体系,成熟度很高. 开源数据库的份额在不断增加,mysql的份额页在持续增长. 缺点就 ...
- spring中如何向一个单例bean中注入非单例bean
看到这个题目相信很多小伙伴都是懵懵的,平时我们的做法大都是下面的操作 @Component public class People{ @Autowired private Man man; } 这里如 ...
- 详解Spring中Bean的作用域与生命周期
摘要:在利用Spring进行IOC配置时,关于bean的配置和使用一直都是比较重要的一部分,同时如何合理的使用和创建bean对象,也是小伙伴们在学习和使用Spring时需要注意的部分,所以这一篇文章我 ...
- C语言:printf标志符
%d 十进制整数 %i %lf双精度浮点数 %o八进制整数 0%o或0%O %x十六进制整数 0x%x 或 0X%X %f单精度浮点数 %E %e科学计数法 %s 字符串 %c 字符(单个 ...
- python pip install matplotlib安装模块
python pip install matplotlib安装模块,可附带安装相关的模块 程序运行提示: from . import _imaging as coreImportError: DLL ...
- python twain模块
>>> help(twain) Help on module twain: NAME twain - Created on Sep 4, 2011 DESCRIPTION @auth ...
- 家庭账本开发day11
编写登录界面和个人信息查看界面 $.ajax({ url: "UserServlet?method=login",//url ...
- ZooKeeper 分布式锁 Curator 源码 03:可重入锁并发加锁
前言 在了解了加锁和锁重入之后,最需要了解的还是在分布式场景下或者多线程并发加锁是如何处理的? 并发加锁 先来看结果,在多线程对 /locks/lock_01 加锁时,是在后面又创建了新的临时节点. ...
- 五个 .NET 性能小贴士
原文:bit.ly/3wSpO4o 作者:Nikita Starichenko 翻译:精致码农 大家好!今天我想和大家分享几个 .NET 的性能小贴士与基准测试. 我的系统环境: BenchmarkD ...
- 光学动作捕捉系统中的反光标识点(Marker点)
动作捕捉系统本质上是一种定位系统,通常需要在目标物布置定位设备进行追踪.以红外光学为原理的动作捕捉系统,主要由由光学镜头.动作捕捉软件.反光标识点.POE交换机.和若干配件组成,其中反光标识点(Mar ...