1# Ability Framework Overview 2 3Ability is the basic abstraction of applications in OpenHarmony. 4 5Each ability is an application component that provides an independent service and is the minimum unit for the system to schedule an application. An application can contain one or more **Ability** instances. 6 7The ability framework model has two forms: 8 9- FA model, which is available for application development using API version 8 and earlier versions. In the FA model, there are PageAbility, ServiceAbility, DataAbility, and FormAbility. 10- Stage model, which is introduced since API version 9. In the stage model, there are two classes: UIAbility and ExtensionAbility. ExtensionAbility is further extended to ServiceExtensionAbility, FormExtensionAbility, DataShareExtensionAbility, and more. 11 12Starting from API version 9, the stage model is recommended. 13 14The stage model is designed to make it easier to develop complex applications in the distributed environment. The table below lists the design differences between the two models. 15 16| Item | FA Model | Stage Model | 17| -------------- | ------------------------------------------------------------ | -------------------------------------------------------- | 18| Application component development mode | Web-like development | Object-oriented development | 19| Engine instance | Each **Ability** instance exclusively occupies a VM instance. | Multiple **Ability** instances share a VM instance. | 20| Intra-process object sharing| Not supported | Supported | 21| Bundle description file | The **config.json** file is used to describe the HAP and component information. Each component must use a fixed file name.| The **module.json5** file is used to describe the HAP and component information. The entry file name can be specified.| 22| Component | Four types of components are provided: PageAbility (used for UI page display), ServiceAbility (used to provide services), DataAbility (used for data sharing), and FormAbility (used to provide widgets).| Two types of components are provided: UIAbility (used for UI page display) and ExtensionAbility (scenario-based service extension). | 23 24In addition, the following differences exist in the development process: 25 26* Different ability types 27 28 ![favsstage](figures/favsstage.png) 29 30* Different ability lifecycles 31 32 ![lifecycle](figures/lifecycle.png) 33 34For details about the two models, see [FA Model Overview](fa-brief.md) and [Stage Model Overview](stage-brief.md). 35