Transcript of the James Gosling and Alan Baratz
Opening Keynote Session at JavaOne.

Delivered May 29, 1996 at Moscone Center, San Francisco, California.

James Gosling, Vice President and Sun Fellow, Sun Microsystems, Inc.
Presentation entitled "The Journey."

Dr. Alan Baratz, President, JavaSoft.
Presentation entitled "Java: Opening the Door to the 21st Century."

With opening and closing comments by JavaOne host, John Gage, Director, Science Office, Sun Microsystems, Inc.




Gage (Host):

Good morning. I brought along some friends, some books that tell us about the Java Platform(tm). Let me put these down for a second. [sets down a big stack of books]

There are many more of us here than anyone anticipated, as you can tell there are almost 5,000 people. Downstairs there are a few thousand more, and by satellite and multicast, there are many thousands more. Many of you have been to similar meetings in Tokyo, Singapore, Kuala Lumpur, Seoul, Moscow, Paris, or Brussels. We've had between 35,000 and 50,000 people come to Java Days like this to learn about something as technical as a programming language. I think it's astonishing that we're all here to talk about a programming language, and to talk about something as rarified as dynamic allocation versus static allocation. But what we're really here to talk about is writing programs once that will run on all computers without recompilation.

While you are here today, I want to ask all of you to do something that will change the way you and your businesses work for the next five to ten years. Usually, at a meeting like this you'll come into this room, you'll sit in some place, you'll go out to break, you'll come back and you'll sit in the same place. Don't do that. Mix it up a bit, because there's a feeling here today very much like the feeling you have on the first day of school, when you don't know anybody, but you meet people accidentally who will remain friends for the rest of your life. Businesses are forming today in the halls, on sidewalks, or getting coffee. Don't be shy at all. If you have a project you're working on, talk about it in a loud voice so that someone will overhear you and ask to join your group. I saw that happen this morning on a street corner.

The companies that are going to benefit from the technical changes that Java brings will be the companies formed today, tomorrow, and the next day. It's very important to meet as many people as you can. Don't be shy. When we began the Java project, when James Gosling and a small group went to a small office across from the Stanford Linear Accelerator-first three people, then five people, then eight people-when that small group talked to other friends, who talked to other friends, we recruited half the operating system people from NeXT, the Java Group grew. The discussions about the form of the language became richer and deeper, yielding what you know now as Java. These discussions will take concrete form in the next few weeks when Bill Joy and Guy Steele finish the syntactic definition of Java-the book comes out in three weeks-and you'll have the 20-chapter description, the final description of Java 1.0.

I brought these books to show you because some of those people who met each other casually-here's Patrick Naughton's book, here's Arthur van Hoff, Sami Shaio, and Orca Starbuck's book-all these people were part of the small Java crew that drank coffee in Palo Alto and talked about the direction the language would take. If I stack these up, there are 97 titles, and these are only the English-language titles.

I want the authors of these books who are here to come up to me some time during the day. I'll give you a ribbon for your badge that will say "Honored Author," because you're our voice. You're interpreting the directions we are taking in a clear way, in language that we can all understand. We're indebted to all the authors here. I'm going to give you a special ribbon. And I want to recieve an email from everyone out there who's writing Web-based books about Java-there's a beautiful one written by a professor in Northern Japan-Web-based books are giving people a way to learn the language at whatever level, at whatever speed they feel comfortable. Please send any references you might have for books and authors in all languages to lisa.friendly@eng.sun.com. We'll put them up on the Web site.

Since Java has become such a phenomenon so quickly, many of you are more familiar with Java than with Sun. So here's how Sun works. If you want to send me email, it's john.gage@eng.sun.com for engineering. Scott McNealy, the President is scott.mcnealy@sun.com; Bill Joy is bill.joy@sun.com; and James.Gosling is james.gosling@sun.com. If there's something that you think we ought to know, please mail us, because the only way that we continue building, refining, and strengthening this amazing change in computing, is by listening to everyone here and forming small conversational circles where we can all learn from each other.

Now let me introduce the person who formed the first small circle. This came at a time when Sun was building the Solaris(tm) Operating Environment with 15-million lines of C and C++ code; taking forever to get out a new version; taking forever to fix bugs, proving to us that something new was needed in computing. So James Gosling took a small group and began this conversation. How do we learn from Pascal, Modula, Oberon; how do we learn from Self, Small Talk, Simula; how do we learn from all the language innovations of the last 20 years and make something new, modern, and simple? How do we do that?

So with no further discussion, let me introduce the person that began this discussion and is at the heart of it now, James Gosling.

Gosling:


Hello, thank you and good morning. I'm really amazed to be here. This is quite a crowd of people. It's much more than I would have ever expected. And now I'm standing up here, on this "pulpit," I feel as if I ought to be giving a benediction or something.

For the next 25 minutes, just to set the stage for the rest of today and to give people a sense of the context, I'm going to talk about the journey we've been on for the last year, or for me and the people I've been working with for the last five or six years.

This started a little over five years ago, with a small research group working in a back corner at Sun-we rented some space on Sand Hill Road, far away from just about anybody. We set off, in that little corner, to think about digital systems in everyday things.

We were noticing that in everything, from doorknobs to toasters, there were CPUs, and these CPUs were starting to get pretty serious. In our work with Sun, we had a lot of contact with people in various consumer electronics companies. These people had a very different perspective of the universe, and they were coming at digital systems from a different direction. So we built a prototype from that, and went through a number of hoops and grinds. Then we made the mistake of applying this stuff to the Web, and that's when life got really, really loony, but it was a lot of fun, and it's been a lot of fun the last year.

