第2次作业—— 谈谈鸿蒙操作系统
谈谈鸿蒙操作系统
2020年12月16日,华为举行HarmonyOS 2.0手机开发者Beta活动,正式发布了HarmonyOS 2.0手机开发者Beta版本,并同时在线上开启公测招募。2021年6月2日,华为举行新品发布会,正式发布HarmonyOS操作系统。同日,华为宣布,将陆续向华为手机、平板、智慧屏等智能终端设备推送升级HarmonyOS 2。HarmonyOS 2.0给应用带来更多流量入口,给设备带来更好的互联体验。该系统实现硬件互助、资源共享;同时该系统也能够实现一次开发,多端部署以及统一OS,弹性部署,并且该系统在安全和隐私方面也有较大的提升。
一、概括介绍鸿蒙操作系统。
从宏观上讲,鸿蒙系统的开发背景有以下几点:一、数字化新时代的到来需要新的操作系统;二、5G物联网时代的到来对操作系统提出了新的要求;三、独立自主的研发操作系统是迫切的需求;四、AIoT场景天然要求多设备智能协同,需要一个适用于各类型机器的操作系统;五、TB,BP级的大数据需要一个能够提供多机互联的操作系统;六、网络安全威胁呈现多元化、复杂化、频发高发趋势,需要一个足够安全的系统进行保障。从微观上讲,美国政府禁止美国对华出口,这切断了华为与大多数芯片和软件供应商的接触。同时华为公司已然具备研发新的操作系统的技术和资金资源储备。
随着物联网时代的到来,无论是设备还是应用场景都对操作系统产生了新的需求。同时中国人研发新型独立操作系统的热情愈发俞涨。
鸿蒙OS是一款“面向未来”的操作系统,一款基于微内核的面向全场景的分布式操作系统,它将适配手机、平板、电视、智能汽车、可穿戴设备等多终端设备。
Harmony OS 2正式登场,未来可能重点围绕运动健康、智慧办公、影音、智能家居和智慧出行五大场景打造“全场景智慧生活”。鸿蒙OS是一个面向物联网时代的操作系统,超级终端是鸿蒙OS中的重要概念。鸿蒙OS未来可能能够实现万物的智能互联功能,它通过将任意个孤立设备连接成“超级终端”,提供了流畅、安全的无缝衔接跨平台能力,实现了“超级终端”内硬件设备之间的信息共享与服务共享,让用户能够像使用一台设备一样任意调用超级终端内的设备与服务。
二、关于鸿蒙操作套壳的争议,谈谈你的观点。
什么是创新?顾名思义,创新就是创造新的东西。对于鸿蒙操作套壳的争议,我认识这也是一种创新,是站在巨人肩膀上的创新。
代码复用算不算创新?我认为如果是单纯的粘贴复制那就是算作抄袭,但是如果在开源代码上加入新的技术这可称为“二次创新”。同时一、华为有权使用ASOP代码,ASOP是由谷歌联合34家手机终端和运营商企业共同发起的项目,全称是安卓开源项目。在ASOP这个项目里,任何机构和企业都有义务为开源社区贡献代码,也能够使用和下载开源代码,并基于开源项目做二次开发。所以ASOP的代码并不全是谷歌写的,华为也是ASOP的重要贡献者。
鸿蒙OS使用ASOP的代码是基于现状的理智选择。使用ASOP的代码、兼容安卓应用是为了保证用户体验。安卓系统已经开发了10几年,消费者已经用习惯了安卓系统,如今贸然更换一个不兼容安卓或者操作逻辑迥异的系统,会造成用户的大量流失。当鸿蒙OS积蓄足够的实力时,就能完全抛开谷歌和ASOP了。
三、代码风格分析
···
/* True if the timer is enabled */
static int enableTimer = 0;
/* Return the current wall-clock time */
static sqlite3_int64 timeOfDay(void){
static sqlite3_vfs *clockVfs = 0;
sqlite3_int64 t;
if( clockVfs==0 ) clockVfs = sqlite3_vfs_find(0);
if( clockVfs->iVersion>=2 && clockVfs->xCurrentTimeInt64!=0 ){
clockVfs->xCurrentTimeInt64(clockVfs, &t);
}else{
double r;
clockVfs->xCurrentTime(clockVfs, &r);
t = (sqlite3_int64)(r*86400000.0);
}
return t;
}
···
分析:此代码使用了C语言,整体风格清爽统一,代码元素的命名体现了元素的差异性,且都符合本语言特性;缩进、空格与空行造就了代码的层次性和规律性,有助于直观、快速、准确地理解业务逻辑,可读性高。且含有注释,较好的反映设计思想和代码逻辑,可读性高。
···
import("//build/ohos.gni")
import("//build/ohos/ace/ace.gni")
base_output_path = get_label_info(":js_convertxml", "target_out_dir")
js_xml_obj_path = base_output_path + "/convertxml.o"
gen_js_obj("js_convertxml") {
input = "//base/compileruntime/js_api_module/convertxml/js_convertxml.js"
output = js_xml_obj_path
}
ohos_shared_library("convertxml") {
include_dirs = [
"//third_party/icu/icu4c/source/common",
"//third_party/node/src",
"//third_party/libxml2/include",
"//foundation/ace/napi/interfaces/kits",
"//base/compileruntime/js_api_module/convertxml",
]
sources = [
"js_convertxml.cpp",
"native_module_convertxml.cpp",
]
···
分析:此代码整体风格清爽统一,代码元素的命名体现了元素的差异性,且都符合本语言特性;缩进、空格与空行造就了代码的层次性和规律性,有助于直观、快速、准确地理解业务逻辑。但唯一的不足就是没有注释,好的注释能够起到指路明灯、拨云见日的作用,能够准确反映设计思想和代码逻辑,显然此代码缺少这一点,可读性一般
···
static void output_quoted_string(FILE *out, const char *z){
int i;
char c;
setBinaryMode(out, 1);
for(i=0; (c = z[i])!=0 && c!='\''; i++){}
if( c==0 ){
utf8_printf(out,"'%s'",z);
}else{
raw_printf(out, "'");
while( *z ){
for(i=0; (c = z[i])!=0 && c!='\''; i++){}
if( c=='\'' ) i++;
if( i ){
utf8_printf(out, "%.*s", i, z);
z += i;
}
if( c=='\'' ){
raw_printf(out, "'");
continue;
}
if( c==0 ){
break;
}
z++;
}
raw_printf(out, "'");
}
setTextMode(out, 1);
}
···
分析:代码使用C++语言编写,整体风格代码略拥挤,部分代码缺少缩进、空格,同时缺少注释,可读性差。