News Stay informed about the latest enterprise technology news and product updates.

James Gosling: For Ruby or Ajax or SOA, it's NetBeans

What does the Father of Java think of the emerging interest in rival languages such as Ruby? A lover of diversity, James Gosling says he's played around with Ruby enough to understand the attraction, but his heart belongs to Java and what Sun Microsystems Inc. is pulling together under the NetBeans tent. He understands why Ajax coders are frustrated with JavaScript, but he says the answer will be found in NetBeans. In Part One of the SearchWebServices interview with Gosling, he discussed the history and philosophy of Java. In the second part he fields questions on Ruby, JRuby, Ajax and SOA, and tells why he believes the answer for most developers is Java and the NetBeans IDE.

Read Part One

How do you view Ruby and other emerging languages in relation to Java, is this a natural evolution, or is there a danger people will be all over the board with boutique programming languages?

I've always been a big fan of diversity and diversity certainly has its dark sides and it's like it's really confusing. The thing that Java tries to do and is actually remarkably successful at is spanning a lot of different domains, so you can do app server work, you can do cell phone work, you can do scientific programming, you can write software, do interplanetary navigation, all kinds of stuff in Java, whereas a lot of these other languages get a lot of their strength from being fairly domain specific. And at some level I don't really care about the programming language. What I really care about is the underlying semantics and the ability for things to interconnect.

The Java Virtual Machine is reasonably general purpose. Over the years there have been literally hundreds of languages built on top of it, most of which nobody has really cared enough about. So, when you take a language and you host it on the Java Virtual Machine, you get really interesting portability, if you do it right you can get very interesting performance and most of all what you get is the ability to interoperate and interact across languages – having stuff written in JRuby directly calling stuff written in Python or Jython or Groovy. There's even a compiler for Visual Basic to target the Java Virtual Machine. The traditional way of implementing programming languages is one where they're all individual islands that don't really interoperate at any level that's more fine grained than network protocols. You can't call similar APIs without breaking it into a server and calling across address faces, something that's fairly expensive. The Virtual Machine is what lets them be one big reasonably happy family.

Have you had any chance yourself to look at Ruby?
I guess I'd call myself moderately familiar. I haven't used it a lot. I have somewhat. As a language it's fine. The interesting bit is the Rails framework. The Rails framework, if what you want to do fits with what the Rails framework wants to do, it's actually pretty slick. But people use all the methodology of the Rails framework in Java all the time. In fact there are various ways you can use Rails on the Java platform. There's Groovy, which is kind of this hybrid between Java and Ruby, that's hosted on the Java VM and they have Grails – Groovy on Rails, which is basically all the concepts from the Rails framework wrapped around Groovy. And then there's the JRuby guys who have something that lets you run Ruby programs on top of the Java VM and that's starting to get pretty interesting. All the "on Rails" stuff works perfectly well in that environment and it gives you the ability to access all of the Java APIs. When developers are asked why they chose Java over other languages like Ruby, they often say scalability. Do you still see that as Java's major strength?
I certainly think of scalability as a major strength and as long as you say a major strength, yeah. One of the problems here is that the space of developers is so large that what they care about varies tremendously. Many people don't care about scalability, let's say, as much as they care about reliability and there's a whole lot of stuff in the Java world that's about building reliable systems. So would you rank Java reliability as equal to scalability?
Yeah, and a very close second or maybe a factor zero, is security. All of the Java APIs have security woven through them, pretty much everywhere. That turns out to be a really, really big deal for a lot of people. Some people don't care at all and for some people it's absolutely life and death. When you were originally creating Java, did you in any way envision what's happened with it or have you had a lot of surprises?
In a strange way, a bunch of this kind of stuff, the scale and security issues, were actually thought about back then. But that was more living in a fantasy world kind of thing, kind of a science fiction kind of exercise. I never actually believed that any of it would ever actually happen. Moving from the past to the present, you're still focused on Java tools at Sun, what's happening there?
We've been having just a tremendously good time with NetBeans over the last couple of years. One of the things that we've been really pushing on with NetBeans is to have a lot of specialized knowledge in multiple domains. So, we put a lot of energy into things like tools for enterprise programming and being able to support SOA to be able to support all of the Web services, so it's really easy to build a Web service, so it's really easy to tie Web services together in SOA architecture, to be able to debug and deploy app servers very transparently.

