RealTime IT News

James Gosling, Creator of Java

James Gosling Along with his friends Patrick Naughton and Mike Sheridan, James Gosling is most commonly identified with the Java programming language.

Gosling did the original design of the Java programming language and built its compiler and virtual machine. He has recently been a contributor to the Real-Time Specification for Java (JSR-1), and was a researcher at Sun labs where his primary interest was software development tools like NetBeans. After a short sabbatical, Gosling has returned as CTO of Sun's Developer Products group. sat down with Gosling just before the 2004 installation of Sun's annual JavaOne conference to talk about the controversial topic of open sourcing Java, as well as J2SE "Tiger," the latest version of NetBeans, JINI and his fans in Brazil.

Q: Let's start with the topic of open sourcing Java. What say do you have in the matter?

I have quite a bit of say. I'm the CTO of the tools group. I'm involved on a whole bunch of teams here. But, Sun is an odd company in that it is extremely consensus driven. It's not hierarchy oriented so everything turns into a debating society. Which is one of the lovely and annoying things about Sun. It can be hard to come to a conclusion. But once people come to conclusions then people go for it.

Q: So does that make the question of open sourcing Java a "When" not "If" statement?

Neither, because there is the question of "how" since there are many flavors of open sourcing.

In some sense, Java is open sourced now. It's on the Web site and you can download it for free. The catch is that it comes with a license, which the people in the open source community don't like. And that one catch is about compatibility. We insisted that if you are going to redistribute it beyond your close friends that you have to do compatibility testing. When we surveyed the developer community, one of the things that matter most to them is compatibility. All of them need to know that if this is a Java VM [virtual machine] they have a reasonable expectation that that program is going to run. So we care really, really deeply about interoperability and compatibility. We have one spectacular case of one of our licensees who, after they signed the contract, felt that interoperability and compatibility was a bad thing. And that is Microsoft. We're still having issues with that.

Every year or two we try coming up with yet another formulation for a license that tries to balance everybody's concerns. The last one we did was called Scuzle, which was close to the Mozilla license.

Licenses are a weird thing. It is not about what happens when things go well. It is about what happens about when things break down; 99.9 percent of the people we deal with are perfectly upstanding and honorable. But the last little percentage is really difficult to deal with. So whatever we would do to open source we have to do in a way that wouldn't compromise that. It's hard to know how to reconcile this.

Q: Talk about the upcoming release of Standard Edition Java (J2SE) v1.5 code-named "Tiger." How significant is this version?

The Tiger release is the single most massive release we've ever done. Because it is very much a community thing, it ends up being a huge collaboration with all these various JCP groups that are contributing. We try to do a large number of smaller releases but forces always conspire and people say "You gotta do one more thing." And all of them one-by-one make perfect sense.

As for the feedback we've gotten so far, it's a combination of, "the most reliable release we've done," "really good performance," and feature-wise people are quite happy. The language changes in particular we've never done a set of language changes this comprehensive. Generics and Enumerations are the big-ticket items and meta data, while probably the least understood in the community, probably will have a big effect.

Q: How should companies approach R&D in preparation for the next generation of software architectures?

When it comes to [Service Oriented Architectures] and Web services, you need a few folks on the side who are not in the firing line to deliver anything in particular. But [as they do in the auto industry], they take the car out for a spin around the block and see if that turbo charger actually works. And if you use people who have been in the trenches in your organization, you can get a feeling for the technology; not just in the abstract. And from that you can ask, "Does it make sense. Does it provide value. What is it good for?" Every situation has some nuance that makes critical differences in the way that you operate.

Q: Can you give an example?

Well the obvious example, and this is not exactly a nuance, but if you are moving out big pieces of data the Web services protocols are usually bad unless you are extraordinarily good at encoding large objects in XML. That is bad because XML is very flexible it deals with schema very nicely. But it has an encoding that unless you are really careful can be very slow to parse and very bulky. In the extreme case is something like an MPEG stream there is almost nothing you can do to make it any tighter. So you have to take the stream as un-encoded data. Since an MPEG stream for a movie tends to be about 3 or 4 gigabytes, you probably have to put that in an ASCI text file. And that is a bad idea.

