James Gosling, VP and Sun Microsystems Fellow, is better known as the Father of Java – he did the original design of the Java programming language and implemented its original compiler and virtual machine. I caught up with him in a month in which it was first rumoured that IBM was about to buy Sun, and then that the deal was off. [Shortly after, and after I had interviewed Gosling, it was announced that Oracle is buying Sun, for around $5.6bn net of cash.]
Q. I know you won’t be able to say much about the rumours in the press. But if some kind of IBM-Sun deal did happen, would it be interesting to see what you could do combining things like Sun’s NetBeans and IBM’s Eclipse projects?
A. It’s certainly possible. We have been partners on the Java journey for quite a few years. In many ways there would not be a huge impact on Java development. It’s all just speculation at this point.
Q. IBM and Sun seem to be rather different organisations…
A. There would definitely be a culture clash. We’re definitely weirder than they are. We grew up from a bunch of hippies, almost with flowers in our hair. But we’re a much more grown-up company now [than when Sun was founded] with a very different group of people. We’ve become a full-on enterprise software company.
Q. You’re in London addressing developers and partners; what are some of the key themes you have been discussing?[click continue reading for more on this entry]…A. The major theme is that there’s a heck of a lot of stuff going on. It’s amazing to see what people are doing [with Java] and how it all connects. We’ve been seeing the evolution of the enterprise platform, but in the client-side which is the group I’m responsible for – as well as the deep underlying Java technology – there are big initiatives around developer tools for rich user interfaces and improved interaction.
James Gosling, a.k.a the ‘father’ of Java.
Q. You’re talking about JavaFX, the rich internet application (RIA) development environment. Tell us a bit more about its aims.
A. The idea is to enable people to build desktop-style applications that happen to be deployed over the Web. That means architecturally rich presentation layer, animations and behaviours. It features a rich set of facilities, APIs [application programming interfaces] and components, as well as the right network protocols.
Q. How is this different, or indeed better, than some of the work being done on things like Adobe Flash or Microsoft Silverlight?
A. The key difference is that we can draw on all of the performance of the Java platform. That gives this the power to enable people to build even computationally demanding desktop applications that run over the web. Java’s architecture can be incredibly helpful in reducing latency, because you can shift more behaviour to be as close to the user as possible.
It offers potential for everything from deep scientific visualisation to video games. NASA World Wind is a great example [it enables users to zoom from satellite altitude into any place on Earth, using a mixture of satellite imagery and radar topography to present 3D views of the earth’s terrain]. Remember there are 10 billion devices that support Java, including 3 billion cellphones.
Q. One of the most enduring things about Java is the virtual machine, that helps to give it its ‘write once, run anywhere’ capability. You must have been watching with interest as so many vendors now espouse the benefits of virtualisation, albeit on a different level?
A. The Java VM is much more abstract than say a Microsoft or VMware VM. There were a variety of issues that drove me to use a VM for Java. We needed to virtualise a very wide variety of hardware – not just Mac, Unix, Linux, Windows but things like cellphones and even smartcards. Also to encapsulate computations and be able to move them around, and handle them in a way that they can be optimised differently and map to individual machines.
VMs were not very common when I did the Java VM, but I had been doing a project I got involved with as a graduate, a PASCAL compiler that used byte codes to represent compiled programs, and I had to target it at other architectures, which gave me the idea of building VMs into bytecode instruction sets. I actually thought about doing a PhD in this but in the end I did it in something else.
Q. The Java VM also helped to keep things secure?
A. Yes it’s a key part of our security story. The VM gives us walls that we can enforce, and decide how they interact with other VMs or islands of computation.
Q. This is the idea of ‘sandboxes’?
A. Yes, so even if you make a mess in one sandbox it can’t leak out into others. The security manager grants you permissions, or it doesn’t. That’s the reason that the largest banks can depend on Java: they need absolute trust. But it’s not just the sandbox paradigm, it’s also an amazing array of Java specs that cover things like ID management, cryptographically secure random number generators and much more.
Q. Sun has recently been talking about its cloud computing strategy: what’s Java’s role there?
A. We have been building kit for clouds for years and years. Now this is the first attempt to build a really open cloud that allows people to do anything. The Java APIs make working in a cloud quite easy. The issues now are how you grant public access, how you bill for it and how you authenticate in that environment.
A. At some level it will look similar to EC2 but it will feature higher level services. EC2 is mostly raw storage, raw compute power. Ours will also provide higher level facilities. For example the new version of OpenOffice understand the concept of cloud storage, so you can start to store a tree of documents to the cloud, instead of on your own storage arrays.
Q. Do you still think that services oriented architecture (SOA) is the right way to approach software development?
A. I think of SOA the philosophy as like oxygen: you consume it every day, and your life depends on it, but you don’t think about it every day. Object oriented [OO] programming is SOA. SOA is OO in the large, and it’s a very sensible way to design systems. But I’m also a big fan of functional programming [a programming paradigm that emphasizes the application of functions, in contrast with the imperative programming style that emphasizes changes in state]. It’s an interesting set of ideas many developers find hard to use.
A big question remains how you get teams with different skills to contribute equally. Engineering teams aren’t just engineers any more – you find there’s one engineer and the rest went to art school. The waterfall approach [a sequential approach in which progress is seen as flowing steadily downwards through phases such as conception, analysis, design through to construction, testing and maintenance] is really lousy because it means the artists throw it over the wall to the developers.
Q. Do you think agile is the right approach then?
A. Agile as a philosophy solves a lot of problems but the problem can be a lack of tools support. Standard tooling often forces a waterfall model, and frankly waterfall is hideous.
Q. Java is now fully open source. Do you still feel that you have a role in guiding its direction?
A. That activity is now in a steady state. It’s like, there are rocks over that way, and over that way there is coolness. I try and influence things in the right direction, but there’s such a large community of people that nobody could control it. If anybody tried it would ruin it all.
Q. Since the speculation about a possible IBM acquisition, Sun’s CEO [Jonathan Schwartz] has come in for a great deal of scrutiny and from some quarters, criticism. From where you are standing, is he still the right person to lead Sun?
A. Jonathan is a hoot. I’m a big fan. It’s really been great working with him. If you look at his resume you’ll see he was a math major – he can really be quite analytical. It’s always awkward if the engineers want to do analytical thinking and senior management just wants to pick up Six Sigma and shoot. Jonathan can talk engineering or he can talk management.