Thursday, September 4, 2008

Google Chrome: Brilliant Maneuver

The more I think about Google Chrome, the more impressed I become. Not just with the technology, but also with the tactics and the strategy (or what I can only presume is the strategy). I've found myself using web applications more and more and loving the advantage they have in being available anywhere (many of which are Google applications). However, I also like the spit and polish on desktop applications like iTunes, iPhoto, Pages, etc. I also liked the performance of those desktop applications, their ability to work with or without an internet connection, etc. What I really want is the best of both classes of application delivered as one.

So, let's see what Google Chrome brings to the table:

1. Speed
The Javascript VM in Chrome (called "V8") is a bytecode-less direct machine code translating VM. What all that means is that it's a fast, modern VM. Many times faster that the Javascript VMs found in other browsers in fact. The performance of this VM is also likely to be competitive with other object systems such as the Cocoa environment on Mac OSX. (did I mention that several longtime Smalltalk VM developers had a heavy hand in it?)

2. Robustness and Security
The browser uses process isolation to make sure that faulty code on one web page doesn't take down another. It also makes sure that it's physically impossible for one web page to access the state of another, thus adding an extra measure of security.

3. Application Shortcuts
An application shortcut is an icon on you desktop (or wherever) that takes you straight to a website without all the usual web browser "chrome" (the address bar, forward and back buttons, etc). This makes web based applications easily launched as if they were normal applications and with a normal application's framing.

4. Dynamic Language Support
Ruby, Python, Perl would all likely stand to benefit from the performance of the V8 VM. Among many other languages. These languages should start showing up for V8 in very short order. This means that the Chrome VM should be able to reach well beyond applications based on Javascript/HTML in the future. Imagine if the language support itself could be delivered over the web just as HTML and Javascript sources are today. Imagine just a little further, if you will, a future where none other than the virtual machine could be bootstrapped over the web providing not just support for an endless variety of languages, but *optimal* support for an endless variety of languages.

But let's not get too carried away and turn our attention back to the nearer term.

Here we have a platform that can deliver web based apps that have a desktop application's look and feel, the speed of a desktop application, the sand-boxing of a normal desktop application, the zero installation delivery of a web application, and is cross platform. Oh, and it's all open source.

Now, let's not forget that Google has a lot invested in web applications. For everything from spreadsheets to email, to photo management and groupware, Google has something. What Google needs is for these apps to work offline and feel every bit as natural as native apps. They need this to compete with the desktop applications delivered by Microsoft, Apple and scores of others. With Chrome, they now have the platform to make this happen (and it just happens to also be a great web browser too). Need to integrate with the platform's clipboard, no problem. Need to cache some data on the client for off line usage, gotcha covered.

Adobe, Apple, Microsoft, are you listening? Wasn't the .Net CLR supposed to provide this capability? Isn't Silverlight supposed to be the silver bullet for web based apps? Wasn't Adobe Air supposed to be the cross platform software delivery and development environment of the future? Aren't those MobileMe applications supposed to work and feel just like regular desktop applications?

As I said, brilliant maneuver.