The way you can get around it is use Web services protocols to control the data into two channels since Web services is basically XML over HTTP protocol. But there are many other things that make a lot of sense. For instance, CORBA [Common Object Request Broker Architecture] from OMG [Object Management Group], which is a perfectly fine protocol and then three is all the RMI [Remote Method Invocation] stuff in the Java world, which has a lot more flexibility. Then there is JINI, which is layered on top of that, which has been doing surprisingly good these days and it does a much better job of dynamic discovery. In WYSDL it is mostly centered on building static configurations. In the JINI world, things are coming and going and it just magically reconfigures everything.

Q: Today languages are evolving so much faster. Are we developing our languages faster than our ability to use them effectively?

If you wind back the clock to 1995 when Java was launched there was zero innovation in languages. I remember going to a conference in 1996 where there were a bunch of academics who were doing programming language research. And all of these people were basically saying "Thank God for Java" because it got the world to think about something besides C and C++ and you could do something interesting.

The Java language itself has evolved pretty slowly. Everything that goes into the language has undergone excruciatingly reviews and testing. The generics that we support in version 1.5 have been a saga. And there aren't really any parts of the language that have been deprecated, but the APIs...bits and pieces get depreciated all the time and most often it is because there is a better way to do this facility and that is better than saying "it's gone" I think of it as a kinder gentler way of doing it than pulling the rug.

One thing that makes life in the Java world hard for people on the development side is that when you've got 3 to 4 million professional developers who do Java on a regular basis and huge amounts of usage all over the world. You have to be unbelievably careful.

You take languages like Groovy [JSR-241], which deals with native syntax and fields and description languages. It's a pretty nice little language and it changes all the time. And they can get away with that because there is not a huge amount of people using it. One of the tragedies of the development of anything, especially software, is that once it becomes popular, your ability to fuss around really goes down.

Q: Where else can you take Java that we haven't seen before?

Pretty much anything is fair game. If people built wires out of carbon nanotubes, which they are starting to do, it's a wire and you can program through it. There are people out there who are taking Java and using in anything that you can imagine. Some years back, someone created a Java toaster where you could turn on the small heater elements and an application that would download weather information and toast the weather report onto your bread. Pretty geeky, but fun.

And the question isn't so much where can Java go, but where will digital systems go? For my money the increasing pervasiveness of things like automobiles and control systems everywhere and having information and connectivity will be the end goal.

Q: How is NetBeans doing in the enterprise?

NetBeans has been doing really well. Our adoption curves are really pretty nice. The 3.6 release came out a couple of months ago and its been getting good reviews in the press. We even beat Microsoft Visual studio in one comparison, which I was very happy with. The reviewers put us ahead and regularly winning shootouts with Eclipse. We don't have their marketing budget, but I think as far as the technology goes, we are in very good shape.

Everyone has been busting their butt on the 4.0 release, which is the version of NetBeans that I use every day. The big thing in 4.0 is that it really revolves around [Apache's] Ant. It doesn't just incorporate wizards or allow access to be more user friendly. The code revolves around Ant. The whole notion on questions like "what is a project?" are driven by Ant.

There are nightly builds and what happens is that every individual has some comfort level as to how close they want to be to the bleeding edge. Most people want to be close to the edge in some technologies than others. Some like to be three releases back. But there are a lot of people that like to be embarrassing close to the bleeding edge when it comes to NetBeans.

Q: Are people who work close to Java and Solaris the kind that like to stick to the bleeding edge or are they more conservative?

It depends. The people who are involved in developing the stock could be very close. But we have a lot of customers who are Bankers and stockbrokers and they won't even touch a dot-zero release. They want to wait for the dot-one release. There really is incredible diversity but even in some of these banking houses, you will find the front-end guys that do their own testing because they don't trust anyone. Most of these outfits will have two or three loonies on the side who are downloading the latest and greatest.

Q: Finally. I have to ask about the Java developers in Brazil.

People don't realize how advanced Brazil is. I got a chance to see their equivalent of how our IRS works and 96 percent of all returns are filed electronically. And they use this sort of the Java applet from hell application that everybody is using on their tax returns. A Java application for the whole country with a big honking J2EE backend. There are so many really bright people there. And it's really fun. They are really out of control. The Mardi Gras and Carnival celebrations are not just a party. They are a way of life.