Tuesday May 15, 2007
Back to the Future
Last Tuesday at JavaOne, Sun launched what I think is a game-changing set of technologies, a new product family and as well a new initiative around improving client support in Java, one that I believe will fundamentally redefine how we express rich, compelling experiences to consumers leveraging the Java platform as the vehicle for the delivery of those applications and content. To understand the reasons why the announcements around JavaFX Script and Mobile are so important, one has to take a look at the evolution of modern web-based computing as it relates to client technologies, products and devices.
The question I will pose to you here, is whether a number of technologies introduced into the web are in fact, evolutionary or revolutionary ... and while at times it would seem that the entire ecosystem has been revolutionized periodically, I believe we can look back through history and determine that yes, while in the moment that may be so, over time we can see certain evolutionary trends.
For instance, going back a few years, we see the change from what were classic "Terminal Applications", that is extremely thin clients connected to (usually) large rooms of computers to that of Client/Server architectures ... typically represented as those emerging as part of the PC "revolution".
(there's that word again, "revolution")
This diagram represents that shift between Terminals and Clients, and for this I will use roughly the amount of code applied to each side of this binary equation ... code on the client, versus code on the server ...
Stepping forward a bit, we see the emergence of the Internet ... or the modern web. And while not nearly as severe a shift in cycle as that between Terminal Applications and those in the Client/Server space, we do see a move away from the Rich Clients which dominated the early PC life cycle with that of applications typically architected solely around the web browser ... which in the early days was static HTML delivered to the client by the web server.
Enter the modern "Web 2.0" era, and the rise of the Rich Internet Application ... as more was required of the modern web client, the injection of intelligence into the richer web client caused once again, a swing back towards more code executing on the client, such as JavaScript and other languages which get pushed to the client by server-based applications. So it's not a true re-biasing towards clients per se, although they are certainly richer for things like AJAX, etc., but more like server-controlled or server-managed clients ....
There is a well established engineering principle typically used in designing aircraft, a function of aerodynamics referred to as stability. Basically, the stability of an aircraft in flight to remain in straight, level and upright flight and to return to that attitude without corrective action by the pilot. The overall tendency of an airplane to do so is called dynamic stability, which is preceded by a series of damped out oscillations ...
Stability can be positive ... which means that as a result of those oscillations, the plane will return to stable flight. Stability can also be negative, which means that as a result of those oscillations, the plane will move it farther away from stable flight ... basically, unstable flight. Most modern military aircraft have that tendency ... without computers, they are in fact, a flying brick ...
So what forces operate against this cycle of the client and the server ? The current trend is one of increasing stability (less oscillation) ... so what are those possible forces which are in effect dampening the wild swings biasing towards client or server and serving the function of creating a more balanced result ?
For one, created code. If we look at this force over time, the drive towards the assembly of applications as opposed to the creation of new code has increased. The rapid rise of interest and prevalence of scripting being used to tie together existing components and functionality especially with modern RIAs is one example of this trend.
The other is the demand on rich interactivity, which includes the use of rich content and media. The need for compelling and rich UIs, coupled with the need to deliver and manage this content in real time as well as the intelligence required in the modern client application for interacting with the modern web is a force which places a high demand on richer clients.
A third force is one which is, in many ways, the "great equalizer" .. and directly effects and has driven the modern web, that of collaboration and the need to bridge the requirements and capabilities of the increasingly richer clients as well as the data and services present on the server. This force is manifest in this drive to continue to improve both the user experience as well as the performance, scalability and in general overall usefulness of the web ... and collaboration and integration is integral to that forward progress.
The result, of course, is this notion of the "web as a platform" ... a platform that provides the wealth of services needed by increasingly richer clients and an increasingly large set of services and data available underneath.
We are today living in the world of the rich internet application built on the web as a platform, yet because of the need for something more, struggling to somehow build a richer, yet more tightly integrated client into that model. A client which is increasingly integrated with the underlying web as the platform for collaboration, but also increasingly integrated with it's host environment, whether that's a desktop, a mobile device or other more consumer-oriented platforms.
So the question remains ... what next ?
What's the point of increasing balance in this cycle of web computing ?
That Integrated Rich Client is the next step in the evolution of the web computing client, currently dominated by the rich internet application, which today leverages things like AJAX to provide for that richer experience people are demanding. The Integrated Rich Client is about the following:
- A rich, compelling user experience that, available as a modern desktop application, content which should include not only static visual assets, but time-based media and dynamic UI effects
- That same experience on the desktop and as close as possible with the browser
- Full integration with the web platform as is available today with the modern RIA, which includes the ability to continue to leverage traditional "web" assets (even within the context of a rich application) ... so HTML, Script and CSS have to work
- Full integration with the host environment (example, the desktop and system on a desktop or functional elements such as a telephony stack on a mobile phone)
- The integrated rich client is not bound to a browser. It may be a stand-alone application which can run on any consumer client device ... for instance desktop/laptop, phone, kiosk, TV or other media receiver or player
- The integrated rich client, while a networked application / device, shouldn't require the network at all times to be functional ... the ability to continue to provide a functional and usable application and experience when disconnected (either because of intermittent, partial network connectivity loss or lack of network) is critical
- A similar (or even in some cases identical) experience for a given application should exist, regardless of client
We are now at the point where the confluence of available technology and consumer demand makes this all possible.
At JavaOne, we demonstrated elements of that solution, technologies such as GlassFish V3, Derby in the browser, Java SE futures and JavaFX Script. Each provide a component piece of where the future lies within the integrated rich client. Within products coming from Sun, such as JavaFX Mobile, you'll see the realization of those technologies in a fully integrated distribution, initially for mobile devices and eventually on a broad spectrum of devices ... from set top boxes to desktops. We'll go back to the future, but a future different than the "thick" of old, one that leverages the modern (yet evolving) web and the rich set of services and data underneath, utilizing the rich Java clients that will be built upon a leaner JRE and dynamic and compelling user experience.
Posted by brewin May 15 2007, 03:28:53 PM PDT Permalink
Comments are closed for this entry.






