The diagram below gives an overview of the Linux application frameworks (aka Linux user space components), that rely on Linux kernel.
It shows the main components, grouped per functional domains, but it does not intend to be exhaustive: the user can add or remove components via OpenEmbedded recipes to fit with his application needs.
Generally speaking, the application frameworks (aka middlewares) are software pieces that are neither the Linux kernel or the device drivers, nor the applications. In other words, they are the intermediate software between the application software and the kernel or device drivers software.
Thus, they are abstraction layers used by different applications to ensure and ease their flexibility, portability, security and interoperability.
The main advantage of such application frameworks is to reduce the complexity of the applications with the provided generic services that would be duplicated in the applications otherwise. The counterpart is that they might introduce an overhead, which might impact the overall performance.
Examples of such application frameworks:
- The libusb library for a generic access to USB devices
- The libiio library to ease the development of software interfacing Linux Industrial I/O (IIO) devices
- The Advanced Linux Sound Architecture (ALSA) libraries for audio functionalities
- The Wayland-Weston display/graphic framework
- The GStreamer multimedia framework (library for constructing graphs of media-handling components)
- and much more as illustrated in the figure above
Note:
- Some common frameworks (from communities) are part of the OpenSTLinux distribution (e.g. GStreamer, Weston…)
- Lot of other frameworks can be added on top of the OpenSTLinux distribution by developers themselves; few of those frameworks are introduced in the Application frameworks category (e.g. OPC UA) and / or in the How to run use cases with expansions category (e.g. Java)
- Some other frameworks can be added on top of the OpenSTLinux distribution using STMicroelectronics software expansion packages (e.g. TensorFlow Lite via Artificial intelligence expansion packages)