This is a cartoon. It's a little hard to read. It's from the New Yorker, 1981. I clipped it and stuck it on my wall a long time ago. The title at the top says "Don Z. and his user-friendly apartment." There's a record player on the little thing on the side there-for those of you who remember record players-which says, "Say Don, how's about we spin some platters?" And the lamp is saying, "Don, do you think you could use a little more light?" The chair is saying, "Don, relax. Take a load off." I've always had this up on my wall-I mean, originally it was this kind of lunatic fringe reaction to the Apple Macintosh. But, it got me thinking-got a lot of people around us thinking-about building these systems and devices that were intended to be in a person's life where they're communicating and talking to each other.

One thing that became clear as time went on, was that both data and behavior needed to be communicated. These devices needed to describe themselves to each other; not just give a picture, but some sort of behavioral notion of how they work and how they interoperate. We were gravitating towards this idea of having little quanta of behavior; little lumps that you could "squirt" from one piece of the network to another. All of this was driven by thinking about things in people's homes and what it meant to build devices for real people.

We talked to people in Japan, at companies like Mitsubishi, and companies in Europe; we talked to a lot of engineers and marketeers, and the people who were actually involved in making toasters and elevators and the rest.

Really the issue boiled down to a shuffling of the priority list. In the computer world, there's one word, "compatibility" that's the lord of everything. Unfortunately, that turns into almost a tyranny. And in the world that we were looking at then, there was a bunch of issues that were more important than compatibility For example, How do you make this thing safe? How do you make it reliable? How do you deal with the network? Compatibility is a good thing, but at the level it tended to get practiced, it was anchoring everybody in the early '70s, which is really where a lot of the technology in common use today is based.

What we did was build a prototype device and this is it. [speaker holds up a small device with a display screen] This is what we called a Star7 (known originally as *7), and it's built with "hammer technology." This is my handy-dandy boot device, also known as a paper clip. Somewhere in here, there's a boot button-I think I've got it-and with luck, this one will actually start. This was built about five years ago in 1991. It doesn't seem to want to start. Let's try the usual solution and rip the power connector out. Ah, the screen flashed. Anyway, this is a Star7. It was built by hammering together a lot of different things. There's a TV set here from Sharp. There's a motherboard in there that's a small SPARCstation system.

I don't know if the camera can zoom in on this thing so that you can see it? This is where Duke came from. This is the boot screen. You can see the earth, and there's Duke's hand, and he's "giving the manual" on how to use this thing, which is sort of "touch it and it goes." Now we come into the world and here's Duke. This is where Duke originated by the way, in the Star7.

We have this universe in here where you can "pan around," touch things, and go into different houses. There were some issues about the little JPEG decompressors on these things that didn't work really well. This is a house near where Duke lives and you can see that Duke followed us along. Here you can navigate into the living room. This is a very "cartoony" user interface, but remember it was five years ago we did this. A lot of what we were trying was about different ways of navigation. Here's a TV Guide. Let's see if we can-whoa, off into hyperspace! We can navigate into TV shows and look at stuff. We had a lot of fun with this one. We can actually rip off, and drag and drop TV shows. And when we drop them on Duke, he puts them in his pocket. I don't know if anybody can see that animation...But Duke was a lot of fun. Actually we can go into Duke's house. If we press on Duke and Duke is listening-the touch screen here is a little on the fragile side-oh come on, you can do it. Ah, here's Duke's house. You can see Duke's pants and somewhere under there are Duke's hats. If you put the hats and pants together, you notice that there's actually nothing to Duke. He's just an outfit.

The goal of the project was to try to build this device. Sticking off the top of this is a radio antenna. This is a 200-kilobit per second, 900-megahertz spread spectrum radio. It's also got some PCMCIA cards, some batteries, and other features. We built a network out of this. The actual device here was built by Ed Frank, Craig Forrest, and Al Frazier in a pretty "studly" display of hardware skills.

The Star7 had things in it like speakers from a Nintendo Game Boy and connectors that came out of a Sony Walkman. We hammered a lot of stuff apart in order to make it come together. But, we were trying to build-we built-what am I saying "trying"-we built this distributed operating system that worked across a large number of devices that could talk to each other. You could actually pass objects from one machine to another. As we were trying to build this prototype-we were originally trying to build it out of C++-the tools kept breaking. It was at a fairly early breaking point when I was so disgusted that I went to my office and started typing. What became of this typing was the project called "Oak," named after the thing outside my window.

One of the things that was really important about Oak in those days, and about Java today, is that the language was never really an end in itself. It was something that was built as a tool in order to get a larger job done. A lot of the things that define what the language is come from the context in which it was put together. Even though it was just a tool, in a strong sense, it's taken on a life of its own. Witness this big crowd of people here. It's certainly out of my hands and has been for a while.

We took a turn through working with the cable television business, and that was a weird experience. Then the whole Web happened, and that was just an amazing piece of serendipity, because the things that people were doing on the Web, and with the Internet, and the whole philosophy of the Web being this sort of open, crazy, and free-for-all place was exactly the sort of environment that we had been targeting. Also, the Web was going beyond people inside corporations, schools, and the small crowd of geeks. There were "real people" using it. It was really an amazing thing that it matched.

When we tried to throw it onto the Net, we had to change the name because the lawyers didn't like "Oak," but I think everybody has decided that "Java" is a much better name.

