The next battle in Web services software development pits Microsoft against Java creator Sun Microsystems, along with Java adherents IBM, Oracle and others. Crucial to Microsoft's effort is C#, a Java-like language that will soon be part of the company's new Visual Studio.Net package of software-development tools, which was released to developers Wednesday.
Gosling, a Sun vice president, is dismissive of C# but admits he and others at Sun initially "panicked" when they learned of the language.
"The trite answer is, 'Imitation is the sincerest form of flattery--thank you very much,'" he said this week. "But the other answer is, 'You guys (at Microsoft) still don't get it,' because it's sort of Java with reliability, productivity and security deleted."
In an interview with CNET News.com, Gosling dissects C#, discusses Java's popularity and explains what it's like to be a "superstar."
Q: Why do you say Microsoft's C# is Java without the reliability, productivity or security?
A: You find stuff in it that has essentially loopholes for everything. They had this problem in their design rules that they had to support C and C++, which means you have to have a memory model where you can access everything at all times. It's the existence of those loopholes that is the source of security, reliability and productivity problems for developers. So on the one hand, they copied Java, and on the other hand, they added gratuitous things and other things that are outright stupid. That's amusing.
We were panicked (about C#) a while ago. And we've gotten somewhat more relaxed about it. It's certainly something to be concerned about, given the amount of resources Microsoft can bring to bear. But I've had conversations with developers. It has not been that big an issue with developers. It's actually been much more a public relations issue than a reality issue.
Where is the growth in Java development? Is it still mostly on the server side? What about the desktop?
It's both. You can't actually separate them because these networks that we're building are a bunch of things that communicate and are interdependent. Anytime someone builds a little application that runs on a cell phone, there's something that goes on the server. It's kind of like saying, "Is the blood pumping in your left arm or your right arm?" It's both.
Wireless has been very active because it's been particularly sexy. But desktop stuff has huge activity too. I suspect the amount of activity on the desktop is much huger than what's going on in wireless. You see people doing Java-based internal applications all over the place, regular desktop applications that are sort of front-ends to the things in the back, or standalone things.
The level of activity is just amazing; it's like every year I think it's going to slow down. The Java world has just been accelerating, and it's amazing how essentially anywhere there is a digital system, there's someone building something in it with Java. It's become this development environment and tool that gives you the unifying framework that colors everything, from supercomputers to smart cards.
What projects are you working on now for Sun?
For me, (inventing) Java is 10 years ago, so I decided a couple of years ago, it's time to get on with my life. So I went back to the research lab at Sun, and lately I've been on a developer-tool project. There aren't a lot of people building IDEs (integrated development environments). And IDEs are generally targeted at low-end developers--people who are not experts at writing code. And if you look for tools that are oriented toward (those) people, you basically find nothing. The No. 1 tool (in that area) is Emacs, and I was kind of the guy responsible for the original Emacs, 23 years ago. One of the things I find frightening is it's still around, and in many ways it hasn't really changed. Is that the best you can do for a (low-end) developer? I don't think so.
We have a development (tool) called NetBeans that Sun bought. It was architected from the beginning to be a framework. It's a flexible system we open sourced a year and a half ago. And so I'm building a plug-in for NetBeans.
IBM created its own open-source project called Eclipse, which aims to integrate Java development tools so a software developer can choose tools from different software makers, plug them together, and have them work together. While nearly every toolmaker has joined the Eclipse project, Sun hasn't--and IBM executives have complained about that. What's going on?
NetBeans is very much like Eclipse. They said we were being bad because we didn't join Eclipse. But they didn't even ask us. We didn't find out about it until they announced it. It's been a little weird. To us, Eclipse feels like something very "me too" and derivative, backed up by a really strange marketing campaign.
Do you see the two open-source projects coming together?
They may. I mean, I'm sure there're people looking at what it will take. It's hard to tell how these things go. The important thing is to come up with a common set of APIs (application programming interfaces). We've been working on APIs for the last year and a half. It would have been nice if IBM had actually joined into our open-source effort that's been going on for a very long time.
Microsoft is making aggressive moves on the Web services front. There's some talk that Java is trailing in the Web services game, since the Java supporters, through the Java Community Process, won't come up with a Web services standards until later this year. Your thoughts?
We get asked about slowness a lot. I've made the comment that democracies work slower than dictatorships. That's a true thing. One of the key aspects of Web services is that it's all about cooperation. So if you are building a standard airline reservation system you have to get Travelocity, Orbitz and Expedia into a room, and they have to agree on a common schema in the Extensible Markup Language (XML) world for describing what is a flight and what is a request for a flight. One could try to dictate to the airline industry what all their reservation systems should look like, but they would not be real happy about that. I don't think that would be successful, because Web services is inherently about cooperating, so there has to be some kind of democratic process.
When you try to get Visa, MasterCard, Citibank and American Express, and the list of people in the Liberty Alliance (to create a standard for an authentication service over the Web), getting them to agree is going to be hard. But they are actually committed to agreeing. They understand they have their own agendas, but to further their own personal agendas they have to cooperate. So they are actually doing some good work.
The last time we interviewed you, about four years ago, you mentioned that when you made public appearances at conferences, Java developers always asked you for your autograph. Are you still treated like a superstar, and if so, how does it feel to still evangelize Java?
It's flattering. Just before Christmas, I signed a T-shirt while the person was wearing it. Someone had an ink marker and asked, "Can you sign my laptop?" I signed the laptop cover. It's mostly (signing) pieces of paper.
I enjoy evangelizing Java. In my heart of hearts, I'm an engineer, and what makes me happy is building something that works and having someone use it. That's cool. But when evangelism takes over my life, which it did, life becomes unpleasant. For a while, I was (focusing on the evangelism) for medical reasons, because I had really bad carpal tunnel and RSI problems (and couldn't use a keyboard). And a couple of years ago, I went through a bunch of surgeries and it was like magic. I could work again. I've had a lot of fun since then.