HarmonyOS 开发 Java 与 ArkTS 如何抉择?

本文详细分析 Java 与 ArkTS 在 HarmonyOS 开发过程的区别,力求解答学员的一些困惑。

何为 HarmonyOS?

在讨论语言的差异时,我们先了解下什么是 HarmonyOS。华为官方是这么解释 HarmonyOS 的:


“鸿蒙操作系统”特指华为智能终端操作系统。“鸿蒙操作系统”具有以下三大特征:一是一套操作系统可以满足大大小小设备需求,实现统一OS,弹性部署;二是搭载该操作系统的设备在系统层面融为一体、形成超级终端,让设备的硬件能力可以弹性扩展,实现设备之间硬件互助,资源共享;三是面向开发者,实现一次开发,多端部署。

HarmonyOS 就是 “鸿蒙操作系统” 的英文名,也简称为 “鸿蒙 OS”,是基于 OpenHarmony、AOSP 等开源项目的商用版本。

这里需要注意:

  • 一是 HarmonyOS 不是开源项目,而是商用版本。

  • 二是 HarmonyOS 手机和平板之所以能运行 Android 程序,是因为 HarmonyOS 实现了现有 Android 生态应用(即 AOSP)的运行。

当然,HarmonyOS 的志愿远非如此,未来有可能会完全剥离掉 AOSP(详见 HarmonyOS Next 项目),当然,其结果必然是不再兼容 Android,无法在 HarmonyOS 上运行 Android 程序。

何时发布 HarmonyOS Next?

在今年的 HDC 2023 上,华为宣布了 HarmonyOS NEXT 开发者预览版。开发者如果想体验到 HarmonyOS NEXT,估计要等到明年的第一季度。

HarmonyOS NEXT 除了剥离掉 AOSP 之外,可能是完全只使用自家的 LiteOS 内核。

当然,决定一个系统是否成功,看得是这个系统的生态。如果一个操作系统,连几款像样的应用都没有,自然是不能算成功的。一个良性的操作系统生态,必然是一个广大软件厂商都愿意投入的生态。这也是为什么这么多年 Windows 在国内大行其道,主要还是因为那些国产的 Linux 系统始终没法提供完整的办公体验,比如像这些微信、QQ、Office 这类常用的软件,都没有很好在 Linux 系统上得到良好的支持。

从当前看,HarmonyOS 兼容 Android 就是一个非常成功的策略,即提升了自己的知名度,又能无缝接入 Android 生态。

HarmonyOS NEXT 何时能够成为主流?那就要看鸿蒙的生态何时能够真正的深入人心,看各大软件厂商投资鸿蒙的进度。不过好消息是,近日有消息称网易、美团等企业已经纷纷开辟了鸿蒙的开发岗位,同程旅行、宝宝巴士也宣布启动鸿蒙原生应用开发。相信未来鸿蒙的生态会越来越好。

HarmonyOS 编程语言的发展

前面铺垫了这么多,最终是为了回归到 “编程语言” 这个话题上来。HarmonyOS 的编程语言的发展,是随着 HarmonyOS 的发展而演进的。

早期的 HarmonyOS 支持的开发语言包括 JS(JavaScript)、C/C++。其中,JS 主要用于应用开发,而 C/C++ 主要用于设备开发。因为,早期的 HarmonyOS 只支持手表等智能穿戴设备,所以,用 JS 是能够胜任的。

从 HarmonyOS 2 开始,HarmonyOS 开始兼容 Android,引入了 Java 开发语言,能够支持手机、平板、智能穿戴、智慧屏、车机、PC、智能音箱、耳机、AR/VR 眼镜等多种终端设备,提供全场景(移动办公、运动健康、社交通信、媒体娱乐等)业务能力。此时的 HarmonyOS 才算真正意义上的 “鸿蒙操作系统”,因为已经具有 “鸿蒙操作系统” 的三大特征。

从 HarmonyOS 3 开始,引入了华为自研的 ArkTS 开发语言(前身是 eTS)、方舟编译器等。ArkTS 基于 TypeScript(简称 TS)语言扩展而来,是 TS 的超集。其最大的亮点是,ArkTS 在 TS 基础上主要扩展了声明式 UI 能力(即 ArkUI),让开发者以更简洁、更自然的方式开发高性能应用。

但比较遗憾的是,直到 HarmonyOS 4,ArkTS 开发语能实现的功能还是比较有限。甚至无法兑现 “鸿蒙操作系统” 三大特征的承诺。具体表现为

  • 不支持多设备,只支持 “Phone”;
  • 没有相机等功能的开发;
  • 没有平行视界;
  • 没有 AI 功能;
  • 没有流转、跨端迁移和多端协同;
  • 等等。

总之,ArkTS 现阶段上能实现的功能还不如 Java 强大。

HarmonyOS 编程语言的选择

