Skip to Content Java Solaris Communities Partners My Sun Sun Store United States Worldwide

»  Spotlight Articles
»  Projects
»  Publications
»  People
»  Awards
»  Events
»  Downloads
»  Internships
»  Contrarian Minds
»  About Sun Labs

The Kanban Group ('96-'00)

kanban glyphs

The Kanban group is (mostly) concerned with
the technology and applications of `just in time'
or `dynamic' compiler technology.

Etymology Kanban is the Japanese word used in connection with `just in time' manufacturing. A kanban is a signboard or placard used to control the production line. See this book for more details.

Table of Contents


Current and recent work on JVMs

The Kanban group's primary focus is implementation techniques for JavaTM Virtual Machines (JVMs).

Spotless, a JVM for the Palm Connected Organizer

The Spotless system is an experimental Java system for the Palm Connected Organizer. It includes a JVM that supports the complete bytecode set and dynamic class loading, and class libraries and demo applications. In 1999, Spotless became the basis of the K Virtual Machine, core of Java 2 Micro Edition.

The Tracing JVM

The Tracing JVM is a modified JVM which can be used to gather data on the behavior of Java applications. The Tracing JVM is based on a production-quality JVM (the Exact VM) in which the interpreter and object management system have been modified so that it can emit data about how objects, stacks, classes, etc., are being used in the execution of a Java application. The data are recorded in trace files which characterize some aspect of the execution behavior. Traces can be analyzed to learn about what the application is doing, used as input to simulators of new JVM implementations, etc. The trace-recording module of the Tracing JVM can be modified or substituted to record data in different ways, or to perform analyses while the JVM is running. It runs on the SolarisTM operating environment, versions 2.5.1, 2.6 and 2.7 (SPARCTM and Intel).

JavaInJava

JavaInJava is a JVM written in the Java programming language. The system was built to examine the feasibility of constructing high-quality virtual machines in the Java programming language and to experiment with new virtual machine implementation techniques.

Exact VM and HotSpotTM

The group has strong ties to the Sun Labs Virtual Machine for Research and HotSpotTM projects.

Formal semantics of the JVM

The Java Virtual Machine is central to the system's aim of providing a secure program execution environment that operates identically on a wide variety of computing platforms. To be most effective in this role, the JVM needs a rigorous, complete description, to specify precisely the behavior required of implementations. In response, a number of researchers have produced formal accounts of the JVM that seek to define it in an unambiguous and comprehensible manner. Unfortunately, the size and complexity of the JVM means that many of these formal accounts must either restrict their scope substantially, or risk becoming unwieldy and intractable. This paper suggests an alternative approach to the specification of the JVM that seeks to ameliorate such problems by composing together a small set of "microinstructions" to produce the full bytecode set. These microinstructions are encapsulated as functions in the polymorphic functional language Haskell, using the familiar mechanisms of Hindley-Milner type inference to characterize the JVM's rather thorny verifier. In this way, it is hoped that a foundation will be laid for formal descriptions of the Java Virtual Machine that need not trade tractability for completeness.

Pep

In 1996 the group developed an experimental JVM implementation, which we called `Pep', to learn about the Java Virtual Machine and how to compile class files dynamically. Pep is written in Self. It reads class files and translates them to bytecodes for the Self Virtual Machine. The dynamic compilers in the Self Virtual Machine then optimize the code at run time.

Performance analysis of Java programs

To build an efficient implementation of a language, first you have to understand the behavior of typical programs written in that language. To this end, a part of our task is to gather a variety of programs, and measure, then understand their behavior, using a variety of implementation techniques. An early example of this work, is our analysis of the Richards and DeltaBlue benchmarks.


Background on Virtual Machines and Dynamic Compilation

Smalltalk

Dynamic compilation was first applied in the context of the Smalltalk-80 language. The seminal paper in the field, by L. Peter Deutsch and Allan M. Schiffman, is Efficient implementation of the Smalltalk-80 system, published in the Proceedings of the 11th ACM Symposium on Principles of Programming Languages, Salt Lake City, Utah, Jan. 1984 (pp. 297-302).

Self logo

Dynamic compilation was also adopted for the implementation of the Self language. Many new ideas were devised and tested as part of the Self project. Key among these were:
  • Customization: generating special-purpose versions of a method for specific circumstances.
  • Dynamic optimization: Through the use of polymorphic inline caches and type feedback the Self system gathers runtime information about the behavior of a program, which it uses to re-optimize selected parts of the program while it is running.
  • Dynamic deoptimization: Despite the use of advanced optimization techniques, the Self system maintains enough state so that a program can always be debugged at the source level. The programmer does not need to choose a debugging option, for example.

For more information about Self, click here. Many of the ideas originated in the Self system were adopted in the HotSpotTM Virtual Machine.


Group members

Bill Bush
Matt Seidl (intern of Summer '99, joining us in July 2000)
Mario Wolczko
Phillip Yelland
Cristina Cifuentes (with us from July '99 to June '00 on sabbatical from the University of Queensland)

Alumni

Ole Agesen
Antero Taivalsaari
Dave Ungar
Neil Wilhelm

Interns

Sameer Gulrajani (Summer '2000)
Allon Hochbaum (Summer '2000)
Pavan Kumar (Summer '2000)
Matthew Shaylor (Summer '2000)
Timothy Heil (Summer '98)
Alex Jacoby (Summer '96 and '97)
S. Subramanya Sastry (Summer '99)
Doug Simon (1998)
David Ung (Spring '97)

Academic collaborators

Prof. Cristina Cifuentes of the Centre for Software Maintenance of the University of Queensland, in applications of retargetable binary translation. Cristina was with us on an extended sabbatical from July '99 to Dec 2000.

Prof. Jim Smith of the University of Wisconsin, and his students, especially Timothy Heil (intern, Summer '98) and S. Subramanya Sastry (intern, Summer '99).

Prof. Vijay Narayanan of Penn State University, in power/performance optimization of JVMs.


Publications

This material is presented to ensure timely dissemination of scholarly and technical work. Copyright and all rights therein are retained by authors or by other copyright holders. All persons copying this information are expected to adhere to the terms and constraints invoked by each author's copyright. In most cases, these works may not be reposted without the explicit permission of the copyright holder.

Towards a Universal Implementation Substrate for Object-Oriented Languages, Mario Wolczko, Ole Agesen, David Ungar, paper presented at the OOPSLA 99 workshop on Simplicity, Performance and Portability in Virtual Machine Design, OOPSLA '99, Denver, CO, Nov 2, 1999. PDF file.

Market Analysis Using a Combination of Bayesian Networks and Description Logics , Phillip M. Yelland, Sun Labs Technical Report TR-99-78 (August 1999).

Knowledge and Research in High Technology Companies Phillip M. Yelland, Sun Labs Perspectives Essay Series 99-4 (August 1999).

The Event Horizon User Interface Model for Small Devices, Antero Taivalsaari, Sun Labs Technical Report TR-99-74 (March 1999).

The Spotless System: Implementing a JavaTM System for the Palm Connected Organizer, Antero Taivalsaari, Bill Bush, and Doug Simon, Sun Labs Technical Report TR-99-73 (February 1999).

A compositional account of the Java Virtual Machine, Phillip Yelland, Proceedings of the 26th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, 1999.

Implementing a JavaTM Virtual Machine in the Java Programming Language, Antero Taivalsaari, Sun Labs Technical Report TR-98-64 (March 1998).

The Design and Implementation of Pep, A Java TM Just-In-Time Translator, Ole Agesen, Theory and Practice of Object Systems, 3(2), 1997, pp.127-155.

Compiling Java Just In Time, Timothy Cramer, Richard Friedman, Terrence Miller, David Seberger, Robert Wilson, Mario Wolczko, IEEE Micro, 17(3), May/June 1997, pp.36-43.


Sun, Sun Microsystems, the Sun logo, Java-based trademarks and Solaris are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and other countries. SPARC is a trademark or registered trademark of SPARC International, Inc.
Maintained by Mario Wolczko.
Last modified: Fri Nov 2 09:37:48 PST
Would you recommend this Sun site to a friend or colleague?
Contact About Sun News Employment Privacy Terms of Use Trademarks Copyright 1994-2008 Sun Microsystems, Inc.