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内核。
当然,决定一个系统是否成功,看得是这个系统的生态。如果一个操作系统,连几款像样的应用都没有,自然是不能算成功的。一个良性的操作系统生态,必然是一个广大软件厂商都愿意投入的生态。这也是为什么这么多年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
相关文章:
HarmonyOS开发Java与ArkTS如何抉择
在“鸿蒙系统实战短视频App 从0到1掌握HarmonyOS”视频课程中,很多学员来问我,在HarmonyOS开发过程中,面对Java与ArkTS,应该选哪样? 本文详细分析Java与ArkTS在HarmonyOS开发过程的区别,力求解答学员的一些…...
“茶叶创新:爆改营销策略,三个月狂销2300万“
我的朋友去年制作了一款白茶,并在短短三个月内将其销售量推到了2300万的高峰。你相信吗? 这位朋友并没有任何茶叶方面的经验,他只是一个有着冒险精神的企业家。他先找到了一家代工厂,帮助他把他的茶叶理念转化为现实。 当他把茶叶…...
分享一个生成哈希值的C代码
代码是我在阅读assimp源码时看到的,不依赖任何第三方,可直接集成。 #pragma once #ifndef AI_HASH_H_INCLUDED #define AI_HASH_H_INCLUDED#ifdef __GNUC__ # pragma GCC system_header #endif#include <stdint.h> #include <string.h> #…...
【Windows 常用工具系列 11 -- 福昕PDF搜索高亮过的文本】
文章目录 福昕 PDF 搜索高亮过的文本 福昕 PDF 搜索高亮过的文本 在 pdf 文档阅读过程中,我们需要经常高亮一些文本,以方便下次阅读时找到重点。我这边使用的是 福昕PDF 阅读器,下面就介绍下如何在福昕阅读器中搜索已经高亮过的文本。...
(二)汇编语句组成
一个完整的 RISC-V 汇编程序有多条 语句(statement) 组成。 一条典型的 RISC-V 汇编 语句 由 3 部分组成: 1.标签 List item label(标签): 标签是标识程序位置的记号。通常定义一个名称然后加上":"后缀。…...
Linux C 网络编程概述
网络编程 计算机网络概述分类网络体系结构通信协议通信流程网络通信帧格式以太网帧格式分析ARP 协议分析IP 数据报分析IP分类IP 分配子网掩码 TCP 段分析 TCP三次握手协议 ⭐TCP四次挥手协议 ⭐ TCP编程基于 TCP 客户端编程-步骤说明基于 TCP 服务器端编程-步骤说明基于 TCP 服…...
腾讯云标准型s5和s6有什么区别?CPU处理器有差异吗?
腾讯云服务器CVM标准型S5和S6有什么区别?都是标准型云服务器,标准型S5是次新一代云服务器规格,标准型S6是最新一代的云服务器,S6实例的CPU处理器主频性能要高于S5实例,同CPU内存配置下的标准型S6实例要比S5实例性能更好…...
WPF TextBox实现placeholder
WPF里TextBox没有placeholder,需要自己实现,本篇博客介绍WPF TextBox实现placeholder,效果如下: 实现技巧是在 TextBox 控件的 Style 中使用触发器(Triggers)来显示和隐藏placeholder文本。xmal代码如下&am…...
UiPath Studio 2023.10 Crack
UiPath Studio是一款功能强大且用户友好的集成开发环境 (IDE),专为机器人流程自动化 (RPA) 设计。它由自动化技术领域的领先公司UiPath开发。 以下是 UiPath Studio 的一些主要功能和组件: 图形用户界面 (GUI):UiPath Studio 具有直观且用户友…...
SpringBoot——入门及原理
SpringBoot用来简化Spring应用开发,约定大于配置,去繁从简,是由Pivotal团队提供的全新框架。其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置(有特殊需求可以添加自己的配置覆盖默认配…...
js实现页面滚动时自动切换Sidebar标签,点击标签自动滚动页面
js实现页面滚动时自动切换Sidebar侧边导航标签,点击标签自动滚动页面 <van-sidebar class"sidebar" v-model"activeKey"><van-sidebar-item :title"i.title" click"onChange(i)" v-for"(i,k) in activeList&…...
Failed to load resource: net::ERR_UPLOAD_FILE_CHANGED 谷歌浏览器就会有这个问题 其他的浏览器没有
Failed to load resource: net::ERR_UPLOAD_FILE_CHANGED 10 10: Difficulties in file uploading through all browsers and applications...
微信小程序 prettier 格式化
一、安装prettier插件 二、打开设置 然后再打开setting.json 新增代码 {"editor.formatOnSave": true,"editor.defaultFormatter": "esbenp.prettier-vscode","prettier.documentSelectors": ["**/*.wxml", "**/*.wx…...
SystemVerilog学习 (10)——线程控制
一、概述 在实际硬件中,时序逻辑通过时钟沿来激活,组合逻辑的输出则随着输人的变化而变化。所有这些并发的活动在Verilog 的寄存器传输级上是通过initial和 always块语句、实例化和连续赋值语句来模拟的。为了模拟和检验这些语句块,测试平台使用许多并发执行的线程。在测试平台…...
【开题报告】基于SpringBoot的二手汽车交易平台的设计与实现
1.研究背景 随着社会经济的不断发展,二手汽车交易市场逐渐壮大,二手汽车交易平台作为一种重要的电子商务形式备受关注。本文基于Spring Boot框架,旨在设计与实现一个高效、安全、用户友好的二手汽车交易平台。本文将深入探讨二手汽车市场发展…...
Python 爬虫入门
文章目录 Python 爬虫入门requests 库beautifulsoup4库函数findall(),find()函数get() 爬虫实例 1:抓小说爬虫实例 2:抓豆瓣 top 250 的电影信息后记 Python 爬虫入门 Python 的爬虫功能使得程序员可以快速抓取并分析网页中的信息࿰…...
[ 加密 ] SHA256
SHA256 例程 一般文件的完整性要使用md5或者sha进行完整性校验,这里提供两个函数, intact_update_sha 是计算指定文件SHA值并保存到SHA文件 intact_check_sha 计算文件SHA值并和SHA文件进行对比 编译方法: gcc demo.c -lssl -lcrypto #…...
推荐一个windows上传linux服务器/linux服务器的docker镜像的工具,摆脱docker cp,以及解决常见问题。
Lrzsz,又称为lrz和lsz,是一个用于在Unix、Linux、macOS等操作系统上进行串行文件传输的工具。它支持基于X/Y/ZModem协议的文件传输,能够通过串口或者Telnet/SSH等网络连接进行文件传输。Lrzsz具有传输速度快、可靠性高、易于使用等特点&#…...
《QT从基础到进阶·三十五》QT插件实现侧边工具栏tabBar
tabBar是用QT插件实现的一个dll,对于插件的使用可以参考文章: 《QT从基础到进阶三十三》QT插件开发QtPlugin 源码放在文章末尾 该功能类似侧边工具栏,可以在该标签栏上添加自己开发的界面,实现代码如下: 1、所有功能…...
风丘电动汽车热管理方案 为您的汽车研发保驾护航
热管理技术作为汽车节能、提高经济性和保障安全性的重要措施,在汽车研发过程中具有重要作用。传统燃油汽车的热管理系统主要包括发动机、变速器散热系统和汽车空调,而电动汽车的热管理系统在燃油汽车热管理架构的基础之上,又增加了电机电控热…...
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...
WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...
Mobile ALOHA全身模仿学习
一、题目 Mobile ALOHA:通过低成本全身远程操作学习双手移动操作 传统模仿学习(Imitation Learning)缺点:聚焦与桌面操作,缺乏通用任务所需的移动性和灵活性 本论文优点:(1)在ALOHA…...
安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖
在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会࿰…...
MySQL 8.0 事务全面讲解
以下是一个结合两次回答的 MySQL 8.0 事务全面讲解,涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容,并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念(ACID) 事务是…...
【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看
文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...
MySQL 部分重点知识篇
一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键ÿ…...
嵌入式常见 CPU 架构
架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集,单周期执行;低功耗、CIP 独立外设;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel(原始…...
系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文通过代码驱动的方式,系统讲解PyTorch核心概念和实战技巧,涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...