The language came about as a fusion of four primary different kinds of programming. There's the object-oriented school from languages like SmallTalk; or one of my favorites, but mostly forgotten, Simula 67. Then there's numeric programming, a minor passion of mine, which is difficult in C. One of the things I was very clear on was making sure that arithmetic was well defined and worked well inside Java. There was also the systems programming flavor in much of the style of C.

The thing that distinguishes Java is the approach to distributed programming; in that there are lots of people who have done cuts on distributed programming that really look like this computer is an island talking to that computer as an island, where there's a sort of communication mechanism. But the language itself, and the underpinnings of it, don't deal with being distributed.

There was also a subtext of trying to build quality software, because when you're building things for real people, it's really good if it doesn't break. For many people in the computer world, if it breaks, that's okay, we just reboot and hobble on. But when it's my mom, it's somewhat different.

We put Java out on the Web about 14 months ago. Then almost exactly a year ago, we did this formal launch at a Sun event called "Netropolis" held here in Moscone. Even though it was only one year ago, if you measure the stress hormones in my body, it feels like seven. There's a saying that the Internet runs on "dog years." If you look at the engineering development groups in your average Internet company, it feels like everybody's on speed, or something that's maybe even legal. This leads to a weird kind of life. I always thought that the software industry was nuts, but the last year has been really exceptional. It's also been exceptional in terms of the press. This is part of "riding the wave" that is the Internet. We decided to do something on the Internet and got sucked into that maelstrom, which has been pretty entertaining.

One of my favorites, is this editorial published in the Economist in October of last year along with this cartoon. It's a little hard to see on the screen there. Bill Gates is on your left, and he's being dragged into this web, and there's a spider at the side. Look closely at the spider...[audience laughs as screen displays cartoon of Gosling's face characterized as a spider]...But what's really funny is (unfortunately, I didn't have a scanned-in image of it) that this was in the October issue of the Economist, and in the July issue of the Economist, the cover showed Bill Gates as a spider, and there were all these bodies...There was Larry Ellison, and Scott McNealy, and all these bodies on the cover, all wrapped in spider silk, and he was sucking the life out of them. And so a few months later, there's... [audience laughs]...I don't understand...I wish that we at least had done a bank balance swap. That would have made it more entertaining.

So where is Java today? It's become widely adopted. I don't think that there's any piece of software on the planet that's ever become this popular, this fast in the development community. It's really quite astonishing.

There's a set of specifications out on the Web. There's a new specification written by Bill Joy and Guy Steele who are trying to get it out to the publishers as soon as possible. This new specification is actually quite intimidating, because it covers much of the material. But it's interesting when you go through that spec, and then you look at other specs. Because this is one of the few places where people have really tried to cover all the corner cases. You have to deal with all the corner cases if you're going to be as portable as you really want to be.

Also, people have been moving beyond just doing little applets. We originally launched Java and the HotJava user interface together. The model was to have these little applets in pages. But, you could do just about anything with the base technology itself. And it's been very interesting to watch people do that.

Then, going along with the very primitive tools that we shipped, is a number of people who are shipping some much more sophisticated things. There are people like Symantec and SunSoft that have development environments, and others like Borland, Metro werks, and Microsoft that have things that are really close. There are also a lot of people out there on intranets and the larger Internet who have been applying this as a different cut on client/server computing where the client is this very loosely structured thing that flows along the network and lands at the front end where it does its thing, and the client doesn't have to worry about installing it.

Java has also been spreading to smaller systems and various devices. There are some folks even working on chips. A lot of the magic underneath all this is not Java the language, nor the ASCII syntax that people edit with vi, or emacs; but in the real language underneath, which is called the Java Virtual Machine. It's the key to platform independence. It's where things like the machine-independent byte codes live, and it's defined in a machine-independent way. It's what allows software to be moved around. It's the basis of what these quanta of behavior are. And it's this piece that's been widely ported to some huge number of platforms. I have no idea how many.

One of the important things that we did when we first launched Java was to take the whole source of the system and put it out on our Web site. That did a number of things. There was the crowd of people who just play- they just had fun with it. They could have had fun with just the binaries, but they also like to have fun with the source, because given the kind of people that are on the Internet, that's sort of what fun is, right? Then there were the people who were doing marginally useful things, like porting it, which was very interesting to watch, that is, watching people port it to lots of different platforms.

But in the end, probably the most important reason for putting the source out was to allow people to scrutinize it. One of the things that we tried very hard to do was to have a story about how to build safe and trustworthy systems. A lot of that depends on how the guts of the thing are built. We've got huge test suites; last time I asked we had well over 2,000 different test programs that are applied every time we do a release. A lot of these are checks on security issues, but you really need to have clever people out there just staring at it, and having this large community of people on the Net who have been doing this stuff and discovering that they can send their bug reports to USA Today. I mean, that says something pretty weird about the entire experience. We get the bug report, then we fix the bug, and then we crank a new release. The system tightens up and it's gotten to the point where the attacks that people can do through Java are much more like a Mission: Impossible script than something that a real criminal can do. It's interesting that there are lots of things people do to share software on the Net. It has absolutely no safety at all and nobody cares. They just do it. But because we care, it puts us in a somewhat higher profile.

In terms of where Java is going tomorrow, and that is really what this whole conference is about, in some sense, is that the language at the core is mostly going to stay very stable. There are a couple of features that we may add, and there are a number of issues about cleaning up corner cases that need to be dealt with. Quality and performance are way up there; as are fixing security problems. Also very important is adding the ability to apply signatures to programs that get moved around the Net, so that when they land some place, instead of being executed inside this "tight little box," they can actually go outside the box and do things.

