前言
致读者
作为全国第1个校园HarmonyOS自学组织的成立者,笔者组织了两轮“木棉花”成员自学HarmonyOS,其中第一届成员一共有26人,第二届成员一共有9人,成员绝大部分为大一、大二的同学,其中不乏目前拥有较高成就的成员,但这两届成员中一共有24人退出了,退出的原因也不完全一样。
经过与这些退出成员以及想要学习HarmonyOS应用开发的50位同学交谈发现,退出的原因或者阻碍他们想要学习HarmonyOS应用开发的原因总结起来主要为8个。快来看一看你是不是也有这些焦虑:
1. 大部分学习者会感觉时间压力大
时间问题其实是两个问题,一个是本身的价值,另外一个是玩法。本身的价值说到底就是学习HarmonyOS这个全新的操作系统能给你带来什么。如果说学习完HarmonyOS后给你100万元,你会不会选择学呢?答案是不言而喻的,所以说,要回答这个问题就是要思考其所给你带来的价值,能为你带来一份好工作、能为你提供项目经历就能在简历上添上有价值的一笔、能为你带来直接的效益等,这些都是因人而异的。关于工作,目前已经有上百家企业在招聘HarmonyOS开发工程师了。关于项目比赛,华为公司举办的HarmonyOS开发者创新大赛、各平台的征文比赛等都很值得去参加。
关于玩法,就是丰富学习HarmonyOS的路径,就如笔者一样,在51CTO创建了专栏,分享了学习成果,与其他开发者交流,参与直播分享,参与开源项目AwesomeHarmonyOS_木棉花等。这些玩法都是大家可以参与的,归根到底就是学习→开源→再学习→再开源,虽然只是多了开源这一步,但能学到的东西还是很多的。
2.  纠结编程语言
相信大家都听说过一句话,程序=数据结构+算法,这个公式并没有编程语言这一项。其实也是对的,编程语言只是一种工具,语言与语言之间具有一定的相通性,详情可以参看5.17节JavaScript与Java的对比,在这一节笔者列举了用不同编程语言开发同样项目的对比。各位学习者不需要过于纠结编程语言,你需要什么语言,就去学习什么语言。要牢牢记住,编程语言只是一个工具,哪个用着趁手就用哪个。
3.  疑惑所掌握语言的用处
上述就提到了编程语言之间具有一定的相通性,C语言也不例外。C语言中的变量、循环及函数等知识都能为学习HarmonyOS提供较大的帮助,并不存在没有用这一说法。更何况,程序多为MVC模式,即模型(Model)视图(View)控制器(Controller),在不同语言的程序中,MVC都采用同样的模式。
4. Android与HarmonyOS
关于这一点的疑惑并不是没有道理的,都觉得学习HarmonyOS有一种赌博的成分存在,但这种赌博并不是没有依据的,目前HarmonyOS硬件的合作伙伴约有1000家,应用合作伙伴约有300家,开源共建单位有58家,社区代码贡献者约有580名,HarmonyOS注册开发者约有128万人,OpenHarmony下载次数约为21万次,HarmonyOS产品有58个,这一数据无不说明HarmonyOS发展的前景十分广阔。更何况,正因为HarmonyOS是一个刚起步的操作系统,更少人涉足的道路,也更容易留下自己的足迹,也更容易创造出自己的舞台。
5.  上手难
查阅资料时发现有很多知识不懂,这是学习的一个难点。笔者作为成功自学HarmonyOS的过来人,为大家分享这一经过多人实践过的学习路径,能够为大家更好地迈入学习HarmonyOS的门槛。
6.  基础差
HarmonyOS刚开始时确实缺少系统性的资料学习,但截至目前,HarmonyOS的学习资料已经较为完善了,学习的环境十分好。笔者也总结出一条适合各层次的读者自学HarmonyOS的路径,除此之外,AwesomeHarmonyOS_木棉花是一个关于HarmonyOS资料的开源项目,里面有较为齐全的资料,网址为https://gitee.com/hiharmonica/awesomeharmonyoskapok。
7.  无从下手
经过个人的自学和组织两届成员自学HarmonyOS,笔者摸索出了一条适合各个层次的读者学习HarmonyOS的路径。做到清楚了解首先要学习什么及为什么应先学这个,也明白了学习完这一步后下一步又应该学习什么,做到心中有数,学习不乱,对于每步学习的内容都有项目配套学习并检测知识掌握程度。
8.  与本专业的重合度不高
这些问题的答案自然是否定的。HarmonyOS是每个人的HarmonyOS,适合每个人去学习。说到专业,笔者是数学专业,这与计算机、与HarmonyOS也基本毫不相关,但笔者也照样能够学习HarmonyOS,学习程度也非常不错呢!在笔者看来,学习HarmonyOS与专业并不直接挂钩,它只需两个品质: 始于足下和持之以恒。
作为大二的学生能走到51CTO社区明星、基金会优秀开发者、华为校园大使、华为公司HDE官方认证的位置是不容易的,作为过来人在这个过程中会遇到很多障碍,例如时间管理障碍、学习迷茫障碍和寻求学习帮助障碍等,不仅是技术门槛,最大的问题在于上述这些任何学习途径都会遇到的障碍。
(1) 时间管理障碍包括正常的学业冲突、正常的工作冲突和合理的娱乐时间冲突等。老话说的是“只要愿挤时间总会有的”,笔者想说的是“兴趣和目标是挤时间的最好老师”。正常的学业或工作时间不能删减,但娱乐时间是可以不定期地适当删减的,以游戏类的项目为初始学习的起点,不仅能在学中玩,激起更大的学习积极性,而且玩自己成功开发出来的游戏更有一种喜悦之情。
(2) 学习迷茫障碍具体指在学习的不同阶段都会感到的迷茫,这本书的章节是按照笔者自身作为一名读者学习HarmonyOS的路径安排的,跟着这本书去学习,便可较好地度过每个阶段的迷茫时期。当你处于迷茫阶段时,有一个公式很适用; 进阶之路=(学习+实践项目+总结+敢于走在前列)×不断重复。
(3) 寻求学习帮助障碍是指在学习中遇到问题却不知道该去哪里寻求帮助,在这本书中详细地讲述了避坑点。对于遇到的其他问题,除了与笔者交流之外,还可以在51CTO平台、深鸿会组织等地方与其他开发者一起交流学习。关于这点,最后想说的是一个公式: 克服困难=51CTO社区+官网+深鸿会+自己。
本书读者对象
本书面向想学习HarmonyOS App开发的学习者。本书对编写的每行代码进行讲解,即使读者没有相应的编程经验,也能在本书的一步步指导下完成书中整个项目的编写,从而实现项目的所有功能并将项目运行起来。
关于本书
第1章介绍HarmonyOS。解释这个全新操作系统的定位、技术架构的4个层,以及其含有的独特技术特性,然后简要叙述系统安全的原理。
第2章详细介绍了搭建HarmonyOS应用开发的环境,然后通过编译和运行Hello World典型项目,指导读者使用预览器和模拟器运行代码。
第3章开始讨论HarmonyOS开发的基础知识。这一章涉及的知识有程序、配置文件、资源文件、其他文件、3个Ability、JS生命周期和Java UI框架。对于使用过程序设计语言的程序员来讲,学习这一章的内容将会感觉十分轻松,但对于其他读者来讲,仔细阅读这一章非常有必要。
第4章详细介绍了用编程语言JavaScript开发的运行在HarmonyOS智能手机上的“数字华容道”项目。整个项目采用任务向导的方式,每个任务完成项目中的一部分功能,每小节包括运行效果、实现思路、代码详细讲解3部分。在本章对编写的每行代码进行讲解,即便读者没有JavaScript开发的编程经验,也能在本章的指导下一步步完成整个项目代码的编写,从而实现项目的所有功能并将项目运行起来。
第5章详细介绍了用编程语言Java开发的运行在HarmonyOS智能手机上的“俄罗斯方块”项目。整个项目采用任务向导的方式,每个任务完成项目中的一部分功能,每小节包括运行效果、实现思路、代码详细讲解3部分。在本章对编写的每行代码进行讲解,即便读者没有Java开发的编程经验,也能在本章的指导下一步步完成整个项目代码的编写,从而实现项目的所有功能并将项目运行起来,然后,给出了用编程语言JavaScript开发的“俄罗斯方块”项目的代码,并对这两个用不同编程语言开发的同一个项目进行对比。
第6章讨论的是应用运行在真机上的步骤,并且介绍了HarmonyOS App上架发布的流程,读者可在这里了解将HarmonyOS项目上架到应用商店的步骤。
第7章详细讨论了分布式能力。在这里读者会了解到分布式任务调度、带数据传递的分布式任务调度、分布式迁移与回迁,对于每个分布式能力都配有相应的小项目,读者会清楚地了解其实现的原理。
第8章是本书的最后一章,将讨论数据管理服务。数据管理是应用开发中很重要的一门技术。在这一章会介绍轻量级偏好数据库和分布式数据库,通过这两个数据库,读者能实现本地数据和远程数据的存储。
因笔者能力有限,书中难免存在疏漏之处,恳请读者批评指正。
张诏添李凯杰2022年5月



本书源代码