Maxine Virtual Machine

Last updated
Maxine
Original author(s) Bernd Mathiske,
Douglas Simon
(Sun Labs, Oracle)
Developer(s) University of Manchester, Maxine team
Initial release2005;19 years ago (2005)
Stable release
2.9.0 [1] / December 20, 2019;4 years ago (2019-12-20)
Repository
Written in Java
Operating system Solaris, Linux, macOS
Platform x64, ARM32, AArch64, RISC-V
Type Java virtual machine
License GPL version 2.0
Website github.com/beehive-lab/Maxine-VM   OOjs UI icon edit-ltr-progressive.svg

The Maxine virtual machine is an open source virtual machine that is developed at the University of Manchester. [2] It was formerly developed by Sun Microsystems Laboratories, [3] since renamed Oracle Labs. The emphasis in Maxine's software architecture is on modular design and code reuse for flexibility, configurability, and productivity for industrial and academic virtual machine researchers. It is one of a growing number of Java virtual machines written entirely in Java in a meta-circular style. Examples include Squawk and Jikes RVM.

Contents

Architecture

The Maxine VM is characterized internally by aggressive use of advanced language features in Java 1.5 and 1.6, by modular subsystems coordinated through Java interfaces, by the absence of an interpreter, and by a tightly coupled debugger and visualization tool for VM development.

Compatibility

Maxine is plug compatible with an unmodified Java Development Kit (JDK). Maxine can be developed, built, and run in standard Java integrated development environments (IDEs), including NetBeans, Eclipse, and IntelliJ IDEA.

Systems programming in Java

A secondary goal of the project is to develop methods and tools for "systems programming in Java". Compiler extensions, configured in VM source code using Java annotations, allow use, with no performance penalty, of low-level operations otherwise disallowed in Java. These extensions provided the foundation for the Graal compiler.

The Maxine Inspector

Specialized debugging support for the Maxine VM is provided by the Maxine Inspector: a companion tool that acts as a combined object, class, and method browser, and as a machine- and bytecode-level debugger. [4] The Inspector runs out-of-process, needs no active VM support, and leverages code shared with the VM for specialized developer services that exploit detailed knowledge of memory layout and VM design. [5] Notable services include:

History

Maxine was created by Bernd Mathiske at Sun Labs in early 2005. He led its development among a growing team until late 2008 when he left Sun Microsystems and handed the project over to Doug Simon who had been the first engineer to join it. Doug Simon continued in this role throughout the acquisition of Sun by Oracle Corporation.

The static (heap inspection) version of the Maxine Inspector was created by Bernd Mathiske in 2006. Michael Van De Vanter assumed development of the Inspector in 2007, adding dynamic support as the VM became executable and continued to evolve throughout the acquisition of Sun by Oracle Corporation.

Oracle continued development of Maxine until the release of Maxine 2.0. [16] The University of Manchester is developing Maxine as of release 2.1. [17]

See also

Related Research Articles

<span class="mw-page-title-main">Java (programming language)</span> Object-oriented programming language

Java is a high-level, class-based, object-oriented programming language that is designed to have as few implementation dependencies as possible. It is a general-purpose programming language intended to let programmers write once, run anywhere (WORA), meaning that compiled Java code can run on all platforms that support Java without the need to recompile. Java applications are typically compiled to bytecode that can run on any Java virtual machine (JVM) regardless of the underlying computer architecture. The syntax of Java is similar to C and C++, but has fewer low-level facilities than either of them. The Java runtime provides dynamic capabilities that are typically not available in traditional compiled languages.

<span class="mw-page-title-main">Java virtual machine</span> Virtual machine that runs Java programs

A Java virtual machine (JVM) is a virtual machine that enables a computer to run Java programs as well as programs written in other languages that are also compiled to Java bytecode. The JVM is detailed by a specification that formally describes what is required in a JVM implementation. Having a specification ensures interoperability of Java programs across different implementations so that program authors using the Java Development Kit (JDK) need not worry about idiosyncrasies of the underlying hardware platform.

Parrot is a discontinued register-based process virtual machine designed to run dynamic languages efficiently. It is possible to compile Parrot assembly language and Parrot intermediate representation to Parrot bytecode and execute it. Parrot is free and open-source software.

Bytecode is a form of instruction set designed for efficient execution by a software interpreter. Unlike human-readable source code, bytecodes are compact numeric codes, constants, and references that encode the result of compiler parsing and performing semantic analysis of things like type, scope, and nesting depths of program objects.

The GNU Compiler for Java (GCJ) is a discontinued free compiler for the Java programming language. It was part of the GNU Compiler Collection.

SableVM was a clean room implementation of Java bytecode interpreter implementing the Java virtual machine (VM) specification, second edition. SableVM was designed to be a robust, extremely portable, efficient, and fully specifications-compliant Java Virtual Machine that would be easy to maintain and to extend. It is now no longer being maintained.

HotSpot, released as Java HotSpot Performance Engine, is a Java virtual machine for desktop and server computers, developed by Sun Microsystems which was purchased by and became a division of Oracle Corporation in 2010. Its features improved performance via methods such as just-in-time compilation and adaptive optimization. It is the de facto Java Virtual Machine, serving as the reference implementation of the Java programming language.

Apache Harmony is a retired open source, free Java implementation, developed by the Apache Software Foundation. It was announced in early May 2005 and on October 25, 2006, the board of directors voted to make Apache Harmony a top-level project. The Harmony project achieved 99% completeness for J2SE 5.0, and 97% for Java SE 6. The Android operating system has historically been a major user of Harmony, although since Android Nougat it increasingly relies on OpenJDK libraries.

