You won’t have any direct interaction with the Core OS, nor will the end users. Instead your access is through Mojo and the various services. Users interact with applications and the UI System Manager, which is responsible for the System UI. Collectively, this is known as the application environment. Figure 1-11 shows a simplified view of the webOS architecture.
This overview is included as background to give you an idea of how webOS works—this information is not needed to build applications, so you can skip it if you aren’t interested.
The application runtime environment is managed by the UI System Manager, which also presents the System UI that is manipulated by the user. The framework provides access to the UI widgets and the Palm webOS services. Supporting this environment is the Core OS environment, an embedded Linux OS with some custom subsystems handling telephony, touch and keyboard input, power management, storage, and audio routing. All these Core OS capabilities are managed by the application environment and exposed to the end user as System UI and to the developer through Mojo APIs.
Taking a deeper look at the webOS architecture, Figure 1-12 shows the major components within the application environment and the Core OS.
The application environment refers to the system user experience and the feature set that is exposed to the application developer, as represented by the Mojo framework and the Palm services. The Core OS covers everything else: from the Linux kernel and drivers, up through the OS services, middleware, wireless, and media subsystems. Let’s take a brief look at how this all works together.
The UI System Manager is responsible for almost everything in the system that is visible to the user. The application runtime is provided by the application manager, built on top of an instance of WebKit, which loads the individual applications and hosts the built-in framework and some special system applications, the status bar, and the Launcher. The Application Manager runs in a single process, schedules and manages each of the running applications, handles all rendering through interfaces to the graphics subsystem, and handles on-device storage through interfaces to the database engine.
Applications rely on the framework for their UI feature sets and for access to services. The UI features are built into the framework and handled by the Application Manager directly, but the service requests are routed over the Palm bus to the appropriate service handler.
The Core OS is based on a version of the Linux 2.6 kernel with the standard driver architecture managed by udev with a proprietary boot loader. It supports an ext3 filesystem for the internal (private) file partitions and FAT32 for the media file partition, which can be externally mounted via USB (Universal Serial Bus) for transferring media files to and from the device.
The Wireless Comms system at the highest level provides connection management that automatically attaches to WAN (wide area network) and WiFi networks when available, and switches connections dynamically, prioritizing WiFi connections when both are available. EVDO or UMTS telephony and WAN data are supported depending upon the particular device model. Palm webOS also supports most standard Bluetooth profiles and provides simple pairing services. The Bluetooth subsystem is tightly integrated with audio routing to dynamically handle audio paths based upon user preferences and peripheral availability.
The media server is based on gstreamer and includes support for numerous audio and video codecs and all mainstream image formats, and supports image capture through the built-in camera. Video and audio capture is not supported in the initial webOS products, but is inherently supported by the architecture. Video and audio playback supports both file- and stream-based playback.