And at the other end of the scale to be able to do advance development on things like cell phones and to tie them together and to be able to set a break point in a cell phone and set a break point in the app service that it's talking to. And do this sort of interesting end-to-end development. That's something we've focused on pretty heavily. Then you tie in some of the higher level stuff that's around things like graphical user interfaces through app servers. We've got all of these facilities that integrate lots of different frameworks from the Ajax support to embedded applets to all the JSF struts framework, so we work hard on making all these components actually play together, so that people can use very advanced, sophisticated Ajax components without really being aware that that's what they're doing. There's been a lot of interest in Ajax, as you probably know, but one criticism involved the difficulty in using JavaScript as part of it. Do you see that getting simpler?
Ajax is a really funny thing. You can actually do, using Java applets, pretty much everything you can do in Ajax and you get much better portability. Ajax is a technology that at its heart has been around for quite a few years and mostly took off when they came up with a clever name, but it really suffers from the fact that there are so many flavors of JavaScript. And it's kind of been… it's the example that keeps convincing us that we have to be really, really careful about interoperability in the Java platform. Because when you start to get out of line, the way JavaScript did, it just causes an interoperability nightmare for developers. So, one of the things we try to do is make it so that people who are using JavaScript components don't actually have to worry about JavaScript at all. They just see the components as kind of a black box that they can drag and drop onto their applications and they don't have to worry about the can of worms that's inside. That's what you're accomplishing with NetBeans now?
Yeah. What's the latest status on NetBeans? Are most of these things available to developers who want to do Ajax now?
Go to, pretty much all of this is in NetBeans 5.5, and there'll be a whole new revolution of this in NetBeans 6. The early access bits are out there already. And all the stuff that's in [Sun Java Studio] Creator although the bits and pieces of Creator are really being reorganized and integrated into the core of NetBeans. How are Java Studio Creator and NetBeans fitting into this picture?
We're on the track of taking what were really independent products, we had these three products, there was NetBeans and there was Java Studio Enterprise, which was all the really high-end developer tools and then there was Creator which was also an enterprise development tool but focused on the sort of rapid development of Web applications. Enterprise and Creator were built on top of NetBeans, but now we're getting rid of the fantasy that they're independent products. Well, we're still doing a certain amount of packaging them that way, but we're putting a lot more emphasis into integrating all of the different styles of development so that developers can work on projects in a lot of different styles depending on the different aspects.

For more information
Sun's Tim Bray on why he doesn't love SOA

Thomas Erl on why we should focus on service-orientation more than SOA
Is there a special focus on SOA and Web services in NetBeans development?
There are certainly a lot of tools in the new NetBeans that are particularly about SOA and Web services. It's everything from support for all the protocols to being able to do UML modeling for large architectures. It sounds like NetBeans is at the heart of everything, is it?
What we're doing is we're orienting everything around NetBeans. So, all of our tools for doing software development in C and C++, and Fortran are all essentially parts of NetBeans. Netbeans itself really is a sort of core framework into which you can plug in different kinds of modules to do everything from manage deployment for different kinds of app servers to managing semantic grabs for different kinds of languages. So, we're able to support multiple languages. NetBeans is not a pure Java environment. It's a way that you can develop in lots of different languages. Sun just hired the developers of JRuby, will JRuby eventually fit into the overall Netbeans?
It will eventually. Exactly when, I don't know.

Dig Deeper on Topics Archive

Start the conversation

Send me notifications when other members comment.

Please create a username to comment.