IoT 时代,JS 语言为何备受关注?它在 HarmonyOS 中有何应用?

2024-07-14
来源:网络整理

在万物互联(IoT)时代,JS(JS)语言变得越来越重要,受到了众多开发者的关注。很多开发者选择JS作为应用开发的语言。肯定有很多好奇的开发者想知道:JS语言有什么优势?JS用在哪些领域?下面就为各位好奇的开发者一一揭秘。

1. 物联网时代的应用开发挑战

随着科技的进步,各类消费电子产品开始普及到人们的生活中,给人们的生活带来了前所未有的便捷与快捷。与此同时,一个万物互联的时代也即将来临。物联网时代,消费电子产品将通过有线/无线网络连接起来,共享、协同软硬件资源,为人们的生活提供丰富多彩的服务。作为服务的载体,软件开发者在开发适合物联网时代的应用时,需要面对以下严峻挑战:

挑战一:如何实现一次开发、多端部署?

物联网时代,终端电子设备千差万别(从KB级内存的耳机到GB级内存的手机)、形态各异(有屏、无屏)、尺寸大小各异(从耳机到汽车)、交互方式各异(触屏控制、语音控制等),为每个设备开发一个应用是不可接受的,如何实现一次开发、多端部署是首先需要面对的挑战。

挑战二:如何利用行业现有生态资源,避免大规模重复造轮子?

由于软件的模块化,应用开发可以通过模块复用大大降低开发的复杂度,缩短开发周期。在物联网时代,这样的需求更加强烈,因为开发者要面对更多的终端设备,需要利用好行业现有的开发生态资源,避免大规模的重复造血。

挑战三:如何提高应用开发效率并支持快速升级?

物联网时代需要多个终端运行,会使软件开发更加复杂,带来更大的开发和维护成本。特别是物联网时代要求软件迭代升级速度更快,而庞大的软件安装包会增加应用快速迭代升级的难度。如何降低软件复杂度(如代码大小)并提高开发升级效率是一个非常具有挑战性的问题。

物联网时代的挑战需要从操作系统到编程语言的整套解决方案,例如需要统一的操作系统来管理和协调终端设备,提升全场景的用户体验。本文主要从编程语言的角度来探讨如何应对这些挑战。

2.JS语言的优点

针对物联网时代的应用开发挑战,我们研究了业界常见的移动编程语言(如Java、JS、Dart、C++等),发现JS在以下方面能更好地应对这些挑战:

1.多终端分发及运营

JS执行引擎在业界有很多高性能的实现和应用框架解决方案,例如:

可以看出JS语言非常适合开发各种形态的终端设备的应用,并且具有优秀的跨平台、跨设备、全栈特性。

2. 生态系统与开放性

JS拥有非常强大的生态社区,在业界享有非常高的声誉。

而且JS社区拥有大量成熟、高性能的第三方代码和模块,可以很方便的用来构建JS应用和服务,这可以大大降低JS应用开发的复杂度和技术门槛,尤其是目前蓬勃发展的小程序生态(如微信小程序、淘宝小程序、支付宝小程序、字节跳动小程序、快应用等)也都选择了JS作为应用开发语言。

另外,JS 标准是由 TC39 标准委员会制定的,不属于任何公司,是业界的开放标准。业界有各种高性能的 JS 语言开源实现,整个 JS 社区也积极吸收最新的特性提案,比如各种 OOP(面向对象编程)语言特性,快速迭代 JS 语言规范。

3. 开发效率与性能

相较于静态类型开发语言,JS 兼具动态类型和脚本语言的特点,在开发类似功能的应用时,JS 代码一般行数较少。经过版本迭代,JS 原生支持了大型应用开发所需的 OOP 编程范式和完善的异步编程模型,使得 JS 在开发大型复杂 OOP 应用时效率更高。此外,随着各类 JS 方言的出现(如),通过加入静态类型注解,IDE 自动导航和代码搜索及补全功能得到了极大的提升,有效提升了 JS 开发大型项目的便捷性和可维护性。

性能方面,随着即时编译器(JITC)的引入,JS 的性能也有了质的提升,尤其是当 JS 程序的动态类型在执行过程中趋于稳定时,JITC 可以生成非常高效的机器码,从而提高大型 JS 应用的性能。不过对于移动端应用来说,JITC 也会带来一定的响应性能开销,因此未来 JS 也需要类似即时编译器(AOTC)这样的静态编译解决方案。

