Welcome to the Maxine VM project

A next generation, highly productive platform for virtual machine research.

Project Overview

In this era of modern, managed languages we demand ever more from our virtual machines: better performance, more scalability, and support for the latest new languages. Research and experimentation is essential but challenging in the context of mature, complex, production VMs written in multiple languages. The Maxine VM is a next generation platform that establishes a new standard of productivity in this area of research. It is written entirely in Java, completely compatible with modern Java IDEs and the standard JDK, features a modular architecture that permits alternate implementations of subsystems such as GC and compilation to be plugged in, and is accompanied by a dedicated development tool (the Maxine Inspector) for debugging and visualizing nearly every aspect of the VM’s runtime state.

As of the 2.0 release, September 2013, Maxine is no longer an active project at Oracle Labs. As of the 2.1 release, April 2017, Maxine VM is actively maintained and developed at the University of Manchester.

We believe that Maxine represents the state of the art in a research VM, and actively encourage community involvement. The Maxine sources, including VM, Inspector, and other supporting tools, are Open Source and are licensed under GPL version 2.0. To obtain the code please visit https://github.com/beehive-lab.

Getting Started

Features

Some of the features of Maxine that make it a compelling platform for (J)VM research include:

  • Nearly all of the code base is written in Java and exploits advanced language features appearing in JDK 5 and beyond: for example annotations, static imports, and generics.
  • The VM integrates with openJDK. There’s no need to download (and build) other implementations of the standard Java classes.
  • The source code supports development in Eclipse, Netbeans or IntelliJ all of which provide excellent support for cross-referencing and browsing the code. It also means that refactoring can be confidently employed to continuously improve the structure of the code.
  • The Maxine Inspector produces visualizations of nearly every aspect of the VM runtime state, and provides advanced, VM-specific debugging.
  • The source code is hosted on GitHub making downloading and collaboration easier.

Roadmap

  • Implement JVMCI, Upgrade to latest Graal
  • Run Truffle on top of Maxine VM/Graal
  • Port MMTk to Maxine VM

Contributing to Maxine

Maxine is an open-source project, and we invite researchers and developers to make contributions in the form of bug fixes, performance enhancements, features, documentation, and so forth.

To push your code upstream use pull requests on GitHub. However, note that we are doing most development in a private git tree and we are working on a number of features which are not quite ready for public release. Therefore, we would strongly encourage you to get in touch before starting to work on anything large, to avoid duplication of effort. We can probably expedite our release of any work-in-progress (WIP) features you might be interested in, if you do that

Contributors should adopt the following process once they think their changes are ready to push:

  1. Merge the latest changes from the Maxine master branch.
  2. Test their code.
  3. Make sure the code complies to the coding style of Maxine VM using mx checkstyle.
  4. Open a new pull request where they explain their contribution and how it works in case of complex implementations.

The changes will then be reviewed and tested. In case there are no errors, the contribution will be included in the head repository. In any other case the maintainer will be asked to resolve any issues and update his code.

Reporting Bugs

If you think you have found a bug which is not in the list of Known issues, please open a new issue on GitHub. However, note that we have limited time available to investigate and fix bugs which are not affecting the workloads we are using. Therefore, if you can’t pinpoint the cause of the bug yourself, we ask that you provide as many details on how to reproduce it, and preferably provide a statically linked executable which triggers it.

Acknowledgements

This documentation is heavily based on the original wiki pages (by Oracle) that can be found here and here.

Table of Contents

Indices and tables