Posts Tagged ‘bytecode’
Runtime Specialization – At Last
Between a rock and a hard place
Not long ago, I had to pull Object Teams out of the Eclipse simultaneous release train. Reason: the long standing issue of using BCEL for bytecode weaving, for which no Java 8 compatible version has yet been released. With the Eclipse platform moving to Java 8, this had escalated to a true blocker. During the last weeks I investigated two options in parallel:
- Upgrade BCEL to a release candidate of the upcoming 6.0 release.
- Finalize the alternative weaver for OT/J, which is based on ASM, and thus already capable of handling Java 8 byte codes
I soon found out that even BCEL 6.0 will not be a full solution, because it still has no real support for creating StackMapTable attributes for newly generated bytecode, which however is strictly mandatory for running on a JVM 8.
For that reason I then focussed on the OTDRE, the Object Teams Dynamic Runtime Environment. This has been announced long ago, and after all, I promised to show a sneak preview of this feature in my presentation at EclipseCon Europe:
Runtime Specialization
Java has never been so dynamic before
Success at last
Today I can report success in two regards:
- The Object Teams Development Tooling, which itself is a complex OT/J application, can (mostly) run on the new runtime!
- I created a first demo example that shows the new capability of runtime weaving in action – it works! 🙂
This is a major milestone! Running OTDT on top of OTDRE is a real stress test for that new component – once again I realize that dog-fooding an entire IDE on its own technology is quite an exciting exercise. While a few exceptions need to be ironed out before the Neon release, I’m confident now, that we’re finally and really on the home stretch of this effort.
And after all the hard work on Java 8, also OT/J can finally fully leverage the new version, not only in theory, but also in bytecode.
Less than one week to finalize the presentation. You can be sure this will be a fresh story. Join me on Wednesday, Nov 4, in Ludwigsburg:
PS: The “traditional” Object Teams Runtime Environment isn’t dead, yet. I really want to keep it as an option, because both variants (OTRE / OTDRE) have quite different characteristics, and after all this component has matured over more than 10 years. But with one option already (mostly) working, I can probably wait until a proper release of BCEL 6.0, and still have it back in game before the Neon release.

