1. A method for developing an application, comprising: providing an application framework including components that define a scope of the application, startup and shutdown behavior for the application, and how the application manages windows and resources; providing a navigation framework including components that provide navigation functionality, journaling, journal extensibility, and structured navigation; and providing application lifecycle management components that define how the application is deployed, installed, activated, updated, rolled back, and removed from a computing system.