<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Way Lau</title>
    <description>The latest articles on DEV Community by Way Lau (@waylau521).</description>
    <link>https://dev.to/waylau521</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3269458%2Fcf1f5713-a42e-467c-9d0a-002a7d6e11f4.jpeg</url>
      <title>DEV Community: Way Lau</title>
      <link>https://dev.to/waylau521</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/waylau521"/>
    <language>en</language>
    <item>
      <title>The First HarmonyOS 6 AI Development Tutorial Is Now Available Online!</title>
      <dc:creator>Way Lau</dc:creator>
      <pubDate>Mon, 20 Oct 2025 00:24:01 +0000</pubDate>
      <link>https://dev.to/waylau521/the-first-harmonyos-6-ai-development-tutorial-is-now-available-online-4cn0</link>
      <guid>https://dev.to/waylau521/the-first-harmonyos-6-ai-development-tutorial-is-now-available-online-4cn0</guid>
      <description>&lt;p&gt;HarmonyOS officially announces: On October 22nd at 14:30, the special launch of Harmony Operating System 6 is coming!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcommunityfile-drcn.op.hicloud.com%2FFileServer%2FgetFile%2Fcmtybbs%2F042%2F413%2F002%2F0000000000042413002.20251020075506.81387469209204035141569628255045%3A20251020075906%3A2800%3A084252D83F7F1E1BF660768081427378CA1EFC2E8BB7A081874ABD0609FD3BA8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcommunityfile-drcn.op.hicloud.com%2FFileServer%2FgetFile%2Fcmtybbs%2F042%2F413%2F002%2F0000000000042413002.20251020075506.81387469209204035141569628255045%3A20251020075906%3A2800%3A084252D83F7F1E1BF660768081427378CA1EFC2E8BB7A081874ABD0609FD3BA8.png" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In fact, as early as September 25th, 2025, DevEco Studio 6.0.0 Release (6.0.0.858) was officially released, marking that the complete set of HarmonyOS development tools (including SDK and the development tool DevEco Studio) centered around API 20 have reached the Release state and are now officially available. Developers can now engage in HarmonyOS 6 application development based on these Release-state development tools.&lt;/p&gt;

&lt;p&gt;At this moment, coinciding with the official release of HarmonyOS 6, Lao Wei (a presumed instructor or developer) has created a video tutorial titled "HarmonyOS 6 AI Application Development," aiming to help you master the complete architectural capabilities for developing native HarmonyOS AI applications from scratch, through testing, to listing on the app store.&lt;/p&gt;

&lt;p&gt;This course, with "AI Scanning Application" as the main project thread, is a practical course designed to cultivate HarmonyOS AI development engineers. Utilizing HarmonyOS's native AI capabilities, the course demonstrates how to build a complete HarmonyOS AI application from scratch, showcasing the entire lifecycle of AI application development, testing, and listing. It combines the enhancement of development thinking and technology in a comprehensive and progressive manner, deeply integrating technology and business. Additionally, the course keeps pace with technological trends, emphasizing the introduction of new technologies and frameworks in HarmonyOS 6, such as AI-assisted programming, ArkTS language, ArkUI, network programming, security management, natural language understanding services, voice-based AI services, visual AI services, and more, integrating them with application development to ensure the timeliness of the knowledge learned by students. This empowers HarmonyOS practitioners with stronger workplace adaptability and competitiveness, and assists computer science students in finding suitable jobs ahead of their peers.&lt;/p&gt;

&lt;p&gt;Interested students can access the course directly via the link &lt;a href="https://edu.51cto.com/course/39601.html" rel="noopener noreferrer"&gt;https://edu.51cto.com/course/39601.html&lt;/a&gt; or search for the keywords "HarmonyOS 6 AI Application Development" on 51CTO Classroom to find the course.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fresh graduates aiming to stand out in competitions/graduation projects/job searches&lt;/li&gt;
&lt;li&gt;Developers seeking to master both HarmonyOS and AI skills&lt;/li&gt;
&lt;li&gt;Architects looking to enhance their workplace competitiveness and seek technological breakthroughs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Through this course, students can gain project experience with the "AI Scanning Application" from scratch, cultivating the technical and thinking abilities of a HarmonyOS engineer. By completing the course, students can acquire the complete architectural capabilities for developing native HarmonyOS AI applications from scratch to listing. Simultaneously, they can learn the application of new technologies such as AI-assisted programming, ArkTS language, ArkUI, network programming, security management, natural language understanding services, voice-based AI services, and visual AI services, enhancing their overall market competitiveness.&lt;/p&gt;

