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

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

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

相关文章

<MySQL> 什么是JDBC?如何使用JDBC进行编程?

目录 一、JDBC是什么? 二、JDBC常用接口和类 2.1 DataSource 2.2 Connection 2.3 Statement 2.4 ResultSet 三、JDBC的使用 3.1 获得数据库驱动包 3.2 添加到项目依赖 3.3 描述数据库服务器 3.4 建立数据库连接 3.6 执行SQL语句和接收返回数据 3.7 释放…

搭建内部知识库,解决企业内部琐碎信息问题

企业内部面临着大量琐碎的信息,这些信息可能分散在各个部门、员工之间,导致查找和共享变得困难。这种情况下,搭建一个内部知识库可以解决这一问题。通过内部知识库,企业可以将琐碎的信息整理、分类,并提供一个集中存储…

python之使用深度学习创建自己的表情符号

目录 部署项目1、首先运行train.py训练模型2、接下运行gui.py测试 一、使用 CNN 进行面部情绪识别二、GUI 代码和表情符号映射 在这个深度学习项目中,我们将对人类面部表情进行分类,以过滤和映射相应的表情符号或头像。 数据集(面部表情识别&…

【ARM Trace32(劳特巴赫) 使用介绍 5 -- Trace32 scan dump 详细介绍】

文章目录 1.1 JTAG 测试逻辑架构1.2 D型扫描触发器1.2.1 全扫描介绍1.3 IR 寄存器1.4 TDR(Test data registers)1.4.1 TDR 的实现1.4.1.1 Bypass Register1.4.1.2 Boundary-scan register1.5 Scan Dump1.5.1 soft fusion1.1 JTAG 测试逻辑架构 图 1-1 片上测试逻辑概念图 如前面…

基于STM32的多组外部中断(EXTI)的优化策略与应用

在某些嵌入式应用中,可能需要同时处理多个外部中断事件。STM32系列微控制器提供了多组外部中断线(EXTI Line),可以同时配置和使用多个GPIO引脚作为外部中断触发器。为了有效管理和处理多组外部中断,我们可以采取一些优…

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

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

zookeperkafka学习

1、why kafka 优点 缺点kafka 吞吐量高,对批处理和异步处理做了大量的设计,因此Kafka可以得到非常高的性能。延迟也会高,不适合电商场景。RabbitMQ 如果有大量消息堆积在队列中,性能会急剧下降每秒处理几万到几十万的消息。如果…

若依框架数据源切换为pg库

一 切换数据源 在ruoyi-admin项目里引入pg数据库驱动 <dependency><groupId>org.postgresql</groupId><artifactId>postgresql</artifactId><version>42.2.18</version> </dependency>修改配置文件里的数据源为pg spring:d…

交通 | 神奇动物在哪里?Operations Research经典文章

论文作者&#xff1a;Robert G. Haight, Charles S. Revelle, Stephanie A. Snyder​ 论文原文&#xff1a;Robert G. Haight, Charles S. Revelle, Stephanie A. Snyder, (2000) An Integer Optimization Approach to a Probabilistic Reserve Site Selection Problem. Operat…

解决java在idea运行正常,但是打成jar包后中文乱码问题

目录 比如&#xff1a; 打包命令使用utf-8编码&#xff1a; 1.当在idea中编写的程序,运行一切正常.但是当被打成jar包时,执行的程序会中文乱码.产生问题的原因和解决方案是什么呢? 一.问题分析 分别使用idea和jar包形式打印出System中所有的jvm参数---代码如下: public static…

H5ke11--1登录界面一直保存--用本地localStorage存储

目录 代码详解 localStage优点 :一直保存着 注意事项: storage属性们 代码详解 ke8学校陈老师H5-CSDN博客文章浏览阅读76次。实现H5中新增的三个元素&#xff1a;forEach的使用方法。https://blog.csdn.net/m0_72735063/article/details/134019012即此之后 当然可以分为按…

快速入门:构建您的第一个 .NET Aspire 应用程序

##前言 云原生应用程序通常需要连接到各种服务&#xff0c;例如数据库、存储和缓存解决方案、消息传递提供商或其他 Web 服务。.NET Aspire 旨在简化这些类型服务之间的连接和配置。在本快速入门中&#xff0c;您将了解如何创建 .NET Aspire Starter 应用程序模板解决方案。 …

Postman接收列表、数组参数@RequestParam List<String> ids

示例如下: 接口定义如下: GetMapping(value "/queryNewMoviePath")public List<Map<String, Object>> queryNewMoviePath(RequestParam List<String> ids ) {return service.queryNewMoviePath(ids);}postman中测试如下&#xff1a; http://loc…

MFA多因子认证

什么是多因子认证&#xff08;MFA&#xff09;&#xff1f;为什么需要MFA&#xff1f; 同义词 多因子认证或者多因素验证 [尤其是需要做等级保护测评的时候需要用到] 摘要 多因子认证MFA&#xff08;Multi Factor Authentication&#xff09;是一种安全认证过程&#xff0c;需…

k8s-部署Redis-cluster(TLS)

helm pull bitnami/redis-cluster v8.3.8拉取源码生成证书 git clone https://github.com/redis/redis.git #文档 https://redis.io/docs/management/security/encryption/#getting-started生成你的TLS证书用官网的工具生成 1 Run ./utils/gen-test-certs.sh 生成根CA和服务…

springboot321基于java的校园服务平台设计与开发

交流学习&#xff1a; 更多项目&#xff1a; 全网最全的Java成品项目列表 https://docs.qq.com/doc/DUXdsVlhIdVlsemdX 演示 项目功能演示&#xff1a; ————————————————

【双指针】复写0

复写0 1089. 复写零 - 力扣&#xff08;LeetCode&#xff09; 给你一个长度固定的整数数组 arr &#xff0c;请你将该数组中出现的每个零都复写一遍&#xff0c;并将其余的元素向右平移。 注意&#xff1a;请不要在超过该数组长度的位置写入元素。请对输入的数组 就地 进行上…

python趣味编程-5分钟实现一个益智数独游戏(含源码、步骤讲解)

Puzzle Game In Python是用 Python 编程语言Puzzle Game Code In Python编写的,有一个 4*4 的棋盘,有 15 个数字。然后将数字随机洗牌。 在本教程中,我将教您如何使用Python 创建记忆谜题游戏。 Python Puzzle Game游戏需要遵循以下步骤,首先是将图块数量移动到空的图块空…

软件开发、网络空间安全、人工智能三个方向的就业和前景怎么样?哪个方向更值得学习?

软件开发、网络空间安全、人工智能这三个方向都是当前及未来的热门领域&#xff0c;每个领域都有各自的就业前景和价值&#xff0c;以下是对这三个方向的分析&#xff1a; 1、软件开发&#xff1a; 就业前景&#xff1a;随着信息化的加速&#xff0c;软件开发的需求日益增长。…

重生之我是一名程序员 34

哈喽啊大家晚上好&#xff01; 今天给大家带来的知识是——库函数qsort。首先&#xff0c;给大家介绍一下qsort函数&#xff0c; qsort函数是C标准库中的一种排序函数&#xff0c;用于对数组中的元素进行快速排序。它接受四个参数&#xff1a;待排序数组的基地址&#xff0c;数…