-
Notifications
You must be signed in to change notification settings - Fork 16
Blossom's Mobile Goals
There are two reasons Blossom was developed:
-
To provide a better, faster and more consistent API for widgets in the context of SproutCore.
-
To make apps written with SproutCore run as many places as possible without any changes, and especially, on mobile devices and tablets.
Historically, SproutCore has been an application framework for building desktop-style applications in PC web browsers. When the iPhone came out in 2007, and later, the iPad, people naturally wanted to run SproutCore apps on those devices.
Unfortunately, SproutCore was not designed with those kinds of devices in mind, and the result was high load times, poor graphical performance, and especially bad behavior with user interactions like scrolling a list. In addition, the way that widgets were developed in SproutCore used too much HTML, which tended to choke the limited-memory and CPU power of these new touch-based platforms.
Android was much, much worse.
Blossom addresses these issues head on in two ways:
-
The API for widgets is based on HTML 5's Canvas2D context, a vector-based drawing API, as well as hardware-accelerated CSS transitions. Compared to SproutCore, Blossom has extremely lightweight HTML usage. Application developers never write HTML or CSS with Blossom.
-
Provide native HTML 5 runtimes for mobile platforms and desktop OSes that implement the part of the HTML 5 API that Blossom needs, as well as bindings from Blossom's graphics APIs to the platform's native graphics API (e.g. Core Animation and Quartz 2D on iOS). This means that Blossom apps on touch devices do not use a WebView wrapper like PhoneGap to display their user interface. As a result, memory usage, performance and especially the graphical performance and responsiveness of Blossom apps is very high.