Read Part OneHow 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.
Yeah. What's the latest status on NetBeans? Are most of these things available to developers who want to do Ajax now?
Go to Netbeans.org, 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.
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.