It's not easy to make JavaScript do all this stuff, and Safari is missing some of the key pieces (shame on Apple), but it is astounding when it works.
There's a fair bit of history here. Years ago we used to speak of "thin clients" (Citrix) and "thick clients" (conventional apps). Thin clients were easy to deploy but put a lot of processing burden on servers and suffered from communications latency.
Web browsers were thicker than Citrix but still suffered the effects of latency and had a much more limited GUI than a Citrix thin client. Both Sun's Java and Netscape's Javascript/HTML extensions were supposed to address the GUI and latency issues, but Sun and Netscape stupidly fought tooth and claw; two dogs fighting while a tiger chuckled nearby. Once Sun and Netscape had just about done in each other in Microsoft waltzed off with the browser. IE's DHTML framework threatened to finish what Netscape had started, but then the Office/.NET vs IE wars started at Microsoft. Office won and it looked like .NET would be the only path forward. Nonone could trust Microsoft to keep IE/DHTML healthy; it was a platform without a future.
But the vestiges of the old wars survived , in the IE/W3C document object model and in Javascript that was slowly getting less buggy. Different people in different places and times figured out how to get this rickety architecture working. Then came the rise of Firefox. Now even if IE stopped supporting this .NET alternative, it could still work on Firefox.
Of course it might also work even better on gBrowser ...
And now we have Ajax vs .NET for the variable weight browser-client title.
And so it goes.
Update: a colleague mentions the alternative approach to reducing latency - unbelievable server and network performance:
I would point out that several of the techniques Google is using don't require anUpdate Again 2/23: Udell has much more on this topic, including more on how Google got its server latency to unprecedented levels.
elaborate client side DHTML approach. They are, instead, leveraging
their incredible load capacity and low latency server array. Google maps is
a perfect example of relatively low tech client, plus an incredible tech
server architecture. If you look carefully you can sometimes see upwards of
20 GET requests being spun off, each with a latency response that is way way
sub second.