But the real action, these days, is in the libraries. The libraries are the application programming interfaces that people really use. In some sense, the language is just the glue that holds the bricks together. So, there's a stack of things that we've been working on, in conjunction with a whole bunch of people out there.

There's a component API that's designed to deal with interoperability with things like Olé and OpenDoc. There's a set of enterprise APIs for doing remote method invocation and remote object manipulation, plus a set of database APIs. Then there's a set of APIs for dealing with media, such as sound, video, 2-D and 3-D, VRML, telephony, and time. There's a set of APIs for security that are above the level of the virtual machine. We're doing a bunch of stuff under the virtual machine in terms of fixing bugs in the verifier. We're doing the signing code modules.

But above these, there's a set of APIs for authentication and a set of APIs for encryption. These have been implemented and done. The technology is easy. All the issues revolve around the law, just getting the Commerce Department and the NSA to be happy is where the challenge lies. Yeah, Phil Zimmerman is not a criminal. I think everybody here needs to write a letter to their Congressman because the situation is really silly-sad really. There's another set of APIs to deal with commerce, primarily to deal with financial transactions so that people can write a piece of software that charges 25¢. There's a set of APIs for dealing with network administration.

If you look at the overall structure of the Java Platform there's the virtual machine that insulates all Java programs on the top from all the "goo" underneath. There are all of these adapters for dealing with different operating systems and the one that's far off on your right is called the JavaOS(tm), which is what it takes to run Java on a bare machine.

We have a group of people who are looking at Java beyond the desktop. And there's a lot of people, outside our group, in various companies who are also doing this. Some of the devices that people are building are pretty cool. But, there's been lots of confusion about this in the press. These things are not going to replace desktop computers. At best, they're going to be adjuncts, things that give you some connectivity as you roam around, or visit small places, that can be integrated into the Web. Having different kinds of screens has some definite implication for authors. This particular device is a cell phone from Nokia. [woman shown on screen demonstrating cellular phones] She's holding two of them, one up to her ear, and if you look at the edge of it, it folds open and is basically an IBM PC running GeoWorks. But it's a cool little device.

This is my personal winner for the coolness category for hardware. This is a DRAM chip from Mitsubishi. It's a 60-megabit DRAM. And if you look in the center of it, this little patch is actually a 67-megahertz RISC CPU. This whole thing sucks very little power, and is a really fast device. Apparently the next revision is a 64-megabit DRAM where the CPU is about twice as fast. So you've got 100 megahertz in something about the form factor of your fingernail. Once you've got stuff like this, it really changes the type of things you can build. You could build a complete speech recognition system into a doorknob. I don't know why you'd want to do that, but you could. I mean, it would be fun.

But, what it all comes down to is the Internet, which we're all building together-it's not really a technological artifact, it's not really a bunch of wires together, and it's not a bunch of businesses-it is really becoming a society. One of the hard questions is: "What is this society going to look like?"

This is an article published in the San Francisco Chronicle a while ago, and it's about this question of what this society is going to look like. They characterize it in two polls, based on different science fiction genres. On the one hand is the cyberpunk tradition in the novels of William Gibson. These tend to be very dark and ominous; they're definitely streets that you'd feel unsafe walking down. On the other hand, there are people like David Brin, who wrote a marvelous novel called Earth. One of the things underlying the novel is the notion of this Net that people use to communicate, which is a really wide open, free place where people don't feel threatened.

A lot of the thinking behind the original design of the Star7 system from five years ago was about building a network infrastructure where people could communicate with each other, even if they were on opposite sides of the planet. We don't want to keep communication closed within one house or within one neighborhood; we want the doors opened to the other side of the planet, to let things in and not be afraid. And that's what we're trying to do, and I think we're doing a reasonably good job. That's the kind of thing we're really pushing as we go forward.

So thank you. It's a pleasure to be here. And I'm really glad that you're here. I hope that over the next few days you all learn a lot from the different sessions. Thank you.

Gage (Host):


I wanted to make a couple of points. I think James' last comment, "We're trying to open doors, we're trying to remove barriers," is critical. Several times he used a phrase that may be unfamiliar to some of you: "hammer technology."

What is that? It's a simple idea. If you want to build something new, and it needs special capability, look around at what other people have already built. If you want to make a new musical instrument that reads the positions of your hands, and you want something to measure distance, take a Polaroid camera, take a hammer, smash that barrier, break it into pieces, and take out the distance sensing element-it's very highly engineered; it's cheap and you couldn't make it yourself for the price.

So take that approach as you build your new devices. Break down the barriers. Take these huge operating systems, break the barriers down by taking out the parts and interchanging them. The fundamental idea is that we're able to do something that mixes parts that are already functional into your new ideas.

The second thing that James pointed out is simplicity. When he used the Star7, did you notice the design criteria, and the enginering dsicipline? The way it worked was to constrain the design to your finger being the only control element. He maneuvered through a very complicated space. He animated that New Yorker 1981 cartoon, which in fact was a distillation of a 1950s scientific fiction story; he moved through that space with only his finger. Simplify, and focus that engineering constraint. That's what makes the design elegant.

The third thing that James did, was put the sources on the Net. For us in the technical world, this is critical. You have to read what other people write; you have to comment on it; you have to change it and you have to fix it. That's the essence of the Internet. When we put the sources on the Net and everyone could read it, we didn't need a marketing organization. We didn't need anyone to make brochures or to explain things, because you could read it for yourselves and make up your own minds. That's a critical element in this. It's the style of allowing others to share in your creativity. That's where the power of this lies.

