Every now and then I find myself playing the Howard Beale (Peter Finch) role in Network, across from Arthur Jensen (Ned Beatty), the capitalist visionary who explains how things really work. At Digital ID World in 2002, it was Phil Becker who channeled Arthur Jensen. During last week's Gillmor Gang show, it was Sun's Jonathan Schwartz. In the wake of JavaOne I'd been thinking tactically about technical aspects of Java. For Schwartz, though, it's all strategic and economic -- as in this sermonette on leasing and net present value. I've thought a lot about subscription businesses, and I've even helped create one, so I have a basic appreciation for the model. But I'm not qualified to evaluate Schwartz's plans for turning Sun's various assets into recurring revenue -- at least, not on financial terms.
I can, however, make some observations about the fitness of those assets for the stated purpose. Java, in particular, has always delivered the right mix of ingredients -- at least in theory. It's portable. It scales up to the cloud and down to the handset. It's a robust substrate for network services. And it can project a rich user interface onto any device. In practice, though, it's been a challenge to exploit all this goodness with the Java layer decoupled from its OS substrates. I can think of a couple of ways in which tighter integration could be useful:
A better Java Web Start. "It's a great idea," Pito Salas blogged last week, "but disappointingly implemented." With Java applets, Sun had the first mover advantage in deploying code on demand. Lately Microsoft has been iterating toward a viable .NET solution. It's true that the ClickOnce technology in the 2.0 ("Whidbey") version of the .NET Framework won't play on as many devices as Java can. But ClickOnce will reach a lot of desktops. Java Web Start needs to do better there, and sooner rather than later.
Stronger Solaris/Java synergy. In Solaris 10, as Sun has been pointing out recently, a single instance of the OS will be able to be virtualized into many isolated partitions. I haven't yet seen an explanation of how Java-based workloads map to those partitions, but I presume the model will be one or more JVMs per partition. Will superior intra-JVM communication be a Solaris 10 differentiator? Will a more granular mapping of applications (rather than JVMs) to partitions be possible? In the latter case, you'd need a process-like abstraction in Java -- and in fact, one is forthcoming.
As Schwartz notes, Sun's plans for the Windows desktop ran afoul of tactics for which Microsoft wound up making a "two billion dollar apology." OK, but what makes Java special on Solaris servers, or on Sun's Linux desktops for that matter? Sun asserts that Solaris is the best Java substrate, but doesn't marshall a lot of evidence. I haven't seen the same kind of argument made for Sun's version of Linux, in comparison to other Linuxes, but since the Java Desktop System doesn't run much in the way of Java software, the point's kind of moot.
It was inevitable that Java would grow more operating-system-like over time. One example is application isolation, specified in JSR 121. Another is dynamic management of the Java stack on J2ME devices, described in JSR 232 and demonstrated by Nokia at JavaOne. In this Real clip 1 from the twenty-minute concept video, we see Java components deployed to a network of Nokia Communicators, and then remotely managed. This is no doubt a great thing for the world of handsets. But desktop and server operating systems have their own highly-evolved management methods, to which Java is somewhat orthogonal. If Sun's own operating systems are going help create the new economic world order that Schwartz envisions, maybe they and Java should find ways to work more closely together.
1 Accessing this clip, by the way, was no mean feat. Sun's video URLs are even more elusive than Microsoft's.
Former URL: http://weblog.infoworld.com/udell/2004/07/06.html#a1034