As Java marks the tenth anniversary since its official launch, vnunet.com spoke with James Gosling, the creator of the language and a vice president at Sun Microsystems, about past and present challenges for the language, as well as his personal plans.
What will be the big theme at the Java One conference in June in San Francisco?
It's all about the network and things connected to it, the kind of synergies that you can exploit when the edge of the network gets unusual. How you could feed sensors on the bottom of San Francisco Bay into predictive models, or the control system of an airplane. That's beginning to get all Java code and is being connected to the network.
The direction where the world is going is a combination of infrastructure with servers and networks and things that you plug in on the edge. These are anything from conventional desktops and laptops, which I tend to think of as the most boring things you can plug into a network. [A mobile phone] is a little more exciting to plug into a network. A car is a lot more exciting to plug into a network.
You can do interesting things in healthcare or financial services if the edge points are really different. You can deliver financial services to poor people in rural Uganda who want $300 loans. They have to be connected to bankers.
You could make a healthcare system where all the resources are utilised properly, so you don't just queue up to the x-ray that's closest, but you do global resource allocations. If your doctor wants you to take an x-ray, you go to a free x-ray rather than stand in line for the closest.
Did you envision this happening when you created Java 14 years ago?
No. All the examples that I just gave are happening today, but I never thought that things like that could come out of it.
Is it harder to create something where you don't know what people will do with it?
I built a lot of things before I built Java, and I found people doing things that I never expected them to do. The things that people will use your stuff for is impossible to predict. Sometimes you look at them and think they are just crazy; others you look at and think they are just unbelievably inspired.
One of the things that I was really careful about in the early Java development is realizing that, while I had a view for how some things would work out, I didn't want to constrain things with that view.
Is that what made Java successful?
I think so. Historically, when people design computer systems, if they could get a performance gain by compromising security or reliability a little bit, they would often take it. These days you just can't make those tradeoffs. A system that would break or that is insecure is just not useable.
For me the biggest difference was realising that your mum or your kids might use this. Then security and reliability become more important than many of the things that people have thought of in normal computer systems.
Is there any application that I cannot build today using Java? Where is the frontier?
I don't think that there is a frontier in the sense of what people can't do. Things are difficult for reasons that have nothing to do with Java.
How do you write software that controls avionics in an airplane, or software in an automobile? Java works very well there, but there is whole area of how you trust and test a piece of software. Particularly when a bug means that 600 people die.
The Federal Aviation Authority has a testing regime that is extremely expensive and difficult. How do you make it so that you can test things more easily and to a degree of confidence that is way beyond what people do on a website?
One of the reasons that I like to work with the folks at jet propulsion labs is that they have something that you simply cannot test. It just has to work. You can do all kinds of simulations, but there is nothing that's the same as actually landing on Mars.
And you don't get a second chance, because you've blown your $100m. Most of the failures they had were because actually things are different on Mars.
What kind of advancements can we expect out of Java in the near future?
It's all over the map. There is the language part that we try to keep stable. We put most efforts on the libraries and the virtual machine. The libraries have been growing at a dizzying rate over the past 10 years and they aren't going to slow down.
Within the virtual machine implementation, worrying about performance and reliability and scalability will always be big issues for us. A lot of focus these days is on the scale part of the performance, such as how you run on really large multi-processors?
If you look at the desktop world, multi-processor desktops are becoming pretty standard. Chip designs for the coming years are all multi-processors. Java has been pretty well tuned with the 2-4-8 symmetric multi-processors.
But when you get up to the larger ones there are all kinds of challenges, such as how to make these systems manageable and 'instrumentable'.
You really need to debug code when it's actively being deployed. The hard part is making it so that the instrumentation is always available. We are putting that in the Java Development Kit 5.1. We are enabling tracing and profiling at a very low cost.
Would the debugging feature be the most requested one?
Debugging is right up there. But people are always clamouring for performance and more testing. There is going to be a huge amount of work around the WS-* protocols. I would imagine that those will wind up being central pieces of engineering.
What would you be doing if you didn't work on Java?
I'd probably be doing graphics: 3D rendering, animation, modelling. I've done it for years. I did a lot of it before I came to Sun. How you lovingly anti-alias fonts and all that kind of stuff.
Any plans to start doing that again?
I'm stuck with the Java thing for a while. It's hard to tell the twists that roads will take, but right now Java is just too much fun. There are so many people doing completely improbable things with it. The real cool thing is when I meet people who are building stuff that is just over the top.
Don't your hands itch?
Yeah, they both itch and I have this sense of tragedy, because there are only 24 hours in a day. How do you ever decide what to do? There are all kinds of things that are crying out to be played with.
But I sneak in a fair amount of coding. Mostly I do little things because getting on the critical line for any product is bad idea for me. I get pulled off to do other things, because I can't make deadlines.
Neil Martin of Panda Security discusses Epic Games' decision to avoid the Google Play Store in its Android release of its popular game Fortnite
Musk went public on privatisation plan "because I felt it was the right and fair thing to do so"
Intel's 9th generation Core CPUs will be released on 1 October along with Z390 motherboards
Short-sellers burnt by Musk's "false and misleading" tweets the first to file suit