Java Card is a software technology that allows Java-based applications (applets) to be run securely on smart cards and more generally on similar secure small memory footprint devices which are called "secure elements" (SE). Today, a secure element is not limited to its smart cards and other removable cryptographic tokens form factors; embedded SEs soldered onto a device board and new security designs embedded into general purpose chips are also widely used. Java Card addresses this hardware fragmentation and specificities while retaining code portability brought forward by Java.

Jikes Research Virtual Machine is a mature virtual machine that runs programs written for the Java platform. Unlike most other Java virtual machines (JVMs), it is written in the programming language Java, in a style of implementation termed meta-circular. It is free and open source software released under an Eclipse Public License.

<span class="mw-page-title-main">Java (software platform)</span> Set of computer software and specifications

Java is a set of computer software and specifications that provides a software platform for developing application software and deploying it in a cross-platform computing environment. Java is used in a wide variety of computing platforms from embedded devices and mobile phones to enterprise servers and supercomputers. Java applets, which are less common than standalone Java applications, were commonly run in secure, sandboxed environments to provide many features of native applications through being embedded in HTML pages.

Dalvik is a discontinued process virtual machine (VM) in the Android operating system that executes applications written for Android. Dalvik was an integral part of the Android software stack in the Android versions 4.4 "KitKat" and earlier, which were commonly used on mobile devices such as mobile phones and tablet computers, and more in some devices such as smart TVs and wearables. Dalvik is open-source software, originally written by Dan Bornstein, who named it after the fishing village of Dalvík in Eyjafjörður, Iceland.

<span class="mw-page-title-main">Da Vinci Machine</span> Sun Microsystems project

The Da Vinci Machine, also called the Multi Language Virtual Machine, was a Sun Microsystems project aiming to prototype the extension of the Java Virtual Machine (JVM) to add support for dynamic languages.

The Java Development Kit (JDK) is a distribution of Java technology by Oracle Corporation. It implements the Java Language Specification (JLS) and the Java Virtual Machine Specification (JVMS) and provides the Standard Edition (SE) of the Java Application Programming Interface (API). It is derivative of the community driven OpenJDK which Oracle stewards. It provides software for working with Java applications. Examples of included software are the Java virtual machine, a compiler, performance monitoring tools, a debugger, and other utilities that Oracle considers useful for Java programmers.

This article compares the application programming interfaces (APIs) and virtual machines (VMs) of the programming language Java and operating system Android.

Java bytecode is the instruction set of the Java virtual machine (JVM), the language to which Java and other JVM-compatible source code is compiled. Each instruction is represented by a single byte, hence the name bytecode, making it a compact form of data.

<span class="mw-page-title-main">GraalVM</span> Virtual machine software

GraalVM is a Java Development Kit (JDK) written in Java. The open-source distribution of GraalVM is based on OpenJDK, and the enterprise distribution is based on Oracle JDK. As well as just-in-time (JIT) compilation, GraalVM can compile a Java application ahead of time. This allows for faster initialization, greater runtime performance, and decreased resource consumption, but the resulting executable can only run on the platform it was compiled for.

References

Notes

  1. "Maxine VM: A Metacircular VM for Java in Java". GitHub . 18 November 2021.
  2. Wimmer et al. 2013, p. 1.
  3. "Oracle Labs – About". Labs.oracle.com. Retrieved 2017-06-25.
  4. "The Maxine Project: The Maxine Inspector". community.oracle.com. Retrieved 2019-04-08.
  5. "Introduction to the Maxine Inspector (Demo)". youtube.com. 5 April 2010. Retrieved 2019-04-08.
  6. "Maxine Inspector Mini-Demo 6 of 10 (2008): Multi-code Method Views". youtube.com. 28 August 2010. Retrieved 2019-04-08.
  7. "Maxine Inspector Mini-Demo 5 of 10 (2008): Disassembled Bytecode". youtube.com. 28 August 2010. Retrieved 2019-04-08.
  8. "Maxine Inspector Mini-Demo 4 of 10 (2008): Disassembled Machine Code". youtube.com. 28 August 2010. Retrieved 2019-04-08.
  9. "Maxine Inspector Mini-Demo 10 of 10 (2008): Breakpoints". youtube.com. 28 August 2010. Retrieved 2019-04-08.
  10. "Maxine Inspector Mini-Demo 7 of 10 (2008): Threads". youtube.com. 28 August 2010. Retrieved 2019-04-08.
  11. "Maxine Inspector Mini-Demo 9 of 10 (2008): Stacks". youtube.com. 28 August 2010. Retrieved 2019-04-08.
  12. "Maxine Inspector Mini-Demo 8 of 10 (2008): Registers". youtube.com. 28 August 2010. Retrieved 2019-04-08.
  13. "Maxine Inspector Mini-Demo 2 of 10 (2008): Memory". youtube.com. 28 August 2010. Retrieved 2019-04-08.
  14. "Maxine Inspector Mini-Demo 3 of 10 (2008): Heap Objects". youtube.com. 28 August 2010. Retrieved 2019-04-08.
  15. "Maxine Inspector Mini-Demo 1 of 10 (2008): Boot Image Configuration". youtube.com. 28 August 2010. Retrieved 2019-04-08.
  16. "Archived copy". Archived from the original on 2016-03-04. Retrieved 2013-09-18.{{cite web}}: CS1 maint: archived copy as title (link)
  17. "Maxine-VM: Maxine VM: A meta-circular research VM". GitHub. 21 June 2017. Retrieved 2017-06-25.

Bibliography