What is an "Application Framework"?

The term application framework means different things to different people. To some, it is the GUI toolkit that is used. To others, it is the window manager. Still others see it as the conventions for starting and running a process (e.g. on Linux, a C program should have an entry point called "main" that takes a couple of parameters and returns an integer).

When we use the term "application framework", we mean the set of libraries
and utilities that support and control applications running on the platform.
Why are additional libraries needed to control applications? Why not just use the same
conventions as on a PC: choose programs off a start menu and explicitly end an
application by choosing the "exit" menu item or closing its window?

The reason is the different "use model" on handheld devices. PCs have large screens that can accommodate many windows. Based on experience refining Palm OS, we believe that there should be only one active window on a handheld device. As another example, when the user starts a new application, the old handheld application should automatically save its work and exit.

As well as the task of managing the lifecycle of programs (launching, running, stopping), the application framework has three more tasks. Its second task is to help with distributing and installing applications. The conventions are simple: an application and all supporting files (images, data, localizations, etc) are rolled up into a single file (like a zip file), known as a "bundle". Bundles are convenient for users and third party developers. They allow software to be passed around and downloaded as a single file.

The third task of the application framework is to support common utility operations for applications. These are services like communication between applications, keeping track of which applications handle which kind of data content, and dealing with unscheduled incoming data like phone calls or instant messages.

The final task of the application framework is to implement a secure environment for software. That means an environment which resists attempts by one application to interfere with another (this hardening is called "application sandboxing"). The secure environment also supports security policies for permission-based access to resources. For example, part of a policy might be "only applications from the vendor are allowed network access". The security policy is implemented using a Linux security module.


Back to "About Hiker.,."

Copyright © 2007, The Hiker Project. All rights reserved.