Hybrid Web Applications
25 Jul 2011
I'm really hoping HTML5 makes it big on the client side. Working with CSS+DOM+JS is an incredibly broken and frustrating experience but it's still the best cross-platform solution we've had in computing. Even mobile devices are catching up nicely, my Samsung Galaxy S II offers a browsing experience almost equal to the one you get on a laptop or a workstation. Native applications will always be king but for most applications needs the lower implementation and support costs for a set of web applications adapted to work on a wide range of platforms are infinitely more attractive.
One interesting approach which I've experimented with using Flash/Flex is a hybrid approach where the application is split into three parts:
Front-end client UI (HTML+JS or Flash/Flex).
Localhost HTTP backend for client-side processing and access to local resources.
Web HTTP backend for credentials, DB, sharing data, social components, etc.
If you write (2) in a cross-platform language (Python, C++, etc) which can be packaged into a single executable which runs a tiny HTTP server in the background your applications is almost guaranteed to work on Linux, OSX, Windows and mobile devices while exposing platform specific API:s to the client. The (2) components also allows you to design your application to work offline - connecting to (3) as needed and when possible allows for a smooth experience even on mobile devices.
The problem so far has been tools, Firefox and FireBug has been a nice combo but the lack of deep integration with the browser does sometimes offer a shallow experience. Luckily the Chrome team has acknowledged this and offer their own variation of developer tools which are deeply integrated with both the V8 JS VM and the network stack of the browser.
Great introducton to Chrome Dev Tools from Google I/0 2011: