HarmonyOS开发Java与ArkTS如何抉择

在“鸿蒙系统实战短视频App 从0到1掌握HarmonyOS”视频课程中,很多学员来问我,在HarmonyOS开发过程中,面对Java与ArkTS,应该选哪样?

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

何为HarmonyOS?

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


“鸿蒙操作系统”特指华为智能终端操作系统。“鸿蒙操作系统”具有以下三大特征:

  

一是一套操作系统可以满足大大小小设备需求,实现统一OS,弹性部署;

二是搭载该操作系统的设备在系统层面融为一体、形成超级终端,让设备的硬件能力可以弹性扩展,实现设备之间硬件互助,资源共享;

三是面向开发者,实现一次开发,多端部署。

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

这里需要注意:

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

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

详细参见我的另外一篇文章《一文搞懂什么是鸿蒙、OpenHarmony、HarmonyOS》。

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

何时发布HarmonyOS Next?

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

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

HarmonyOS NEXT

当然,决定一个系统是否成功,看得是这个系统的生态。如果一个操作系统,连几款像样的应用都没有,自然是不能算成功的。一个良性的操作系统生态,必然是一个广大软件厂商都愿意投入的生态。这也是为什么这么多年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都能胜任大部分工作。所以学一门语言,能够解决公司项目里面大部分的问题,何乐而不为呢?

其次,ArkTS也是目前我正在使用的语言。因为我平时也有使用Vue.js 3、Angular,因此对于TS还是比较熟悉,上手ArkTS并不困难。在我的开源系列教程“跟老卫学HarmonyOS开发” 里面,很多示例都是采用ArkTS、ArkUI编写的。

更多HarmonyOS参考资料

以下是笔者编写的一些学习资料,可以作为参考:

  • 《跟老卫学HarmonyOS开发》 开源免费教程:https://github.com/waylau/harmonyos-tutorial

  • 《鸿蒙HarmonyOS手机应用开发实战》(清华大学出版社):https://waylau.com/about-harmonyos-mobile-application-development-book/

  • 《鸿蒙HarmonyOS应用开发从入门到精通战》(北京大学出版社):https://github.com/waylau/harmonyos-tutorial

  • “鸿蒙系统实战短视频App 从0到1掌握HarmonyOS” :https://coding.imooc.com/class/674.html

笔者另外一本全新基于HarmonyOS 3.1、采用ArkTS编写的书籍《HarmonyOS应用开发入门》也将会清华大学出版社出版,近期将会面市。对ArkTS感兴趣的同学,可以关注下。

其他

本文同步至:https://waylau.com/how-to-choose-between-java-and-arkts-in-harmonyos-development

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【我和Python算法的初相遇】——体验递归的可视化篇

🌈个人主页: Aileen_0v0 🔥系列专栏:PYTHON数据结构与算法学习系列专栏💫"没有罗马,那就自己创造罗马~" 目录 递归的起源 什么是递归? 利用递归解决列表求和问题 递归三定律 递归应用-整数转换为任意进制数 递归可视化 画…

获取虎牙直播源

为了今天得LOL总决赛 然后想着下午看看 但是网页看占用高 就想起来有个直播源 也不复杂看了大概一个小时 没啥问题 进入虎牙页面只有 直接F12 网络 然后 看这个长条 一直在获取 发送 那就选中这个区间 找到都是数字这一条 如果直接访问的话会一直下载 我这都取消了 然后 打开…

ElasticSearch快速入门

一、全文检索 1、什么是全文检索 全文索引是一种通过对文本内容进行全面索引和搜索的技术。它可以快速的在大量文本数据中查找包含特定关键词或短语的文档,并返回相关的搜索结果。 全文检索广泛应用于各种信息管理系统和应用中,如搜索引擎、文档管理系…

「git 系列」git 如何存储代码的?

这里写自定义目录标题 git 文件存储位置git 数据模型示例分析分析前准备命令哈希值 具体示例 不同版本的提交,git 做了什么工作?snapshot vs delta-based vs backup参考资料 git 文件存储位置 想要了解如何存储,首先需要知道存储位置。 当我…

git diff相关命令

git diff相关命令 git diff git diff此命令比较的是工作目录中当前文件和暂存区中的文件差异,也就是修改之后还没有暂存起来的变化内容。因为后续要将工作目录中的文件添加到暂存区。 示例: 当前工作目录下有一个2.txt的文件,文件的内容是…

11 月 18 日 ROS 学习笔记——可视化和调试工具

文章目录 前言一、调试 ROS 节点1. gdb 调试器2. 在 ROS 节点启动时调用 gdb 调试器3. 在 ROS 节点启动时调用 valgrind 分析节点4. 设置 ROS 节点 core 文件转储5. 日志消息1). 输出日志消息2). 设置调试消息级别 二、检测系统状态1. rqt_graph2. 可视化坐标变换3. 保存与回放…

ChinaSoft 论坛巡礼 | 新兴系统软件论坛

