Skip to content
vic

penberg/hornet

Hornet, a JVM optimized for low-latency applications.

penberg/hornet.json
{
"createdAt": "2013-08-09T07:02:48Z",
"defaultBranch": "master",
"description": "Hornet, a JVM optimized for low-latency applications.",
"fullName": "penberg/hornet",
"homepage": "",
"language": "C",
"name": "hornet",
"pushedAt": "2015-07-19T08:40:22Z",
"stargazersCount": 53,
"topics": [],
"updatedAt": "2024-05-23T04:42:19Z",
"url": "https://github.com/penberg/hornet"
}

Build Status

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.

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
  • [Launcher]!(hornet.cc) is the java-like front-end.
  • [Translator]!(java/translator.cc) is a bytecode translator that is shared by the fast interpreter and both compilers.
  • [Fast interpreter]!(java/interp.cc) is a portable interpreter that translates bytecode into an internal format that is faster to interpret.
  • [Baseline compiler]!(java/dynasm.cc) is based on Dynasm framework that is used by LuaJIT, for example.
  • [Optimizing compiler]!(java/llvm.cc) is based on LLVM.
  • [GC]!(mps/mps.c) is based on MPS.

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.

Hornet works like java:

$ hornet
usage: hornet [-options] class [args...]

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.