OpenHarmony、HarmonyOS、HarmonyOS NEXT从HelloWorld开始

2,309 阅读8分钟

8d7513b2b3e0495f907ca476d20274e8.jpeg

第一章:简介

鸿蒙操作系统(HarmonyOS)由华为开发,是一种全新的分布式操作系统,旨在为智能设备提供统一的操作系统平台。OpenHarmony是鸿蒙操作系统的开源版本,HarmonyOS NEXT是鸿蒙操作系统的最新迭代。本篇文章将深入解析这三者的区别和应用,结合具体的代码示例来展示它们在实际开发中的应用。

第二章:OpenHarmony

鸿蒙底层内核系统,集成Linux内核+LiteOS,具备底层通信能力,属于鸿蒙底层的架构层。 OpenHarmony大家基本可以把它理解为曾经的Linux内核,他是鸿蒙系统的“根”。 只要是基于OpenHarmony打造的系统,都可以被其他鸿蒙设备识别,这是因为OpenHarmony还集成了Lite OS内核,这是鸿蒙系统的“身份标识器”。 OpenHarmony是一个开源项目,旨在为各种智能设备提供统一的操作系统平台。它具有以下几个核心特性:

  1. 分布式架构:OpenHarmony支持多设备协同工作,使得不同设备之间能够无缝连接和互动。
  2. 开源生态:OpenHarmony的开源特性允许开发者自由定制和扩展系统功能。
  3. 高性能和低延迟:OpenHarmony采用轻量级内核,确保高性能和低延迟。

示例代码:OpenHarmony应用开发

以下是一个简单的OpenHarmony应用示例,展示了如何创建一个基本的用户界面:

import { Ability } from '@ohos.application';
import { Text, Component } from '@ohos.arkui';

class MainAbility extends Ability {
    onCreate() {
        console.log("MainAbility onCreate");
    }

    onDestroy() {
        console.log("MainAbility onDestroy");
    }

    onWindowStageCreate() {
        console.log("MainAbility onWindowStageCreate");
        this.window.setContent("MainComponent");
    }
}

@Component
class MainComponent {
    render() {
        return (
            <div>
                <Text value="Hello, OpenHarmony!" />
            </div>
        );
    }
}

export default MainAbility;

该示例展示了如何创建一个简单的Hello World应用,使用了OpenHarmony的基本组件。

第三章:HarmonyOS

HarmonyOS是华为开发的分布式操作系统,旨在为各种智能设备提供统一的平台。它不仅继承了OpenHarmony的核心特性,还增加了一些高级功能,如分布式软总线、分布式数据管理等。 基于OpenHarmony和安卓(AOSP)打造的手机系统,包含UI界面,应用生态绑定安卓,这是目前鸿蒙的主形态。 HarmonyOS(鸿蒙OS),这个系统就是目前华为手机上所搭载的鸿蒙系统的学名,他的本质就是基于OpenHarmony外挂安卓的AOSP后的手机系统。 它的本质实际上就是在OpenHarmony的基础上外挂AOSP+视图层,用以兼容安卓APP的生态应用。 由于在应用层以及生态层都要高度依赖安卓APP,现阶段的鸿蒙OS根本无法发挥出其应有的实力。 站在狭义的角度上来看,你说现在的HarmonyOS就是一个安卓套壳,确实也没啥问题,因为安卓存在的优点和缺点,HarmonyOS也一并继承。 比如需要虚拟机,而虚拟机都是一边编译,一边执行,执行效率比较低,这个核心底层的问题是没法解决的。 而这也是目前安卓系统会出现间歇性卡顿的核心原因之一(其他做法本质上都是治标不治本),到目前为止,鸿蒙OS也无法完全改变。 只是华为在底层代码方面优化的比较深入,在综合体验上相对其他安卓手机要更好一些。

示例代码:HarmonyOS应用开发

以下是一个简单的HarmonyOS应用示例,展示了如何使用分布式数据管理:

import { Ability } from '@ohos.application';
import { DataAbilityHelper } from '@ohos.data.dataAbility';

class MainAbility extends Ability {
    onCreate() {
        console.log("MainAbility onCreate");
    }

    onDestroy() {
        console.log("MainAbility onDestroy");
    }