Then what happened? We received thousands of phone calls, even Mike Clary cannot make 200 phone calls a day. Every organization in the world started calling because they'd made up their minds by reading for themselves with no one interpreting for them how this worked. They exercised their good taste, and said: "This seems interesting." We didn't pay people to learn. It's the Internet where everyone learns on their own. Everyone decides on their own. Then when they decide on the right thing to do, they move. Out of that came the partnership that put JavaOne together. There are hundreds of companies that are partners, and you're among them. The person in charge of weaving these relationships together, building the future for the virtual machine on every device- you'll see a number of them today-is the President of JavaSoft, Alan Baratz.

Baratz:


Good morning. It's a pleasure for me to be here this morning and to have the opportunity to speak to all of you for the next 45 minutes or so. What's so exciting for me about this particular event is that you are the people who have made the Java(tm) Platform as important as it is today. If it were not for all the creative and innovative work that you've been engaged in over the course of the last year, relative to building new applets, new applications, and new tools, in the Java language, and for the Java environment, we'd be just another language. It's a thrill for me to be here today to have the opportunity to meet with you. I'm hoping that I will learn far more through the course of the next two days from you than I'll actually be giving to you.

What I'd like to do over the course of the next 45 minutes is spend a little time talking about where we are, and how we got here, then spend a little time talking about Sun's strategy relative to Java, as well as some of the initiatives that we've put in place to help Java achieve its full potential in the marketplace. I'd like to announce some new products, and new product directions that will be moving into the marketplace during the coming few months.

I have to tell you, similar to what James said, that standing up here, I don't quite feel so much like I'm in a pulpit, but as it's an election year, I had thought that maybe we should enter a new candidate in the race. What do you all think of "Duke for President?" One thing is certain, you know where he stands, you know where he waffles, and you know where he cartwheels on all the issues. And if nothing else, he sure has the wave down. Maybe if we're lucky, we'll get him on Larry King Live some time within the next week.

Perhaps the best way for me to start is by sharing with you a question that I was asked about two months ago-a fairly interesting question. "Alan, what do you think of the Internet as an applications platform?" I thought about it for a minute or two, and then I answered with a question. I said, "Suppose you had a networked application environment that had the following three characteristics: First, it interconnected all large businesses, most medium businesses, almost 10 million homes, and was growing at a rate of 20% to 30% per year. Second, it supported a common data format and access protocol so that wherever you were in that network, no matter what type of machine you were sitting at, you could access any piece of data that was of interest to you independent of what database engine or server it lived on. Finally, it supported an application programming environment that allowed you to write applications once in a simple object-oriented language, and run them anywhere in that network environment; again, independent of the operating system with a microprocessor. Would that sort of networked application environment be of value to you?" Because that's exactly what we've built up to this point.

The Internet provides that pervasive connectivity, and now corporate intranets are moving that technology into the enterprise. HTML and HTTP are becoming that common data format and access protocol. And Java is becoming the language that allows you to write applications once, and run them anywhere on any device, and more importantly to be able to safely download those applications from across the network.

That's a little bit of stage setting with respect to where we are today. There's an enormous amount of momentum behind Java. I think there are probably four reasons why there's so much momentum. First of all, Java truly represents an alternative open platform for the computing industry; an architecturally neutral platform in which you can write applications without worrying about which microprocessor, or which operating system you want to run them on.

Second, safe network delivery allows you to write those applications specifically for a networked environment. Perhaps the most exciting use is being able to embed executable content or applets within Web pages, so that Web pages come to life, not just with animation, but with sophisticated new user interfaces, and user environments for manipulating data embedded within the Web pages.

Third, and perhaps even more important to you all, is that Java lowers the entry barriers for new application developers. It lowers your investment dollars-you write the applications once and get access to a very broad base of end users. You no longer have to worry about shelf-space problems or cost of goods. Your applications can be delivered across the network and ultimately sold across the network. Perhaps even most important, you don't need 20 or 30 megabytes of code to be in the application business. An applet, or a collection of applets, makes a nice entry product in this new space.

Fourth, We have an environment that is making it far easier for a new generation of application developers to burst on the scene and create value for you, for the industry, and for end users. Java makes it much simpler to manage software in an enterprise environment. In an enterprise that has thousands or perhaps tens of thousands of desktop devices, and you want to upgrade your software, you don't have to go re- install across all those devices. When you put the upgrade on a server, it will be automatically downloaded as needed.

How did we get to the point where we've generated all this momentum? Let's talk about the typical product-entry cycle. You spend a couple of years in the research lab, trying to come up with a new product concept. Then you spend a couple of years pushing that through a development process, trying to shape it into something that you believe has market value and will be robust in the marketplace. Next, you deliver your product into the marketplace and then spend years building interest in development and innovation around it, build a user base, and if you're lucky, at some point, maybe three, five, or seven years down the road, you have a product that's of value.

But suppose for a moment you had a very different type of environment for delivering a product into the marketplace. Suppose that product could be delivered to the marketplace at zero cost. Zero cost of goods sold. Suppose that product could be delivered instantaneously to all developers and all users; creating immediate innovation and collaboration around that product; generating interest and demand for that product and the products built upon it; and providing instantaneous feedback with respect to how you could improve that product.

In fact, that's what the Internet has done for us. That's what we at Sun have leveraged to help Java achieve the momentum that it has in the marketplace today. We began by making it available on the Web to anybody who was interested in experimenting with it, building upon it, and using it. That generated an enormous groundswell of application development, creating interest in a very short time among the user community, and bringing value for all of us.

