本文由 简悦 SimpRead 转码, 原文地址 www.toutiao.com
引言纵观互联网发展历史,每隔一段时间就会有一个新兴的业务独领风骚,接着大量资本会涌入这个领域。一夜之间,那些小规模的创业公司会迎来指数级的增长。
纵观互联网发展历史,每隔一段时间就会有一个新兴的业务独领风骚,接着大量资本会涌入这个领域。一夜之间,那些小规模的创业公司会迎来指数级的增长。
风口论、赛道论往往会被用来解释这些现象。而对于身处热门公司的程序员们来说,则是一个梦寐以求的发展机会。这种感觉,估计和中彩票差不多。
不过,这种被资本追捧的 “热”,着实有些虚火。“千团大战”、“共享单车大战”、“共享打车大战” 等,只不过是借着资本的炒作,无谓地消耗资源而已。程序员们短期能获得一些回报,但热度一降,立马茶凉走人。
所以,与其盯着热门的商业概念,不如转变眼光,看向那些有真正价值的长远事业。那可能有人会提出疑问,现在能称得上好的机会,除了进大厂,还有什么呢?
还真有,如果能抓住这个机会,对程序员们来说,就是一次完美的弯道超车。让我们先从技术的趋势与现状说起。
我们知道,除了专业能力之外,看准市场和技术的发展趋势非常重要。只要走在一个上升的趋势中,自然就会水涨船高,这需要我们能够预判事物发展的方向。
那么,趋势会在哪里呢?一个判断原则就是,那些存在问题的地方,往往就蕴含着好机会。
在 PC 时代,Intel 的 X86 架构与微软的 Windows 操作系统,统治了整个江湖。在苹果推出石破天惊的 iPhone 之后,智能移动设备取代 PC 揭开了新世纪的大幕。苹果的 iOS 与谷歌的 Android 则占据了移动操作系统的最大份额。
现在硬件设备在摩尔定律的加持下,可以说是超速发展。我们身边的可计算式智能设备,每年是指数级的增长。而系统软件却存在标准不统一、厂商各自为战的状态。
时至今日,万物互联已经是各个大厂布局的重点,而底层系统软件却越来越成为一个技术上的鸿沟。观察一下我们手里的各种智能设备,只要是不同厂家的,它们之间必然是信息隔离的,这会带来诸多问题。
第一个问题是在系统层面信息无法流动。你可能买了一个 A 厂商的手机,然后喜欢 B 厂商的智能手表,但两个设备之间即使通过 APP 也只能进行有限的数据交换。这往往限制了产品的推广与发展。
第二个问题是每种设备的操作系统不同,其上运行的应用就要有不同技术栈的团队实现一次。这无形增加了应用开发的成本,这等于是多花了一倍的钱,却只是为了把相同的功能再实现一遍。即使有一些跨平台的开发技术,但也是还要在应用和系统之间再增加一层服务,付出的是性能损耗的代价。
第三个问题是对于厂家来说,即使是他们自己生产的不同设备,也无法做到应用完美的兼容,仍然有大量的调试和适配工作要做。
以上这些问题,从现在来看,并不利于行业的发展。如果有一种技术,可以解决上述三个痛点,那么它是不是会让你眼前一亮?
2020 年 9 月 10 日,华为公司发布了 HarmonyOS 2.0,它的另一个名字更为我们所熟知,就是鸿蒙操作系统。它的出现,宣告了在操作系统这一层面,迎来了全平台大一统的时刻。
华为公司将硬件种类定义为 “1+8+N”。“1” 就是居于中心位置的手机,它是用户使用最频繁,和其它设备产生连接也最多的。“8”则是指 PC、平板电脑、耳机、眼镜、手表、车载设备、音响、HD 设备等八种硬件。“N”则是除此之外的所有 IoT 设备。
说了这么多设备,其实它们全都只需要安装鸿蒙这一种操作系统。这意味着在系统底层,信息不再隔离,数据的孤岛将被打通。
鸿蒙在底层设计上使用的是微内核架构,这种架构的特点是内核代码可以相当精简,内核的主要功能就是处理进程间的通信工作。系统级的服务都运行在用户态。
这样设计的优点是操作系统可以非常方便地适配各类设备,只需要加载不同的模块,系统很容易做到可伸缩。与宏内核架构的 Linux 相比,要将 Linux 适配到全平台的设备上,内核的裁减与调整就是一件十分麻烦的事情。
对于应用开发来说,只需要编写一次代码,然后全平台可用,并且预期效果也是一致的。举例来说,就是同样一个调用方法,它只要是运行在 HarmonyOS 上,那么无论是在手机,还是手表里,其运行结果都是一致的,不需要做兼容性的工作。
应用开发者就只需要专注于一类技术栈即可。而硬件设备生产厂家,也不用再进行麻烦的底层系统适配工作,只要与鸿蒙兼容即可。
对于互联的理解,鸿蒙将其看作了操作系统的原生属性,即不互联则无 OS。所以分布式架构就与微内核架构一样,是鸿蒙的最基本特征。
接下来就对鸿蒙的分布式架构核心技术进行详细说明。
在 PC 架构体系中,数据的传输是在总线上进行的。CPU 通过总线从内存中读取数据,外部设备通过扩展插槽或者 USB 接口连接到总线上。可以看出来,总线是数据传输与交换的桥梁。
在安装了鸿蒙操作系统的各个设备之间,它们可以平滑地自动组网,从而构建为一个分布式系统。这样的系统所具有的数据传输通道,就是分布式软总线。
之所以被称为 “软总线”,它是借用了 PC 体系中硬件总线的概念,表明这是在软件之间建立的系统总线。而这一架构显然不只是用来为应用层传输数据,它还包括三项基础功能。
一是任务总线,即将应用在多个终端上快速分发。二是数据总线,这也是分布式软总线的核心功能,即在各个设备间传输数据。三是总线中枢,它负责将不同设备进行自动组网。
同时,得益于华为公司在 5G 技术上的领先优势,在自家研发的鸿蒙操作系统上,结合 5G 技术之后,分布式软总线更是获得了逼近于硬件总线的传输能力。
我们拥有了这样跨越式的技术之后,可以做什么?
想象的空间是巨大的,对于高带宽低延迟要求的 VR/AR 应用场景就会有许多需求。例如在线体感游戏,除了更好的沉浸式体验,还可实现接近真实场景的多人对战。
远程教育,通过可穿戴式设备与丰富的多媒体演示工具,接近于真实课堂的交互成为可能。这就解决了当下远程教学中,扁平化模式带来的手段单一、交流不畅等问题。
远程协同办公,只要在家中接入各种设备,就能实现可视化的协同工作。这使得组建跨地域的高效团队成为可能,借助丰富的应用工具,可以进行白板演示、视频会议、商务合作等。
说了这么多,是不是已经等不及想知道怎么在鸿蒙上开发应用呢?我们现在就说怎么动手干。
华为公司提供了一个很好用的 IDE:DevEco Studio,专门用于为鸿蒙系统开发应用。这是基于 vscode 二次开发而成的。
- 下载安装包:http://developer.harmonyos.com/cn/home
- 下载 node.js 安装包:
- 安装 node.js 与 DevEco Studio。
- 如果是在 windows 系统上,建议安装完成后重启一次系统。
- 启动 DevEco Studio 后会要求设置 node.js 的安装目录,其它选项都默认就可以。
开发工具目前只需要这两套,接下来我们以一个简单实例来讲解。
- 启动 DevEco Studio,建立新工程。我们选择智能手表设备,模板使用空白 js。
- 第一次启动会耗时较长,因为工程会自动下载 gradle 工具并进行一次自动编译。当编译完成后,通过预览工具 Previewer 查看,默认会显示 “hello, world”。
- 增加一个按钮,并添加关联事件,实现一个点击功能。
如上图所示,我们看到在 pages/index 路径下,有三个文件,分别是 index.css, index.html, index.js。这三个文件就构成了智能手表应用的启动页面。做过微信小程序开发的同学,对这种架构想必是轻车熟路的。
index.html:描述页面中的组件元素。我们在此页面中添加按钮的代码。
|
|
index.js:执行 javascript 语句,构建数据模型,以及完成功能逻辑。我们在此处添加 clickAction 方法。
|
|
index.css:定义页面元素的外观与样式。我们为按钮设置宽高。
|
|
- 运行调试
点击工具栏中小甲虫形状的按钮,出现模拟器选择界面,选择智能手表模拟器,然后确定。
编译成功后,会显示模拟器界面。可以看到,我们添加的按钮已经显示在界面上了。
点击按钮 click me,可以在 debug 窗口看到输出结果。
|
|
至此,我们看到鸿蒙的设计目标,就是面向万物互联时代而思考的。它没有既往的技术包袱,从系统底层进行了革新,解决了最关键的问题,必然是大势所趋。
学习这项未来的热门技术,如果全靠自己去查找线上文档,必然费时费力。幸好,现在已经有一本专门讲解鸿蒙应用开的好书上市了。
这就是《鸿蒙应用开发实战》,作者张荣超是华为官方首批认证的鸿蒙操作系统课程开发人员。这本书最大的特点,就是保姆式贴心示范,把一个功能并不算复杂的应用,分解成详细的 36 个过程。
换句话说,只要有点耐心,每天晚上抽出一个小时,一个月以内就能掌握鸿蒙应用开发的核心技术。说起来好像挺简单,其实也真的挺简单。
所谓弯道超车,并不需要我们在同一条道路上跑得比别人更快,而是能够发现一条不一样的道路。当这条新路上并没有什么人时,我们只要走上去就能领先于他人。
为什么不去做这件简单的、又能改变职业命运的事呢?