    onWindowStageCreate() {
        console.log("MainAbility onWindowStageCreate");
        this.window.setContent("MainComponent");
        this.setupDistributedData();
    }

    setupDistributedData() {
        const helper = DataAbilityHelper.creator(this.context);
        const uri = 'dataability:///com.example.provider/user';
        const values = {
            'name': 'John Doe',
            'age': 30
        };

        helper.insert(uri, values).then((id) => {
            console.log("Data inserted with ID: " + id);
        }).catch((err) => {
            console.error("Data insert failed: " + err);
        });
    }
}

export default MainAbility;

该示例展示了如何在HarmonyOS中使用分布式数据管理,将数据存储在分布式数据库中。

第四章:HarmonyOS NEXT

HarmonyOS NEXT是鸿蒙操作系统的最新迭代,进一步提升了系统的性能和扩展性。HarmonyOS NEXT引入了一些新的技术和特性,如增强的AI功能、更强的分布式能力和更好的开发者工具。 在HarmonyOS基础上剔除安卓(AOSP)后的产品,属于全新的手机系统,是鸿蒙系统的未来形态。 Harmony OS NEXT,也被称为纯血鸿蒙。这个系统就不再兼容安卓生态。 所以,安卓上的种种弊端都不复存在,比如上面提到的虚拟机的问题,在Harmony OS NEXT上就完全被方舟编译器替代。 但是它所面临的最大的问题就是应用生态的问题,这同样也是所有“新系统”所面临的共同的问题。 在鸿蒙系统问世之前,其实已经有很多系统在试图挑战苹果iOS以及安卓的地位,其中最出名的莫过于微软的WP系统。 WP系统最后之所以失败,归根结底就是应用生态体系并未建立。但是,就目前的发展态势而言,华为早就做好了充分的准备。

示例代码:HarmonyOS NEXT应用开发

以下是一个HarmonyOS NEXT应用示例,展示了如何使用增强的AI功能:

import { Ability } from '@ohos.application';
import { ImageClassifier } from '@ohos.ai';

class MainAbility extends Ability {
    onCreate() {
        console.log("MainAbility onCreate");
    }

    onDestroy() {
        console.log("MainAbility onDestroy");
    }

    onWindowStageCreate() {
        console.log("MainAbility onWindowStageCreate");
        this.window.setContent("MainComponent");
        this.setupAI();
    }

    setupAI() {
        const classifier = new ImageClassifier();
        classifier.loadModel('model/path').then(() => {
            classifier.classifyImage('image/path').then((result) => {
                console.log("Image classification result: " + result);
            }).catch((err) => {
                console.error("Image classification failed: " + err);
            });
        }).catch((err) => {
            console.error("Model loading failed: " + err);
        });
    }
}

export default MainAbility;

该示例展示了如何在HarmonyOS NEXT中使用增强的AI功能进行图像分类。

第五章:OpenHarmony与HarmonyOS的比较

OpenHarmony和HarmonyOS虽然共享相同的核心技术,但它们之间存在一些关键区别:

  1. 开源与闭源:OpenHarmony是完全开源的,任何人都可以查看、修改和分发代码。而HarmonyOS包含一些闭源组件,仅供华为内部使用。
  2. 功能差异:HarmonyOS在OpenHarmony的基础上增加了一些高级功能,如分布式软总线、分布式数据管理和增强的AI功能。
  3. 生态系统:HarmonyOS拥有更丰富的生态系统,支持更多的设备和应用场景。

示例代码:比较示例

以下是一个示例,展示了如何在OpenHarmony和HarmonyOS中实现相同的功能,并对比两者的实现方式:

OpenHarmony 示例代码

import { Ability } from '@ohos.application';
import { Text, Component } from '@ohos.arkui';

class MainAbility extends Ability {
    onCreate() {
        console.log("MainAbility onCreate");
    }

    onDestroy() {
        console.log("MainAbility onDestroy");
    }

    onWindowStageCreate() {
        console.log("MainAbility onWindowStageCreate");
        this.window.setContent("MainComponent");
    }
}

@Component
class MainComponent {
    render() {
        return (
            <div>
                <Text value="Hello, OpenHarmony!" />
            </div>
        );
    }
}

export default MainAbility;

