1.4.3 开发者面临的挑战
庞大的开发者群体是软件生态繁荣的基础,操作系统的设计必须了解开发者面临的挑战,并能够在系统层面上重点帮助开发者应对挑战。
相关调研数据显示,在移动终端开发者中,63%的开发者反馈他们开发一个应用需要适配多个操作系统。虽然当前有多款支持跨平台的开发框架,如Web开发框架和Flutter开发框架等,但对于一些较复杂的应用程序,开发者仍需要针对不同的操作系统分别进行开发,这是开发者面临的最大挑战。不同的操作系统对外提供的平台API能力范围也不尽相同,通过跨平台的开发框架很难解决由操作系统本身差异导致的各种深层次问题。在当前IoT领域,操作系统种类繁多,百花齐放,给设备开发者带来便利,同时也给应用开发者带来了适配更多操作系统的繁重工作量。
排在第二位的挑战是开发者必须面对类型众多的智能设备。即使这些设备使用同一个操作系统,应用开发者也不得不针对不同类型的设备开发不同的应用,以提供更好的业务体验。譬如,不同设备屏幕大小不同、分辨率也不同,如何为这些设备设计更好的UI(User Interface,用户界面)?一种常见的做法是为不同的设备设计不同的布局和资源,开发者会将大量精力耗费在UI的设计和调整上。另外,这些设备能够提供的交互方式也千差万别,有的提供触控交互,有的提供键盘和鼠标交互,有的提供遥控器交互,开发者需要针对这些不同的交互方式开发不同的业务处理逻辑。
调研数据同时显示,大多数应用使用了多语言的混合开发模式。这需要开发者掌握多门开发语言,对大多数开发者而言,这是一项较高的要求。熟练掌握一门开发语言需要花费大量的学习成本,开发者不但要熟悉开发语言的语法知识,还要通过不断实践来掌握该语言常用的开发模式。另外,开发者还需要能够熟练使用该语言配套的工具链,对常用的第三方库也要有足够的了解。还有一点需要指出,开发语言版本的升级迭代也给开发者带来了更多的学习成本。
另外,适配不同的操作系统、适配不同的设备、使用多种语言开发,必然导致代码库的维护更加复杂。许多开发者将大量精力投入架构优化,希望通过一个架构支持不同的操作系统和不同的设备。一种常见的思路是提取更多的公共组件,这些公共组件通常进行了跨平台的设计,对于无法跨平台的组件,采用分别实现的方式。多组件不仅带来了维护成本的提高,也带来了功能的不一致性和接口兼容性等方面的技术问题。