Awesome
Hornet
Hornet is an implementation of the Java virtual machine with emphasis on predictable execution for applications that have low-latency requirements. Planned features include pauseless garbage collection, ahead-of-time compilation, off-heap memory management, FFI, object layout control, and observability APIs for analyzing and optimizing low-latency applications.
Features
Hornet is in pre-alpha state so the features are still very much work-in-progress.
- MPS based incremental GC with very low pause times.
- Execution engines:
- Fast interpreter
- Baseline DynASM-based compiler
- Optimizing LLVM-based compiler
- OpenJDK classlib
- Supports Linux and Darwin
- Written in C++11
Design
- Launcher is the
java
-like front-end. - Translator is a bytecode translator that is shared by the fast interpreter and both compilers.
- Fast interpreter is a portable interpreter that translates bytecode into an internal format that is faster to interpret.
- Baseline compiler is based on Dynasm framework that is used by LuaJIT, for example.
- Optimizing compiler is based on LLVM.
- GC is based on MPS.
Installation
Prerequisites:
Fedora
$ yum install java-1.7.0-openjdk-devel
If you want to enable the DynASM backend, install LuaJIT:
$ yum install luajit
If you want to enable the LLVM backend, install the library:
$ yum install llvm-dev
OS X
export JAVA_HOME=$(/usr/libexec/java_home)
Build and install Hornet:
$ make install
The command installs an executable hornet
to $HOME/bin
.
Usage
Hornet works like java
:
$ hornet
usage: hornet [-options] class [args...]
License
Hornet is:
Copyright © 2013-2014 Pekka Enberg and contributors
Hornet is distributed under the 2-clause BSD license.
Memory Pool System is:
Copyright © 2001–2013 Ravenbrook Limited. All rights reserved.
MPS is distributed under the Sleepycat License.