Welcome to the Maxine VM project¶
A next generation, highly productive platform for virtual machine research.
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.
For Maxine VM >= v2.1 please cite: Christos Kotselidis, et al. Heterogeneous Managed Runtime Systems: A Computer Vision Case Study. In 13th ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments (VEE), 2017.
For the original Maxine VM please cite: C. Wimmer et al, “Maxine: An approachable virtual machine for, and in, java”, In ACM TACO 2013.
- Download and build Maxine from source on any of the supported Supported Platforms.
- Read the technical report “Maxine: An Approachable Virtual Machine For, and In, Java”
- Send any questions to this mailing list (firstname.lastname@example.org).
- Read about the current status of the VM.
- Learn more about the Maxine Inspector, the companion tool for visualizing internal state and debugging the VM: video introduction, video demos, and written documentation.
- Learn more about Virtual Machine Level Analysis, an experimental extension for analysis the behavior of application (and eventually the VM).
- View publications and presentations about Maxine.
- Read the Glossary and FAQ.
- Contact us on the the mailing list (or in private) and tell us about your work.
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.
- Implement JVMCI, Upgrade to latest Graal
- Run Truffle on top of Maxine VM/Graal
- Port MMTk to Maxine VM
Table of Contents¶
- Build and Usage Instructions
- Developing Maxine on IDEs
- Papers and Presentations
- The Maxine Project: Contributors
- Offline Compilation
- Frequently Asked Questions
- Does Maxine support the GNU classpath libraries?
- How modular is the Maxine VM architecture?
- What kind of GC does the Maxine VM use?
- How much optimization does the baseline compiler do?
- Does the Maxine VM use Green Threads?
- Can I use my favorite debugger?
- What kind of development environment do I need to build and run the Maxine VM?
- How does Maxine relate to the Project Maxwell Assembler System?
- Are there other attempts to bootstrap the Java programming language?
- Can I suspend and resume VM execution?
- Does the Maxine VM have an interpreter?
- Why am I getting an error message about “hosted” being missing when trying to build an image?
- Why was the Grip abstraction from the original VM design removed?
- How does the Inspector process communicate with the inspected Maxine VM process?
- What happened to the “primordial thread”?
- Glossary of Maxine terminology and concepts
- JDK interoperation
- VM Boot Image
- Memory Management
- Management of Code Dependencies
- Code Eviction in the Maxine VM
- Object representation in the Maxine VM
- Schemes: Interfaces for Maxine VM Configuration
- Snippets in the Maxine VM
- Stack Walking in the Maxine VM
- Threads in the Maxine VM
- Type-based Logging
- Virtual Machine Level Analysis
- VM Operations
- VM Tooling interface
- The Maxine Inspector