&lt;p&gt;What you will learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Master common technologies used in HarmonyOS applications;&lt;/li&gt;
&lt;li&gt;Acquire AI application development skills;&lt;/li&gt;
&lt;li&gt;Explore the mysteries of pure-blood HarmonyOS native development;&lt;/li&gt;
&lt;li&gt;Integrate technology with AI business;&lt;/li&gt;
&lt;li&gt;Keep up with forward-looking technological trends;&lt;/li&gt;
&lt;li&gt;Enhance core workplace competitiveness.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For more details, see Bilibili: &lt;a href="https://www.bilibili.com/video/BV1wCWxzpEsq/" rel="noopener noreferrer"&gt;https://www.bilibili.com/video/BV1wCWxzpEsq/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This article is also synchronized at: &lt;a href="https://waylau.com/the-first-harmonyos-6-ai-tutorial-is-now-available-online/" rel="noopener noreferrer"&gt;https://waylau.com/the-first-harmonyos-6-ai-tutorial-is-now-available-online/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Source code can be found in the open-source and free tutorials:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Learn HarmonyOS Development with Lao Wei" (&lt;a href="https://github.com/waylau/harmonyos-tutorial" rel="noopener noreferrer"&gt;https://github.com/waylau/harmonyos-tutorial&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;"Learn AI Large Model Development with Lao Wei" (&lt;a href="https://github.com/waylau/ai-large-model-tutorial/" rel="noopener noreferrer"&gt;https://github.com/waylau/ai-large-model-tutorial/&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;"Learn Cangjie Programming Language Development with Lao Wei" (&lt;a href="https://github.com/waylau/cangjie-programming-language-tutorial" rel="noopener noreferrer"&gt;https://github.com/waylau/cangjie-programming-language-tutorial&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;参考引用&lt;br&gt;
本文同步至：&lt;a href="https://waylau.com/the-first-harmonyos-6-ai-tutorial-is-now-available-online/" rel="noopener noreferrer"&gt;https://waylau.com/the-first-harmonyos-6-ai-tutorial-is-now-available-online/&lt;/a&gt;&lt;br&gt;
源码见《跟老卫学HarmonyOS开发》开源免费教程， &lt;a href="https://github.com/waylau/harmonyos-tutorial" rel="noopener noreferrer"&gt;https://github.com/waylau/harmonyos-tutorial&lt;/a&gt;&lt;br&gt;
《跟老卫学AI大模型开发》开源免费教程， &lt;a href="https://github.com/waylau/ai-large-model-tutorial/" rel="noopener noreferrer"&gt;https://github.com/waylau/ai-large-model-tutorial/&lt;/a&gt;&lt;br&gt;
《跟老卫学仓颉编程语言开发》开源免费教程， &lt;a href="https://github.com/waylau/cangjie-programming-language-tutorial" rel="noopener noreferrer"&gt;https://github.com/waylau/cangjie-programming-language-tutorial&lt;/a&gt;&lt;br&gt;
《鸿蒙HarmonyOS手机应用开发实战》（清华大学出版社）&lt;br&gt;
《鸿蒙HarmonyOS应用开发入门》（清华大学出版社）&lt;br&gt;
“鸿蒙零基础快速实战-仿抖音App开发（ArkTS版）”（&lt;a href="https://coding.imooc.com/class/843.html%EF%BC%89" rel="noopener noreferrer"&gt;https://coding.imooc.com/class/843.html）&lt;/a&gt;&lt;br&gt;
《鸿蒙HarmonyOS应用开发从入门到精通（第2版）》（北京大学出版社)&lt;br&gt;
《鸿蒙之光HarmonyOS NEXT原生应用开发入门》（清华大学出版社)&lt;br&gt;
“HarmonyOS NEXT+AI大模型打造智能助手APP(仓颉版)”（&lt;a href="https://coding.imooc.com/class/927.html%EF%BC%89" rel="noopener noreferrer"&gt;https://coding.imooc.com/class/927.html）&lt;/a&gt;&lt;br&gt;
“鸿蒙HarmonyOS 6 AI应用开发”(&lt;a href="https://edu.51cto.com/course/39601.html" rel="noopener noreferrer"&gt;https://edu.51cto.com/course/39601.html&lt;/a&gt;)&lt;/p&gt;

</description>
      <category>harmonyos</category>
      <category>harmonyos6</category>
      <category>鸿蒙6</category>
      <category>ai</category>
    </item>
    <item>
      <title>仓颉编程语言（Cangjie）正式发布1.0.0 LTS版本，附安装配置教程</title>
      <dc:creator>Way Lau</dc:creator>
      <pubDate>Mon, 07 Jul 2025 02:48:32 +0000</pubDate>
      <link>https://dev.to/waylau521/cang-jie-bian-cheng-yu-yan-cangjiezheng-shi-fa-bu-100-ltsban-ben-fu-an-zhuang-pei-zhi-jiao-cheng-3j2d</link>
      <guid>https://dev.to/waylau521/cang-jie-bian-cheng-yu-yan-cangjiezheng-shi-fa-bu-100-ltsban-ben-fu-an-zhuang-pei-zhi-jiao-cheng-3j2d</guid>
      <description>&lt;p&gt;仓颉编程语言的首个长期支持（Long-Term Support, LTS）版本已于2025年7月1日正式发布。仓颉最早是在2024年6月的华为开发者大会亮相，定位是下一代编程语言。笔者估计，本次LTS版本发布，是为了配合将于本月底&lt;a href="https://developer.huawei.com/consumer/cn/forum/topic/0210186139141263055?fid=0109140870620153026" rel="noopener noreferrer"&gt;仓颉编程语言开源&lt;/a&gt;事宜。&lt;/p&gt;

&lt;p&gt;本文主要介绍仓颉编程语言的特性及安装。&lt;/p&gt;

&lt;h2&gt;
  
  
  仓颉编程语言简介
&lt;/h2&gt;

&lt;p&gt;仓颉编程语言是华为自研的一种面向全场景应用开发的通用编程语言，可以兼顾开发效率和运行性能，并提供良好的编程体验，主要具有如下特点：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;多后端支持：仓颉编程语言支持 CJNative 和 CJVM 两种后端。其中 CJNative 后端将代码编译为原生二进制代码，直接在操作系统层面上运行；CJVM 后端将代码编译为字节码，基于 VM（虚拟机）进行运行。本次发布仅提供 CJNative 后端 SDK，CJVM 后端 SDK 敬请期待。&lt;/li&gt;
&lt;li&gt;语法简明高效：仓颉编程语言提供了一系列简明高效的语法，旨在减少冗余书写、提升开发效率，例如插值字符串、主构造函数、Flow 表达式、match 和重导出等语法，让开发者可以用较少编码表达相关逻辑。&lt;/li&gt;
&lt;li&gt;多范式编程：仓颉编程语言支持函数式、命令式和面向对象等多范式编程，融合了高阶函数、代数数据类型、模式匹配、泛型等函数式语言的先进特性，还有封装、接口、继承、子类型多态等支持模块化开发的面向对象语言特性，以及值类型、全局函数等简洁高效的命令式语言特性。开发者可以根据开发偏好或应用场景，选用不同的编程范式。&lt;/li&gt;
&lt;li&gt;类型安全：仓颉编程语言是静态强类型语言，通过编译时类型检查尽早识别程序错误，降低运行时风险，也便于代码维护。同时，仓颉编译器提供了强大的类型推断能力，可以减少类型标注工作，提高开发效率。&lt;/li&gt;
&lt;li&gt;内存安全：仓颉编程语言支持自动内存管理，并在运行时进行数组下标越界检查、溢出检查等操作，确保运行时内存安全。&lt;/li&gt;
&lt;li&gt;高效并发：仓颉编程语言提供了用户态轻量化线程（原生协程），以及简单易用的并发编程机制，保证并发场景的高效开发和运行。&lt;/li&gt;
&lt;li&gt;兼容语言生态：仓颉编程语言支持和 C 等编程语言的互操作，并采用便捷的声明式编程范式，可实现对其他语言库的高效复用和生态兼容。&lt;/li&gt;
&lt;li&gt;领域易扩展：仓颉编程语言提供了基于词法宏的元编程能力，支持在编译时变换代码。此外，还提供了尾随 lambda、属性、操作符重载、部分关键字可省略等特性，开发者可由此深度定制程序的语法和语义，这有利于内嵌式领域专用语言（Embedded Domain Specific Languages，EDSL）的构建。&lt;/li&gt;
&lt;li&gt;助力 UI 开发：UI 开发是构建端侧应用的重要环节，基于仓颉编程语言的元编程和尾随 lambda 等特性，用户可以搭建声明式 UI 开发框架，提升 UI 开发效率和体验。&lt;/li&gt;
&lt;li&gt;内置库功能丰富：仓颉编程语言提供了功能丰富的内置库，涉及数据结构、常用算法、数学计算、正则匹配、系统交互、文件操作、网络通信、数据库访问、日志打印、解压缩、编解码、加解密和序列化等功能。&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  版本
&lt;/h2&gt;

&lt;p&gt;仓颉编程语言提供三个版本（LTS、STS 和 Nightly Build），每个通道均提供可以在Linux、Windows以及Mac上安装使用的软件包与帮助开发者在VScode平台上搭建开发环境的插件。每个版本通道更新/维护计划有所差异，具体计划根据各版本通道描述为准。&lt;/p&gt;

&lt;p&gt;从官网了解到，截止目前仓颉编程语言也就发布过三个版本号，各个版本之间估计变更内容不是很多。&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5mbe9qi5wp5sjvozmkra.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5mbe9qi5wp5sjvozmkra.jpg" width="360" height="207"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  安装包
&lt;/h2&gt;

&lt;p&gt;安装包在命名上更加规范了。安装包可以在&lt;a href="https://cangjie-lang.cn/download" rel="noopener noreferrer"&gt;https://cangjie-lang.cn/download&lt;/a&gt;，找到分为了仓颉SDK（仓颉工具链）和仓颉插件。&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkh4kip0s77a8uamonwki.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkh4kip0s77a8uamonwki.jpg" width="800" height="723"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;仓颉SDK（仓颉工具链）：cangjie-sdk-windows-x64-1.0.0.zip&lt;/li&gt;
&lt;li&gt;仓颉语言 VS Code 插件：cangjie-vscode-1.0.0.tar.gz，该插件可以通过离线方式安装。插件也可以无需下载，直接可以在VS Code插件市场上找到直接安装。&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Windows 平台上的安装、卸载
&lt;/h2&gt;

&lt;h3&gt;
  
  
  安装指导
&lt;/h3&gt;

&lt;h4&gt;
  
  
  1. 解压安装包
&lt;/h4&gt;

&lt;p&gt;如果选择 &lt;code&gt;zip&lt;/code&gt; 格式的安装包（例如 &lt;code&gt;cangjie-sdk-windows-x64-x.y.z.zip&lt;/code&gt;），请将它解压到适当目录（比如本例&lt;code&gt;D:\dev\cangjie\cangjie-sdk-windows-x64-1.0.0\cangjie&lt;/code&gt;），在安装包中，仓颉为开发者提供了三种不同格式的安装脚本，分别是 &lt;code&gt;envsetup.bat&lt;/code&gt;，&lt;code&gt;envsetup.ps1&lt;/code&gt; 和 &lt;code&gt;envsetup.sh&lt;/code&gt;，可以根据使用习惯及环境配置，选择一种执行：&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- 若使用 Windows 命令提示符（CMD）环境，请执行：
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    ```bash
    path\to\cangjie\envsetup.bat
    ```
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- 若使用 PowerShell 环境，请执行：
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    ```bash
    . path\to\cangjie\envsetup.ps1
    ```
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- 若使用 MSYS shell、bash 等环境，请执行：
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    ```bash
    source path/to/cangjie/envsetup.sh
    ```
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;为了验证是否安装成功，请在以上命令环境中继续执行 `cjc -v` 命令，如果输出了仓颉编译器版本信息，表示已经成功安装了仓颉工具链。
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;值得注意的是&lt;/strong&gt;，基于 zip 安装包和执行脚本的安装方式，类似于 Linux 平台，即 envsetup 脚本所配置的环境变量，只在当前命令行环境中有效，如果打开新的命令行窗口，需要重新执行 envsetup 脚本配置环境。此时，若想使仓颉工具链的环境变量配置在命令提示符或终端启动时自动生效，可以设置环境变量&lt;/p&gt;

&lt;h4&gt;
  
  
  2. 配置 CANGJIE_HOME 变量
&lt;/h4&gt;

&lt;p&gt;“系统变量”（为系统所有用户进行配置）区域中，点击 “新建” 按钮，并在 “变量名” 字段中输入 &lt;code&gt;CANGJIE_HOME&lt;/code&gt;。在 “变量值” 字段中输入仓颉安装包的解压路径，（比如本例&lt;code&gt;D:\dev\cangjie\cangjie-sdk-windows-x64-1.0.0\cangjie&lt;/code&gt;）。配置完成后，请在 “编辑用户变量” 或 “编辑系统变量” 窗口界面确认路径正确，然后点击 “确定” 按钮。&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqdnlnk1qe5wrayyykq38.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqdnlnk1qe5wrayyykq38.jpg" width="800" height="767"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;在“系统变量”（为系统所有用户进行配置）区域中，找到并选择 Path 变量，点击 “编辑” 按钮，进入 “编辑环境变量” 窗口。点击 “编辑文本” 按钮，附加以下内容&lt;code&gt;;%CANGJIE_HOME%\bin;%CANGJIE_HOME%\tools\bin;%CANGJIE_HOME%\tools\lib;%CANGJIE_HOME%\runtime\lib\windows_x86_64_llvm&lt;/code&gt;。设置完成后可能需要重启命令行窗口或重启系统以让设置生效。&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffeid27b3dlea6fa5bpf1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffeid27b3dlea6fa5bpf1.jpg" width="800" height="767"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;配置完成后 Windows 命令提示符（CMD）或 PowerShell 启动即可直接使用仓颉编译工具链。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;C:&lt;span class="se"&gt;\U&lt;/span&gt;sers&lt;span class="se"&gt;\w&lt;/span&gt;ayla&amp;gt;cjc &lt;span class="nt"&gt;-v&lt;/span&gt;
Cangjie Compiler: 1.0.0 &lt;span class="o"&gt;(&lt;/span&gt;cjnative&lt;span class="o"&gt;)&lt;/span&gt;
Target: x86_64-w64-mingw32
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  卸载与更新
&lt;/h3&gt;

&lt;p&gt;如果选择 &lt;code&gt;zip&lt;/code&gt; 格式的安装包进行的安装，删除仓颉工具链的安装包目录，同时移除上述环境变量设置（若有），即可完成卸载。&lt;/p&gt;

&lt;p&gt;若需要更新仓颉工具链，需要先卸载当前版本，然后按上述指导重新安装最新版本的仓颉工具链。&lt;/p&gt;

&lt;h3&gt;
  
  
  配置仓颉语言 VS Code 插件
&lt;/h3&gt;

&lt;p&gt;安装过程，参考往期&lt;a href="https://waylau.com/install-cangjie-plugin-in-vscode/" rel="noopener noreferrer"&gt;博客&lt;/a&gt;。&lt;/p&gt;

&lt;p&gt;主要配置如下：&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpnxczryg0cda9a28xx9o.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpnxczryg0cda9a28xx9o.jpg" width="800" height="312"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;能呼出如下界面，则证明安装成功：&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz3s2nxw3rr4ityvyhayh.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz3s2nxw3rr4ityvyhayh.jpg" width="797" height="900"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  视频演示
&lt;/h3&gt;

&lt;p&gt;详见B站：&lt;a href="https://www.bilibili.com/video/BV1mz36zMEdz/" rel="noopener noreferrer"&gt;https://www.bilibili.com/video/BV1mz36zMEdz/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  参考引用
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developer.huawei.com/consumer/cn/forum/topic/0210186139141263055?fid=0109140870620153026" rel="noopener noreferrer"&gt;华为自研仓颉编程语言将开源，未来与ArkTS同等地位&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://waylau.com/install-cangjie-plugin-in-vscode/" rel="noopener noreferrer"&gt;仓颉编程语言开发环境搭建（安装VSCode仓颉插件）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;《跟老卫学仓颉编程语言开发》开源免费教程， &lt;a href="https://github.com/waylau/cangjie-programming-language-tutorial" rel="noopener noreferrer"&gt;https://github.com/waylau/cangjie-programming-language-tutorial&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;“HarmonyOS NEXT+AI大模型打造智能助手APP(仓颉版)”&lt;a href="https://coding.imooc.com/class/927.html" rel="noopener noreferrer"&gt;https://coding.imooc.com/class/927.html&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>programming</category>
      <category>huawei</category>
      <category>cangjie</category>
      <category>harmonyos</category>
    </item>
    <item>
      <title>HarmonyOS NEXT + AI Q&amp;A 06: What is the Relationship Between the Cangjie Toolchain and DevEco Studio Cangjie Plugin?</title>
      <dc:creator>Way Lau</dc:creator>
      <pubDate>Mon, 30 Jun 2025 02:05:07 +0000</pubDate>
      <link>https://dev.to/waylau521/harmonyos-next-ai-qa-06-what-is-the-relationship-between-the-cangjie-toolchain-and-deveco-1kak</link>
      <guid>https://dev.to/waylau521/harmonyos-next-ai-qa-06-what-is-the-relationship-between-the-cangjie-toolchain-and-deveco-1kak</guid>
      <description>&lt;h1&gt;
  
  
  HarmonyOS NEXT + AI Q&amp;amp;A 06: What is the Relationship Between the Cangjie Toolchain and DevEco Studio Cangjie Plugin in the Cangjie Programming Language? Why Install So Many Plugins?
&lt;/h1&gt;

&lt;p&gt;In the "HarmonyOS NEXT + AI Large Model to Build an Intelligent Assistant APP (Cangjie Version)" course, a student raised the following question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;After installing the Cangjie toolchain, why do I still need to install the DevEco Studio Cangjie Plugin? Will DevEco Studio call the SDK of the Cangjie toolchain? It seems there are no related settings for this.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Here is a unified response to this student's question to facilitate reference for other students. Previous Q&amp;amp;As can be found on my homepage.&lt;/p&gt;

&lt;p&gt;In Chapter 3, "Intelligent AI Assistant Project - Development Environment Setup," of the course, we have arranged the following content:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;3.1 Chapter Introduction&lt;/li&gt;
&lt;li&gt;3.2 Register a Huawei account and complete real-name authentication&lt;/li&gt;
&lt;li&gt;3.3 Set up the Cangjie programming language development environment&lt;/li&gt;
&lt;li&gt;3.4 Basic usage of CJPM&lt;/li&gt;
&lt;li&gt;3.5 [Practical] Develop a Cangjie "Hello World" application&lt;/li&gt;
&lt;li&gt;3.6 Analyze the structure of the Cangjie "Hello World" application&lt;/li&gt;
&lt;li&gt;3.7 Download and install the development tool DevEco Studio&lt;/li&gt;
&lt;li&gt;3.8 Configure DevEco Studio&lt;/li&gt;
&lt;li&gt;3.9 Download and install the DevEco Studio Cangjie Plugin&lt;/li&gt;
&lt;li&gt;3.10 [Practical] Create a HarmonyOS application "Hello World"&lt;/li&gt;
&lt;li&gt;3.11 Sign the HarmonyOS application&lt;/li&gt;
&lt;li&gt;3.12 Run the HarmonyOS application on a local real device&lt;/li&gt;
&lt;li&gt;3.13 Run the HarmonyOS application using a local emulator&lt;/li&gt;
&lt;li&gt;3.14 Master the common functions of the DevEco Studio editor&lt;/li&gt;
&lt;li&gt;3.15 Detailed explanation of the HarmonyOS application structure&lt;/li&gt;
&lt;li&gt;3.16 Master the core component Ability of HarmonyOS&lt;/li&gt;
&lt;li&gt;3.17 Understand application-level and component-level configurations&lt;/li&gt;
&lt;li&gt;3.18 Understand the packaging principle of HarmonyOS&lt;/li&gt;
&lt;li&gt;3.19 How to improve UI development efficiency and experience?&lt;/li&gt;
&lt;li&gt;3.20 Chapter Summary&lt;/li&gt;
&lt;li&gt;3.21 Exercises: Create a HarmonyOS application&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It can be seen that there are actually two sets of environment setups introduced here: one is a pure Cangjie environment, and the other is a Cangjie-HarmonyOS environment. These two sets of environments are independent and have no association.&lt;/p&gt;

&lt;p&gt;The main installation steps for the pure Cangjie environment are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;3.3 Set up the Cangjie programming language development environment

&lt;ul&gt;
&lt;li&gt;Mainly involves installing the Cangjie toolchain and the VSCode Cangjie plugin. The Cangjie toolchain can be simply understood as the SDK for Cangjie, similar to the JDK for Java, used for compiling and running pure Cangjie programs.&lt;/li&gt;
&lt;li&gt;The VSCode Cangjie plugin supports developing pure Cangjie programs in VSCode.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;The main installation steps for the Cangjie-HarmonyOS environment are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;3.7 Download and install the development tool DevEco Studio&lt;/li&gt;
&lt;li&gt;3.8 Configure DevEco Studio&lt;/li&gt;
&lt;li&gt;3.9 Download and install the DevEco Studio Cangjie Plugin

&lt;ul&gt;
&lt;li&gt;Mainly involves installing DevEco Studio and the DevEco Studio Cangjie Plugin. These tools are primarily used to support developing Cangjie-based HarmonyOS applications in DevEco Studio, similar to Android Studio.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;These are two separate environments: one is a pure Cangjie environment, and the other is a Cangjie-HarmonyOS environment. They are independent and have no association.&lt;/p&gt;

&lt;p&gt;If you only want to learn the syntax of the Cangjie programming language, you only need the pure Cangjie environment. Chapter 4, "Intelligent AI Assistant - Quickly Get You Started with Cangjie Programming Language," of the course provides a complete learning path from scratch, allowing you to systematically master the Cangjie programming language. Through this chapter, you can learn to develop an animal sound simulator, understand Cangjie collection classes, exception handling, package management, master large-scale program code organization and management, become familiar with I/O operations, file reading and writing operations, and network programming. You can even create TCP servers, UDP servers, and build HTTP services using the Cangjie programming language.&lt;/p&gt;

&lt;p&gt;If you want to develop HarmonyOS applications using the Cangjie programming language, you need to install the Cangjie-HarmonyOS environment. As we all know, DevEco Studio is an essential IDE for developing HarmonyOS applications. Since the Cangjie programming language has not been officially released yet, it is necessary to support developing HarmonyOS applications based on the Cangjie programming language in DevEco Studio through a plugin (DevEco Studio Cangjie Plugin). Chapters 5-11 of the course also include corresponding practical training.&lt;/p&gt;

&lt;p&gt;Currently, having multiple environments and multiple plugins has indeed caused many difficulties for HarmonyOS application developers, but this is only temporary. As I mentioned in the article "Huawei's Self-Developed Cangjie Programming Language Will Be Open-Sourced and Have the Same Status as ArkTS in the Future," as the Cangjie programming language continues to improve, it will inevitably have the same status as ArkTS. Then, DevEco Studio will naturally support HarmonyOS applications based on the Cangjie programming language without the need to install so many plugins.&lt;/p&gt;

&lt;p&gt;The future of the Cangjie programming language is promising. Are you ready?&lt;/p&gt;

&lt;p&gt;After understanding the differences between these HarmonyOS programming languages, I believe you now have your own judgment on choosing a HarmonyOS programming language. When selecting a language, you can consider the following aspects based on your own situation:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Personal Preference&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Developers have certain preferences for programming languages. You can choose ArkTS or Java based on your personal喜好.&lt;/li&gt;
&lt;li&gt;If you are familiar with Java or Android, you can choose Java. If you are familiar with JS or TS, you can choose ArkTS. If you are familiar with Rust, Cangjie is also a good choice.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Career Needs&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If you want to implement powerful and complete HarmonyOS application functions and maximize compatibility with existing Android devices on the market, Java is currently a good choice. However, note that HarmonyOS will no longer support Java after API 8. For related content on developing HarmonyOS applications with Java, please refer to my books "HarmonyOS Mobile Application Development Practice" and "HarmonyOS Application Development from Beginner to Master" as well as the video tutorial "HarmonyOS System Practical Short Video App Development from Scratch to Mastery (ArkTS Version)."&lt;/li&gt;
&lt;li&gt;ArkTS is currently the main language promoted in the HarmonyOS ecosystem. It is recommended to build new commercial projects based on ArkTS. For related content on developing HarmonyOS applications with ArkTS, please refer to my books "HarmonyOS Application Development Introduction," "HarmonyOS Application Development from Beginner to Master (2nd Edition)," and "Harmony Light: HarmonyOS NEXT Native Application Development Introduction" as well as the video tutorial "HarmonyOS Zero-Based Rapid Practical - Imitation Douyin App Development (ArkTS Version)."&lt;/li&gt;
&lt;li&gt;If you simply want to learn a new language and keep up with its evolution, Cangjie is also a good choice. From a future development perspective, Cangjie may replace ArkTS as the main development language. However, note that Cangjie is currently only a developer preview version, with an unstable API and incomplete functionality. It is not recommended for use in commercial scenarios. For related content on the Cangjie programming language, please refer to my book "Cangjie Programming from Beginner to Practice" and the video tutorial "HarmonyOS NEXT + AI Large Model to Build an Intelligent Assistant APP (Cangjie Version)."&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For more open-source tutorials, please see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/waylau/harmonyos-tutorial" rel="noopener noreferrer"&gt;"Learn HarmonyOS Development with Way Lau"&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/waylau/cangjie-programming-language-tutorial" rel="noopener noreferrer"&gt;"Learn Cangjie Programming Language Development with Way Lau"&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>programming</category>
      <category>cangjie</category>
      <category>harmonyos</category>
    </item>
    <item>
      <title>Huawei's Self-Developed Cangjie Programming Language to Go Open Source, Sharing Equal Status with ArkTS in the Future</title>
      <dc:creator>Way Lau</dc:creator>
      <pubDate>Tue, 24 Jun 2025 01:33:57 +0000</pubDate>
      <link>https://dev.to/waylau521/huaweis-self-developed-cangjie-programming-language-to-go-open-source-sharing-equal-status-with-983</link>
      <guid>https://dev.to/waylau521/huaweis-self-developed-cangjie-programming-language-to-go-open-source-sharing-equal-status-with-983</guid>
      <description>&lt;p&gt;At the Huawei Developer Conference 2025 (HDC 2025) on June 20, 2025, Huawei officially announced the launch of the HarmonyOS 6 Developer Beta version, further enhancing the innovation in user experience and development efficiency. Gong Ti, President of Huawei's Consumer BG Software Department, delivered a speech titled "A More Efficient Harmony Development Experience" and announced that the Cangjie programming language would go open source on July 30. Cangjie first made its debut at the Huawei Developer Conference in June 2024, positioned as a next-generation programming language.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq656n46iw90cdrrc5txq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq656n46iw90cdrrc5txq.png" alt="Image description" width="800" height="425"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Features of the Cangjie Programming Language
&lt;/h3&gt;

&lt;p&gt;As a new programming language, Cangjie has absorbed the strengths of various mainstream programming languages and developed its own unique characteristics.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Efficient Programming&lt;/strong&gt;: For application development, programming languages should be easy to learn and use, lowering the entry barrier for developers and reducing the cognitive load during the development process. They should support various common development paradigms and programming models, enabling developers to express business logic concisely and efficiently. Cangjie is a multi-paradigm programming language that supports functional, imperative, and object-oriented paradigms, including features such as value types, classes and interfaces, generics, algebraic data types, pattern matching, and higher-order functions. Additionally, Cangjie supports type inference, reducing the burden of type annotations for developers. Through a series of concise and efficient syntaxes, it minimizes redundant code and enhances development efficiency. The language's built-in syntactic sugar and macro capabilities enable developers to quickly develop domain-specific languages (DSLs) based on Cangjie and build domain abstractions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Safety and Reliability&lt;/strong&gt;: As a modern programming language, Cangjie strives for security at the coding level. Through its static type system and automatic memory management, it ensures type safety and memory safety such as null safety. Meanwhile, Cangjie provides various runtime checks, including array bounds checking, type conversion checking, numerical overflow checking, and string encoding validity checking, to promptly detect errors during program execution. Furthermore, it offers additional support for cross-language interoperability security and code asset protection through code scanning tools, obfuscation tools, and sanitizers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Effortless Concurrency&lt;/strong&gt;: Concurrency and asynchronous programming are essential capabilities in application development, effectively improving processor utilization and ensuring program responsiveness in interactive applications. The Cangjie language implements lightweight user-mode threads and a concurrency object library, making efficient concurrency effortless. Cangjie adopts a user-mode thread model, where each Cangjie thread is an extremely lightweight execution entity with an independent execution context but shared memory. For developers, the use of user-mode threads remains consistent with that of traditional system threads, without adding extra burden. From a runtime perspective, thread management is handled by the runtime system, independent of the operating system's thread management. Therefore, operations such as thread creation, scheduling, and destruction are more efficient, with lower resource consumption compared to system threads. To avoid data races, Cangjie provides a concurrency object library where the methods of concurrency objects are thread-safe. Thus, calling these methods in a multi-threaded environment is no different from serial programming, and application logic developers do not need to worry about concurrency management. For some core libraries, Cangjie also provides lock-free or fine-grained locking algorithm implementations to further reduce thread blocking and improve concurrency.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Exceptional Performance&lt;/strong&gt;: The Cangjie compiler and runtime optimize compilation across the entire stack, including compiler front-end optimizations based on CHIR (Cangjie HighLevel IR) (such as semantic-aware loop optimization and semantic-aware backend collaborative optimization), backend-based optimizations (such as SLP vectorization, Intrinsic optimization, InlineCache, inter-procedural pointer optimization, and Barrier optimization), and runtime-based optimizations (such as lightweight locks, distributed marking, and concurrent tracing optimization). These optimizations enable Cangjie to fully leverage processor capabilities and provide exceptional performance support for applications. Additionally, the Cangjie language adopts a native lightweight design for the runtime. Through modular and layered design of the runtime, it defines the Cangjie common object model and runtime common infrastructure components. Based on the common object model, it implements basic runtime capabilities such as memory management, stack unwinding, exception handling, and cross-language calls, significantly reducing redundant object designs across multiple capabilities and streamlining the runtime size. Meanwhile, through on-demand package loading technology, it reduces redundant package memory overhead during Cangjie application startup, resulting in lower resource consumption and better support for resource-sensitive devices.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In addition, Cangjie supports a series of toolchains for application development, including language services (highlighting, code completion), debugging (cross-language debugging, thread-level visual debugging), static checking, performance analysis, package management, documentation generation, mock tools, testing frameworks, coverage tools, fuzzing tools, and intelligent programming assistance tools, further enhancing the software development experience and efficiency.&lt;/p&gt;

&lt;h3&gt;
  
  
  Interpretation of the Harmony Programming Language White Paper
&lt;/h3&gt;

&lt;p&gt;On June 20, 2025, Huawei released Version 1.0 of the "Harmony Programming Language White Paper." The core content of the white paper is as follows:&lt;/p&gt;

&lt;h4&gt;
  
  
  Harmony Programming Language Overall Framework
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Multi-Language Ecosystem&lt;/strong&gt;: Harmony supports three programming languages—ArkTS, Cangjie, and C/C++—which complement each other and jointly support the construction of the Harmony application ecosystem.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ArkTS&lt;/strong&gt;: A dynamically typed programming language based on TypeScript, characterized by its ease of learning and use, and a rich ecosystem, suitable for efficient development scenarios.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cangjie&lt;/strong&gt;: A statically typed programming language with high performance, strong security, and cross-platform capabilities, suitable for scenarios with high performance and security requirements.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;C/C++&lt;/strong&gt;: Suitable for specific scenarios such as high-performance computing and hardware acceleration, and can be encapsulated as ArkTS and Cangjie extension modules through cross-language interoperability.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;Language Interoperability&lt;/strong&gt;: ArkTS and C/C++ achieve interoperability through Node-API; Cangjie and C language achieve mutual function calls and cross-language data conversion; Cangjie and ArkTS achieve data conversion and function calls through an interoperability library.&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;h4&gt;
  
  
  Harmony Programming Language Application Scenarios
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Efficient Development&lt;/strong&gt;: ArkTS is compatible with TS's efficient syntax, provides a rich set of basic libraries and concurrency capabilities, supports declarative UI development, and can inherit the TS/JS language ecosystem.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;High Performance&lt;/strong&gt;: ArkTS's compilation runtime supports hybrid execution modes, optimizes module loading mechanisms, and provides an efficient concurrent programming model. Cangjie, based on static typing and static compilation optimization technologies, offers exceptional performance support.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security&lt;/strong&gt;: ArkTS introduces features such as a type system at the language level and provides additional security mechanisms in the compilation toolchain and runtime. Cangjie ensures program security through static typing, automatic memory management, etc.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cross-Platform&lt;/strong&gt;: Cangjie supports static compilation to machine code for different OS platforms, enabling cross-OS platform code sharing and supporting multiple operating system platforms.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Technical Asset Protection&lt;/strong&gt;: ArkTS provides source code obfuscation tools like ArkGuard. Cangjie offers various obfuscation techniques such as shape obfuscation, data obfuscation, and control flow obfuscation.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Harmony Programming Language Evolution Strategies
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ArkTS Evolution Strategy&lt;/strong&gt;: Further define and refine the language specification, provide compiler implementations based on the language specification, and introduce type information to optimize runtime performance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cangjie Evolution Strategy&lt;/strong&gt;: Continuously improve the efficient development experience, provide high-performance and strong security capabilities, and continuously refine and explore in the areas of cross-platform and intelligence.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Intelligent Evolution Strategy&lt;/strong&gt;: Cangjie will build Agent DSL capabilities through metaprogramming and DSL capabilities, and in the future, will deepen integration with AI technologies to promote applications in multiple fields.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Language Evolution Strategies for the Next Year
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ArkTS&lt;/strong&gt;: Will continue to iterate and evolve, further enriching new features such as concurrent programming, improving the type system, modernizing syntax, enhancing development efficiency, and enriching SDK functionality.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cangjie&lt;/strong&gt;: Will aim to improve the developer experience, continuously build language capabilities from aspects such as language feature construction, compatibility with existing ecosystems, and improving the usability of the toolchain, including API development, development tool support, and documentation improvement.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Summary
&lt;/h3&gt;

&lt;p&gt;Both ArkTS and Cangjie will serve as the main programming languages for Harmony, enjoying equal status and complementary advantages, jointly supporting the construction of the Harmony application ecosystem. ArkTS has a first-mover advantage with a rich API library, while Cangjie, though later to the market, boasts inherent high performance and security.&lt;/p&gt;

&lt;p&gt;For more content related to Cangjie, please refer to the open-source and free tutorial "Learning Cangjie Programming Language Development with Way Lau" and "Building an Intelligent Assistant APP with HarmonyOS NEXT + AI Large Model (Cangjie Edition)."&lt;/p&gt;

&lt;h3&gt;
  
  
  References
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;"Learning AI Large Model Development with Way Lau" Open Source and Free Tutorial: &lt;a href="https://github.com/waylau/ai-large-model-tutorial/" rel="noopener noreferrer"&gt;https://github.com/waylau/ai-large-model-tutorial/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;"Learning Cangjie Programming Language Development with Way Lau" Open Source and Free Tutorial: &lt;a href="https://github.com/waylau/cangjie-programming-language-tutorial" rel="noopener noreferrer"&gt;https://github.com/waylau/cangjie-programming-language-tutorial&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;"Learning HarmonyOS Development with Way Lau" Open Source and Free Tutorial: &lt;a href="https://github.com/waylau/harmonyos-tutorial" rel="noopener noreferrer"&gt;https://github.com/waylau/harmonyos-tutorial&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;"Practical Development of HarmonyOS Mobile Applications" (Tsinghua University Press)&lt;/li&gt;
&lt;li&gt;"Introduction to HarmonyOS Application Development" (Tsinghua University Press)&lt;/li&gt;
&lt;li&gt;"Rapid Hands-On HarmonyOS Development from Scratch - Imitating Douyin App Development (ArkTS Edition)" (&lt;a href="https://coding.imooc.com/class/843.html" rel="noopener noreferrer"&gt;https://coding.imooc.com/class/843.html&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;"Mastering HarmonyOS Application Development from Beginner to Advanced (2nd Edition)" (Peking University Press)&lt;/li&gt;
&lt;li&gt;"Introduction to HarmonyOS NEXT Native Application Development" (Tsinghua University Press)&lt;/li&gt;
&lt;li&gt;"Building an Intelligent Assistant APP with HarmonyOS NEXT + AI Large Model (Cangjie Edition)" (&lt;a href="https://coding.imooc.com/class/927.html" rel="noopener noreferrer"&gt;https://coding.imooc.com/class/927.html&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;"Harmony Programming Language White Paper" Version 1.0: &lt;a href="https://developer.huawei.com/consumer/cn/doc/guidebook/programming-language-0000002323920052" rel="noopener noreferrer"&gt;https://developer.huawei.com/consumer/cn/doc/guidebook/programming-language-0000002323920052&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>The application of SwiperAnimationMode introduced in HarmonyOS API 15</title>
      <dc:creator>Way Lau</dc:creator>
      <pubDate>Mon, 23 Jun 2025 00:34:26 +0000</pubDate>
      <link>https://dev.to/waylau521/the-application-of-swiperanimationmode-introduced-in-harmonyos-api-15-1f1h</link>
      <guid>https://dev.to/waylau521/the-application-of-swiperanimationmode-introduced-in-harmonyos-api-15-1f1h</guid>
      <description>&lt;p&gt;This article highlights the new event &lt;code&gt;changeIndex(index: number, animationMode?: SwiperAnimationMode| boolean)&lt;/code&gt; added in API 15, which allows setting the animation mode when flipping to a specified page within a swiper component. The default value is &lt;code&gt;SwiperAnimationMode.NO_ANIMATION&lt;/code&gt;. There are three types of animation modes available:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;NO_ANIMATION&lt;/strong&gt;: Flips to the specified page without any animation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DEFAULT_ANIMATION&lt;/strong&gt;: Flips to the specified page with an animation effect.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;FAST_ANIMATION&lt;/strong&gt;: Quickly flips to a nearby page without animation, then animates to the final target page.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The example provided demonstrates triggering these effects through three buttons. Each button click invokes the &lt;code&gt;changeIndex&lt;/code&gt; method with different parameters to switch pages using one of the above animation modes. Specifically:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clicking 'NO_ANIMATION 0' will change the index to 0 without any animation.&lt;/li&gt;
&lt;li&gt;Clicking 'DEFAULT_ANIMATION 10' will animate the transition to index 10.&lt;/li&gt;
&lt;li&gt;Clicking 'FAST_ANIMATION 20' first rapidly moves near the target page and then animates to index 20.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These examples show how to apply different animation effects when navigating between pages in a swiper component. The source code for this example can be found in the "Learning HarmonyOS Development with Old Wei" project on GitHub: &lt;a href="https://github.com/waylau/harmonyos-tutorial" rel="noopener noreferrer"&gt;https://github.com/waylau/harmonyos-tutorial&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4qxbmecj6nmi517tgjqh.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4qxbmecj6nmi517tgjqh.gif" alt="Image description" width="386" height="809"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjqj40gv4of9xnd3z8y39.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjqj40gv4of9xnd3z8y39.gif" alt="Image description" width="386" height="809"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F94yy3epvwsw3sv2bqab1.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F94yy3epvwsw3sv2bqab1.gif" alt="Image description" width="386" height="809"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>harmonyos</category>
      <category>鸿蒙</category>
    </item>
    <item>
      <title>The new Indicator navigation point component in HarmonyOS API 15.</title>
      <dc:creator>Way Lau</dc:creator>
      <pubDate>Tue, 17 Jun 2025 00:27:18 +0000</pubDate>
      <link>https://dev.to/waylau521/the-new-indicator-navigation-point-component-in-harmonyos-api-15-14bb</link>
      <guid>https://dev.to/waylau521/the-new-indicator-navigation-point-component-in-harmonyos-api-15-14bb</guid>
      <description>&lt;p&gt;This section demonstrates the features and usage of the new Indicator navigation point component in HarmonyOS API 15.&lt;/p&gt;

&lt;h3&gt;
  
  
  Environment Used
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;DevEco Studio 5.0.5 Release&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Overview of the Indicator Navigation Point Component
&lt;/h3&gt;

&lt;p&gt;The Indicator navigation point component offers two styles of navigation points: dot navigation points and digit navigation points.&lt;/p&gt;

&lt;p&gt;This component has been supported since API Version 15. It provides the existing capabilities of the Indicator in the original Swiper component as a standalone component for developers to use. Developers can display navigation points independently without relying on the Swiper component, or they can bind it with the Swiper component using the IndicatorComponentController.&lt;/p&gt;

&lt;p&gt;When multiple navigation point components are bound to the same Swiper component, only the last navigation point component will successfully bind to the Swiper.&lt;/p&gt;

&lt;p&gt;When a navigation point component is bound to multiple Swiper components, only the last Swiper component will successfully bind to the navigation point component.&lt;/p&gt;

&lt;h3&gt;
  
  
  Creating an Example to Display Navigation Points Independently Without the Swiper Component
&lt;/h3&gt;

&lt;p&gt;Create a project named "ArkTSIndicator" to demonstrate displaying navigation points independently without relying on the Swiper component.&lt;/p&gt;

&lt;h4&gt;
  
  
  Modify Index.ets as follows:
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;Entry&lt;/span&gt;
&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;Component&lt;/span&gt;
&lt;span class="nx"&gt;struct&lt;/span&gt; &lt;span class="nx"&gt;Index&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;State&lt;/span&gt; &lt;span class="nx"&gt;indicatorIndex&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="c1"&gt;// Controller for the Indicator component, which can be bound to the Indicator component to control page flipping.&lt;/span&gt;
  &lt;span class="k"&gt;private&lt;/span&gt; &lt;span class="nx"&gt;indicatorController&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;IndicatorComponentController&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;IndicatorComponentController&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

  &lt;span class="nf"&gt;build&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nc"&gt;Column&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nc"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;indicatorIndex&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="dl"&gt;''&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;fontSize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;$r&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;app.float.page_text_font_size&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
        &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;fontWeight&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;FontWeight&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Bold&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

      &lt;span class="nc"&gt;IndicatorComponent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;indicatorController&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;initialIndex&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// Sets the index of the current navigation point when it is first displayed.&lt;/span&gt;
        &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;style&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="c1"&gt;// Optional navigation point indicator style.&lt;/span&gt;
          &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;DotIndicator&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
            &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;itemWidth&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;itemHeight&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;selectedItemWidth&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;selectedItemHeight&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;color&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;Color&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Gray&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;selectedColor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;Color&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Blue&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
        &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;loop&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// Sets whether to enable looping.&lt;/span&gt;
        &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;count&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// Sets the total number of navigation points.&lt;/span&gt;
        &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;vertical&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// Sets whether it is a vertical slide.&lt;/span&gt;
        &lt;span class="c1"&gt;// This event is triggered when the index of the currently selected navigation point changes. The index of the currently selected navigation point can be obtained through the callback function.&lt;/span&gt;
        &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;onChange&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;index&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
          &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;current index: &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;index&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;

          &lt;span class="c1"&gt;// Assign the index to the variable indicatorIndex.&lt;/span&gt;
          &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;indicatorIndex&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;index&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;})&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;height&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;100%&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;width&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;100%&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Runtime Effect
&lt;/h3&gt;

&lt;p&gt;For a video demonstration, please visit Bilibili: &lt;a href="https://www.bilibili.com/video/BV1AE76z5Ei8/" rel="noopener noreferrer"&gt;https://www.bilibili.com/video/BV1AE76z5Ei8/&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Code Explanation
&lt;/h3&gt;

&lt;p&gt;In the above example, the IndicatorComponentController is the controller for the Indicator component, which can be bound to the Indicator component to control page flipping.&lt;/p&gt;

&lt;p&gt;The interface &lt;code&gt;IndicatorComponent(controller?: IndicatorComponentController)&lt;/code&gt; is the constructor for the standalone navigation point component and can be used to configure the controller of the component. The description is as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Card Capability&lt;/strong&gt;: Starting from API version 15, this interface supports use in ArkTS cards.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Atomic Service API&lt;/strong&gt;: Starting from API Version 15, this interface supports use in atomic services.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;System Capability&lt;/strong&gt;: SystemCapability.ArkUI.ArkUI.Full&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The property &lt;code&gt;initialIndex(index: number)&lt;/code&gt; of the IndicatorComponent is used to set the index of the current navigation point when it is first displayed. If the set value is less than 0 or greater than or equal to the number of navigation points, it will be treated as the default value 0. This property does not take effect when the standalone navigation point component is bound to the Swiper. The description is as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Card Capability&lt;/strong&gt;: Starting from API version 15, this interface supports use in ArkTS cards.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Atomic Service API&lt;/strong&gt;: Starting from API version 15, this interface supports use in atomic services.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;System Capability&lt;/strong&gt;: SystemCapability.ArkUI.ArkUI.Full&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The property &lt;code&gt;style(indicatorStyle: DotIndicator | DigitIndicator)&lt;/code&gt; of the IndicatorComponent is used to set the optional navigation point indicator style. The optional navigation point indicator style can be either DotIndicator or DigitIndicator, where DotIndicator is the dot indicator style and DigitIndicator is the digit indicator style. The default type is DotIndicator. The description is as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Card Capability&lt;/strong&gt;: Starting from API version 15, this interface supports use in ArkTS cards.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Atomic Service API&lt;/strong&gt;: Starting from API version 15, this interface supports use in atomic services.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;System Capability&lt;/strong&gt;: SystemCapability.ArkUI.ArkUI.Full&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The property &lt;code&gt;loop(isLoop: boolean)&lt;/code&gt; of the IndicatorComponent is used to set whether to enable looping. This property does not take effect when the standalone navigation point component is bound to the Swiper. The description is as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Card Capability&lt;/strong&gt;: Starting from API version 15, this interface supports use in ArkTS cards.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Atomic Service API&lt;/strong&gt;: Starting from API version 15, this interface supports use in atomic services.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;System Capability&lt;/strong&gt;: SystemCapability.ArkUI.ArkUI.Full&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The property &lt;code&gt;count(totalCount: number)&lt;/code&gt; of the IndicatorComponent is used to set the total number of navigation points. When the standalone navigation point component is bound to the Swiper, the number of pages in the Swiper takes precedence. The description is as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Card Capability&lt;/strong&gt;: Starting from API version 15, this interface supports use in ArkTS cards.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Atomic Service API&lt;/strong&gt;: Starting from API version 15, this interface supports use in atomic services.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;System Capability&lt;/strong&gt;: SystemCapability.ArkUI.ArkUI.Full&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The property &lt;code&gt;vertical(isVertical: boolean)&lt;/code&gt; of the IndicatorComponent is used to set whether it is a vertical slide. This property does not take effect when the standalone navigation point component is bound to the Swiper. The description is as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Card Capability&lt;/strong&gt;: Starting from API version 15, this interface supports use in ArkTS cards.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Atomic Service API&lt;/strong&gt;: Starting from API version 15, this interface supports use in atomic services.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;System Capability&lt;/strong&gt;: SystemCapability.ArkUI.ArkUI.Full&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The event &lt;code&gt;onChange(event: Callback&amp;lt;number&amp;gt;)&lt;/code&gt; of the IndicatorComponent is triggered when the index of the currently selected navigation point changes. The index of the currently selected navigation point can be obtained through the callback function. The description is as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Card Capability&lt;/strong&gt;: Starting from API version 15, this interface supports use in ArkTS cards.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Atomic Service API&lt;/strong&gt;: Starting from API version 15, this interface supports use in atomic services.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;System Capability&lt;/strong&gt;: SystemCapability.ArkUI.ArkUI.Full&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The currently selected navigation point index will copy the index value of the currently selected navigation point to the variable &lt;code&gt;indicatorIndex&lt;/code&gt;, which is then displayed in the Text component above.&lt;/p&gt;

&lt;h3&gt;
  
  
  Source Code
&lt;/h3&gt;

&lt;p&gt;The source code for this example is archived in "Learning HarmonyOS Development with Way Lau": &lt;a href="https://github.com/waylau/harmonyos-tutorial" rel="noopener noreferrer"&gt;https://github.com/waylau/harmonyos-tutorial&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
