软件工程2021:第2次作业—— 谈谈鸿蒙操作系统
一、概述鸿蒙操作系统
•开发背景
自技术战爆发之后,华为在芯片与操作系统受限的背景下推出了主打物联网时代的“鸿蒙系统”,在手机芯片受到限制之后,华为手机业务受到了巨大的冲击,手机每年能为华为提供不少的现金流,华为势必需要寻找新的突破点。
•需求
鸿蒙系统是面向未来的系统,物联网时代的系统,覆盖的领域非常多。工业的发展趋势很容易判断,但是人的需求却不像工业一样是循序渐进的变化,而是需要天才的眼光和判断力去寻找挖掘,是一种质的突变。网络系统的未来要求是“超高速、低时延”,这是个技术要求问题,华为在这个领域是专家,但是当网络技术进入“无人区”之后,创始人任正非也开始迷茫。同理,当鸿蒙系统从一个工业技术系统迈向手机操作系统时,它服务的对象不再是千千万万个有统一标准的连网设备,而是千千万万有不同想法的人,之间的区别绝非仅仅是技术的迁移过渡,而是对手机的体验需求,对未来网络的需求,对人类自身情感的更深刻理解的综合判断。
•开发历史
2012年,华为开始规划自有操作系统“鸿蒙”。
2019年5月17日,由任正非领导的华为操作系统团队开发自主产权操作系统——鸿蒙。
2019年5月24日,国家知识产权局商标网网站显示,华为已申请“华为鸿蒙”商标,申请日期是2018年8月24日,注册公告日期是2019年5月14日,专用权限期是从2019年5月14日到2029年5月13日。
二、关于鸿蒙是否套壳的争议
•什么是创新以及代码复用与创新的关系
我认为创新就是根据现有的资源,来创造出不同于其他产品,具有自己鲜明特点和优势的一项活动。很多人都说鸿蒙是AOSP套壳,那么我们首先得明白什么是AOSP?AOSP是"Android Open Source Project"的缩写,中文意为"安卓开放源代码项目",AOSP是基于Linux开的。AOSP 是由谷歌主导的一个开源项目,通过AOSP可以编译出一个比较纯净的,可以用于智能设备的操作系统。而Android,尤其是首字母A大写的时候,是属于谷歌的一个商标,不属于AOSP 所有,未经允许不能随意在商业产品中fAndroid系统是开源的AOSP和额外的闭源部分(其中包括GMS )的组合而成,所以可以认为Android=AOSP+GMS。网友有一个通俗的比喻: AOSP是个毛坯房,Android是个精装房。由于AOSP是开源的,一些第三方机构就可以以AOSP为基础,做出自己的改进,并对不同机型适配,然后自己取一个名比如小米的MIUI、华为的EMUI、或者魅族的 Flyme。所以,华为只是“站在巨人的肩膀上”创造了属于自己的操作系统。
三、代码风格分析
•好的代码风格
代码
if (list instanceof RandomAccess) {
for (int i = 0; i < list.size(); i++){}
}else {
Iterator<?> iterator = list.iterable();
while (iterator.hasNext()) {
iterator.next()
}
}
分析:实现RandomAccess接口的类实例,假如是随机访问的,使用普通for循环效率将高于使用foreach循环;反过来,如果是顺序访问的,则使用Iterator会效率更高。
•好的代码风格
代码
int a = 2;
int b = 16;
System.err.println(a<<5);//等同于 2*2*2*2*2*2 即2*32
System.err.println(b>>2);//等同于 16/2/2 即16/4
分析:该代码使用了位移运算,因为位移是基于2进制的算法,任何运算都会转换成二进制再运算,那我们直接使用二进制就会提升一部分效率。
•不好的代码
代码
public void noTryCatchOperateInLoop(long times){
long before = System.currentTimeMillis();
for (int i = 0; i < times; i++){
new Object();
}
long after = System.currentTimeMillis();
System.out.println("循环耗时:" + (after - before) + "ms");
}
分析:该代码在循环中使用NEW关键词来创造对象,导致每次循环都要创造新的对象从而加大了代码运行的时间并且创建对象也占用了不少内存