Earlier this year at Sun, we created a new operating company called JavaSoft(tm). JavaSoft was put in place specifically to help Java achieve its full potential in the marketplace. We've defined for ourselves four goals that we try to keep in our minds everyday as we come to work.

It is our goal to evolve and maintain Java as a complete programming environment, not just another language, but an environment with complete system functionality, and an environment in which you can build rich, sophisticated, creative, innovative applications.

It is our goal to drive that environment to be pervasively available across all computing devices, not just traditional PC desktops, workstations and servers, but to Internet terminals, consumer devices, telephones, pagers, and embedded controllers-anything that feels, smells, walks, or talks like it has a processor-we'd like the Java Platform to live on it.

We want to encourage a rich and effective base of applications through communicating with you all, working with you, learning from you, and evolving the technology and platform in ways that you think make sense, and are important to do.

We would like to build for JavaSoft and Sun, in the same way that you would like to build for your businesses, a profitable product family, consisting of platform products, application enablers, and services.

What I'd like to do now is spend a few minutes talking a little more about each of these goals, and in particular our initiatives in each of these areas.

Relative to evolving Java into a complete programming environment, today we have the Java Language; the Java Compiler that compiles applications written in that language into a machine-independent intermediate form; and then the Java Virtual Machines, one for each operating system or microprocessor in which you'd like Java applications to be executable. What's missing are those programming interfaces and libraries that provide access to a rich base of underlying system functionality. For example, support for use of rich media types: 3-D, video, audio, image, animation, and support for enterprise connectivity, database access, remote objects, cryptography, and so on. It's those APIs and libraries that we are focused on developing and integrating within the Java environment.

As far as driving to deliver this platform across all computing devices, our approach is slightly different for the higher end desktops and servers than it is for the lower end, Internet terminals, consumer devices, and embedded controllers. Relative to desktops and servers, our approach is to work with the existing operating system providers to ensure that there is an efficient and complete implementation of the Java Platform within their operating systems.

To that end, we've announced that we've licensed almost all of the major operating system providers. They will take the Java reference implementation, tune it for their particular environment, and deliver that with each copy of the operating systems that they ship. This means that there will be an efficient implementation of the Java Virtual Machine on every copy of the MacOS and every copy of Windows 95 and Windows NT, AIX, OS/2, MVS, HP-UX, Solaris, NetWare, and so on.

Even more importantly, as the implementations are refined and tuned for each of these operating environments, the licencees are committed to remaining compatible with the reference implementation we provide. As we encourage innovation across all of these operating platforms, we are also insisting that applications written in Java will run well across all these implementations. Every implementation that's shipped is required to pass the test suites that we deliver. As we upgrade the capabilities and functionality of the Java Platform; and upgrades are added to the operating system, these upgrades will also pass the new test suites. This way, we continue to remain uplevel across all operating environments. So that as you write to the Java reference implementation, you can be assured that it will run efficiently across all those operating systems.

Relative to Internet terminals, consumer devices, and embedded controllers, we have a very new product that I'm going to announce in a minute called the JavaOS(tm). The Java operating system is written specifically for those devices, and a large set of companies are prepared to endorse that operating system.

Finally, applications, applications, applications. When people say to me, "What's important for Java to be successful," the answer is always "Applications, applications, applications," the work that you are doing. There's an enormous amount of work already going on around the development of applications for Java, from large ISVs, (and you'll be hearing from some of them through the course of the next two and a half days) to systems integrators; Andersen Consulting, for example, has developed a set of custom applications written entirely in Java for specific customers; to corporate IS organizations that are using Java to build a new generation of internal administrative applications, to the new generation of Web and Java developers-EarthWeb's Gamelan Web site, for example, now classifies over 2,000 applets in a broad range of categories.

There's already an enormous amount of application development underway within the Java Language and the Java programming environment. It is our goal to put more and more effective developer support programs in place to help you do the things that you know how to do so well.

