MEME 1.09

MEME 1.09

Since Java's release in March 1995, when the San Jose Mercury News leaked its location on the Net, this programming language designed by Sun Microsystems has captured the imagination of just about everyone -- programmers, frustrated commercial content providers, and, of course, Wall Street, which sent Sun Microsystems' stock price up 100% in the past six months. Designed to add a new level of interactivity to the World Wide Web, Java is seen as somehow improving the nature of electronic information.

Java is the product of several people, but one, James Gosling, stands out as the lead designer behind the project. Gosling, beset by interview requests in the wake of the Java-quake, gives few. I managed to spend 30 minutes with him, by phone that is, and what follows is a transcript of our conversation. Interviews will now be a regular feature of MEME, since the previous interview, with Nicholas Negroponte (MEME 1.07), seemed to please most of you.

David Bennahum: I'm glad I got you on the phone. Let's start out with a little biographical context before getting into Java. When did you come to Sun Microsystems?

James Gosling: I came to sun 11 years ago from IBM research.

DB: And you came initially to work on what exactly?

JG: On the windows systems and graphics.

DB: Was that always your field of expertise?

JG: Well, I've been all over the map. I've done OS stuff, compilers and languages, real-time data collection, multiprocessor stuff.

DB: But you came to Sun to work on interface stuff?

JG: Well, when I came to Sun, that was what I had done most recently. It wasn't necessarily what I was most interested in doing.

DB: What was it then that you really wanted to be doing?

JG: What tends to happen with me is that I get something in my head that I want to do and the tools don't work so I end up building tools and regressing backwards: "well the tools aren't there so I better build tools for that." So I end up spending most of my time building tools and not what I originally set out to do.

DB: Maybe that's a good thing.

JG: Yeah. Maybe. I wound up cranking out a lot of interesting tools over the years.

DB: That's what it seems like. What are some of those tools you've created, that you're particularly proud of -- before Java?

JG: I created the EMACS editor. I did the original one for Unix. It is a text editor that has become really really popular on the Internet. It is a programmer's tool -- it doesn't do fancy documents -- it is not for typing letters or writing books, it is for writing programs. Back then the things that were revolutionary and unusual were things like that it did multiple windows. You could work on more than one document at a time. These days that is sort of ordinary, but 18 years ago when that was done it was a different thing. A lot of what was unusual about it was that it was a very flexible system, you could program it to do whatever you wanted. That has been a theme in my life, building systems that are very flexible and very programmable, so you can take the tool and mold it to do whatever you want it to do. The facilities for doing that molding in EMACS were pretty powerful. For people programming in Unix it is still the most popular thing. Although in the years since I wrote that first Unix version, it's gone through many transformations so that the relationship between what is out there now and what I actually did is getting pretty tenuous.

DB: What are some of the other things you worked on?

JG: I did the NeWS window system. It was a window system using post-script for accessing the screen so you could do really pretty post-script renderings in arbitrary ways on the screen.

DB: At the time were their other programs that let you do that?

JG: No. There was nothing like it at the time.

DB: So back then you had to print it out on paper and then go back to the computer to work on it?

JG: At the time people were doing very clumsy graphics models with chunky looking text, and I was concerned about being able to draw complicated objects with arbitrary curves, and do text and rotate it and make it look pretty on the screen. That was about 11 years ago. Nobody was doing that at the time.

DB: So this is the precursor to things like Photoshop and Quark that we now take for granted?

JG: I don't know how much influence it had on any of those things. The idea was you could do interaction on the screen with the user using post-script just the way you would display things on screen using postscript. So if you were a graphic designer trying to work on something all of the tools could speak postscript everywhere from the screen to the printer. NeWS had an interesting history. People liked it a lot and that was a problem and then companies started attacking it because they were really afraid that Sun was going to take over the world.

DB: Did Sun hold the patent on it.

JG: No. I think people were just freaking out. I don't think that Sun handled it particularly well.

DB: So what are some of the applications today that do what NeWS did 11 years ago?

JG: Windows 95 does a lot of what NeWS does. But Windows is the future. [Laughs.]

DB: Back to the future. Let's talk about Java. Not since the "discover" of the Web, thanks to Mosaic, in late 1993 have we seen this kind of excitement over a new technology. Can you tell me about the history of Java?

