Two weeks ago, Tim O'Reilly asked me whether I thought Sun ought to
release a "free" (I guess the currently fashionable term is "open
source") version of Java, like Netscape is doing with their browser.
I told him that the idea was interesting, but Java was probably better
off in Sun's control. After all, Microsoft is actively pushing a
dumbed-down pseudo-Java in order to split the developer community;
this is a threat that Larry Wall and the Perl folks, or Linus Torvalds
and the Linux developers, don't have to worry about. At least, not
yet. Furthermore, it's important for the Java platform to be used
commercially, and too many important commercial users are scared to
death of free software. As far as I can tell, the reasons for their
fear are completely irrational, but you can't control other people's
fears. So I told Tim that, for the time being, Java was best off
under Sun's control. And Sun has made their development process
incredibly open: they actually do listen to comments from Java
developers; they actually take suggestions and fold them into their
APIs.
However, that doesn't mean that free implementations of the Java
platform are unimportant. Fortunately, there's a lot of exciting work
going on.
Kaffe has been
around for some time;
it currently supports Java 1.1.3. A newer arrival is Japhar, a free
independent implementation of the Java VM created by The Hungry
Programmers. Japhar currently supports Java 1.1.5 on Linux,
FreeBSD, and other systems, and promises to be a major contributor to the
Java scene.
Why is a free implementation so crucial to the success of Java?
First and foremost, there's LINUX and FreeBSD. As one LINUX
developer somewhat smugly put it, LINUX is the only UNIX-like
operating system that's gaining market share. That's certainly an
exaggeration that FreeBSD enthusiasts will take exception to, but the
overall point is certainly correct: free UNIX implementations are
rapidly growing in popularity. Even more important, the LINUX and
FreeBSD communities have a wealth of talented developers. LINUX is
the operating system of choice for many of O'Reilly's Java authors.
And both LINUX and FreeBSD are making inroads as commercial servers.
Sun could do nothing better than get the free software community to
line up behind the Java standard. That won't happen without good free
("open source") implementations of the Java platform. Sun has already
gone further than most commercial vendors by releasing the source code
for most of the Java packages. But LINUX and FreeBSD developers won't
unite behind the Java platform en masse without good implementations
for their operating systems, preferably with open source.
The free software community supports standards. While they won't
march in lock step to JavaSoft's beat, you don't have to worry that
LINUX developers will decide they need to be compliant with
Microsoft's pseudo-Java. The idea that the Japhar developers would
say "Let's not implement RMI; after all, Microsoft gave us DCOM, and
we'd rather implement that" is just ludicrous. If nothing else,
they'd end up with a very expensive lawsuit. The more good
implementations of the Java platform exist, the harder it will be for
Microsoft to push a non-compliant implementation.
JavaSoft has not been easy for small software developers to deal
with. I don't know whether they have bigger fish to fry, and would
rather be sipping white wine with Sony executives, or what, but the
biggest problem with Java right now is that it's not easy for small
developers to get a license. But ultimately, the success of Java
depends more on its adoption by 10,000 small software companies than
on a few dozen megaliths. A free implementation of the Java platform
eliminates the problem of dealing with JavaSoft, and facilitates
Java's adoption by a broad range of developers: you can license Sun's
implementation if you think you need to, or you can work from a
competing free implementation. Kaffe claims to support two dozen
platforms, including exotica like the Amiga.
The paradox that Sun and JavaSoft face is that it's hard to make Java
a standard and remain a commercial developer. Standards have to be
implemented by competing vendors; if they're not, they're just
monopolies. No one except a Microsoft marketing executive would ever
mistake Windows for a standard. However, Sun can't afford to consign
Java to a standards body--at least not yet. If there's one thing
standards bodies do really well, it's slow down the development of
important technologies while vendors with vested interests wrangle
over meaningless details. (Sun's status as a PAS submitter with ISO
does exactly what's needed: it allows the Java platform to become
officially standardized without the bureaucracy of international
standards committees.) So it's important for Sun to remain in
control, yet encourage competing implementations. That's a difficult
tightrope to walk, and I don't envy any JavaSoft executive who has to
make the tough decisions it implies. As I said earlier, Sun has done
an excellent job of listening to suggestions and criticisms from the
Java community. They've done a less than excellent job of making Java
accessible to commercial developers who want to incorporate it into
their products.
Free implementations of the Java platform give Sun the best of both
worlds. They don't have to let go of the reins, but they can let
packages like Japhar and Kaffe spread the Java platform to developers
who can't afford a JavaSoft license, the many talented developers who
want to work on LINUX or FreeBSD, and others. Sun does not have to do
everything itself. If Scott McNealy, Alan Baratz, Jonathan Schwartz,
and others in the Sun hierarchy understand the importance of free
software and what it adds to the Java picture, they'll do everything
they can to encourage the development of free Java implementations.
Short term, they may lose a few customers to free competing
implementations, but the stakes are much higher. As long as the Java
pie keeps growing, Sun is sure to get its share.