Can you argue that Java was the enabler, if not the creator, of this consumer-oriented market you're talking about?
I don't know that it created it. In some sense, it was certainly a major force in creating it, but it certainly did not stand alone. In our incarnation as FirstPerson, we were trying to get the film companies and the cable companiesthe companies that had all the consumer-oriented skillsto build it; to us, that seemed like the hard part. Just getting the networking felt like it ought to be easy. So we were trying to get them to build the consumer-oriented networks. While we were off on that little charge, there was this thing happening with the Internet itself, in that the networking technologies that we were pushing (were being used by a larger number of people).
We had been doing the Internet technology from the very beginning, long before we knew how to spell the word. And so the Internet itself (at that time) was the network for universities and research labs. It evolved into something that was much more consumer-friendly. In some sense, it turned into the seed of the thing we'd been trying to get these other guys to do. So, in a sense, the launch of Java for us was about picking up our toys from one place and moving them to another. They were very compatible in the sense that they were both Internet technologies, but one was the original Internet, the geek-nirvana kind of place, and where we were coming from was this place that was supposedly consumer-oriented.
What other languages do you use on a daily basis? Do you write everything in Java?
I use it all the time. Look, here is a screen full of Java right now. Yeah, pretty much that's all I ever use.
What shouldn't you use Java for?
You can actually find people doing anything really good in software using Java, and often remarkably effectively. So, for example, one of the standard answers for "What shouldn't you do in Java?" is things like device drivers. It turns out that there are a bunch of people in real time doing this very successfully. Their company, Ajile Systems, is one whose business is doing the gnarliest kind of device drivers. They do them all in Java because they get a lot of benefits, in terms of productivity, reliability, modularity; the thing works really well for lots of folks. We find people using it in smart cards; one of the things I dabbled in for a couple of years was some of the smart card stuff.
Did you know that military dog tags are Java-based smart cards now? It is pretty amazing. Then you go all the way upstream, to these people building these amazingly large systems, super computers. Java gets used well, all over the spectrum.
I have to say that one thing it doesn't do really wellit doesn't do small programs very well. It's really more oriented towards building large complex systems. I've done a lot of scripting languages in the past, and every time I start, I say, "Well, this would be great for those little five-liners," but the problem is that people never stop at the five-liners. They always grow into these huge monstrosities. This time around I decided to optimize the design towards things that were large rather than things that were small. In some sense, that's paid off really well.
What would you advise a young developer to learn, looking toward the future?
|I'm kind of flabbergasted that so many people get into this without taking an analysis of algorithms course.
In any software project, the actual programming language is only a tiny part of the whole thing. It's sort of like saying, if you want to write a great novel, learning how to speak English is a teeny part. Telling the story is the important part.
One of the things Java has going for it these days is that it has a huge library of componentry to do just about anything. That is a really driving force. That, and understanding how all that stuff fits together is really important. Understand all that basic theory stuff. I'm kind of flabbergasted that so many people get into this without taking an analysis of algorithms course.
A lot of people do this?
Yeah, they just get in and start hacking. They take some fairly simple courses, but they never get into the real science part of it. And that kind of shows up in the systems that are built; they consume way more memory than they ought to, they have to limp along on really bad design.
What kinds of projects are you working on now?
||...there are very few good tools at the high end of the scale.
I've always been a tool builder. The problem I've been worried about lately is that there are very few good tools at the high end of the scale. A lot of the best developers I know use simple tools like Notebook, EMACS, and something called ACE. If you go into code to make a change in the name of a class, for example, you don't go just into the application, but you have to go into every place that uses itin every context. So doing something like making a change in the name of a class is not a very local thing; it's a global thing. Also, substituting one API for another API, or moving something around in the hierarchy, or forming some kind of an optimization module. There are all kinds of things you can't do well with current tools. I'm working on tools for really large systems.
One last question: How did Java get its name?
It got named by the lawyers. Before you ship any kind of product, you have to do a trademark search, of course. Well, we got to the point that we were ready to launch, and only the name was holding us up. We had none, officially. We had been calling it "Oak" within the company, but when they did a search, about 50 or 60 uses of that name came up, so that was out the window.
Then, we didn't know what to call it, so we did what a lot of companies dowe brought in a meeting facilitator. He spent like six hours with us, asking us questions, like, "Well, what name feels good to you?" He wrote a lot on a big whiteboardwe gave him goofy words, made-up words. At the end of the day, we had a list of about 20 names, ranked in the order we liked them. We handed the list off to the lawyers and said, "Just start at the top and go down the list, and the first one that comes clean, that'll be it.
The No. 1 name on the list, which everybody else seemed to like except me, was Silk. It made me think of spiders. Actually, I liked name No. 3 the best: "Lyric." But during the search, we found that some military defense operation in the UK was using something called Lyric in an app, so that was off limits.
Our first three names didn't pass. But Java, which was No. 4, came back clean. By that time, everybody was sick of the whole process. I don't think anybody at that time was particularly excited about the name. You could have called it "Mud" and we would have gone for it!