20071112 Monday November 12, 2007

Notes from Future of Java Panel at QCon

Future of Java Panel

I love panel discussions at conferences, especially when they are forward-looking and generate tension in the participants.

The What will the future of Java development be? panel at QCon yesterday had plenty of tension, and you could tell that some of the participants were not really super comfortable with each other:

  • Chet Haase, Sun Microsystems
  • Charles Nutter, Sun
  • Rod Johnson, Creator, Spring
  • Joshua Bloch, Google
  • Erik Meijer, Creator, C# and LINQ, Microsoft

I heard at least one comment in the party later on from someone asking why Rod was included in the panel, since he's not really a language guy. Personally, I felt he injected the most tension, so I was pretty happy with the choice. Erik Meijer was also an intriguing guest for the panel, since his claims to fame have nothing to do with Java. Still, as a notable "language guy" his input provided insight and entertainment.

Here's a quick rundown of the panel based on my notes, which I scribbled furiously throughout the talk. The quotes should be taken with a grain of salt, since I am not transcribing from actual recorded media, only notes -- in fact, I didn't scrub this transcription anyway, since I think it's a decent reflection of the panel discussion itself.

Erik kicked off the panel with comments along the lines of LANGUAGES ARE NOT IMPORTANT. This seemed to set the panel up to discuss the future of Java (the platform) versus Java (the language), but alas that was not the case. Time and time again the panel got dragged back into arguments over whether to grow the already complex feature surface area of the language.

Josh Bloch appeared somewhat agitated throughout the talk. (Being sandwiched between Erik and Rod? Who knows...) Anyway, his initial comments were about "Java entering middle age" and he made some funny comment about not wanting to see it have a crisis and do silly things. He also stated that Java is beginning to show its age, a theme that would resurface later in the panel.

Rod spoke next, claiming to have not much to add, but managing to still talk for awhile. He agreed with Erik that languages are not the most important thing. He asserted that tooling and the language ecosystem are much more important, using .NET as an example. C# is not the important part of .NET, it's the assumptions that come with the framework. He also agreed with Josh that Java is mature, and used that to claim that potshots at the language were "unfair".

Charlie Nutter of the JRuby project spoke next and as expected, immediately disagreed with the other panelists on the importance of language. "Without Ruby we wouldn't have Rails." He firmly told the others that Java needs to eliminate their ivory tower model.

Chet's first comments were not 100% related and touched on the question of whether Java needs to expand its horizons. He spoke of taking the platform out of the enterprise and into the consumer market. (Huh?) Either I messed up my notes or what he was saying didn't quite make sense, probably the former.

So, done with the introduction statements, we jumped right into the question and answer part of the panel. The first question was "How will the APIs grow in the future?" Notice the presumption of growth, which is fair given the history of the Java footprint growth. I made a mental note to keep track of whether anyone would suggest shrinkage as an option.

Rod was the first to answer and didn't disappoint. He claimed that negative growth is needed and used AWT as an example. He actually asked for a show of hands to know who has used AWT lately -- nobody in the room (maybe 100 people) had used AWT lately. He agreed with the ivory tower comment made by Charlie and stated that some of these unused parts of the JDK needed to start coming out.

Josh calls Rod "naive". Banks and insurance companies are invested in Java, and they want upward compatibility retained, proceeds to give the example of old Neverwood PC game, which runs better than ever on Vista. Rod responds with the desire to give developers more options.

Charles Nutter talks about feeding back lessons learned from additional languages into API design.

Erik recommends a look at the API usages and making some of Java's new language features customizable.

An audience member suggests that splitting up the JDK platform by defining core-subsets of functionality would be desirable. Chet disagrees, suggesting that it would break things. Guice Bob says Java Kernel will help, which is a small downloadable bootstrapper that downloads needed JDK components on demand instead of all in the up-front download.

The predominant topic of conversation continues to revolve around adding or removing to the Java platform -- new features, language or otherwise. Rod seems in favor of adding, while Charles hints that he's been tempted to use the Open SDK project to create a stripped-down version of the Java JDK.

Erik states matter-of-factly that it is impossible to take things out of a mature platform. "You can never take anything out!"

Josh speaks about JSR 277 and its infrastructure for addressing versioning issues.

Now Josh Block is saying we should create a new Java platform. Everyone agrees that there are real dangers in choosing that road.

