By kbr on May 04, 2007
My name is Ken Russell. I joined Sun Microsystems in 1999 and work in the Java Software division. My colleagues Chris Campbell and Chris Oliver encouraged and finally convinced me to start a blog. I'm joining the blogosphere very late in the game. However there is a bunch of exciting stuff coming up at this year's JavaOne which I'm eager to share, so better late than never to start.
Here are some of the projects I have worked on while at Sun.
- JOGL: I am the project lead for JOGL, the Java(tm) Binding to the OpenGL(r) API, a standard extension under JSR-231. Come visit the JOGL forum for ongoing discussions about creating fast, cool, and platform-independent 3D graphics in the Java programming language.
- Java 2D / JOGL bridge: Chris Campbell and I co-authored the Java 2D / JOGL bridge in Java SE 6. When the OpenGL pipeline for Java 2D is enabled, this bridge provides fully hardware-accelerated, 100% correct mixing of Swing and Java 2D rendering with 3D graphics via JOGL. Check out this article from Chris's blog and these two threads on the JOGL forum for more details and examples of the kinds of cool mixed 2D and 3D effects you can now do with Java.
- Biased locking: I am the principal author of the biased locking algorithm in the Java HotSpot VM which was introduced in Java SE 6. Biased locking eliminates atomic operations associated with uncontended synchronization. It turns out that on several kinds of modern CPUs these atomic operations are quite expensive, and dramatic speedups can be achieved by avoiding them where possible. David Detlefs and I presented a paper on the algorithm at OOPSLA 2006; you can find a copy of this paper on the HotSpot Publications Page. Sun's implementation of biased locking was the first to market among the major Java Virtual Machine vendors, and is currently the only one to enable this class of optimization by default. Dave Dice has a good writeup giving more insight into the low-level architectural issues which make this class of optimization profitable.
- Startup time: I assisted Fred Oliver in the productization of the Class Data Sharing feature introduced in the Java HotSpot VM in Java SE 5.0. This optimization saves class loading time for classes in the core Java libraries, and resulted in a roughly 20% decrease in startup time for small to medium Java applications. Steve Bohne has done a substantial amount of follow-on work and is one of the driving forces continuing to reduce startup time. In JDK 1.4.2 I led a small team of very talented engineers in a broad-based optimization of the Java core libraries which at the time resulted in startup time reductions of roughly 25% for a "Hello, World" application and roughly 15% for the Swing Notepad application.
- Java HotSpot(tm) Serviceability Agent: I am one of the original architects of the Java HotSpot Serviceability Agent (SA), an out-of-process debugger for the Java HotSpot virtual machine. A. Sundararajan ("Sundar") is now the technical lead of the SA project, and by sheer volume of code written is the de facto main author of the tool at this point. Sundar's blog has a ton of useful information about how to use the SA and cool things you can do with it like retrieving .class files from a core dump of the JVM for postmortem analysis. There is a very old paper on the SA from the USENIX JVM '01 Symposium linked from the HotSpot Publications Page, co-authored with Lars Bak, the original chief architect of the Java HotSpot VM.
- Reflection: in JDK 1.4 I restructured the reflection implementation in the Java SE platform to dynamically generate bytecode stubs for frequently invoked methods and constructors. Doing so allows the Java HotSpot VM to see and optimize the entire code path from the caller to the callee. At the time it was measured, this optimization sped up reflective method invocations by a factor of 20 and reflective constructor invocations and object allocations by a factor of 7. John Rose did some advanced related optimizations in the Java HotSpot server compiler which in some situations allow the reflective invocation to be completely inlined, eliminating the cost of using reflection.
- Full-speed debugging: in JDK 1.4 I led a small team to enable full-speed debugging in the Java HotSpot VM. The implementation builds upon the Java HotSpot VM's unique dynamic deoptimization capability to execute most of the program at full speed, interpreting only the portion of the program that contains a breakpoint. This yields roughly a factor of 10 speedup for programs being run in the debugger. The seminal paper on the technique was written by luminaries in the field of computer science, some of whom were among the original authors of the Java HotSpot VM.
- Contributions to the Java HotSpot VM client compiler and run-time system, New I/O, and other projects.
I've been fortunate to have worked, and continue to work, with an uncountably large number of brilliant people, some of whom are still at Sun (or have come back to Sun) and some of whom have moved on to other endeavors.
OK, enough grandstanding -- on to the real content.