鸿蒙应用开发初级,鸿蒙应用开发初级证书
鸿蒙3.0系统与华为仓颉编程语言,从系统级6层架构上深入分析
华为的鸿蒙系统3.0开始对9款手机的公测,这其中就包括p50系列的3款手机,mate40系列的5款手机,和一款12.6英寸的matepad pro。这让咱手里拿着的mate30备受冷落。但我自己心里就更加期待华为的仓颉编程语言。这么屈指一算,仓颉编程语言从4月2号开始内测以来已经两个多月了。因此,我预判,鸿蒙系统3.0会跟仓颉编程语言一起来到咱们的身边。
创新互联公司专注于彭阳企业网站建设,响应式网站开发,成都商城网站开发。彭阳网站建设公司,为彭阳等地区提供建站服务。全流程按需定制制作,专业设计,全程项目跟踪,创新互联公司专业和态度为您提供的服务
那么在准备迎接鸿蒙系统3.0和仓颉编程语言之前,我这一期帮大家打一个坚实的基础。我相信许多朋友当说起来操作系统或者是编程语言的时候,脑子里其实是有点支离破碎,或者是一头雾水。我帮助大家从一个宏观的角度去鸟瞰,去把握和理解计算机科学体系中的坐标,让你独具一双慧眼,单单靠着你的直觉就能获得专业的视角。计算机科学包括六层架构,操作系统在第四层上,华为仓颉编程语言这样的应用级编程语言则处在第五层上。
咱们先从底部开始,所谓万丈高楼平地起嘛。咱们来先看基础:信息理论。任何学科的基础都是数学,当然计算机科学也不例外。这第一层就是关于数学理论的。咱们日常用的是十进制,计算机则是由0和1构建起来的是二进制。那数学也很简单,就是关于0和1的加法。比如1加1,在十进制中是等于2,而在二进制1加1等于10,这就是所有的数学基础,也就是这么简单。
但是还有更加往上抽象的一个层面的基础,就是咱们在高中时候学习的“布尔代数”。看似不起眼的“布尔代数”研究的是机器如何思考,如何让机器来获得智能这样的问题。
布尔在1854年就解决发表一篇“研究人类的思考规律”的论文,提出了“布尔代数”,为机器如何思考打下了理论基础。
布尔当时的想法很简单。他认为人是理性的,那么人是按照理性逻辑来思考问题的。于是,如果他能把大脑思考问题的逻辑,提炼抽象出来的话,那么是不是就能用这逻辑在大脑之外去思考呢?布尔的这项雄心勃勃的构思就是人工智能的雏形。你想呀,如果把这个逻辑提炼出来用在机器机械零件上,机械零件就会开始思考。如果用在电路上,这个电路是不是也就开始思考了呢。布尔代数咱们就很熟悉了,我就在这里就不带展开,我前面有一期就专门来讲述了这个机器来如何用布尔代数来思考,大家感兴趣可以看下那一期,我在这不展开浪费时间。
再往上第二层就是硬件,布尔他把理论抽象出来,将布尔代数应用到电路上,电路是不是也就能开始思考?哎,到了1938年,香农就首次把布尔代数应用到了电路上,于是这个电路就开始思考了。从最早的真空管到半导体晶体管(我前面那一期也专门讲过“机器如何用晶体管来思考”)然后到集成电路,再到现在这个大型的集成电路芯片。我们知道麒麟9000芯片用的Arm架构的指令集,指挥CPU工作的指令又叫机器码。比如“加法”就是用一串数字机器码00000011来表示。
然而你会发现,用机器码来指挥这个cpu或者电脑工作太麻烦了。一般人哪里能记住像前面的6个0和后面两个1来表示加减乘除的加呢。
正是困扰于此,科学家就此提出来编程语言。最早编程语言是汇编语言。比如前面表示加法的机器码00000011,汇编语言中将其抽象为add。然而,汇编语言也需要大量的记忆,一个指令一个指令的对应,也是太机械了。再往前一步,往上一层抽象就是系统级的编程语言:面向过程的C语言。
一门编程语言所要做的一个主要工作就是在机器和我们人类思考之间建立一座桥梁。我们是人类的思考逻辑,机器是机械 式逻辑思考问题。越高级的编程语言越符合我们人类的思考逻辑,越初级的编程语言则越贴近机器的逻辑。因此,我们用高级的编程语言比如C语言,将想做的事情表达出来,它会自动转换成机器码。
我喜欢的编程发展史上的第二大古老的语言:Lisp语言。
就是直接使用我们的抽象思考的语言。比如重复地来做一件事,重复说五遍“Hello”这个单词。Lisp将重复抽象为dotimes,do是做, times是多次,dotimes反复多次做。看见没,编程语言成了我们抽象的思考工具。
当然,华为仓颉语言也是在编程语言这里,但不是系统级的编程语言,咱们后面再说
当在第二层硬件之上发展出来高级的编程语言,有了系统级的编程语言比如C语言之后。大家就发现,我需要一个操作系统来处理日常的基本任务,比如文件管理,进程管理,内存管理,设备管理和用户管理等等。于是科学家着手用编程语言写操作系统。而事实上C语言在1969年的发明,也正是为了移植与开发UNIX操作系统。C语言的设计者丹尼斯·里奇同时也是Unix操作系统的发明人。到了1991年Linus用C语言写了Linux内核,也是目前安卓和鸿蒙系统的内核。
华为的EROFS超级文件系统并入Linux内核之后,无论是Linux还是安卓都打上了20%的华为烙印。
操作系统再往上一层就是我们日常的应用。比如听歌、看视频等apps就是在操作系统之上。这也好理解,先有了操作系统,才有我们的各种应用。由此也能理解,为什么像鸿蒙系统3.0如此重要,因为应用程序要运行在上面。这些应用程序就是用华为仓颉编程语言等应用级编程语言开发的。不过,目前咱们手机上的应用程序都是用Java开发。未来鸿蒙系统将会使用自研的仓颉语言开发鸿蒙应用。
应用程序的主要功能之一是沟通和交流。我们用Email发邮件,用通讯视频聊天,而Web应用技术构建起来当前的互联网信息大厦。
好了,我们总结一下。计算机科学的六层架构。
第1层是信息理论,研究如何在大脑之外实现思考,布尔代数是人工智能的雏形。第2层是硬件,布尔代数应用到电路上,晶体管开始思考,将数以亿计的晶体管雕刻到集成电路CPU中,CPU的机器码指挥计算机工作。第3层编程语言,从枯燥难记的机器码里发展出来汇编语言,再到系统级的C语言,构建起来人类思考与机器逻辑之间桥梁。第4层操作系统,C语言不是凭空而来,是为了开发Unix操作系统而发明,而操作系统是计算机里最大的软件。第5层应用软件,日常所有的apps都运行在操作系统之上。仓颉编程语言是给鸿蒙系统开发应用程序的专属开发语言。第六层沟通互联,就是我们目前的互联网技术,在网络里看书、听音乐,点一份外卖等等。
这就是计算机科学六层架构,鸿蒙操作系统与仓颉编程语言各就各位。用架构去思考和看问题,不仅能心中有数,还能独具一双慧眼。
鸿蒙确实用了安卓开源项目代码,但安卓套壳论却是一戳即破的谎言
现在华为鸿蒙系统(Harmony OS)已经到了大规模推广、搭载前的最后公测阶段,已经有很多人升级到了鸿蒙,事实就摆在面前了,所以现在关于鸿蒙系统是PPT的说法,差不多都该很快消失了。
目前对鸿蒙系统的质疑声音,又集中到了“安卓套壳”这个老话题上来,毕竟鸿蒙系统确实是全面兼容安卓APP,而且在日常界面上也和安卓系统很类似。很多所谓程序员就根据鸿蒙系统中确实有很多AOSP(安卓开源项目)的开源代码来认定,鸿蒙系统就是安卓套个壳而已。
一、这样的观点,实际上从稍有知识产权、法律常识的角度看,根本就是不可能成立的。
难道一个强悍的谷歌公司,就没有几个律师(法务)懂这事?你以为谷歌强制要求的 安卓手机开机界面“Powered by android” 只是个摆设,或是个花架子没用的?如果说谁家手机系统底层是安卓,却不遵从这个规则,怕是早就被谷歌告进了法院。谷歌有多么狠没人不知道吧?要知道谷歌自家私有的GMS(谷歌移动服务),早就禁止华为手机安装了。当时谷歌那可是步步紧逼,坚决把禁止华为使用GMS进行到底的力度。
放心吧,谷歌没这么傻,华为更没这么傻。如果鸿蒙系统不是完全自己开发的,华为有必要多此一举? 华为现在的 “安卓+EMUI+HMS(华为移动服务)”模式 ,不也是用得好好的吗? 而且,“安卓+EMUI+HMS”这个模式,只要华为想用安卓开源系统,还可以一直用下去,完全符合开源项目规则。
其实这也是目前小米、OPPO、vivo、三星等所有安卓系手机厂家都在做的,比如小米的安卓+MIUI等。况且,华为的EMUI也很强大,完全不比任何别家UI系统差。
二、即便是从软件技术、软件开源社区及开源软件规则这些常识看,鸿蒙系统使用AOSP(安卓开源项目)的开源代码不但合规,还是合情、合理的。
下面咱们来看看2021年1月下旬,华为消费者业务软件部总裁、鸿蒙操作系统负责人王成录接受采访时,对鸿蒙系统全面、深入的介绍。王成录这位资深“程序员”,应该是最有资格介绍鸿蒙系统的了。
这里王成录还是把对鸿蒙系统的质疑归结于理解不一致的问题。他说并不是所有安卓代码都是谷歌开发的,安卓系统的绝大部分代码来自开源社区。
鸿蒙也会吸收社区的优秀技术和代码,用了AOSP(Android 开源项目)的开源代码,就认定鸿蒙是安卓换了皮,说明这类吐槽者没有太准确理解什么是开源。开源系统的最大意义就在于大家都来贡献代码,大家都可以免费使用。而华为本身就是安卓开源系统最大的贡献者之一。
王成录说到 今年10月,鸿蒙第三阶段的开源代码会上线,来自AOSP社区的、由谷歌贡献的代码就几乎没有了 。相信华为的这个时间表,那些吐槽的所谓“程序员”应该可以理解了。
由此可见, 鸿蒙系统是庞大的,特别是前期吸收开源社区的技术、代码,都可以显著提高系统开发的进程,华为何乐而不为呢?这个槽点,该破了。
类似的,鸿蒙系统对于安卓APP的兼容,也是这个连续性的道理。王成录明确提到,现在鸿蒙生态的应用量(APP及开发者)还不够多。他说谷歌安卓系统有约2000万开发者,苹果iOS有2400万开发者,鸿蒙生态的开发者数量还差很多。所以, 在鸿蒙生态起步的初级阶段,兼容安卓不但不该被吐槽,反而应该是一个妙招 。
当然华为也没有忽视自有生态建设。华为选择了中国应用市场(APP)下载量排名前200的厂家,一个个去沟通,已确定做方案的达到70%。鸿蒙生态建设非一日之功,早在紧张进行中。
这些吐槽的所谓程序员,要么就是揣着明白装糊涂,为了吐槽鸿蒙而装糊涂;要么根本就不是程序员,打着程序员的幌子,纯粹就是为了吐槽鸿蒙而已。
三、最后做个善意提醒,现在用着安卓系统的手机厂家,也不要高兴太早,或是暗自庆幸自己运气好,没有被谷歌打压。
谷歌可是在一步步收紧对安卓系统的控制,说不定啥时候让你交点儿使用费,怕是躲不开的。而且交点儿使用费,怕这还是好的。 要是哪天你也想真心实意做点儿技术活,也搞点儿高新 科技 ,难免要被美国盯上,难道就不怕和华为一样也被禁掉GMS?多做点儿准备,不是坏事。
并且鸿蒙系统的微内核、软总线、分布式架构的先进性,是安卓系统不可匹敌的。随着鸿蒙系统生态进一步完善,加上华为鸿蒙系统的开放政策,相信用上更先进的系统,对任何厂商都有吸引力。用上中国自己的操作系统,何乐而不为?连谷歌都在开发安卓的替代系统Fuchsia了,难道还有人怀疑安卓必将被淘汰的结果吗?
鸿蒙系统确实是个新事物,很多人对其缺乏认识是可以理解的。我们中国之前确实也没有拿出一个成功的操作系统,鸿蒙系统突围而出的难度的确很大,有些人缺乏信心也有可能。 但是现在华为有实力、有机会,鸿蒙成功就在眼前,我们还腿软,就不该了。
为什么“鸿蒙”不是第二个“安卓”,如何看待鸿蒙里的安卓痕迹?
华为将在6月2日晚8点举办鸿蒙操作系统及华为 全场景 新品发布会。官方微博也在同一时间更名为Harmony OS,同时更新了鸿蒙操作系统的开机视频。 ——Harmony OS会带来哪些改变?
“鸿蒙”走过的那些路
Harmony OS 历程
目前,已经有19款机型提前享受到了HarmonyOS; 鸿蒙的出世,看似是华为的应对之举,实则是提前的布局和积累;
鸿蒙的多个版本…
为什么“鸿蒙”不是第二个“安卓”
HarmonyOS从设计之初,就是面向未来万物互联时代的操作系统,“我们希望用一套操作系统解决所有IoT硬件设备搭载系统的问题,硬件生产厂家不需要在生产不同硬件的时候,裁剪或者寻找一个新的系统安装。” ——王成录表示 。
鸿蒙系统的开发和诞生,是基于华为对于物联网时代的观察——原本就是为移动互联网的“下一个时代,万物互联”准备的。
更重要的是,HarmonyOS给所有应用开发者提供分布式编程框架,让大家用自己熟悉的编程语言,只写一次的业务逻辑就能够运行在所有设备上,从而最大限度地实现生态在各个孤立设备上的共享,打通各个设备间交互的障碍。
相比安卓在不同的 :操作系统、屏幕尺寸、必须进行针对性的整套的开发适配; 鸿蒙采用分布式的开源方式,一次开发,多端部署,开发效率大大提高, 分布式技术、跨终端、多场景,是HarmonyOS中不断被提及的特点。
谷歌的安卓系统虽然开源,但却不具备将其他设备的功能整合起来的能力,属于单一手机为主的“移动互联网”时代的操作系统 ;而鸿蒙能够打通手机与其他设备间沟通的障碍,整合各个设备的能力,可以说是面向全新的“5G时代”的底层系统;
鸿蒙的意义:跳脱出此前直接售卖硬件的商业模式,摆脱芯片封锁带来的业务风险,通过鸿蒙OS为业务开拓出全新的空间。 虽然鸿蒙当前还在努力崛起的初级阶段,生态打造任重道远,但是背后的意义却极为深远。
如何看待Harmony OS里Android痕迹
一直以来,对于鸿蒙的争议很大一部分来自于: “华为鸿蒙系统到底是不是安卓系统套壳”?
关于代码等专业方面的问题,此处不做赘述,其实只要考虑清楚三个方面的问题,想必就能够得出结论。
首先, 谷歌在对华为的限制方面,并没有切断安卓的供应,被切断的是GMS的供应,针对这一点,华为找到了HMS的解决方式,其中压根没有鸿蒙什么事;
其次, 华为作为一个拥有自主研发能力的大型企业,在明知安卓系统发展成熟的前提下,造一个哪怕与安卓完全独立的应用生态是没有问题的;
再简单直白一些,如今智能手机市场上,用户在搭载什么样的系统上并没有太大的区别,对于鸿蒙系统来说,它的UI是否合理,运行是否流畅,是否能够使用原先用户可应用的APP,这才是问题的关键。
因此: 从现阶段华为公开的消息看,如果说鸿蒙是“套壳安卓”,那么安卓也可以是“套壳EMUI”了,这本身就是一个滑稽的说法。
华为鸿蒙手机应用开发上手体验
之前测试过使用华为DevEco开发智能电视应用。前几天华为发布了手机的测试版,不能免俗,抓紧尝试一下。
手头没有华为手机测试系统,现在试一下开发环境跑模拟器感受一下。
以前DevEco里是没有手机选项的,现在该选项可以看到了:
这里测试一下Business Card Ability(Java)开发。
DevEco和Android Studio一样基于开源的Idea版本开发的,其结构与安卓开发环境非常像,熟悉安卓的小伙伴应该能很快上手。
入口程序是一个MyApplication,从AbilityPackage继承。
它首先找到了连接的荣耀手机,但这个手机不是鸿蒙系统。
编译是成功了,但提示设备无法使用:
点击Tools - HVD Manager
首先提示登陆华为账号,登陆后,选择一个模拟器运行:
启动以后长这个样:
点击设置,先看看关于:
上面显示大大的HarmonyOS。但感觉画面很模糊,不知道模拟器到底是运行在本地的,还是云端的。但DevEco上显示是Remote Device字样。
鸿蒙OS版本号 2.0.0 Developer Beta1。
再点运行,在指定的模拟器上运行程序。
不过仍然运行失败:
鸿蒙OS版本与平板是一致的,
程序终于跑起来了:
看起来安卓程序好像真能在鸿蒙直接运行,安装一个快手试试:
还真能看:
我真分不清这是安卓还是鸿蒙了 。
「鸿蒙开发 3」华为鸿蒙应用开发的低代码(Super Visual)开发方式
开发前可以了解下鸿蒙: [鸿蒙开发 序]华为鸿蒙操作系统(HarmonyOS)简介及开发环境搭建
开发前的准备:「鸿蒙开发 1」华为鸿蒙应用集成开发环境DevEco Studio安装和设置
了解鸿蒙应用开发的基本开发流程:「鸿蒙开发 2」第一个华为鸿蒙(HarmonyOS)应用程序(App)
本章目标:
1 了解华为鸿蒙应用开发的可视化(低代码)方式
2 通过构建一个简单的具有页面跳转功能的应用
低代码开发方式,即通过可视化界面开发方式快速构建布局、编辑UI界面,可有效降低用户的上手成本并提升用户构建UI界面的效率。
1 打开DevEco Studio,创建一个新工程,选择支持Phone / Tablet / Wearable(手机 / 平板 / s可穿戴)的模板,我们在此直接选择Empty Ability
Project name工程名称填SuperVisual
Development mode开发方式选择Super Visual
其它的可以使用默认设置,点击完成,进入编辑界面
1 在Project(项目)窗口,删除工程运行默认的入口文件夹:“entry src main js default pages index”文件夹
2 在Project窗口,选择工程中的“entry src main js default pages”,单击鼠标右键,选择“New JS Visual”
JS visual name填first,点击完成,进入编辑界面
创建完成后,可以看到“entry src main supervisual default pages page page.visual”的文件目录结构
3 第一个页面内有一个容器、文本和一个按钮,通过Div、Text和Button组件来实现
(1)分别选中first.visual画面中的Text、Div组件,单击鼠标右键,选择Delete删除
(2)选中UI Control中的Div组件,将其拖至画布
点击右侧属性样式栏中的通用样式图标(General),设置Div组件的高度Height为100%,使其占满屏幕
点击右侧属性样式栏中的样式图标(Flex),设置Div组件的FlexDirection样式为column,使Div的主轴垂直;设置Div组件的JustifyContent样式为center,使得其子组件在主轴上居中显示;设置Div组件的AlignItems样式为center,使得其子组件在交叉轴上居中显示
(3)选中UI Control中的Text组件,将其拖至Div组件的中央区域
点击右侧属性样式栏中的属性图标(Properties),设置Text组件的Content属性为 “ Hello World ”
点击右侧属性样式栏中的通用样式图标(General),设置Text组件的宽(width)为100%,高(height)为100px
点击右侧属性样式栏中的样式图标(Feature),设置组件的FontSize样式为60px,使得其文字放大;设置组件的TextAlign样式为center,使得组件文字居中显示
(4)选中UI Control中的Button组件,将其拖至Text组件下面
点击右侧属性样式栏中的属性图标(Properties),设置Button组件的Value属性为 “ Next ”,
点击右侧属性样式栏中的通用样式图标(General),设置按的宽(width)为40%,高(height)为60px
点击右侧属性样式栏中的样式图标(Feature),设置组件的FontSize样式为40px
至此,第一个页面创建完成
我们可以在预览窗口中看效果,点击右侧边栏的Preview打开预览窗口
1 在Project窗口,选择工程中的“entry src main js default pages”,单击鼠标右键,选择“New JS Visual”
Visual配置界面,JS visual name填second,回车(Enter键)或者点击完成,进入编辑界面
2 第二个页面中有一个容器和文本,通过Div、Text组件实现,现在编辑器已经为我们创建好了,我们就来修改下它们的属性(你也可以删除原有的自己创建,具体步骤参考本章第二节“二 创建第一个页面”)。
选中Text组件,点击右侧属性样式栏中的属性图标(Properties),设置Text组件的Content属性为 “ Hi,I'm always here. ”
点击右侧属性样式栏中的通用图标(General),设置组件的宽(width)为100%,高为60px
点击右侧属性样式栏中的样式图标(Feature),设置组件的FontSize样式为36px,TextAlign样式为center
这样我们的第二个页面创建成功了
1 在Project窗口,打开工程中的“entry src main js default pages first first.js”, 导入router模块,页面路由router根据页面的uri来找到目标页面,从而实现跳转。示例代码如下:
2 打开或者切换到first.visual页面,选中画布上的Button组件,点击右侧属性样式栏中的事件图标(Events),鼠标点击Click事件的输入框,选择launch事件
3 在预览窗口中查看项目效果,点击Next按钮后发现我们的页面成功跳转了。
到此,本章的目标就完成了。
当前题目:鸿蒙应用开发初级,鸿蒙应用开发初级证书
标题路径:http://myzitong.com/article/dsohjep.html