An audience member detects a tension in the move to dynamic typing. Josh suggest that it would be better to have static analysis available as an optinal component of the system. Rod brings up questions about the loss of data (?) in dynamic typing. Charles defends Ruby-style typing and Josh expresses pretty strong emotions about the safety of statically-typed systems, which leads Erik to make comments about "too much dogmatism" on questions of type.

Ola Bini (from the audience) asks about plans for "conceptual surface area expansion", which I believe is an overly wordy way of asking about new language features for Java. Josh asserts that as a mature language, Java should not get all the syntactic sugar that has been proposed for it. He has real worries about Java already being seen as too complex and changing too rapidly, and that Java might lose its appeal to academics and educators. (We might already be seeing this happen at progressive CS institutions. OF)

An audience responds with the question, "Aren't we smart programmers?" and after Josh explains how he hates multi-paradigm languages, with their overwhelming complexity, the audience member reveals himself to be a former CLISP programmer and asks why he can't do cool stuff in "Java the language"

It's abundantly clear that Josh is in the "tiny, incrememtal improvements camp" and he keeps mentioning an upcoming Google-sponsored JSR that will address future changes to the Java language. As an example of bad complexity, calls positional together with named parameters "a mess".

In one of the more amusing exchanges of the panel, Rod Johnson accuses Google of having more influence of the JCP than members of the open-source Java community, and Josh calls the accusation "utter hogwash".

Charles reminds the audience that despite complaints about Java moving too slowly, it's actually a good thing. Chet defends the JCP and says it has come a long way (from when it was dominated by vendors?)

Getting back to language complexity, Ola asks that if you need tooling to use a language, isn't it already broken? Josh drops the admittedly "embarrasing" revelation that he still uses Emacs sometimes. (That isn't embarrassing in my opinion! OF)

I write down in my notes that Josh seems to be a big fan of "100% consistency", probably since he keeps talking about being able to prove that his code is correct thanks to static typing. (Of course, his 100% correct code is necessarily incomplete. OF)

Rod doubts that other BIG general-purpose languages will make it into the mainstream. (Would he have made the same claim before Ruby came along? OF)

Charles Nutter advises us to look outside the Java world for inspiration.

Josh makes a harsh comment about hating monopolies of any sort, which drew a good laugh from the audience.

In closing, Charles Nutter asks for better application-level APIs and Erik Meyer says "DSLs are a disaster waiting to happen". I believe Josh Block had the last word, but it must not have been very memorable to me because I neglected to write it in my notes.

Either Chet Haase was the least interesting member of the panel or he simply didn't participate as much as the others, but for some reason I hardly wrote any of his comments. Luckily he's written them down for himself in his blog at The Register.

(Posted at Nov 12 2007, 11:30:39 PM EST by Obie) Permalink Comments [5]

Tagged:
Comments are screened and may take up to 24 hours to be approved.
Comments:

Anders Hejlsberg, Creator, C# and Linq :-)

Posted by Clit Licker on November 13, 2007 at 05:22 AM EST #

Obie - excellent summary, thanks for sharing. FYI the last comment you make about Erik Meijer you spell his last name "Meyer", a completely different person.

Posted by Damien McKenna on November 13, 2007 at 08:02 AM EST #

Ugh, gosh. I'm glad I wasn't there. Sounds like a big JVM themed circle jerk with Charles Nutter the only sane person. I did Java for a little while, and when I stopped 3-4 years ago, the API was already epic. I can't imagine what kind of crap they've added in between.

Sounds like a riot, though. "Taking stuff out of the API will break things!!!" Who just upgrades their JVM without testing and such? Make the JVM custom buildable and build in what you need. If you redesign just the kernel of the JVM to allow this, the libraries shouldn't be a problem.

Oh well. Maybe an open SDK of some sort will fix the problems (yeah, right).

Posted by Jeremy on November 13, 2007 at 08:07 AM EST #

Nice to see a heated debate ! Sounds like it was quite interesting. Thanks for the write up.

Posted by Michael on November 15, 2007 at 07:07 PM EST #

LOL @ Erik saying "DSLs are a disaster waiting to happen". I suppose his tongue was in his cheek? Isn't LINQ at platform for set-based query DSLs, the two prevalent ones being DLinq (SQL) and XLinq (XML).

Posted by Josh G on November 19, 2007 at 12:29 AM EST #

Post a Comment:

Comments are closed for this entry.