1e41f4b71Sopenharmony_ci# UI Development (ArkTS-based Declarative Development Paradigm) Overview
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_ci
4e41f4b71Sopenharmony_ciPowered by the ArkTS-based declarative development paradigm, ArkUI is a simplified, high-performance UI development framework for cross-device applications. It provides the capabilities required for building the application UI, including:
5e41f4b71Sopenharmony_ci
6e41f4b71Sopenharmony_ci
7e41f4b71Sopenharmony_ci- **ArkTS**
8e41f4b71Sopenharmony_ci
9e41f4b71Sopenharmony_ci  ArkTS is the preferred programming language for application development in OpenHarmony. As a superset of [TypeScript](https://www.typescriptlang.org/) (TS for short), it contains all TS features and added features – declarative UI description, custom components, dynamic extension of UI elements, state management, and rendering control. State management provides clear page re-render processes and pipes through decorators with different functions. State management covers UI component states and application states, with which you are able to build an application-wide data update and UI rendering process. To learn more about ArkTS, see [Getting Started with ArkTS](../quick-start/arkts-get-started.md).
10e41f4b71Sopenharmony_ci
11e41f4b71Sopenharmony_ci- **Layout**
12e41f4b71Sopenharmony_ci
13e41f4b71Sopenharmony_ci  The layout defines how components are laid out in the UI. ArkUI offers a diverse array of layouts. Besides the basic layouts – linear, stack, flex, relative, and grid, you also have access to the advanced list, grid, and swiper layouts.
14e41f4b71Sopenharmony_ci
15e41f4b71Sopenharmony_ci- **Component**
16e41f4b71Sopenharmony_ci
17e41f4b71Sopenharmony_ci  Components are essential elements of the UI, working together to shape the UI. They can be classified as built-in components – those directly provided by the ArkUI framework, and custom components – those defined by developers. The built-in components include buttons, radio buttons, progress indicators, and text. You can set the rendering effect of these components in method chaining mode. You can combine built-in components to form custom components. In this way, page components are divided into independent UI units to implement independent creation, development, and reuse of different units on pages, making pages more engineering-oriented.
18e41f4b71Sopenharmony_ci
19e41f4b71Sopenharmony_ci- **Page routing and component navigation**
20e41f4b71Sopenharmony_ci
21e41f4b71Sopenharmony_ci  An application may contain a good many pages, and each page may come with multiple components. You can implement page routing to navigate users between pages and use navigation component to navigate them between components.
22e41f4b71Sopenharmony_ci
23e41f4b71Sopenharmony_ci- **Graphics**
24e41f4b71Sopenharmony_ci
25e41f4b71Sopenharmony_ci  ArkUI offers diversified graphics capabilities, including capabilities to display images in various formats and custom drawing capabilities. By leveraging these capabilities, you can easily bring your custom drawing ideas into reality.
26e41f4b71Sopenharmony_ci
27e41f4b71Sopenharmony_ci- **Animation**
28e41f4b71Sopenharmony_ci
29e41f4b71Sopenharmony_ci  Apart from animations embedded in components, ArkUI offers additional animation features: attribute animation, explicit animation, transition animation, and animation APIs. You can customize animation tracks by calling the provided animation APIs in addition to using the encapsulated physical models.
30e41f4b71Sopenharmony_ci
31e41f4b71Sopenharmony_ci- **Interaction event**
32e41f4b71Sopenharmony_ci
33e41f4b71Sopenharmony_ci  Interaction events are important for interactions between the UI and users. ArkUI allows users to interact with your application UI, with support for various universal events and gesture events. Universal events include touch events, mouse events, key events, and focus events. Gesture events accept single gestures (tap, long press, pan, pinch, rotation, and swipe), and a combination of gestures.
34e41f4b71Sopenharmony_ci
35e41f4b71Sopenharmony_ci
36e41f4b71Sopenharmony_ci## Highlights
37e41f4b71Sopenharmony_ci
38e41f4b71Sopenharmony_ci- Simplified and efficient development
39e41f4b71Sopenharmony_ci  - Simple code: You can describe the UI in pseudo-natural language, without caring about how the framework implements UI drawing and rendering.
40e41f4b71Sopenharmony_ci  - Data-driven UI change: This allows you to better focus on your service logic processing. When the UI changes, you do not need to write code for switching between different UIs. Instead, you only need to write the data that causes the UI change and let the framework take over the rest.
41e41f4b71Sopenharmony_ci  - Improved development experience: Just code to get the UI developed.
42e41f4b71Sopenharmony_ci
43e41f4b71Sopenharmony_ci- High performance
44e41f4b71Sopenharmony_ci  - Declarative UI frontend and backend layering: The UI backend, constructed using the C++ programming language, provides basic components, layout, animations, interaction events, component state management, and rendering pipelines for the frontend.
45e41f4b71Sopenharmony_ci  - Language compiler and runtime optimization: The productivity punch includes unified bytecode, efficient Foreign Function Interface (FFI), ahead-of-time (AOT), engine minimization, and type optimization.
46e41f4b71Sopenharmony_ci
47e41f4b71Sopenharmony_ci- Promising ecosystem
48e41f4b71Sopenharmony_ci  ArkUI can gain traction with its relatively neutral and friendly programming language. It can tap on the ecosystems of mainstream languages ecosystem and pushed toward a steady revolutionary path with standards organizations.
49e41f4b71Sopenharmony_ci
50e41f4b71Sopenharmony_ci
51e41f4b71Sopenharmony_ci## Architecture
52e41f4b71Sopenharmony_ci
53e41f4b71Sopenharmony_ci  **Figure 1** Overall architecture 
54e41f4b71Sopenharmony_ci
55e41f4b71Sopenharmony_ci![arkui-arkts-framework](figures/arkui-arkts-framework.png)
56e41f4b71Sopenharmony_ci
57e41f4b71Sopenharmony_ci
58e41f4b71Sopenharmony_ci
59e41f4b71Sopenharmony_ci
60e41f4b71Sopenharmony_ci- **Declarative UI frontend**
61e41f4b71Sopenharmony_ci  Provides basic language specifications of the UI development paradigm, built-in UI components, layouts, and animations, and multiple state management mechanisms, with a wide array of APIs for you to call as required.
62e41f4b71Sopenharmony_ci
63e41f4b71Sopenharmony_ci- **Language runtime**
64e41f4b71Sopenharmony_ci  Provides the parsing capability for the UI paradigm syntax and allows for cross-language API calls for a high-performance operating environment of the TS language.
65e41f4b71Sopenharmony_ci
66e41f4b71Sopenharmony_ci- **Declarative UI backend engine**
67e41f4b71Sopenharmony_ci  Provides UI rendering pipelines that are compatible with different development paradigms, multiple basic components, layout calculation, dynamic effects, and interaction events, with state management and drawing capabilities.
68e41f4b71Sopenharmony_ci
69e41f4b71Sopenharmony_ci- **Render engine**
70e41f4b71Sopenharmony_ci  Provides efficient drawing capabilities, which enable rendering instructions collected by the rendering pipeline to be drawn to the screen.
71e41f4b71Sopenharmony_ci
72e41f4b71Sopenharmony_ci- **Platform adaptation layer**
73e41f4b71Sopenharmony_ci  Provides abstract APIs to connect to different systems, such as system rendering pipelines and lifecycle scheduling.
74e41f4b71Sopenharmony_ci
75e41f4b71Sopenharmony_ci
76e41f4b71Sopenharmony_ci## Development Process
77e41f4b71Sopenharmony_ci
78e41f4b71Sopenharmony_ciThe table below lists the main tasks involved in UI development with ArkUI. You can familiarize yourself with the UI development process by [getting started with a simple project](../quick-start/start-with-ets-stage.md).
79e41f4b71Sopenharmony_ci
80e41f4b71Sopenharmony_ci
81e41f4b71Sopenharmony_ci| Task         | Description                                 | Guide                                    |
82e41f4b71Sopenharmony_ci| ----------- | ----------------------------------- | ---------------------------------------- |
83e41f4b71Sopenharmony_ci| Get started with ArkTS    | Learn the basic syntax, state management, and rendering control scenarios of ArkTS.        | - [Basic Syntax Overview](../quick-start/arkts-basic-syntax-overview.md)<br>- [State Management](../quick-start/arkts-state-management-overview.md)<br>- [Rendering Control](../quick-start/arkts-rendering-control-ifelse.md)|
84e41f4b71Sopenharmony_ci| Develop the layout       | Understand the common layouts.            | - [Layout Overview](arkts-layout-development-overview.md)<br>|
85e41f4b71Sopenharmony_ci| Add components       | Learn the usage of common built-in components, custom components, and GUI elements supported by APIs.| - [Common Components](arkts-common-components-button.md)<br>- [Custom Components](../quick-start/arkts-create-custom-components.md)<br>- [Popup and Menu](arkts-popup-and-menu-components-popup.md)|
86e41f4b71Sopenharmony_ci| Set page routing and component navigation| Learn how to set page routes and navigation between components.               | - [Page Routing](arkts-routing.md)<br>- [Navigation](arkts-navigation-navigation.md)|
87e41f4b71Sopenharmony_ci| Use graphics       | Understand how to display images, draw custom geometry, and make custom graphics on the canvas.  | - [Displaying Images](arkts-graphics-display.md)<br>- [Drawing Geometric Shapes](arkts-geometric-shape-drawing.md)<br>- [Drawing Custom Graphics Using the Canvas](arkts-drawing-customization-on-canvas.md)|
88e41f4b71Sopenharmony_ci| Apply animations       | Learn the typical scenarios of applying animations on components and pages.                 | - [Property Animation](arkts-attribute-animation-overview.md)<br>- [Transition Animation](arkts-transition-overview.md)<br>- [Component Animation](arkts-component-animation.md)<br>- [Animated Curve](arkts-traditional-curve.md)<br>- [Animation Smoothing](arkts-animation-smoothing.md)<br>- [Animation Effects](arkts-blur-effect.md)|
89e41f4b71Sopenharmony_ci| Bind events       | Learn the basic concepts of events and how to use common events and gesture events.          | - [Universal Events](arkts-common-events-touch-screen-event.md)<br>- [Gesture Events](arkts-gesture-events-binding.md)|
90