The NGVM project will create an open source platform for developing product-quality JVMs and an environment for JVM innovation. Our goal is to build the most innovation-friendly JVM development platform to date and from it, the most innovative product-quality JVMs. A product-quality JVM has outstanding performance, scalability and reliability. The development philosophy of NGVM is to leverage its openness to draw on the most experienced members of the VM research and development community, from both industry and academia.
Priorities The highest NGVM priorities are to be product-quality, innovative, and open. Of these, the focus on innovation most distinguishes NGVM from existing JVMs (both proprietary and open). The priority of being product-quality means NGVM’s goals include performance and robustness matching or exceeding that of commercial JVMs. The priority of being innovative means NGVM will be designed to maximize flexibility and compose-ability. The priority of being open characterizes the NGVM development strategy and means that portability is one of NGVM’s foremost goals.
Motivation The highest performing JVMs of today rest on substantial code bases with long histories. The scenery has changed dramatically since the foundations for those VMs were laid. Architecture has changed dramatically (multicore, locality, stronger PMU support, etc). Implementation technology has advanced tremendously (optimizing JITs, feedback directed optimization, new GC algorithms, etc). The application landscape has changed considerably. For all these reasons it is essential that the NGVM development approach start with a clean sheet and draw on the huge body of experience that has accumulated over this time. As a simple example, the core of Jikes RVM was built in 1998, only three years after Java became widely known. The changes in the Java landscape over the seven years since have been enormous; 130 research publications from the Jikes RVM project alone attest to this.
Need NGVM targets all potential developers including those from industry and academia. The choice of the Apache license is intended to make NGVM friendly to both open and proprietary development on top of the NGVM platform. The project also targets the research community, who require an open, high performance, innovation-friendly JVM. The emphasis on componentization encourages customization and experimentation, both open and proprietary. The NGVM project will develop VMs for a wide range of end users, targeting the spectrum from embedded devices through the desktop to server applications.
Scope NGVM will focus on developing a modular framework and foundation for VM implementation. Specifically, NGVM will develop a componentized VM core into which major components such as memory managers, JITs, and class-libraries can be plugged, allowing developers to use their own GCs, JITs and class libraries. NGVM will therefore not begin with a focus on developing the JIT, GC, or class libraries. Furthermore, NGVM will focus on componentization within the VM core to allow sub-components such as schedulers, object models, etc, to be interchanged and independently developed. The primary design and implementation focus will therefore be on a) attacking the tension between performance and design flexibility, and b) in developing a strongly componentized VM code with a great deal of flexibility.
Approach NGVM will create a JVM development framework from scratch. Its highest development priority will be to leverage a wealth of prior experience in VM development from the community, including strategic direction, design and implementation. Development will take place within the framework of the Apache community. The standard Apache development model places control squarely with the committers. The NGVM project will create a development model which draws guidance and expertise from individuals who are unable to be committers (either through tainting or other constraints). For example, NGVM may create an advisory board of non-committer expert advisors.