In my last post I talked about the applications of cloud computing, and my own personal challenge to commit to using them over their desktop versions. What I forgot to mention is what is in store for the cloud computing world. Currently, the main languages that make it to the browser are HTML, Javascript, and CSS. These languages are parsed by the browser and presented to the user for display or interaction. For more in depth content, such as the video I've included in this post (if I can sit through it, you can), these take plugins where the browser passes control to compiled code that generally runs outside of the browser. The dominant choice for functionality like this is usually Adobe Flash, although Java has shown it's uses. The general process is when you want to watch a video, an HTML page is sent to your browser containing an object tag that tells the browser what file to pass to what plugin, the file (the video content, most likely flash video, flv) and the video player code-base (written in compiled ActionScript, I believe) are passed on to Adobe's flash plugin for your browser, at which point the ActionScript is run, which parses the video and displays it frame by frame in the flash control which the browser has next to no control over. A further, more humorous, and probably much more accurate, breakdown can be found here.
There's a lot of layers between the hardware and the software. No code from the web gets direct access to the processor, which previously has been part of the security in the web. Google has a nifty approach to ensure that code can run directly on the processor while also providing a good layer of security by preventing access to the OS. Google Native Client, often shortened to NaCl, yes sodium chloride, does just that, brings compiled code into the browser. I haven't looked into supported languages, but I believe anything compiled for an x86 will run. Assembly, C/C++, and potentially even .Net (theoretically, you can compile directly to x86, bypassing the JIT compiler that might not be present on the client machine, but I haven't tried it). Cloud applications today seem to mostly be based around storage, but if NaCl becomes a new standard and gets widely used, then the internet could be a powerhouse of functionality both in storage as well as processing. I'm probably more excited for NaCl than I should be, and it's still in it's early stages, but someday the need for desktop applications will be gone. With a web driven UI and NaCl powering the code-behind, cloud computing will slowly evolve into a computer that is simply a monitor, keyboard, mouse and processor.
Advice, Misc
google, native, client, nacl, cloud, web