移动和 Web 之间的 4 大差异 - 第 2 部分

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...点击查看项目介绍 ;
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;

截止目前, 星球 内专栏累计输出 63w+ 字,讲解图 2808+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2200+ 小伙伴加入学习 ,欢迎点击围观

在我们 之前的文章 中,我们介绍了移动网络之间的四个差异(设备碎片化、资源可用性、商业模式和用户体验)。在这篇文章中,我们将介绍平台碎片化的概念。

设备碎片

即使在浏览器世界中,跨多个浏览器支持同一个应用程序也是一种冒险。 Chrome、Firefox、Internet Explorer 和 Safari 的配置都略有不同。但是,至少,运行 Windows 的 PC 和运行 Mac OS 的 Mac 存在一些“同质化”的安装基础,可能使用英特尔芯片组,以及 HTML5、CSS 和 JavaScript 作为浏览器的共同基础。

因此,网络应用程序几乎可以在任何芯片组/设备/操作系统/浏览器组合上运行而不会出现任何问题。

将其与移动设备进行比较——手机和平板电脑具有各种不同的形状和尺寸、屏幕分辨率、芯片组和操作系统版本。即使在可以说是最同质的生态系统(相对而言)的 iOS 中,也有 许多不同类型和世代的设备 (iPod touch、iPhone、iPad、Apple Watch,现在还有 Apple TV),运行 谁知道什么版本iOS 在 Apple 的 Axe 系列芯片组 之一上。然后, Android 的设备碎片化长期以来一直是众所周知的事实 :多个 OEM、多个 SemiCos、多个操作系统版本等等……简而言之,对于移动设备,生态系统内部和生态系统之间都存在碎片化。

碎片化很重要,会影响开发决策。在本系列 第 1 部分 的定义中,我们说过需要为特定平台编写移动应用程序,最重要的平台是 iOS、Android 和 Windows(我们称它们为“三个平台”)。支持多个平台会带来三个挑战:

  • 不同的代码库 :如果目标是覆盖广泛的受众,开发人员需要维护三个不同的代码库以在所有三个平台上本地运行。
  • 不兼容的代码库 :适用于操作系统特定版本“x”的代码不一定适用于版本“(x+1)”。例如,Apple 弃用了 iOS 9 中的一些类(例如 UIWebView、 NSURLConnection ), 要求开发人员更改代码 以使他们的应用程序在 iOS 9 上运行。
  • 臃肿的代码库 :将代码库升级到“(x=1)”版本时,应用程序仍然需要在“x”版本上运行。因此,为了解决平台的所有市场相关设备/操作系统组合问题,应用程序二进制文件开始变得越来越大,占用设备空间,还需要更长的无线下载时间,这可能会影响用户的数据计划.事实上,Apple 在 2015 年 2 月将通过 iTunes Connect 提交的应用程序包的大小限制从 2 GB 提高到 4 GB 。随后,Apple 还在 iOS 9 中引入了“ App Thinning ”的概念,允许开发人员“ 通过根据用户特定设备的功能定制应用交付,以最小的占用空间来优化 iOS 和 watchOS 应用的安装 ”。

总而言之,移动设备与 Web 不同,因为它需要针对每个受支持的本机平台开发和持续管理一个代码库。任何应用程序要具有相关性并覆盖更广泛的受众,它至少需要支持 iOS 和 Android, 据 IDC 称, 2015 年第二季度这两个应用程序的市场份额合计占智能手机出货量的 90% 以上。

支持网络应用程序的反驳论点是只需要一个代码库,它可以跨所有平台扩展。那么为什么不简单地使用网络应用程序呢?这就是下一个不同之处,我们将在 V 的第 III 部分中介绍:资源可用性,其中涵盖了移动设备的独特特征,以及它们如何影响应用程序开发。

相关文章