JG: Hot Java is really the kind of a project that started five years ago. What we were trying to do five years ago was investigate the consumer electronics world because there was this whole other world of computation going on. This whole other industry using computers and digital circuits that the computer business was mostly ignoring, and is to a large degree still ignoring -- although they are getting more excited about it as time goes by. All these consumer electronics home items, if you look around there are CPUs in everything: in toasters, in microwave ovens, in VCRs, in doorknobs. They have a lot of interesting issues, so I spent a bunch of time talking to folks in Japan and elsewhere in consumer electronics companies that were trying to build real systems for real people.
The computer business by and large builds tools for geeks, and in some sense Java is a tool for geeks since geeks are the ones that build the software, but the products they produce are not for geeks, they are for real people. Java shuffles the priority list of what's important. As soon as you shuffle the priority list by thinking about building systems for real people out there, then a lot of design decisions change. One way of thinking about Java is all about is what happens when you reshuffle the priority list, so issues like building systems that are reliable and safe and secure, these all end up being more important than being able to run some old FORTRAN program, or getting really good performance numbers, or being able to run all these old applications people have lying around. They are more important than a lot of the technical traditions, because a lot of technical traditions that are tied up in the C programming language are a real problem. After talking to folks the priority list shuffles, the design shuffles. So we learned a lot of interesting things and it was accidental that the World Wide Web came along, and the Web was a situation that needed exactly the stuff we working on.

DB: Which is what?

JG: To build the human oriented software that's intended to be woven into a Network of devices that all interact with people and interact with each other, and build a Network structure that is tightly integrated, rather than being a bunch of little islands.

DB: When the Web comes around, in 1989 Berners-Lee writes the HTML standard, but it doesn't take off until 1993 when Andreessen comes out with Mosaic. Is that when the design of Java as Java starts to gel?

JG: Yeah. In 1993.

DB: So from 1989 to 1993 Java was more of a concept, rather than an actual product?

JG: We had this little research group that was me a couple of other hackers, a business guy and a hardware guy and we put together some prototypes, and the first prototype we built was a hand-held remote control for controlling TVs and VCRs. That had a lot of fun things about it. We did a user interface that was based on cartoons, so it looked more like Saturday morning cartoons, rather than a modern interface. We tried to make it very playful and engaging, more like a Nintendo game: something to try and suck you in. I think we were really successful with that; so encouraged by that we wanted to find something that we could actually make a business out of.
One thing that came out about that time was the cable TV industry got interested in providing digital services to the home and intelligent set-top boxes. So we spent awhile building tools to distribute intelligent content to the set top boxes and let people build these interactive systems. We did an interesting demo of a video on demand system, but that collapsed largely because the whole cable industry was kind of nutty. About the time we realized we had a cool technology but there wasn't a market here, because they were all trying to figure out what end was out.

DB: The cable industry is the antithesis of an open Network, I would say.

JG: Yeah. They took the whole open Network pitch and said "oh my god! Our worst nightmare," and about that time the Web was taking off, and we had built all these tools to do interactive content over Networks, so it was a natural.

DB: You just ported all that work into the Web environment?

JG: Yeah.

DB: Was that hard?

JG: There was a reasonable amount of work there, but all the really hard stuff had already been done.

DB: So from the time you decide the Web is Java's home, to the time you release Java in the Spring of 1995, that's about what, two years? When was the first prototype running?

JG: The first prototype was sort of running in the Summer of 1994. It was sort of kinda limping. It was in the Spring of 1994 that we decided to really do it.

DB: So about six months later you come out with--

JG: Yeah. We had the thing done and we released it. One of the things we did that was unusual from most people's point of view, although it seems ordinary to me, is that we did not go out and talk about it until we had something to release. We just threw it over the wall when it was finished and running, with stacks of documentation and papers explaining what it all was, and that it was something that people could just get and use and play with.

DB: Do you know how many copies of Java have been downloaded?

JG: I have no idea. I have no idea. A lot of people have been getting it, many many thousands of people.

DB: It's free.

JG: Yeah. We are making the core of the system free. The stuff that it takes to run and create programs.

DB: What isn't free in this equation?

JG: So far we don't have anything that isn't free. Which is, in one sense, a problem, because it would be nice to be generating some cash. But from Sun's point of view the important thing is keeping the Internet healthy and diverse and if a certain single company managed to hijack all the standards on the Net, and it became a Microsoft universe, then Sun would be in seriously deep doo-doo. So purely as a defensive thing, Sun has no problem figuring out how to fund this thing. We will be doing some things that we will be charging money for, but none of them are out there yet.

DB: Give me a sense, from a creative point of view, as a person using Java, from someone with no programming skills to a skilled programmer, what is the value Java is bringing to the Web and the Net?