3. JS 在

分布式操作系统定位为万物互联时代的操作系统,覆盖平板、电视、手表、手机、可穿戴设备、智能汽车、智能家居等终端,在操作系统层面将这些多终端硬件整合起来,形成超级终端。如图1所示,生活中用到的各种电子设备,比如音响、电视、笔记本、冰箱、打字机等,通过分布式操作系统互联互通、协同工作,为家庭生活提供全场景的服务体验。

软硬件系统开发_软硬件开发工程师是干什么的_小程序属于软硬件开发吗

图1 全场景业务体验

由于JS语言的以上优点以及其分布式的特点,JS被选为其分布式应用开发的语言。下面我们从开发语言的角度来看一下JS在分布式操作系统中的三种典型应用。

1. 轻量级UI框架中的应用

在物联网时代,各种设备的能力差别很大,从KB级别到GB级别内存的设备,因此UI框架需要能够覆盖各种终端设备。

为了实现这一设计目标,轻量级UI框架采用了如图2所示的设计,以JS作为其应用开发的语言,提供了主流的类Web开发范式和数据模型(MVVM,即-View-),即用户通过编写JS、CSS、HTML标签以及数据绑定来开发UI代码和业务逻辑。轻量级UI框架使用轻量级的JS引擎来运行JS框架层业务逻辑,使用C++编写渲染框架核心,搭配轻量级的图形引擎,实现极度轻量内存的设计目标。

另外由于JS引擎可以有效适配各种内存大小的设备,并结合覆盖多终端的设计,因此可以通过一套UI代码实现多终端的部署和分发。

图2 轻量级UI框架

2. 超级终端中的应用

面对多样化的终端硬件,提出了万物互联时代的创新尝试——“超级终端”。超级终端采用分布式软总线技术,将不同的设备连接起来,形成超级终端的形态。这些连接起来的终端设备被调度不同的分布式任务,协同工作,为用户提供全场景的服务体验。

图3 多个终端组成超级“虚拟终端”

如图3所示,超级终端中各个硬件设备通过分布式软总线技术高效互联、协同工作,因此这些设备可以看作是独立的状态机,通过交换状态和数据进行任务协作来提供服务。这样的分布式工作模式可以很自然地运用到JS的异步编程能力中。各个终端设备之间的状态数据交换与协作可以很自然地建模为JS的异步事件模型。利用JS语言本身内置的异步事件处理能力(如and等)可以描述多个状态机之间的异步事件发送与响应。同时,JS在语言层面直接支持异步事件模型,不需要引入各种庞大的异步编程库,从而大大降低了编写JS异步逻辑代码的复杂度,简化了超级终端应用整体的异步架构逻辑。

3. 在原子服务中的应用

为了提供物联网时代的应用服务,提出了一种轻量级的应用程序——原子服务。原子服务具有可分割、可组合、可调用的特点,其基本组成单位是。一个原子服务可以包含一个或多个。根据是否有用户交互界面,又分为FA()和PA(),如下图所示:

图4 原子服务

通过这种方式,可以更好的实现应用服务的跨设备迁移和多设备协同。JS 在以下几个方面为实现设计目标提供了支持:

4. JS技术探索

虽然 JS 作为万物互联时代的应用开发语言有着诸多优势,但相较于静态类型编程语言(如 C++、Rust),其仍有进一步提升的空间。例如,业界知名的 JS 引擎 V8 通过引入内联缓存()技术和动态编译 JITC 技术,大幅提升了 JS 的执行性能,在一些典型的基准测试中甚至能与静态类型语言(如 Java)相媲美。深入分析后我们发现,影响 JS 运行性能的因素主要有以下三个:

为了解决这三个问题,我们在应用执行运行时(Ark运行时)进行了以下几方面的技术研发:

五、未来展望

在万物互联的时代,应用的形态将会发生新的变化,分布式应用、原子服务等新形态或将成为主流。面对终端硬件的巨大差异和多样性,如何降低开发者的开发门槛,更好地利用行业现有的代码和资源,帮助开发者快速开发面向消费者的创新型全场景应用,需要编程语言和操作系统的不断演进,而 JS 开发语言将在这个过程中扮演越来越重要的角色。

期待更多的JS开发者来到我们身边,加入我们,共同迎接万物互联的新时代!

结尾

分享