杭州HDD观后感·大为震撼
作者:张旭乾(ID:九弓子)
2022年的HDD在杭州,我有幸成为受邀开发者之一。
这次HDD的主要宣传内容之一,就是关于HarmonyOS 3.0发布后开发者可以直接用最新版的DevEco Studio开发api8版本的eTS声明式开发范式。
这对于接触过HarmonyOS开发的开发者来说,可以说是非常重要了。
但其实呢,这半年关于api7 8 9 在上一个版本的IDE我基本都大致了解过了。已经大概清楚能有什么更新和重点。
吸引我的活动议程还有在开场ArkUI之后的HMS Core的3D图形技术,和Serverless云服务。
HarmonyOS 3.0带来了Api8
从接触HarmonyOS开始到现在细说也快两年了,我一开始关注就是因为在这里可以用JavaScript语言写手机app。
从那个只为应付简单场景的api5,到js+java混合开发的api6,勉强可以维持常用应用场景。 一直等着文档中描述的api7版本更新,没想到HarmonyOS 3.0的版本更新直接对照openharmony的api8更新上线。
不能说是正中下怀吧,可以说是喜出望外了属于是。
虽然这个架构图已经在openharmony3.1的发布会上见过了。 但这一次是HarmonyOS同步这样的能力,对于整个“鸿蒙”北向应用开发可以说是意义重大。
1.优雅简洁的eTS
首先新版本ArkUI使用的声明式开发范式eTS解决掉了传统前端三件套开发面临的一个窘境。
代码臃肿,样式频繁复用导致css规划繁琐,多层UI组件套嵌后事件混乱难以维护。
eTS的声明式开发范式是将一个常用界面组件需要的属性和方法,统统封装成了原生平台自带的链式回调函数。
一开始可能不太习惯,但是一旦接受了这种单语言(ts)书写界面的设定。 就会沉迷其中不能自拔,以后就是天王老子来了我也不乐意多写一行标记语言和css。
当UI的书写变得函数过程化,将更便于与数据和事件动作一起打包封装。这样的设计让前端对于未来ArkUI下的UI框架设计,多了更多的想象力。
2.问题不在于性能,因为性能已经被解决掉了
用js、ts书写前端面对最大的质疑就是性能问题。 然而其实这本身也是一个伪命题,因为之前的js、ts之所以有性能问题,是因为他们跑在chorm内核里,浏览器网页里。是上层弱类型寄生语言。
而eTS之所以选择ts语言肯定是要做强类型定义后去底层编译处理,我们开发HarmonyOS的app的时候必然是要先编译后安装再运行。
这里就与web开发有本质的区别,我们写的代码并不是跑上去的代码。
换句话说,我们这里写的eTS在ArkUI的加持下本质上写出去的是具备C++代码能力的图形组件。
3.TS/C++混合开发,把跨平台玩的明明白白
其实HarmonyOS一直被网友诟病的问题就是在java和安卓。
Java是一个时代的产物,解决了当时的问题。
但到了现在的手机里看起来更像是仗着安卓生态不依不饶,让HarmonyOS应用开发者没办法忽视安卓生态的车轮。
那么问题来了,为什么不用安卓的车轮。
答:因为js ts开发者本来也不会用。
在我看来HarmonyOS既然选择了js/ts做ArkUI的开发语言,那面向的开发者大程度会来自现在的浏览器web开发。
Web开发在W3C标准的引领下给全球程序员指了一条明路,网页即应用。
在未来随着设备性能和web平台能力的加强。不论大小的软件公司,都会在网页书写一个自己项目的运行端,即开即用才是未来。
那么web向开发者其实本身就不会去考虑跨平台,或者他们写的代码本来就是跨平台。
前端的js本身就借着浏览器在跨平台。
后端为了给分离后的前端交出web平台接受的数据,早就已经深入到系统底层。
近几年随着网页汇编wasm的流行,网页也已经有很多核心业务在做前端C++化。最大程度的不浪费用户设备性能,以保证给用户提供更多元强大的浏览体验。
比如:网页视频剪辑,云电脑云手机云游戏,webGL即开即用的webVR AR场景。
那这样的大前提下,面向未来的HarmonyOS应用开发,为什么要向java和安卓妥协?
Xcomponent是ArkUI提供给前端一个高级UI组件拓展场景,TS语言负责应用的业务逻辑,C++实现的动态链接库接入NativeAPI实现更底层的高性能需求与图形需求。
单从这个场景就能看到未来的开发者人群是怎样的一群人。
手中写出的代码本身就自带跨平台属性,那么借着openharmony与HarmonyOS的联系。
我们开发者写的北向软件应用同样可以无缝跑到服务万物互联的openharmony开发板标准系统之中。
4.为什么非要c++?
因为未来就是图形, 图形就是数学, 数学需要计算, 计算需要性能, 性能需要底层, 底层需要c++ 。
最开始吸引我的内容不仅有这次更新的api8,还有议程表单上的HMS Core 3D图形技术。
如果想要前端场景具备自己应用的核心表现力,3D就是当今无法忽视的一种重要场景。
3D图形学开发,openGL就是无法忽视的开发内容。
HarmonyOS从去年就已经支持openGL ES,到现在的ArkUI同样具备webGL与Xcomponent。
目前从官方看到的示例中,Xcomponent不仅能实现Surface接入视频摄像头的画面,同样可以渲染出cocos游戏引擎产出的3D游戏画面。
那么这就给ArkUI做应用开发,提供了一个跑3D项目的场景。
通过HMS Core 3D图形技术新能力的介绍,得知一个惊为天人的消息。
手机不仅能够通过拍照产出模型,还能通过拍照产出材质球!
我个人对游戏开发纯属兴趣爱好,但也知道3D相关建模和美术工作的复杂程度全在这两件事上面。
现在通过HMS Core就可以轻松实现基础3D素材的生产,这甚至比2D平面素材制作还要方便。这无疑是一种生产力的改变,肉眼可见的那个时代要来了
…
..
Web3.0…属于是没有一句说元宇宙,句句都在说元宇宙。
5.每个人都可以是一个军队,Serverless + 低代码
我个人并不喜欢元宇宙,但元宇宙背后技术我不仅不排斥而且非常着迷。
Web3.0 为开发者勾勒的场景是数据即资产,每个人都是数据的生产者,也是数据的消费者。
更丰富的场景体验就是必须的开发内容,但是代价就是开发者未必具备同等需要的开发能力。
Serverless本身也在我强烈求知的领域,华为的Serverless接入HarmonyOS应用开发,我做过初步的尝试之后。我的感受就是,非常过瘾。
本地docker环境模拟测试,云端部署云函数。
用户认证SDK,接入的毫无道理让小微应用开发根本不需要考虑用户验证和后端开发。对于我这样的个人开发者来说,简直就是挽救于水火。
在DevEco Studio中不停宣传的低代码加持下,配合Serverless逐渐的易用和便捷。
肉眼可见的程序员开发一个复杂程序的门槛正在飞速的降低。
虽然我并不喜欢低代码,但如果低代码能向前推进一步将业务逻辑像蓝图一样轻松通过连线绘制一个可用的程序。
那么未来的开发场景一定会非常有趣,未来可期,与君共勉