JG: If you look at a normal Web page they have a book like feel to them: they are text and they are images and that's about it. The whole point behind Java is to let you do whatever you want. If you want to do text that animated and sliding across the screen with star bursts, if you want to put music behind something, if you want to have a little animation, if you want to connect to some database and be getting live data-feeds updated in real-time, you can do that. It is really a tool for empowering people who are building Web pages to do things that are going beyond what you can do with paper. Because the basic Web model is pretty much paper.

DB: So with Java the content can range from looking like a film to looking like a book and everything in between?

JG: Right. Right. So for instance people do things which look like books, but instead of having an illustration -- like often this happens with people doing text-books. Instead of having an illustration showing the face of an oscilloscope, what they have is a simulator with knobs and dials and you can actually tweak them and you can actually interact with the picture. So the picture instead of just being a picture of a physics experiment is an interactive simulation of the physics experiment -- you can actually do it. There are some folks at Lawrence-Livermore Labs doing stuff with tele-medicine that created a browser for looking at CAT-scans, and with that you can wander through this database of images from a human body and look at different pieces in different ways. It is very different from looking at a bookful of pictures because you can navigate through it in a very non-book-like way.

DB: So if I liked someone's interactive model, could I take it and pop it into my page? Is that the idea of the Applet, which is the application created using Java?

JG: Right. So lots of people build these Applets. Writing an Applet is not an easy thing, but using an Applet is trivial. If somebody writes an Applet that does some special effect to make a title happen, make the text sparkle or something, then you can just use that Applet and drop it in a page and make a different piece of text sparkle.

DB: So it is like we creating a communal artistic environment where people can swap tools. The Applet is one core term associated with Java, what are some of the other elements that make up the Java universe?

JG: Java is really a general purpose programming language which is designed to deal with these very flexible distributed systems. Applets are just the one interface that you can program to that uses that flexibility and distributed Network behavior. People use this for dynamic protocols, different data types, to build intelligent agents that watch for things from newspapers and do things that involve querying databases in strange ways.

DB: So you can create intelligent agents with Java?

JG: Yes. The Applet could send a piece of code into the server and have that executed in the server.

DB: But the server then needs a Java compatible compiler to make sense of that Applet?

JG: The servers that are going to do deal with this dynamic behavior need to be able to run Java programs.

DB: Is this like General Magic's Telescript programming language?

JG: It will do essentially anything that Telescript will do without signing the same licensing agreement.

DB: What's your vision for this tool you've created?

JG: It is a number of things I suppose. It is not really crisp and clear. The high-order bit is empowering people to be creative and not limiting them to what you can do on a piece of paper. This digital medium is much more expressive; you can do many more things. The other part of that is to do it in a way that creates an environment where people feel safe. There is all this talk about viruses and people hijacking Networks, and things like that. While it is impossible to make systems that are 100% secure, just like you can't build a door with a lock that nobody can break through, if you pay a reasonable amount of attention to safety and security you can build a community where people don't mind walking down the streets and they don't feel threatened. I'm really interested in building a future that people are comfortable with. One where you are not walking down the road always feeling people are going to start throwing rocks at you. I want people to be able to go to a home page at some high school in Zimbabwe, get a piece of active content from there, be able to run it, and be able to interact with these folks without being afraid that something awful is going to happen.

DB: So what's next for you? What are you working on these days?

JG: These days, the truth is, I don't get to do a whole lot of work. Most of the time I spend just talking.

DB: Telling people what this is all about?

JG: Right.

DB: Like this conversation right here?

JG: That's most of my job.

DB: Eventually you are going to stop talking about it and move on to something else. Any thoughts on what that's going to be?

JG: There are always extensions and things to do. I want to do more stuff with services, and more stuff with actually making commerce happen.

DB: Well, we've covered most of what I wanted to discuss. Is there anything you want to tell me that I haven't asked?

JG: No. I got all my hot buttons off my chest.

DB: Well, a quick question then, when will there be a Macintosh version of Java available, being a Mac user?

JG: We've had a series of bizarre problems around getting a Mac version out. The central problem is that it is really hard to find people to do Mac hacking. It seems that whole population has been dissolving. There seem to be a lot of people who've decided that, "damn, Windows '95 has won, I better retrain." a lot of people are doing that. And also we've had a lot of outside companies that volunteered to work on the Mac, but it never worked out. Now we have a couple of guys working on the Mac version. So it is going to happen.

DB: Well, thanks for talking to me, and good luck with whatever's ahead.

Meme 1.09 and its contents copyright 1995 by David S. Bennahum. First spawned by Into The Matrix at Pass me along all you want, just include this signature file at the end.

Direct comments, bugs and so on to me at