在了解上述 HarmonyOS 编程语言的区别之后,相信各位对于 HarmonyOS 编程语言的选择有了自己的判断能力。学员可以综合考虑以下几个方面。

1、个人的偏好

开发者对于编程语言是有一定的偏好的,选 ArkTS 或是 Java 也是可以尊重个人的喜好。

如果你熟悉 Java 或者 Android 则可以选 Java;如果你熟悉 JS 或者 TS,就可以选 ArkTS。

2、职业的需要

如果想要实现一个强大的完整的 HarmonyOS 应用功能,那么现阶段只有 Java 能做到。ArkTS 还处在初级阶段。

如果你是纯粹想学习一门新语言,想不断跟随语言的演进,那么 ArkTS 也是不错的选择。从未来发展上看,HarmonyOS NEXT 有可能会将 ArkTS 作为主力开发语言。

3、我个人的选择

对于我个人而言,不做选择题,我全要,因为我个人职业决定了。Java 是我司以及大多数互联网公司的主力开发语言。无论是后台、前端、还是移动开发,Java 都能胜任大部分工作。所以学一门语言,能够解决公司项目里面大部分的问题,何乐而不为呢?

为了能让大家更好的学习鸿蒙 (Harmony OS) 开发技术,这边特意整理了《鸿蒙 (Harmony OS)开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05

《鸿蒙 (Harmony OS)开发学习手册》

入门必看:https://qr21.cn/FV7h05

  1. 应用开发导读(ArkTS)
  2. 应用开发导读(Java)

HarmonyOS 概念:https://qr21.cn/FV7h05

  1. 系统定义
  2. 技术架构
  3. 技术特性
  4. 系统安全

如何快速入门:https://qr21.cn/FV7h05

  1. 基本概念
  2. 构建第一个ArkTS应用
  3. 构建第一个JS应用
  4. ……

开发基础知识:https://qr21.cn/FV7h05

  1. 应用基础知识
  2. 配置文件
  3. 应用数据管理
  4. 应用安全管理
  5. 应用隐私保护
  6. 三方应用调用管控机制
  7. 资源分类与访问
  8. 学习ArkTS语言
  9. ……

基于ArkTS 开发:https://qr21.cn/FV7h05

  1. Ability开发
  2. UI开发
  3. 公共事件与通知
  4. 窗口管理
  5. 媒体
  6. 安全
  7. 网络与链接
  8. 电话服务
  9. 数据管理
  10. 后台任务(Background Task)管理
  11. 设备管理
  12. 设备使用信息统计
  13. DFX
  14. 国际化开发
  15. 折叠屏系列
  16. ……

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/204737.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java Scheduled定时任务(二)——开启多线程定时任务

我们在Java Scheduled定时任务中已经学到了如何开启定时任务,但却在同时开启多个定时任务的时候,遇到了新的问题,Scheduled定时任务是单线程的,无法满足同一个时间开启多个定时任务,因此,我们进行了如下调整…

视频集中存储/智能分析融合云平台EasyCVR平台接入rtsp,突然断流是什么原因?

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

Halcon 机械视觉 使用仿射变换 机械手实现孔位定位

