It's been wonderful so far, and I'm looking forward to the final day tomorrow. You can see what we've been talking about by clicking on the talk links in the agenda; most of the slide decks are uploaded there...[Read More]
Thursday Sep 17, 2009
Monday Jul 27, 2009
Thursday Jun 04, 2009
...I have posted the slides. The code examples are also on-line.[Read More]
Wednesday Jun 03, 2009
Monday Jun 01, 2009
Wednesday Apr 15, 2009
May 8 update: After the conference I enjoyed a video chat with Charles Torre of Microsoft Channel 9 about the Da Vinci Machine Project. Charles has posted a number of very good interviews from Lang.NET; check out those with Lars, Gilad, Anders, and Erik. Also, the Lang.NET organizers have posted synchronized slides and audio of the talks.
Wednesday Mar 25, 2009
Monday Feb 16, 2009
invokedynamic. Like the other four invocation instructions, it is statically typed. What is new is that an invokedynamic instruction is dynamically linked under program control. In this blog, I will be giving “recipes” to demonstrate some of its applications. For today, here is a light aperitif showing how invokedynamic could be used to simulate the other invocation instructions. Caution: This blog post is for people who enjoy their bytecodes full strength and without mixers.[Read More]
Thursday Oct 02, 2008

Pizza with extra MOP
Here are my top-level takeaways:
- The
invokedynamicdesign is sound, but the exposition needs more work. - The synergy of JSR 292 with Attila Szegedi’s MOP looks very promising.
- Interface injection is going to be helpful to a lot of people, and it is not hard to implement (on top of method handles).
- Tailcall and value types will never go away. We have to plan for them.
- Unless we do this sort of innovation on the JVM, crucial multicore research will move elsewhere.
- We have to do this again next year.
Tuesday Aug 26, 2008
In the wee hours of this morning, the JVM has for the first time processed a full bootstrap cycle for invokedynamic instructions, linking the constant pool entries, creating the reified call site object, finding and calling the per-class bootstrap method, linking the reified call site to a method handle, and then calling the linked call site 999 more times through the method handle, at full speed. The method names mentioned by the caller and the callee were different, though the signatures were the same. The linkage was done by random, hand-written Java code inside the bootstrap methdod.
The Email thread of the announcement is truly international, since Guillaume Laforge celebrated by sending virtual champagne.
The example code is included in the Email, and also posted (as a truly rebarbative test in a NetBeans project) with the patches. As for the JVM code, it only works on x86/32; the next step is to move the assembler code into the right files, and finish the support for x86/64 and SPARC.
Happy International Invokedynamic Day!
(And by a curious anagrammatic permutation of letters, it could also be International Davinci-Monkey Day. My co-workers, who watched me pounding on my keyboard all summer, claim to see some significance in this.)
Saturday May 31, 2008
Here are the top ten things I learned about Android and the Dalvik VM...[Read More]
Monday May 19, 2008
Update: There are some good conversations going on about the EDR at the jvm-languages Google group. Here are some rough changes to the EDR I will be proposing in response; the EG may choose to make these changes (or something like them) official with an EDR update pushed through the JCP (Java Community Process).
Saturday May 10, 2008
In other news, today (May 10th) is National Train Day. On this day 139 years ago, a ceremonial golden spike was driven at Promontory Summit, Utah, joining the Central Pacific and Union Pacific railways into a single transcontinental line. The continent was very suddenly smaller, because people, goods, and mail could be moved more quickly from coast to coast, a task which was previously done with wagons, horses, and boats. In the years leading up to this watershed event, two railroads were built, with great difficulty and ingenuity, from each coast, to meet at Promontory Summit.
There is a Promontory Summit and a golden spike in our future also... [Read More]
Wednesday May 07, 2008
invokedynamic instruction in one form or another. The problem has been with picking the one form that simultaneously enables a good range of use cases, addresses several architectural challenges in the JVM, and can be optimized by a variety of commercial JVMs. It has been a restless search for “one bytecode to rule them all”.
The EG has decided to propose an answer, providing a hook which refers all important decisions at a dynamic call site out of the JVM and into Java code. This note builds on a previous blog entry, giving more concrete details and use cases. The current design makes heavy use of method handles, which greatly reduces complexity and clarifies the various roles of language implementors and the JVM. [Read More]
Tuesday May 06, 2008
Hello, JSR 292 observers and language implementors!
The JSR 292 Expert Group met today at JavaOne.
There were representatives from three major JVMs and two dynamic languages (Groovy, Jython).
Here are some of my notes from that meeting. I hope you find them interesting...
[Read More]This blog copyright 2009 by jrose