I would like to make a set of announcements this morning. These include: the JavaOS, the new HotJava product, enhancements to the base Java developer kit, a project we call "Java Beans" (I didn't come up with the name), and then our new on-line Developer Support Program.

The JavaOS is an implementation of the Java Virtual Machine written directly to the microprocessor. It is a native Java operating system designed to be the smallest, fastest implementation of Java. In its minimal form it only requires about 512-K bytes of ROM, and about 128-K bytes of RAM. It is truly an operating environment that can fit in embedded controllers. But because it's Java-based, because it's written in Java, it can easily scale up. In fact, it can automatically download additional system functionality from across a network on an as-needed basis. This is our target for Java as the operating environment on everything from Internet terminals down to consumer devices like telephones and pagers, and on down to embedded controllers.

I'm delighted and proud to announce that over 40 companies are now endorsing the JavaOS. This includes 30 systems companies who will be using the JavaOS as the operating environment within their Internet terminals, or net computers, PDAs, set-top boxes, telephones, pagers, and a variety of embedded devices.

As an example, I'm holding a new PDA from Mitsubishi. It has an x86 microprocessor inside and is running the Java operating system. In fact, if you go down to the display booths, you'll be able to take a look at this in operation today. It has a nice little screen, a pen-based system, and everything else that you'd expect. However, it's running Java as the native operating system.

Nokia will be using the JavaOS to build intelligent telephones. Oracle has selected the JavaOS as the base operating environment for their next generation of net computers. Acer will be using JavaOS to build consumer devices. Toshiba will be using the JavaOS to build their next generation of Internet terminals, and the Taiwanese government has endorsed the JavaOS for its new network appliances industry.

In addition, over ten microprocessor architectures will be running the JavaOS: Intel x86, PowerPC, SPARC(tm), Arm, the new Java chips, and the list goes on. We have many applications and tools vendors that are adopting the JavaOS; including, Corel, Justsystems, Symantec, and SunSoft.

When we talk about the fact that the JavaOS, and Java more broadly, is going to be available across all computing devices, we mean it. It will be available through the traditional operating systems for desktops and servers, through JavaOS as well as through the use of Java in a variety of other existing real-time operating systems, for lower end, Internet terminals, consumer devices, and embedded controllers. So if you write to Java, you will have the broadest base of devices and end users anywhere as your target customer set.

The second thing that I'd like to announce is the HotJava user interface. Many of you have heard about HotJava. In fact, I'd be surprised if many or most of you haven't already used HotJava, although I suspect that probably all of you think of HotJava as a browser. In fact, HotJava is not a browser. HotJava, in our view, is a dynamically extensible network desktop environment. One simple way to think of HotJava is as the user- interface subsystem for the JavaOS.

But, it's even more than that. HotJava is an environment and a set of libraries that make it easier for you to build client-side, network-oriented applications. Think of it in this way; HotJava is a piece of software written in Java that manages end-user input and output, keystrokes, and mouse clicks, but you can also plug into HotJava new content handlers or protocol handlers.

In addition, because it's written in Java, you can easily add new classes and methods, and new graphical elements, including graphical control elements. If I write an HTML content handler and plug it into HotJava; an HTTP protocol handler and plug it into HotJava; build a forward button, a backward button, a load button and a stop button, boom-I have a browser. That's what many of you see today when you download the prebeta of HotJava. I can just as easily plug in an SMTP, mail transport protocol handler, a set of my mail content handlers, a read button, a compose button, a send button, and I have a mail client.

Perhaps even more exciting, HotJava can take those content handlers and control elements, download them from the network, and install them on the fly. HotJava can actually morph itself while you're using it. Imagine for a moment that you're using HotJava configured as a browser. You're in Yahoo, and you click on a link to the Disney Web site. But instead of getting just the Disney page, Disney sends you a new set of control elements. They take complete control of the screen, of the application environment, building a branded, complete user environment for the Disney experience. Now you go to Fox-a new set of control elements; a new branded, complete user experience. Maybe you go to AT&T and HotJava morphs itself into an integrated mail browser package. This is what we mean by HotJava.

What I'd like to do now is ask Stuart Richie to come up and give you a quick demo of the JavaOS, running HotJava configured as a browser.

Richie:


Only three feet off the ground here, but I can still feel, I think, what you're feeling up there, so...

Baratz:

Want to trade places?

Richie:

No, you're doing a great job, thanks a lot. On the screen to the right, you can see JavaOS running HotJava on top. What I thought I'd do before I run through the demos, is tell you a little about what the software is, and what the hardware is like. I'm showing you HotJava as the main application on JavaOS today, because I think it's a great demonstration of the graphical and networking capabilities that JavaOS can give you.

I'll start off by looking at our old Home Page. I like our old Home Page because it shows a fair amount of graphics, and we have an applet in there to show some movement. But, before I go deeper, I want to drive one point home: both HotJava and JavaOS are written in Java. Our networking code from the device drivers all the way through TCP is in Java. The windowing code is in Java, as well as all the buttons, all the scroll bars, and so on.

We're handling interrupts in Java, so this gives us a number of advantages. One of them is portability. Portability is a big concern when you're going across multiple CPUs. The other advantage, as a developer on the JavaOS team, is productivity. How would you like to debug your device driver as applets? Hands up? I think that's a great way to go.

As for applets, I'm just going to navigate through a few of these pages and find something interesting to run. Initially what I'm going to show you are the toy applets that we have on the Java Home Page. I think these do a good job in displaying the graphics and 2-D imaging performance that we have.

Remember, all of this is being pre-interpreted as byte codes. We're not using any special hand-tuned, "ten-man-year" interpreter. This is the standard interpreter that you have. I think we're doing a good job at rendering and downloading code using the network. So these are a few little applets.

I'm now going to show you a more serious conceptual type of applet. This is a Kodak photo CD catalog where we have a number of high quality images stored on a standard HTTP server. These images are roughly 5-megabytes each, certainly more than this little Java terminal prototype can handle. This is an example of where we have server support doing some "bit-crunching" to generate images. I can select the tiger here, do some enlargements and bring the new images over. There we go. I'm making a nice big tiger. Everybody can see him. Much of the computing that's going on here is on the server side. This allows this little Java terminal to act as a user interface. You might see things like low-cost Java terminal-type devices being shared by a high-end server. This is a very good, cost effective way of dividing cycles across many stations.

Now, for my last demo: I love poking fun at people, and I know you're all going to recognize this gentleman here.... I think James has good reason to be happy, and he's happy in this picture. But James, I'd like to give you a better smile [expands the smile on the screen] because I think this is a really great day. Now James, won't you wink for us, please? Thank you very much. Alan...

Baratz:


I don't know whether you all caught that or not, but one of the things Stuart said was that TCP/IP is running on this machine written entirely in Java. Here we're talking about; what some would consider a soft real- time piece of application code, or system code, written entirely in Java. Thanks, Stuart.

We've talked a little bit about the JavaOS, the new product that we're announcing today, and HotJava, the dynamic network desktop environment product that we're also announcing today.

What I'd like to do now is talk about some enhancements and extensions to the base Java Developer Kit, the Java reference implementation that we'd like to announce today as well. There are a series of things that we are doing and will be delivering very soon to enhance the Java Developer Kit. First, to substantially improve performance by tuning the virtual machine, and tuning the class libraries. Second, we are enhancing the functionality and performance of the AWT because for many months you have been telling us that this is important to do. We are working on it, as it is critically important for us as well. We will be delivering that very soon.

Finally, there's internationalization. I had the opportunity to visit Japan about two weeks ago, and the single most important message that came from every one of those meetings was internationalization and localization. This work is also well underway. In addition, as a part of the next iteration of the Java Developer Kit we will be integrating some of the API and library work that I talked about earlier.

However, before getting into more detail about that, let me talk about how we're doing that work. We are not evolving the Java Platform purely as an internally, Sun-focused initiative. Absolutely not. Java is being evolved as an industry initiative. We are identifying leading industry players with expertise in key areas of enhancement required by the Java Platform, we are working with them to develop the APIs and libraries. As an example, for the 2-D APIs and libraries, basic font technology and imaging model, we've announced that we're going to be working with Adobe, and incorporating the Adobe imaging model within the Java Platform.

We're evolving the platform in collaboration with key industry players. As we evolve the platform, as we add new APIs and libraries, we are insisting that these editions remain open in the same way that the base Java Platform is open: completely specified interfaces, detailed enough to be able to develop clone implementations. We are insisting that all the library work be done in a platform-independent fashion, written in Java as much as possible, but when not possible, implemented across all platforms.

More specifically, there are six areas in which we are evolving the Java Platform, relative to Java Media API, the APIs and libraries that allow application developers (all of you in this room) to utilize a rich base of media types in building your applications: Everything from 2-D, to image, to animation, to audio, to video, and to telephony support; there is the Java Enterprise API for accessing database systems and managing access to remote objects written in Java, or any other language for that matter, including full CORBA compliance. There's Java Security: the APIs and libraries for key management, block cipher, streaming cipher, and, of course, digital signature of both data and software. There are the Java Management APIs that allow you to provide rich and sophisticated system management across all devices that support Java. These are the Java Commerce APIs; in particular the Java Wallet and the ability to plug into the Java Wallet a variety of different payment protocols and payment systems. Finally, there's the Java Servlet API that allows you to build Java applets, upload, and install them onto servers, in addition to the state of affairs today, where you can download applets and install them onto clients. There's one other critically important element to enhancing and evolving the Java Platform, a project we call Java Beans or the Java Beans initiative. Java Beans is all about allowing the use of components within applications, or applets, to be shared across applications or applets. That a component, or a bean-now you know where the name came from- that a piece of a Java applet can be reused by a variety of other applications or applets. This is not only for a Java environment, but also to allow, for example, an Excel spreadsheet, or a Word document to access a Java Bean or a Java component. In fact, we are supporting bridging for OpenDoc, ActiveX, and LiveConnect, so that Java Beans or Java components can exist as objects within all of those architectures. If you want to extend Excel, you can write that extension in Java and it can be linked in through ActiveX.

We have already been able to establish broad industry support for the Java Beans initiative, including Borland, IBM, Symantec, Netscape, Oracle, and Lotus. They have all said that they are supporting the Java Beans initiative, the Java Bean set of APIs.

The last announcement I'd like to make today is that, effective midsummer, we will be providing a new on-line Developer Support Program. One of the things that I have been most concerned about over the course of the last several months, and I suspect that all of you have been concerned about too, is that it's been very difficult to get access to the people within Java who have been developing this technology. You have a lot of important questions that need to be answered, and you have a lot of good suggestions and comments about directions that we should be taking. Beginning midsummer, July 31st, we'll be establishing a new Web site that will be an on-line developer community, a place where you can get up-to-the-minute access to information about Java; participate in Java courses on line; ask questions of the experts, and participate in forums or chat sessions. Over time, we will evolve this into an environment in which you can trade classes or applets, an environment that ultimately provides a retail distribution channel for you to deliver your products to end users or consumers for a fee.

Today, we've announced five new products and initiatives for JavaSoft, Sun Microsystems, relative to the Java technology. We've announced the JavaOS; the HotJava user-interface environment; enhancements to the Java Developer Kit; the base reference implementation; the Java Beans initiative, the component APIs for Java; and finally, the new on-line Developer Support Program.

Our goal is to develop an environment, an industry, in which Java is broadly available across all devices from chips to high-end servers with development tools and a rich, broad base of applications. I'd like to thank you for your time and I look forward to seeing you as the two days progress. Thank you.

Gage (Host):


Well, all of you now know you can reach Alan Baratz at alan.baratz@sun.com. Mail him if you have anything you want him to do. You heard his promise. We'll give you a choice of email: you can have either the Disney front end, or the Fox front end. We're going to have "Little Bo Peep email," or "Bay Watch email" or "X-Files email." That's what's coming. If any of you can build that, I'll buy it instantly.

The other names I want to give you for JavaOS are: Jim Mitchell, for those of you that know Xerox PARC, he worked on the Mesa Project, another byte-code oriented way of doing things. He can be reached at jim.mitchell@sun.com. And John Kannegaard and Mike Clary. These are the central people of JavaSoft who reach out to the world, drive the technical development, and then sign you up and give you the technical and commercial support you need.

Now, you all have this program for JavaOne. This is very much like most software today. It's pretty and it's wrong. This is statically allocated- someone thought about where we would all fit for the next two days and everything has changed. [continues with details of day's program] Thank you very much.


James Gosling/JavaOne Page