James Gosling, the creator of the Java language, is a Sun Microsystems vice president and fellow. Gosling spoke with eWEEK senior editor Darryl K. Taft at JavaOne and discussed the open-sourcing of Java, new directions for the Java platform and programming in general, new Sun technology and competing with Microsoft.
How did Java become another C++? It seems you created Java to enable developers to avoid the morass of C++ and now many developers say Java suffers from many of the same issues of bloat.
Well, you can take that question in a lot of different directions. I think that Java the language has actually done a pretty good job of avoiding the rats nest of complexities that C++ got into. And with C++, a lot of its issues were that it was based on a design from a long time ago when looking at security and the rest of that werent really as big of a deal.
And the evolution of Java the language has been really thoroughly scrutinized and vetted by the community. So I feel pretty happy there. The part that feels like its gotten just unbelievably complex and hairy is all of the APIs. The set of libraries available in Java is just mind numbing. Its far huger than C++ ever got to. And in some sense thats an inevitable consequence of the range of things that people are building.
Its another one of these areas where this little thing known as the Peter Principle applies. The Peter Principle is that people get promoted to their level of incompetence. As a guy whos spent a lot of time trying to build tools to try to make developers lives easier, if you make your life easier there are those that say: Oh, developer, youre just sitting around doing nothing, so Ill just give you more to-do items. And so if you look at the complexity of things people are building today, even compared to just five years ago its just off the charts. So, with many of the systems people are building today, I have no idea how you would do them with other technologies.
Why did Sun create a fully new scripting language rather than leverage something that already existed such as Groovy? Why make developers have to learn yet another scripting language with JavaFX Script?
Well, its not like theres a shortage of scripting languages. Theres got to be just about a billion of them out there. A number of them are fairly popular. The problem is a lot of the power from a scripting language comes from trying to fairly tightly target a particular application domain. And the majority of the scripting languages out there were really put together around generating Web pages. And thats a fundamentally different thing than building a rich graphical user interface. And JavaFX Script is all about that.
So just at like a basic level, most of these scripting languages are very transaction oriented. A request comes in; you generate a page and boom youre done. Whereas in graphical user interfaces theres a real progression of time. Things happen over time…even really subtle things like a piece of text appearing. It doesnt just appear; it slowly unfolds. You slowly change its opacity, slowly change its size, slowly change whatever. There are a lot of things that are about animation behavior that are just different in the graphical user interface world.
So Chris [Oliver, the Sun engineer who conceived JavaFX Script] looked at this stuff in a fairly different way, and came up with something that works in that universe pretty well.
If you tried to take JavaFX Script and apply it to generating Web pages, it would be awful. But thats not what it was made for.
So he [Chris Oliver] did it on his own time? Was it a project at Sun?
He started working on it when he was at SeeBeyond and then we bought SeeBeyond. And we thought that it was pretty cool so we kept him working on it after the acquisition. It got to the point where we wanted people to see it and play with it and kick the tires. Chris is a little intimidated by the whole "getting his baby out there" thing, but…
On somewhat that same theme, what sort of language do you think will emerge for Web 2.0 and mashup programming?
I dont know. The thing that I find disturbing about programming around Web 2.0 right now is its become really confused and messed up. There are like 10,000 ways to do anything. And the cobbling together of this and that and the other thing is sort of like pouring paint together. If you pour a bunch of buckets of paint together you pretty much always get a really ugly brown. And its difficult to come up with a coherent architecture approach when you do things that way.