For many years I was the world's greatest parent. Then I had kids.
Before my kids were born, I knew all the answers to successful child-rearing. And as the self-appointed expert I was quick to impart my wisdom to friends and family. Things sure were simpler then, and best of all I never made mistakes.
It was while observing one of my precious progeny (the little tyke pouring gravy on the dog's head during the Thanksgiving dinner at Aunt Mimi's) that I had to face the fact that I had a lot to learn. Successful parenting, I came to realize, is a lot of trial and error and a whole lot harder in practice than in theory.
I think of this lesson in humility every time I pick up a trade magazine these days. In there, somewhere, I can easily find the latest unsolicited advice to Sun. Every industry pundit knows exactly what Sun should do to standardize Java; every executive with a vice president's title knows just what to do to make Java more "open." And if Sun would heed their advice, Java would be saved and we might just cure cancer in the process.
Maybe it's worth digging out the Baby Book and looking back four years, when Java was in its infancy. Let's frame the era. The Web is just starting to take off and there are a number of projects, all of them competing in the same space as Java: Smalltalk, Inferno and ActiveX. Some people actually believe VRML is the hottest thing going. Others are betting that Netscape can deliver a robust set of APIs on which to build network applications.
Zoom ahead four Internet years. Which one of those little toddlers has grown up to be class president? Well, let's look in the yearbook and see which can claim credit for:
So how did we get from there to here? We did it by making lots of mistakes. Shepherding a technology, it turns out, has some things in common with parenting. It requires some give and take. It requires a lot of trial and error. It requires patience, tenacity and the unflappable belief that your "kid" has what it takes.
- A platform with 2 million active programmers
- A book industry unto itself
- The default computing environment taught in college computer science classes
- A software environment used by virtually every Fortune 1000 company
- A software environment employed by technology vendors from smart cards to the data center
Along the way those mistakes led to a pretty unique process for building, evolving and disseminating a technology that began as a language, a VM and a few core class libraries, and it has matured to a full, robust platform for distributed, network computing.
To be sure, we didn't do it alone. It takes a village to raise a child, and it takes an entire industry to groom a technology as important as Java.
What began as an informal process for collaboration on the Java technology has been formalized in what we call the Java Community Process. Along the way, in four short years, the Java community has developed over 80 new interfaces.
All well and good, you say. But Java is grown up now and it's time to let go. Make it open.
The term open is bandied about these days and associated with lots of technologies. But what does it mean for a technology to be open? To my mind it must possess at least three qualities:
With these four steps we can ensure innovation while maintaining compatibility. Java meets these criteria, hands down, and that's why, to my mind, the technology has achieved such overwhelming success. It provides a stable base for the millions of developers such as you to innovate upon.
- The specifications must be published.
- The source code must be accessible.
- There must be a process for allowing the community to innovate on the source base.
And to ensure that this technology has a practical purpose within the business world, we added a fourth requirement:
- Any modifications to the source base must pass compatibility testing.
Over the past four years we have continually refined the process. Early on, for instance, we had very restrictive licensing terms and an informal, undocumented process for collaborating. Over the past four years we have relaxed the licensing terms considerably, most recently making the source to Java 2, Standard Edition runtime, available for free. At the same time we have been working assiduously to formalize the process for how others can get involved in evolving the standard. Dozens of companies throughout the world participate in this documented, audited process. This process, in fact, allows anyone in the industry to participate in expert groups for defining new APIs. Right now there are proposals ranging from real-time OS to an interface for Braille.
I'd find it difficult to come up with any technology in the industry that has undergone such rapid evolution while maintaining a source base that the industry can rely on to do what it's supposed to do.
Okay, you say, but why not just let a standards body take it over? This is their area of expertise.
We've looked at going that route. And quite frankly, we're hard pressed to find an organization that moves at Internet speed and can promise to deliver a model that fosters innovation while preserving compatibility.
I recently received an e-mail from Bruce Scott, CEO of PointBase, who noted that "the reality is that Sun's Java Community Process is more open to the Java community than a public standards process would be."
Other key Internet de facto standards - such as HTTP, TCP/IP and XML - aren't "blessed" by traditional standards bodies like ISO and ECMA. Instead, they're managed by groups similar to the Java Community Process.
So what's next? Right now we're working overtime to refine the Java Community Process still further. We're plowing new ground, as we have been for the past four years. We've tried lots of things that haven't worked out. And when that happens we hear from the industry - immediately.
We're constantly looking for input into what we can do to improve our process as well as our communication to the world for what we are doing with the Java platform. Examples
of new technology initiatives can be found
at Sun's Java Community Process site at
In the meantime, if you have a moment or two, I'll dig out the home videos.
George Paolini, vice president of marketing of Software Products and Platforms at Sun Microsystems, is responsible for managing all public relations, Internet, strategic and technical marketing branding, and trade shows and events within that business unit. George is also a member of the Java Developer's Journal Editorial Board.
He can be reached at: [email protected]