Actually Geert’s talk was called “Boldly Go Where Java Has Never Gone Before” but to me it was really centered on the idea of Java-the-language as interface. You can really divide the Java platform up between two specifications – the language spec and the VM spec. Above the language spec you have Java source. Between the two you have byte code and below the VM spec you have runtimes.
Everyone is quite familiar with the fact that other languages can be compiled to bytecode and the JVM can be reused as runtime on the bottom part of the stack. Geert’s talk was about the top half however.
He focused on four technologies all of which use Java unmodified at the top but do fun things in the middle or bottom layers:
- Terracotta – extends the semantics of normal Java concurrent programs to spread heap objects and coordination across a cluster of JVMs. In this case Terracotta hits the middle third by transforming the bytecode. The runtime is used unchanged.
- RIFE – implements continuations to alllow “save game” and “resume game” semantics to your web conversations. I loved the game analogy and the audience liked it too. This is done again through bytecode modification in the middle tier with an unchanged runtime.
- Android – Android is Google’s development environment for mobile apps. It uses normal Java language and even compiles to byte code, but then transforms that byte code into a different byte code to run on a different VM entirely – the Dalvik VM.
In all, this was a very fun talk and makes an important point about Java-the-language being every bit as important as Java-the-VM.
In late breaking news, Geert will be repeating this talk Friday at 2:50 in Room 133 so you still have a chance to catch it if you want.