2023年CCF中国软件大会(CCF ChinaSoft 2023)由CCF主办,CCF系统软件专委会、形式化方法专委会、软件工程专委会以及复旦大学联合承办,将于2023年12月1-3日在上海国际会议中心举行。 本次大会主题是“智能化软件创新推动数字经济与社…

IOS object-c大屏图表 PNChart 折线图 曲线图

折线图是排列在工作表的列或行中的数据可以绘制到折线图中。折线图可以显示随时间(根据常用比例设置)而变化的连续数据,因此非常适用于显示在相等时间间隔下数据的趋势。在折线图中,类别数据沿水平轴均匀分布,所有值数…

C语言运算符优先级

优先级表 优先级规则说明 符号的优先级是在混合运算中才讨论表中优先级号越小,优先级越高同一优先级中,看结合性 优先级注意事项 逻辑 与 优先级高于逻辑 或而表示同级逗号优先级最低从整体看,可以简单总结为:算术运算符 > …

大数据HCIE成神之路之数学(2)——线性代数

线性代数 1.1 线性代数内容介绍1.1.1 线性代数介绍1.1.2 代码实现介绍 1.2 线性代数实现1.2.1 reshape运算1.2.2 转置实现1.2.3 矩阵乘法实现1.2.4 矩阵对应运算1.2.5 逆矩阵实现1.2.6 特征值与特征向量1.2.7 求行列式1.2.8 奇异值分解实现1.2.9 线性方程组求解 1.1 线性代数内…

一起学docker系列之四docker的常用命令--系统操作docker命令及镜像命令

目录 前言1 操作 Docker 的命令1.1 启动 Docker1.2 停止 Docker1.3 重启 Docker1.4 查看 Docker 状态1.5 查看 Docker 所有命令的信息1.6 查看某个命令的帮助信息 2 操作镜像的命令2.1 查看所有镜像2.2 搜索某个镜像2.3 下载某个镜像2.4 查看镜像所占空间2.5 删除镜像2.6 强制删…

Java拼图游戏

运行出的游戏界面如下: 按住A不松开,显示完整图片;松开A显示随机打乱的图片。 User类 package domain;/*** ClassName: User* Author: Kox* Data: 2023/2/2* Sketch:*/ public class User {private String username;private String password…

(带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程

源码简介: 1、会员管理: 该系统分为三个级别的会员流程:总站管理员、代理与会员(会员有普通会员、中级会员和高级会员三个等级)。总站管理员可以添加代理用户并为其充值余额,代理用户可以为普通用户充值余…

ClickHouse建表优化

1. 数据类型 1.1 时间字段的类型 建表时能用数值型或日期时间型表示的字段就不要用字符串,全String类型在以Hive为中心的数仓建设中常见,但ClickHouse环境不应受此影响。 虽然ClickHouse底层将DateTime存储为时间戳Long类型,但不建议存储Long…

电子学会C/C++编程等级考试2021年12月(一级)真题解析

C/C++等级考试(1~8级)全部真题・点这里 第1题:输出整数部分 输入一个双精度浮点数f, 输出其整数部分。 时间限制:1000 内存限制:65536输入 一个双精度浮点数f(0 < f < 100000000)。输出 一个整数,表示浮点数的整数部分。样例输入 3.8889样例输出 3 答案: //参…

面向未来的自动化:拥抱机器人即服务(RaaS)

01. RaaS是什么&#xff1f; 对于希望实现业务流程自动化的公司来说&#xff0c;机器人通常是一笔巨大的资本支出。由于机器人非常昂贵&#xff0c;公司可能需要等待数年才能看到投资回报。正是由于这一现实&#xff0c;许多较小的组织无法投资机器人。 但一些机器人公司正在采…

报道 | 2023年12月-2024年2月国际运筹优化会议汇总

2023年12月-2024年2月召开会议汇总&#xff1a; The 16th Annual International Conference on Combinatorial Optimization and Applications (COCOA 2023) Location: Virtual Important dates: Conference: December 11, 2023 (Start) - December 13, 2023 (End) Details…

python图

有向图&#xff1a;图中的每条边都有方向的图叫有向图。此时&#xff0c;边的两个顶点有次序关系&#xff0c;有向边 < u,v>成为从顶点u到顶点v的一条弧&#xff0c;u成为弧尾&#xff08;始点&#xff09;&#xff0c;v成为弧头&#xff08;终点&#xff09;&#xff0c…

项目踩坑之面试遇到的问题及解决

第一点&#xff1a; 问题 遇到的问题之&#xff1a;在实现后台管理端-账户操作的时候&#xff0c;添加员工的时候如果重复添加同一个员工&#xff0c;会触发一个数据库唯一约束异常&#xff0c;但客户端无法清晰的理解这个错误&#xff0c;所以我们就对新增员工的代码进行try…

HUAWEI华为MateBook X 2020款i5集显(EUL-W19P)原装出厂Windows10系统

链接&#xff1a;https://pan.baidu.com/s/1eZuLjarWH2PjAWVqMWnzjQ?pwd2374 提取码&#xff1a;2374 原厂系统自带所有驱动、出厂主题壁纸、系统属性专属LOGO标志、Office办公软件、华为电脑管家等预装程序