I attended about half of the
the JVM Language Summit, from
Wednesday through Friday at Sun’s Santa Clara campus. I’m not really an
expert on the deep
nuances of JVM constructs like call sites and permgen and classloaders and so
on, but still, I’m sorry I missed some. There were 70 or so people
there, mostly way smarter than me. Herewith impressions and
[Update: See also write-ups from Ted Leung, Cliff Click, and John Rose.]
Big Picture · Lots of interesting languages these days are choosing to host themselves on the JVM. Most will go nowhere. But, after the summit, my best guess is that some will become commercially important. First, at least one of JRuby and Jython, based simply on improving the deployment options and library repertoire for existing code. Plus, I’d be astounded if at least one of Scala or Fan or Clojure or Groovy doesn’t hit the big time; they’re just too well-crafted and compelling not to find a niche.
JCP Anyone? · Item: a small breakout group of really senior people is chewing over issues of language interoperability, which is hard even when you’re all running on the JVM. A few good ideas and lines of attack emerge (I’ll let the real experts blog those). Then someone says “I know, let’s form a working group and do a JSR!” whereupon the room dissolves in raucous laughter.
Item: Mark Reinhold, who sits at the center of Sun’s Java engineering group, gets a loud chorus of approval when he says “We’ll get invokedynamic into Java 7”. Speaking of JSRs...
Interoperability · Here’s the thing: all of these JVM-ized languages can call into existing Java APIs; not a surprise since that’s a big piece of the value proposition. Some are better than others; Groovy (and it seems Clojure) make the biggest deal about it.
But how about talking to each other? And how about Java calling Ruby or Clojure or Scala code? This is not an abstract issue, at least for me. I’ve been ripping the protocol-validation pieces of the Ape out from the generic-AtomPub-client pieces, and when I’m done I’ll have a bunch of Ruby code that would be super-useful for anyone building AtomPub client-ware.
Furthermore, it doesn’t do any Ruby metaprogramming voodoo or even have blocks in the API, just old-fashioned objects and methods. Plus it’s got code for handling all sorts of icky authentication corner-cases. Yeah, it’s in Ruby so it won’t be as fast as Java, but who cares, it’ll be stalled waiting for HTTP 99.5% of the time anyhow.
So, why should someone have to write this again in Java?
MetaobjectProtocolFactory mop = standardMetaobjectProtocol.createStandardMetaobjectProtocolFactory();
Clojure · I’ve mentioned Clojure a couple of times now, and while I previously knew it existed, I’d thought “Yeah, Lisp on the JVM, yawn, whatever”. Well, either Rich Hickey is one of the great tech salesman or Clojure is just overwhelmingly cool. They’ve added what feels to me just the right little bit of syntax (gasp) sugar. Plus some exceptionally-palatable functional-programming machinery.
Do I really believe that a Lisp (any Lisp) will grab a big chunk of the ecosystem? Probably not. Sigh. But it still looks like a fine piece of work. It’s not just me; you should have seen the buzz roll around Twitter.
PHP · IBM’s Rob Nicholson, whose work I’ve on Project Zero I’ve discussed previously, was there. No surprises, but I think this little sound-bite bears repeating: “Conventional wisdom is that there are about 7 million Java, and about 3 million PHP, developers.”
I remain skeptical that PHP will benefit as much as other languages might from the Java platform, but good on ’em for trying.
Oh, and by the way, the summit wiki is a PHP app (snicker).
JVM and CLR/DLR · A couple of Microsofties were there pitching in and met with no hostility I could detect. They’re not building languages on the JVM, obviously, but they are facing damn similar problems. Mads Torgersen got a laugh by saying “The JVM is a millstone around your necks, just like the CLR is around ours”.
The technology point that most amused we was around generics. I yield to no-one in my passionate hatred of Java generics. In particular, I was never convinced of the virtues of Type Erasure. Well it turns out that the .NET’s “real” generics with no erasure cause all sorts of heartburn for DLR dynlang guys. Cloud, meet lining.
Soundbite · Per Bothner: “Scala is perhaps a little too complicated for normal people”. Ya think?
Thanks Brian · Most of the heavy lifting in pulling this together was by Brian Goetz, who has done the developer community and Sun a major service. Hey Brian, do it again next year, OK?