We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
这里的讨论需要先确定对鸿蒙开发有一定的了解,才能展开有效的讨论,因此建议先阅读学习资料
从时间上:当下 jetbrains 的 roadmap 已经定下来,那就意味着至少到 25 年 Q1 之前,官方是不会有任何动作的。即便是 25H1 开始有支持的计划,那其实也够呛,按照以往的经验,alpha 至少半年,beta 至少一年……更何况,这是理想状况下了。
从技术上:其实很难真正实现对 ArkUI 的互操作性的支持。
从社区的角度,要想做到让鸿蒙真正的支持 cmp,无非就是给出一套和 Compose Web 一样的方案。
Jetbrains 是从两个方向来支持 web 的,一个是将 Compose 基于 Skia-WASM 绘制在 html-canvas 中;同时提供 Compose HTML 这套技术方案。
因此基于 Jetbrains 团队的历史决策惯性来说,大概率也是趋同于 Web:
目前 HarmonyOS 官方的 XComponent 的 NativeWindow 已经明确有对 OpenGL ES (demo)的支持,对 Vulkan(demo)的支持也有,但好像没 OpenGL ES 那么完善。因此二者都可以作为 Skia 的 Backend。 这方面理论上可以走完全的 Native,性能应该不低,特别是华为官方的Graphics Accelerate Kit有内置的插帧技术,所以流畅性应该也不是问题。
这方面不确定会用 ArkTS/JS 还是 仓颉 作为 Backend。二者对于 UI 的开发的支持都走 DSL(官方的名字是 ArkUI DSL 与 eDSL)的方案。 二者最终都会走方舟编译器编译成二进制,特别是 ArkTS,本质上根本就不是 JS+JSRuntime,而是编译成了方舟字节码+方舟运行时。 现在 ArkTS 还加入了多线程的支持: @Concurrent 修饰器,这已经是将 ArkTS 作为一门独立的语言来发展了。 官方自己的说法是会将 ArkTS 直接编译成更加高效的字节码(而不是先到 js 再到字节码),我不知道他们现在是否完整实现了? 因此如果想让 kotlin 足够快地运行再 harmonyos 设备上,就不该走方舟运行时,在方舟运行时里运行 kotlin 标准库的运行时,正如 kotlin 输出的 js 一样,臃肿缓慢,只是做到了能用,性能还不如 kotlin/wasm。 再换种思路,如果让 Kotlin 提供一种全新的 target: ArkTS,它也许会有比 kotlin/js 更好的性能,但根本问题还是摆在那里:需要跑在方舟编译器上,包括 kotlin 的 stdlib…… 再说仓颉,仓颉综合来说与 Swift 很像,但正如官方不会把 kotlin 编译成 swift 一样,这样底层库的开发成本太高了,特别是并发、多线程相关的开发与维护。 综上,我有理由下结论:Jetbrians 不会把 “支持了 JS/TS 就是支持了 HarmonyOS” 作为一个目标。
这方面不确定会用 ArkTS/JS 还是 仓颉 作为 Backend。二者对于 UI 的开发的支持都走 DSL(官方的名字是 ArkUI DSL 与 eDSL)的方案。
二者最终都会走方舟编译器编译成二进制,特别是 ArkTS,本质上根本就不是 JS+JSRuntime,而是编译成了方舟字节码+方舟运行时。
现在 ArkTS 还加入了多线程的支持: @Concurrent 修饰器,这已经是将 ArkTS 作为一门独立的语言来发展了。
官方自己的说法是会将 ArkTS 直接编译成更加高效的字节码(而不是先到 js 再到字节码),我不知道他们现在是否完整实现了? 因此如果想让 kotlin 足够快地运行再 harmonyos 设备上,就不该走方舟运行时,在方舟运行时里运行 kotlin 标准库的运行时,正如 kotlin 输出的 js 一样,臃肿缓慢,只是做到了能用,性能还不如 kotlin/wasm。
再换种思路,如果让 Kotlin 提供一种全新的 target: ArkTS,它也许会有比 kotlin/js 更好的性能,但根本问题还是摆在那里:需要跑在方舟编译器上,包括 kotlin 的 stdlib……
再说仓颉,仓颉综合来说与 Swift 很像,但正如官方不会把 kotlin 编译成 swift 一样,这样底层库的开发成本太高了,特别是并发、多线程相关的开发与维护。
综上,我有理由下结论:Jetbrians 不会把 “支持了 JS/TS 就是支持了 HarmonyOS” 作为一个目标。
OH_
综合以上的讨论,可以发现不论是 kotlin/js 还是 kotlin/native,都不是好的选择。 可以说如果 Kotlin 想要做好对 HarmonyOS 的支持,所要付出的成本是非常高的,这已经与 Kotlin 的发展策略有冲突了,不是本文能预测的范围内。 我只能得出结论说 CMP 短期内别想支持 HarmonyOS;而把 Kotlin Native 作为一个原生开发的接口库还算有可能,拿来做 UI 开发就别想了。
The text was updated successfully, but these errors were encountered:
所以感觉还是 DUI + Kotlin Native 感觉更理想一点,可以发挥各个平台原生UI的优势 🙈 原生鸿蒙 10月8号 公测了
Sorry, something went wrong.
No branches or pull requests
参阅资料:
综合分析
从时间上:当下 jetbrains 的 roadmap 已经定下来,那就意味着至少到 25 年 Q1 之前,官方是不会有任何动作的。即便是 25H1 开始有支持的计划,那其实也够呛,按照以往的经验,alpha 至少半年,beta 至少一年……更何况,这是理想状况下了。
从技术上:其实很难真正实现对 ArkUI 的互操作性的支持。
从社区的角度,要想做到让鸿蒙真正的支持 cmp,无非就是给出一套和 Compose Web 一样的方案。
Jetbrains 是从两个方向来支持 web 的,一个是将 Compose 基于 Skia-WASM 绘制在 html-canvas 中;同时提供 Compose HTML 这套技术方案。
因此基于 Jetbrains 团队的历史决策惯性来说,大概率也是趋同于 Web:
OH_
开头的接口,都需要映射到 Kotlin 的开发中来。综合以上的讨论,可以发现不论是 kotlin/js 还是 kotlin/native,都不是好的选择。
可以说如果 Kotlin 想要做好对 HarmonyOS 的支持,所要付出的成本是非常高的,这已经与 Kotlin 的发展策略有冲突了,不是本文能预测的范围内。
我只能得出结论说 CMP 短期内别想支持 HarmonyOS;而把 Kotlin Native 作为一个原生开发的接口库还算有可能,拿来做 UI 开发就别想了。
The text was updated successfully, but these errors were encountered: