Sun Java Solaris Communities My SDN Account Join SDN
 

JavaOne Online Technical Sessions

Pump Up Your Technical Knowledge
Listen and watch as industry luminaries bring you the latest on Java technologies
Active Tab2008
 
Begin Product Tab Sub Links Active Sub LinkJavaOne Technical Sessions JavaOne Hands-On Labs Tech Days Hands-On Labs

The Maxine Virtual Machine
TS-5169


Presenter: Bernd Mathiske, Sun Microsystems


The Maxine Virtual Machine (VM), which is written in the Java programming language, will support research and enable fast prototyping of VM technologies. By making extensive use of familiar object-oriented methodologies and development tools, Maxine is positioned to make VM development substantially more agile than has been possible in the past. It is also the first metacircular VM implementation integrated with the latest JDK software from Sun.

The productivity advantages enjoyed by application developers using Java technology are finally available for a low-level systems programming effort. VM developers can work with the Maxine code base in their choice of NetBeans software, Eclipse, IntelliJ, or JBuilder and need not be concerned with complications such as makefiles, Ant files, or preprocessors. Maxine's source code leverages all the newest language features, including generics, annotations, static imports, return type overloading, enums, and others. This presentation demonstrates how these features benefit the nascent discipline of systems programming in the Java programming language.

The Maxine design emphasizes ease of development, portability, maintainability, configurability, and malleability. It is unique in its extreme exploitation of metacircularity, giving rise to the design principle "write everything only once." This approach avoids many of the feature interdependencies that make conventional VM machine implementations intricate and fragile. Maxine requires extremely few handwritten assembler code routines and absolutely no compiler-specific intermediate representation manipulation for any purpose other than normal bytecode compilation. Features that are platform-dependent in conventional VM architecture (synchronized methods, exception dispatching, JNI API stubs, reflective invocation stubs) become portable when implemented via bytecode generation.

The following Maxine features are configurable with alternative implementations of Java platform interfaces: optimizing compiler, just-in-time (JIT) compiler, dynamic compilation strategy, garbage collector, read and write barriers, object reference representation, object layout, thread synchronization (object monitor implementation), safe-point implementation, and VM machine startup sequence.

Maxine represents all internal data structures, including classes and generated machine code, as Java technology-based objects. Among other benefits, this has facilitated the construction of the Maxine Inspector: an innovative visual program analysis tool that seamlessly integrates object browsing (inspired by Smalltalk) with source-level debugging (inspired by Java integrated development environments) and low-level debugging (inspired by gdb/dbx). The latter is crucial for VM software debugging, because in contrast to normal Java technology-based application debugging, one cannot simply postulate a generated machine to be correct. Moreover, the VM software executable's code is statically optimized and the VM software dynamically optimizes itself, together with the applications it is running.

The Maxine VM is being constructed for combinations of the Solaris Operating System, Linux, and Xen with the SPARC® and AMD64 instruction sets. Both the Maxine VM and the Maxine Inspector will be released as open source around the time of the 2008 JavaOne conference. This will be a pre-alpha release, providing the opportunity for early community participation and feedback. The long-term intention is to stimulate further VM research and development and provide the platform of choice for innovative projects.

A layer of the Maxine code base--the Project Maxwell Assembler System--has been available since mid-2006 on java.net. This is an extensible assembler and disassembler framework, written in the Java programming language, that has been extremely well tested against pre-existing textual assemblers.

Watch The Session
You need to be a registered Sun Developer Network member to view this multimedia session. If you are a registered SDN member, please click on "Watch Multimedia" button to log-in to view the multimedia session. If you wish to join SDN, please click here.

 
 
FREE White Papers on Java SE, Java EE, cloud computing and database technologies.
New SDN Member Only Offers Every Month Discounts, FREE white papers and more!
Java University and JavaOne Training Sessions