Your first time on this page? Allow me to give some explanations.
Awesome JVM
A curated list of awesome loosely performance related JVM stuff. Inspired by awesome-python.
Here you can see meta information about this topic like the time we last updated this page, the original creator of the awesome list and a link to the original GitHub repository.
Thank you deephacks & contributors
View Topic on GitHub:
deephacks/awesome-jvm
Search for resources by name or description.
Simply type in what you are looking for and the results will be filtered on the fly.
Further filter the resources on this page by type (repository/other resource), number of stars on GitHub and time of last commit in months.
Bytecode
Jitescript - Java API for Bytecode
Garbage collectors
Load tools
A constant throughput, correct latency recording variant of wrk
Languages
Frege is a Haskell for the JVM. It brings purely functional programing to the Java platform.
GoJava - Java bindings for Go packages
JPHP - an implementation of PHP on Java VM
Rembulan, an implementation of Lua 5.3 for the Java Virtual Machine
Machine Learning
Statistical Machine Intelligence & Learning Engine
Memory and concurrency
Reactive Programming for Android
High Performance data structures and utility methods for Java
Bloofi: A java implementation of multidimensional Bloom filters
A high performance caching library for Java
Chronicle Bytes has a similar purpose to Java NIO's ByteBuffer with many extensions
Micro second messaging that stores everything to disk
Replicate your Key Value Store across your network, with consistency, persistance and performance.
Clojure's data structures modified for use outside of Clojure
binary serialization format
High performance Java implementation of a Cuckoo filter - Apache Licensed
An advanced, but easy to use, platform for writing functional applications in Java 8.
Eclipse Collections is a collections framework for Java with optimized data structures and a rich, functional and fluent API.
External-Memory Sorting in Java
Fault tolerance and resilience patterns for the JVM
A Java library for quickly and efficiently parsing and writing UUIDs
Geohash utitlies in java
GS Collections has been migrated to the Eclipse Foundation, re-branded as Eclipse Collections. https://www.eclipse.org/collections/
Hollow is a java library and toolset for disseminating in-memory datasets from a single producer to many consumers for high performance read-only access.
A fork of Cliff Click's High Scale Library. Improved with bug fixes and a real build system.
High Performance Primitive Collections for Java
Java port of a concurrent trie hash map implementation from the Scala collections library
Java library for the HyperLogLog algorithm
A simple integer compression library in Java
Implementation of various string similarity and distance algorithms: Levenshtein, Jaro-winkler, n-Gram, Q-Gram, Jaccard index, Longest Common Subsequence edit distance, cosine similarity ...
jOOλ - The Missing Parts in Java 8 jOOλ improves the JDK libraries in areas where the Expert Group's focus was elsewhere. It adds tuple support, function support, and a lot of additional functionality around sequential Streams. The JDK 8's main efforts (default methods, lambdas, and the Stream API) were focused around maintaining backwards compatibility and implementing a functional API for parallelism.
Java Collections till the last breadcrumb of memory and performance
Port of LevelDB to Java
A very memory-efficient trie (radix tree) implementation
LMDB for Java
Lightning Memory Database (LMDB) for Java: a low latency, transactional, sorted, embedded, key-value store
Library for creating In-memory circular buffers that use direct ByteBuffers to minimize GC overhead
LWJGL is a Java library that enables cross-platform access to popular native APIs useful in the development of graphics (OpenGL, Vulkan, bgfx), audio (OpenAL, Opus), parallel computing (OpenCL, CUDA) and XR (OpenVR, LibOVR, OpenXR) applications.
Immutable key/value store with efficient space utilization and fast reads. They are ideal for the use-case of tables built by batch processes and shipped to multiple servers.
Java large off heap cache
A modern I/O library for Android, Java, and Kotlin Multiplatform.
The Java API for Onyx
A java.util.HashMap compatible map that won't stall puts or gets when resizing
A Persistent Java Collections Library
Immutable in-memory R-tree and R*-tree implementations in Java with reactive api
RTree2D is a 2D immutable R-tree for ultra-fast nearest and intersection queries in plane and spherical coordinates
A better compressed bitset in Java
Rolling hash functions in Java
RxJava – Reactive Extensions for the JVM – a library for composing asynchronous and event-based programs using observable sequences for the Java VM.
A gulp of low latency Java
Simple Binary Encoding (SBE) - High Performance Message Codec
Parallel boolean circuit evaluation
A fast object pool for the JVM
Stream summarizer and cardinality estimator.
Fast integer compression in C using the StreamVByte codec
A Java implementation of Transducers
a fast, scalable, multi-language and extensible build system
gRPC and protocol buffers for Android, Kotlin, and Java.
Zero-allocation hashing for Java
Metaprogramming
A collection of source code generators for Java.
Testing tools for javac and annotation processors
Java 8 annotation processor and framework for deriving algebraic data types constructors, pattern-matching, folds, optics and typeclasses.
Catch common Java mistakes as compile-time errors
The Eta Programming Language, a dialect of Haskell on the JVM
Write parsers for arbitrary text inputs, entirely in Java, with no preprocessing phase
Java 1-15 Parser and Abstract Syntax Tree for Java, including preview features to Java 13
A Java API for generating .java source files.
Build parsers in Java
Elegant parsing in Java and Scala - lightweight, easy-to-use, powerful.
Obsolete repository. Moved to oracle/graal.
Compiler of Java bytecode to JavaScript
GraalVM: Run Programs Faster Anywhere
Native
A JNI code generator based on the JNI generator used by the eclipse SWT project
Compile Java byte-code to native CPU's.
Java Bindings for V8
The missing bridge between Java and native C++
Java Abstracted Foreign Function Layer
Jssembly is a library that allows you to execute native assembly from Java.
Low-overhead, non-blocking I/O, external Process implementation for Java
Network
Efficient reliable UDP unicast, UDP multicast, and IPC message transport
Your go-to microservice framework for any situation, from the creator of Netty et al. You can build any type of microservice leveraging your favorite technologies, including gRPC, Thrift, Kotlin, Retrofit, Reactive Streams, Spring Boot and Dropwizard.
A High Performance Network ( TCP/IP ) Library
Simulating shitty network connections so you can build better systems.
GoReplay is an open-source tool for capturing and replaying live HTTP traffic into a test environment in order to continuously test your system with real data. It can be used to increase confidence in code deployments, configuration changes and infrastructure changes.
jRT measures the response time of a java application to socket-based requests
Java API over Accelio
"I am fluent in over 6 million forms of communication!"
Chaos engineering tool for simulating real-world distributed system failures
Square’s meticulous HTTP client for the JVM, Android, and GraalVM.
Unconventional I/O library for Java
Proteus Java Client
Reactive stubs for gRPC
Tools for keeping your cloud operating in top form. Chaos Monkey is a resiliency tool that helps applications tolerate random instance failures.
A Java library for capturing, crafting, and sending packets.
A Linux packet crafting tool.
TCP/IP packet demultiplexer. Download from:
Pcap editing and replay tools for *NIX and Windows - Users please download source from
Nix tools
BCC - Tools for BPF-based Linux IO analysis, networking, monitoring, and more
simple disk I/0 latency measuring tool
Performance monitoring and benchmarking suite
Performance analysis tools based on Linux perf_events (aka perf) and ftrace
Profilers
A Java agent that rewrites bytecode to instrument allocation sites
Java memory allocation profiler
Sampling CPU and HEAP profiler for Java featuring AsyncGetCallTrace + perf_events
BTrace - a safe, dynamic tracing tool for the Java platform
Turn -XX:+TraceBytecodes output into a FlameGraph compatible stack format
Fork of tagtraum industries' GCViewer. Tagtraum stopped development in 2008, I aim to improve support for Sun's / Oracle's java 1.6+ garbage collector logs (including G1 collector)
Performance visualisation tools
Utilities for HDR Histogram logs manipulation
production heap profiling for the JVM. compatible with google-perftools.
A sampling JVM profiler without the safepoint sample bias
Java Agent for Memory Measurements
Memory consumption estimator for Java
Get Method Sampling from Java Flight Recorder Dump and convert to FlameGraph compatible format.
Tool for creating reports from Java Flight Recorder dumps
Log analyser / visualiser for Java HotSpot JIT compiler. Inspect inlining decisions, hot methods, bytecode, and assembly. View results in the JavaFX user interface.
JITWatch plugin for IntelliJ IDEA
GUI for comparing JMH results
Java monitoring for the command-line, profiler included
JVM Profiler Sending Metrics to Kafka, Console Output or Custom Reporter
A memory leak detection library for Android.
An application metrics facade for the most popular monitoring tools. Think SLF4J, but for metrics.
A java agent to generate method mappings to use with the linux perf
tool
PerfJ is a wrapper of linux perf for java programs.
OOM diagnostics for Java.
Sends stacktrace-level performance data from a JVM process to Riemann.
Simple JVM Profiler Using StatsD and Other Metrics Backends
Small set of tools for JVM troublshooting, monitoring and profiling.
Best-of-breed OpenTracing utilities, instrumentations and extensions
Zipkin is a distributed tracing system
Runtimes
Dead-Simple Packaging and Deployment for JVM Apps
Fast JVM launching without the hassle of persistent JVMs.
Java unlimited redefinition of classes at runtime.
Terminate the JVM when resources are exhausted
Virtual Machines
[INACTIVE] Avian is a lightweight virtual machine and class library designed to provide a useful subset of Java's features, suitable for building self-contained applications.
Eclipse OpenJ9: A Java Virtual Machine for OpenJDK that's optimized for small footprint, fast start-up, and high throughput. Builds on Eclipse OMR (https://github.com/eclipse/omr) and combines with the Extensions for OpenJDK for OpenJ9 repo.
A Java to iOS Objective-C translation tool and runtime.
A toy JVM written in Go
Cross-platform framework for building truly native mobile apps with Java or Kotlin. Write Once Run Anywhere support for iOS, Android, Desktop & Web.
Ahead of time compiler for JVM bytecode targetting iOS, Mac OSX and Linux
Documentation
Examples and hands-on labs for Linux tracing tools workshops
Class materials for a distributed systems lecture series