要推算机械手平面坐标系A与相机平面坐标系B的关系,我们可以首先找到两个平面坐标系之间的平移量和旋转量。 平移量:选择一个公共的参考点,比如某个标志物,假设在坐标系A中的坐标为(Ax, Ay),在坐标系B中的坐标为(Bx, B…

GD32F303移植RT-Thread

我的平台: 芯片:GD32F303CCT6 编译器:KEIL5 一、下载keil专用 RT-Thread 安装包 https://www.keil.arm.com/packs/ 。。。。 。。。。 二、准备一个干净的GD32F303裸机工程,我就增加了串口功能 三、开始移植 1.rt-thread系统…

微信管理神器,一起看看能解决哪些问题?

对于很多公司的销售来说,最大的一个特点就是需要进行外出拜访客户,很多的时候,尤其是在出差或者是外出的时候,我们不能及时的回复客户消息,导致客户流失。 所以我们需要在手机上随时能管理我们的客户,并且第…

Java网络编程——非阻塞通信

对于用ServerSocket以及Socket编写的服务器程序和客户程序,它们在运行过程中常常会阻塞。例如当一个线程执行ServerSocket的accept()方法时,假如没有客户连接,该线程就会一直等到有了客户连接才从accept()方法返回。再例如当线程执行Socket的…

【Java 基础】08 面向对象

面向对象是一种程序设计范式,它以对象为中心,将数据和操作数据的方法组织在一起。 Java 正是一门面向对象的编程语言,它的设计理念强调代码的重用性、可维护性和可扩展性。 本文将简要介绍Java面向对象编程的基本概念和特性。 1. 对象和类…

使用 WITH 语句和临时表

文章目录 WITH 语句和临时表员工部门案例(单个 WITH 查询)建表:写入数据:使用WITH查询 扩展案例:员工、部门、薪水和级别(多个 WITH 查询)建表和插入数据:使用多个WITH查询 结语 WIT…

python入门级简易教程

Python是一种高级编程语言,由Guido van Rossum于1991年创建。它是一种通用的、解释型的、高级的、动态的、面向对象的编程语言。 Python的编程哲学是简洁明了,强调代码的可读性和简洁性,使开发人员能够快速开发出正确的代码。Python被广泛用…

Chart 5 性能优化概述

文章目录 前言5.1 可移植性5.2 优化梗概5.3 OpenCL 移植的初始评估5.4 将CPU代码移植到OpenCL GPU5.5 并行化GPU和CPU工作负载5.6 瓶颈分析5.6.1 识别瓶颈5.6.2 解决瓶颈 5.7 API层面性能优化5.7.1 API函数调用的正确安排5.7.2 使用基于事件驱动的pipeline5.7.3 内核编译和构建…

2023-12-04 AIGC-Stable Diffusion和SadTalker-搭建及使用

摘要: 2023-12-04 AIGC-SadTalker-搭建及使用 代码仓库: https://github.com/Stability-AI/stablediffusion https://github.com/camenduru/stable-diffusion-webui-colab https://github.com/OpenTalker/SadTalker https://github.com/adofsauron/SadTalker-Video-Lip-Sync 文…

0基础学习云计算难吗?

很多人经常会问云计算是什么?云计算能干什么?学习云计算能做什么工作?其实我们有很多人并不知道云计算是什么,小知今天来给大家讲讲学习云计算能做什么。 中国的云计算行业目前正处于快速发展阶段,随着互联网和数字化…

人脸识别安卓主板_MTK方案智能闸机门禁工业安卓主板定制开发

人脸识别主板广泛应用于各个领域,包括人脸支付系统、人脸识别监控系统、写字楼办公楼门禁闸机、校园、地铁、住宅门禁、考勤机、智能门锁、广告机、售卖机等。 主板基于联发科MTK方案,并由行业PCBA和MTK的核心板组成。根据产品需求,可以选择…

7、类型转换构造、析构、深拷贝、类的静态成员

1、类型转换构造 |自定义转换 利用一个已定义的对象,来定义另一个不同类型的对象 实现从源类型到目标类型的隐式类型转换的目的 总结下已知构造,包括类型转换构造 如下,如果Person给Human赋值时,Person有私有变量,则需要在Pers…

浅聊JAVA开发下环境部署与使用工具的安装与部署

Java开发环境的部署涉及到安装Java Development Kit(JDK)、配置系统环境变量、选择一个集成开发环境(IDE)等步骤。以下是一般情况下的Java开发环境部署步骤: 安装Java Development Kit (JDK): 访问 Oracle JDK下载页面…

qt creator配置opencv库 (MSVC版本)

目录 1. MSVC版本 1.1 使用cmake编译opencv 1.2 再使用visual studio 2019生成opencv的lib,dll 1.3 配置opencv的系统环境变量 1.4 新建qt项目 1. MSVC版本 1.1 使用cmake编译opencv 1.2 再使用visual studio 2019生成opencv的lib,dll 1.3 配置opencv的系统环境变量 D:…

Educational Codeforces Round 159 (Div. 2) A~E

A.Binary lmbalance(思维) 题意: 给出一个01字符串,你可以对字符串进行无限次下列操作: 选择一个位置 i ( 1 ≤ i ≤ ∣ s ∣ − 1 , |s|为字符串s的长度 ) i(1 \le i \le |s| - 1,\text{|s|为字符串s的长度}) i(1≤…

深度学习实战66-基于计算机视觉的自动驾驶技术,利用YOLOP模型实现车辆区域检测框、可行驶区域和车道线分割图

大家好,我是微学AI,今天给大家介绍一下深度学习实战66-基于计算机视觉的自动驾驶技术,利用YOLOP模型实现车辆区域检测框、可行驶区域和车道线分割图。本文我将介绍自动驾驶技术及其应用场景,并重点阐述了基于计算机视觉技术下的自动驾驶。自动驾驶技术是一种利用人工智能和…

Linux报too many open files的解决方案及 lsof、sysctl 命令介绍

Too many open files in system 问题处理 服务器异常: 一串的etc下的shell文件报 /etc/profile.d/bash_completion.sh: Too many open files in system 查看当前操作系统允许打开的文件数 # 用户级查看: ulimit -n # 系统级查看: cat /pro…

Java实现屏幕截图程序(二)

本文是继Java实现屏幕截图程序(一)之后进行加工的,主要逻辑是依靠javafx界面进行屏幕范围选择和截图图片显示,在日常工作中较为适用,下面把代码分享给大家。 以下是JavaFX实现的简单选择界面截图程序代码: 屏幕拖动监听器,截图后的界面可拖动就靠它: import javafx.e…