HarmonyOS 示例代码

import { Ability } from '@ohos.application';
import { DataAbilityHelper } from '@ohos.data.dataAbility';

class MainAbility extends Ability {
    onCreate() {
        console.log("MainAbility onCreate");
    }

    onDestroy() {
        console.log("MainAbility onDestroy");
    }

    onWindowStageCreate() {
        console.log("MainAbility onWindowStageCreate");
        this.window.setContent("MainComponent");
        this.setupDistributedData();
    }

    setupDistributedData() {
        const helper = DataAbilityHelper.creator(this.context);
        const uri = 'dataability:///com.example.provider/user';
        const values = {
            'name': 'John Doe',
            'age': 30
        };

        helper.insert(uri, values).then((id) => {
            console.log("Data inserted with ID: " + id);
        }).catch((err) => {
            console.error("Data insert failed: " + err);
        });
    }
}

export default MainAbility;

通过比较这两个示例,可以看出HarmonyOS提供了更多的高级功能,使开发者能够更轻松地实现复杂的分布式应用。

第六章:HarmonyOS NEXT的创新和改进

HarmonyOS NEXT在HarmonyOS的基础上进行了多项创新和改进,提升了系统的性能和扩展性。

6.1 增强的AI功能

HarmonyOS NEXT引入了增强的AI功能,使得开发者能够更轻松地集成和使用AI技术。

示例代码:AI应用开发

import { Ability } from '@ohos.application';
import { ImageClassifier } from '@ohos.ai';

class MainAbility extends Ability {
    onCreate() {
        console.log("MainAbility onCreate");
    }

    onDestroy() {
        console.log("MainAbility onDestroy");
    }

    onWindowStageCreate() {
        console.log("MainAbility onWindowStageCreate");
        this.window.setContent("MainComponent");
        this.setupAI();
    }

    setupAI() {
        const classifier = new ImageClassifier();
        classifier.loadModel('model/path').then(() => {
            classifier.classifyImage('image/path').then((result) => {
                console.log("Image classification result: " + result);
            }).catch((err) => {
                console.error("Image classification failed: " + err);
            });
        }).catch((err) => {
            console.error("Model loading failed: " + err);
        });
    }
}

export default MainAbility;

通过这个示例,可以看出HarmonyOS NEXT提供了更强大的AI功能,方便开发者进行AI应用的开发。

6.2 更强的分布式能力

HarmonyOS NEXT进一步提升了系统的分布式能力,使得不同设备之间的协同工作更加高效。

示例代码:分布式应用开发

import { Ability } from '@ohos.application';
import { DeviceManager } from '@ohos.device';

class MainAbility extends Ability {
    onCreate() {
       

 console.log("MainAbility onCreate");
    }

    onDestroy() {
        console.log("MainAbility onDestroy");
    }

    onWindowStageCreate() {
        console.log("MainAbility onWindowStageCreate");
        this.window.setContent("MainComponent");
        this.setupDistributedDevices();
    }

    setupDistributedDevices() {
        const manager = new DeviceManager();
        manager.getDevices().then((devices) => {
            devices.forEach((device) => {
                console.log("Found device: " + device.name);
            });
        }).catch((err) => {
            console.error("Failed to get devices: " + err);
        });
    }
}

export default MainAbility;

通过这个示例,可以看出HarmonyOS NEXT在设备管理和分布式协作方面的增强,使得开发者能够更轻松地开发跨设备应用。

第七章:总结

通过对OpenHarmony、HarmonyOS和HarmonyOS NEXT的深入解析,我们可以看出它们在架构、功能和应用场景上的区别和联系。OpenHarmony作为开源版本,为开发者提供了基础的开发平台;HarmonyOS在此基础上增加了高级功能,适用于更多的设备和场景;HarmonyOS NEXT则进一步提升了系统的性能和扩展性,特别是在AI和分布式能力方面的创新。

在实际开发中,开发者应根据具体的需求和应用场景,选择合适的版本进行开发,并灵活运用上述示例中的技术和方法,确保应用的高性能和高稳定性。希望本文的内容能为开发者提供有价值的参考,助力鸿蒙操作系统的开发和推广。


欢迎点赞|关注|收藏|评论,您的肯定是我创作的动力