After you’ve invented Java, what do you do for Act 2? Well, if you’re James Gosling, you retreat to the quiet sanctuary of Sun’s research and development group, Sun Labs, and spend a year working on the next generation of software development tools.
For Gosling, that means a project called Jackpot, which aims to make it easier to manage and maintain large software development projects.
He likens Jackpot to the lint, the C language code-checking software, “on steroids”.
Gosling also keeps his eye on emerging trends in the Java ecosphere and though he claims to be more interested in Java’s role in cell phones and PDAs (personal digital assistants) than in the data center, as Java’s creator, nobody has a more interesting or authoritative take on Java’s future direction than he does.
Though Gosling said that Jackpot would not be ready for a public unveiling at JavaOne in San Francisco in June, in this edited interview he did say that Sun was readying some new developer tools aimed at making Java and Java-based Web serviccs easier to use and develop.
What are you spending your time working on at Sun Labs? Are you still working on Jackpot?
James Gosling: That’s the project I’m working on the most these days. One of the debates here had been whether or not it had been ready to show off at JavaOne or not. We decided, naw, it’s a little to shaky to show off right now. It’s a lot of fun. It’s kind of hard to describe. You could think of it as something like a refactoring tool or a super lint or any of a number of things.
Are there commercial products that are like Jackpot?
Gosling: There are products that are kind of in the area, but this one has turned into more of a rocket science project than it should have.
Do you think we’ll be seeing this by next year at JavaOne?
Gosling: Oh yeah. I hope that we’ll have something out there long before the next JavaOne.
Some developers have said that they’d feel that Java would benefit from a standard integrated development environment (IDE), such as Microsoft has with its VisualStudio product line. In retrospect, if you could have your druthers, would you have the Java tools market evolve the way it did, or would you have done something differently?
Gosling: I guess I happen to be an ecologist on this. You can think of these as ecologies. In the Microsoft way, there is only one, you either take what Microsoft gives you or you take what Microsoft gives you — or you revert to an agrarian life style. There is no choice. With choice, there is inevitably confusion. Imagine if you go to a multiplex movie theatre. Yes, there’s a problem, there are a dozen movies showing and you have to pick one.
But don’t you think all of this choice has contributed to the perception that Java is hard to use?
Gosling: In some sense that is our fault at Sun. If you look at our customers, our customers tend to be really high-end people who make big sophisticated systems. So a lot of the APIs (application program interfaces) and tools that we’ve built are all around building these gigantic systems. If you want to write the software to control the national medical system of a large country, Java is perfect. That particular example has actually been done, and the people are very happy with it. A million or so lines of code later, and you’ve got a rock solid system that works very well.
Who did that?
Gosling: That was a project funded by the UN in Brazil. They’re going to be at JavaOne this year giving a talk. But to answer your previous question, we tended to focus on really high-end developers, and by and large with the tools that we’ve made, we’ve not really worried about people trying to do simple things. But that has been recognised as an issue and we’ve been doing a lot on that particular topic, and there’ll be some interesting announcements and things to show off at JavaOne.
Some easier to use NetBeans-type tools, you mean?
Gosling: Yes. And I’m actually pretty jazzed about them.
Can you tell me anything more about them?
Gosling: At this point, no.
So, other than easy-to-use Java tools, what else are you looking forward to at JavaOne?
Gosling: The really big trend these days for me is how interesting and how different the edge of the network is becoming. The data center side of the world is kind of like a solved problem, but you see interesting things happening on the edge with things like cell phones and embedded systems that are becoming really fascinating.
Are you saying that Java 2 Enterprise Edition (J2EE) will not necessarily be the most exciting area of new development for Java?
Gosling: I’m not exactly sure how to answer that carefully. I mean, J2EE remains a very exciting thing and it has been extraordinarily successful, but it’s become so successful and so pervasive that it’s kind of like the oxygen in the air that you breathe. It’s everywhere; you depend on this critically, but it’s not what excites you when you get up in the morning. Of course, if you found yourself on the surface of the moon, all of a sudden it would be really exciting to have oxygen. But around here, oxygen is a fairly common thing.
What about the desktop?
Gosling: Java’s actually been doing very well on the desktop. It’s been kind of a quiet thing, but you find people doing desktop apps all the time. You see it particularly in IT shops where people do custom desktop apps internally. You see lots of university students building them.
There are some issues around platform integration — the way that the Windows world works — that often makes it better for folks to use Microsoft tools to do Windows desktop stuff, but one of the nice things that’s been happening lately is that there are desktops other than Windows that are starting to become commercially relevant. The Macintosh is getting some interesting traction, which I think is incredibly wonderful, the Linux guys are getting some traction, though not as much as the Mac on the desktop, and now that there’s a diversity of interesting delivery platforms for desktop software, Java’s kind of the only game in town.
Also, there’s been a pretty interesting uptake in the gaming world. Certainly gaming in cell phones is already almost 100 per cent Java, and that’s a huge world. It’s unbelievable how much gaming software there is in cell phones.
Here in North America we aren’t really aware of that because we basically live in a third world country, when it comes to our telecommunications infrastructure. We’ve competed ourselves into the bush league, but it’s getting a lot better here.
Is there anything that you like about C#?
Gosling: Other than the fact that imitation is the sincerest form of flattery? There was a time when we were worried that they would do something really interesting, which would be trouble for us. But they mostly didn’t.
Developers have said that it has better attribute-oriented programming support than Java, that makes it much easier to write Web services with C#.
Gosling: There is no attribute-oriented programming in C#. If you look at the Web services support in Java, it works pretty smoothly. The thing that the Microsoft folks did a really good job of is the easy-to-use tools for making application building simple. So, that’s not so much an issue about C# as it is around the tools. And this gets back to what we were talking about earlier on. One way to summarize it is that in the historical Java world, really hard stuff has been possible, but easy stuff has been a little difficult. In the Microsoft world, easy stuff is easy, and hard stuff is impossible. So we’re working really hard on the easy stuff.
What needs to be done?
Gosling: I think most of it’s around tool development, so stay tuned.
To what extent are Web services influencing the development of Java?
Gosling: What do you mean by Web services? One of the definitions of Web services is anything you do by XML (eXtensible Markup Language) over HTTP (HypterText Transfer Protocol). If that’s your definition of Web services, it doesn’t actually affect the language very much. It’s affected a bunch of APIs. We’ve got all kinds of plugin packages for doing XML over HTTP.
But if you take a broader perspective of what Web services are, where they are providing services across a network, then that’s something that pervades every fiber of the design of Java. In my mind, the real turning point of programming language design that marks Java from the things that came before it was, “What are the implications of the network?”. So you worry about things like reliability and security.
If you look at the basic design of Java, a lot of the detailed stuff in the language comes out of, “What does it take to make a really bullet-proof secure system; what does it take to make a really bullet-proof reliable system?”
If you look at the set of tools available for doing Web services available in Java, they’re actually pretty huge. You can do absolutely everything you could conceive of doing, and that’s kind of the problem. They’re very sophisticated. It’s kind of like finding yourself in the cockpit of a 747 when you wanted just a Cessna to go across the pond.
So the work that needs to be done with Web services on Java is really a matter of simplification?
Gosling: Yeah, it’s almost cosmetics rather than structure.