Awesome Lists

awesome-jvm

by deephacks

awesome listpushed about 4 years ago

A curated list of awesome loosely performance related JVM stuff. Inspired by awesome-python.

AI summary

JVM tools

A curated list of performance-related JVM technologies and tools

stars
2.1K
forks
219
watching
151
awesome lists
6
entries
354
View on GitHub

Embed the badge

Show how many awesome lists link to your project. The count updates automatically.

Awesome Lists badge
Markdown
[![Awesome Lists Badge](https://awesome.facts.dev/shield/deephacks/awesome-jvm/links.svg)](https://awesome.facts.dev/awesome/deephacks/awesome-jvm)
HTML
<a href="https://awesome.facts.dev/awesome/deephacks/awesome-jvm"><img src="https://awesome.facts.dev/shield/deephacks/awesome-jvm/links.svg" alt="Awesome Lists Badge" /></a>
Image URL
https://awesome.facts.dev/shield/deephacks/awesome-jvm/links.svg

What's in the list

354 links in 17 sections, with live GitHub stats.activeno commit in 2y

Bytecode

  • asmtools

    Used to develop tools for the production of Java .class files

  • Byte Buddy

    Code generation library creating Java classes at runtime without the help of a compiler

  • Jitescript

    Bytecode generation library similar to BiteScript

Garbage collectors

  • Azul Pauseless Garbage Collection

    Providing continuous, pauseless operation for Java applications

  • Balanced GC

    GC policy available in the Java Virtual Machine for IBM WebSphere Application Server V8

  • Epsilon GC

    Completely passive GC implementation with bounded allocation limit, and lowest runtime performance overhead possible

  • G1

    The Garbage-First Garbage Collector

  • Shenandoah

    Ultra-Low-Pause-Time Garbage Collector

  • The Garbage Collection Handbook

    Book that addresses new challenges to garbage collection made by recent advances in hardware and software

  • ZGC

    Garbage collector optimized for low latency and very large heaps

Load tools

  • Gatling

    Asynchronous non-blocking scenario driven load testing tool for testing HTTP servers

  • wrk2

    A constant throughput, correct latency recording variant of wrk

Languages

  • Ceylon

    Object-oriented, strong and static programming language with an emphasis on immutability, created by Red Hat

  • Clojure

    Dialect of Lisp created by Rich Hickey. Dynamically typed with emphasis on functional programming

  • Erjang

    A JVM-based Erlang VM

  • Eta

    Pure, lazy, strongly typed functional programming language on the JVM

  • Frege

    Pure functional programming language in the spirit of Haskell

  • gojava

    Java bindings for Go packages

  • Golo

    A simple dynamic language that makes extensive usage of

  • Groovy

    Optionally typed and dynamic language, with static-typing and static compilation capabilities

  • Java

    General-purpose, concurrent, strongly typed, class-based object-oriented language

  • JRuby

    Implementation of the Ruby language on the JVM

  • JPHP

    PHP on the Java VM

  • Jython

    Python for the Java Platform

  • Kawa

    Extension of the Scheme language, which is in the Lisp family of programming languages

  • Kotlin

    Statically typed programming language for the JVM, Android and the browser

  • LuaJ

    Java-centric implementation of lua vm built to leverage standard Java features

  • Nashorn

    Lightweight high-performance JavaScript runtime in Java with a native JVM

  • OCaml-Java

    Supports OCaml language v4. Generates plain Java bytecode and have seamless integration with Java

  • Rembulan

    Rembulan is an implementation of Lua 5.3 for the JVM, written in pure Java with minimal dependencies

  • Renjin

    JVM-based interpreter for the R language for the statistical analysis

  • Scala

    Strong and static programming language that combine object-oriented and functional programming ideas

  • Xtend

    Flexible and expressive dialect of Java, which compiles into Java 5 source code

Machine Learning

  • Deeplearning4j

    Open-Source, Distributed, Deep Learning Library for the JVM

  • H2O

    Fast statistical, machine learning & math runtime

  • Smile

    Statistical Machine Intelligence & Learning Engine

Memory and concurrency

  • Agera

    Reactive Programming for Android by Google

  • Agrona

    Library of data structures and utility methods that are a common need when building high-performance applications

  • Apache Arrow

    A high-performance cross-system data layer for columnar in-memory analytics

  • bloofi

    Java implementation of multidimensional Bloom filters

  • Cap’n Proto

    Insanely fast data interchange format and capability-based RPC system

  • caffeine

    A high performance caching library for Java 8

  • Chronicle-Bytes

    Low level memory access wrappers

  • Chronicle-Queue

    Micro second messaging that stores everything to disk

  • Chronicle-Map

    In-memory key-value store designed for low-latency and/or multi-process applications

  • clj-ds

    Clojure's data structures modified for use outside of Clojure

  • colfer

    Binary serialization format and class generator

  • commons-math

    Library of lightweight, self-contained mathematics and statistics components

  • CuckooFilter4J

    Bloom filter replacement for approximated set-membership queries

  • cyclops

    Integration modules for RxJava, Reactor, FunctionalJava, Guava & Javaslang

  • Eclipse Collections

    Collections framework for Java

  • externalsortinginjava

    Sort very large files using multiple cores and an external-memory algorithm

  • failsafe

    A lightweight, zero-dependency library for handling failures

  • fasttuple

    Collections that are laid out adjacently in both on- and off-heap memory

  • fast-uuid

    Java library for quickly and efficiently parsing and writing UUIDs

  • FlatBuffers

    Efficient cross platform serialization library for C++, C#, Go, Java, JavaScript, PHP, and Python

  • geohash

    Java utility methods for geohashing

  • gs-collections

    Goldman Sachs collections framework

  • hollow

    Java library and comprehensive toolset for harnessing small to moderately sized in-memory datasets

  • high-scale-lib

    Cliff Click's High Scale Library

  • hppc

    High Performance Primitive Collections

  • injector

    A new Executor for Java

  • java-concurrent-hash-trie-map

    Java port of a concurrent trie hash map implementation from Scala collections

  • java-hll

    Java library for the HyperLogLog algorithm

  • JavaFastPFOR

    Library to compress and uncompress arrays of integers very fast

  • java-string-similarity

    String similarity and distance measures, including Levenshtein edit distance and sibblings, Jaro-Winkler, Longest Common Subsequence, cosine similarity etc

  • JCTools

    Concurrent data structures currently missing from the JDK

  • DSL-JSON

    High performance JSON library with advanced compile-time databinding

  • jsoniter

    Claims to be the fastest JSON parser ever (copy of DSL-JSON)

  • jOOL

    Useful extensions to Java 8 lambdas

  • Koloboke

    Java Collections til the last breadcrumb of memory and performance

  • LevelDB

    Rewrite (port) of LevelDB in Java

  • lightweight_trie

    A very memory-efficient trie (radix tree) implementation

  • lmdbjni

    Java API to LMDB (HawtJNI) which is an ultra-fast, ultra-compact key-value embedded data store written in C

  • lmdbjava

    Java API to LMDB (JNR) which is an ultra-fast, ultra-compact key-value embedded data store written in C

  • low-gc-membuffers

    In-memory circular buffers that use direct ByteBuffers to minimize GC overhead

  • lwjgl3

    Java library that enables cross-platform access to popular native APIs useful in the development of graphics (OpenGL), audio (OpenAL) and parallel computing (OpenCL) applications

  • MapDB

    Collections backed by off-heap or on-disk storage

  • mph-table

    Minimal Perfect Hash Tables are an immutable key/value store with efficient space utilization and fast reads

  • mug

    A small, zero-dep functional util library originating from Google

  • netty-buffers

    Memory buffer pool implementation similar to jemalloc

  • ObjectLayout

    A layout-optimized Java data structure package

  • ohc

    Java large off heap cache developed for Apache Cassandra 3.0

  • okio

    Modern Java IO library that do clever things to save CPU and memory

  • onyx-java

    Mirrors the Onyx Platform core API by providing a Java equivalent for each component of an Onyx workflow

  • parquet

    Columnar storage format that uses the record shredding and assembly algorithm described in the Dremel paper

  • PauselessHashMap

    A java.util.HashMap compatible map that won't stall puts or gets when resizing

  • pcollections

    A Persistent Java Collections Library

  • protobuf

    Google's data interchange format

  • Quasar

    Lightweight threads and actors for the JVM

  • rtree

    Immutable in-memory R-tree and R*-tree implementations in Java with reactive api

  • RTree2D

    RTree2D is a 2D immutable R-tree with STR (Sort-Tile-Recursive) packing for ultra-fast nearest and intersection queries on plane and spherical surfaces

  • Reactive Streams

    Standard for asynchronous stream processing with non-blocking back pressure

  • Reactive Streams Utilities

    Future standard utilities library for Reactive Streams

  • RoaringBitmap

    A better compressed bitset in Java

  • rollinghashjava

    Rolling hash functions in Java

  • Reactor

    Reactive data applications on the JVM for Java, Groovy, Clojure and other

  • RxJava

    Library for composing asynchronous and event-based programs using observable sequences

  • SmoothieMap

    java.util.Map impl with worst put latencies more than 100 times smaller than java.util.HashMap

  • Simple Binary Encoding

    High Performance Message Codec

  • splitmap

    A parallel bitmap implementation

  • DataSketches

    A Java software library of stochastic streaming algorithms

  • stormpot

    A fast object pool for the JVM

  • stream-lib

    A Java library for summarizing data in streams for which it is infeasible to store all events

  • streamvbyte

    Fast integer compression in C using the StreamVByte codec

  • TraneIO

    High-performance implementation of the Future abstraction

  • transducers-java

    Composable algorithmic transformations independent from the context of their input and output sources

  • VarInt

    No-deps variable int implementation without deps (by Bazel)

  • vavr

    Functional Library for Java 8+

  • wire

    Clean, lightweight protocol buffers for Android and Java

  • Zero-Allocation-Hashing

    Hashing any sequences of bytes in Java, including all kinds of primitive arrays, buffers, CharSequences and more

Metaprogramming

  • Antlr

    Parser generator for reading, processing, executing, or translating structured text or binary files

  • auto

    A collection of source code generators for Java

  • Apache Calcite

    Dynamic data management framework and SQL parser plugin

  • Checker Framework

    Compiler plug-ins that find bugs or verify their absence

  • compile-testing

    Testing tools for javac and annotation processors

  • derive4j

    Algebraic data types constructors, pattern-matching, morphisms, optics and typeclasses

  • error-prone

    Catch common Java mistakes as compile-time errors

  • GHCVM

    A Haskell to JVM compiler that supports GHC Haskell

  • Graal

    New experimental just-in-time compiler for Java that is integrated with the HotSpot virtual machine

  • grappa

    Java fork of Parboiled. Write grammars with no preprocessing phase

  • immutables

    Generate simple, safe and consistent value objects

  • javacc

    Parser generator for use with Java

  • javaparser

    Java 1.8 Parser and Abstract Syntax Tree for Java

  • JavaPoet

    A Java API for generating .java source files

  • jparsec

    Builds mini parsers in pure Java a la Haskell Parsec

  • JSweet

    A transpiler from Java to TypeScript/JavaScript

  • MPS

    Design and build extensible DSLs and editors

  • lombok

    Reduce the amount of boilerplate code that is commonly written for Java classes

  • parboiled

    Parsing of arbitrary input text based on parsing expression grammars

  • Sulong

    LLVM IR interpreter written in Java using Truffle and Graal

  • TeaVM

    Ahead-of-time translating compiler (transpiler) from Java bytecode to JavaScript

  • Truffle

    Framework for implementing languages as simple interpreters

  • Xtext

    Framework for development of programming languages and DSLs

Native

  • hawtjni

    A JNI code generator based on the JNI generator used in Eclipse SWT

  • Java Grinder

    Compile Java bytecode to microcontroller assembly

  • j2v8

    Java API for Google's V8 JavaScript engine

  • JavaCPP

    JavaCPP provides efficient access to native C++ inside Java

  • jnr-ffi

    Load native libraries without writing JNI code by hand

  • jssembly

    Execution of native assembly from Java

  • NuProcess

    A low-overhead, non-blocking I/O, external Process execution implementation for Java

  • Project Panama

    Enriching the connections between the JVM and APIs used by C programmers

Network

  • Aeron

    Efficient reliable UDP unicast, UDP multicast, and IPC message transport

  • armeria

    Asynchronous RPC/API client/server library built on top of Java 8, Netty 4.1, HTTP/2, and Thrift

  • Chronicle-Network

    A High Performance Network library

  • comcast

    Simulating shitty network connections

  • gor

    HTTP traffic replay in real-time

  • gRPC

    A high performance, open source, general RPC framework that puts mobile and HTTP/2 first

  • jRT

    Measures response time of a java application to socket-based requests

  • JXIO

    Java API over AccelIO (C library), a high-performance asynchronous reliable messaging and RPC library optimized for hardware acceleration

  • K3PO

    Create arbitrary network traffic and behavior to certify whether a network endpoint behaves correctly

  • muxy

    Simulating real-world distributed system failures

  • Netty

    Async event-driven network library for high performance protocol servers & clients

  • okhttp

    An HTTP+HTTP/2 client for Android and Java applications

  • one-nio

    library for building high performance Java servers

  • proteus-java

    Proteus Java Client based on RSocket

  • reactive-grpc

    Reactive gRPC is a suite of libraries for using gRPC with Reactive Streams programming libraries

  • RSocket

    RSocket is a binary protocol for use on byte stream transports such as TCP, WebSockets, and Aeron

  • SimianArmy

    Resiliency tool that helps ensure that your applications can tolerate random instance failures

  • pcap4j

    Java library for capturing, crafting, and sending packets using libpcap

  • pig

    A Linux packet crafting tool

  • tcpdump

    Packet analyzer for network traffic capture

  • tcpflow

    Captures TCP connections flows in a way that is convenient for protocol analysis and debugging

  • tcpreplay

    Pcap editing and replay tools

Nix tools

  • atoptool

    Logging of system and process activity for long-term analysis, highlighting overloaded system

  • bcc

    Tools for BPF-based Linux IO analysis, networking, monitoring, and more

  • Flame Graphs

    Visualization of profiled software, allowing the most frequent code-paths to be identified quickly and accurately

  • ioping

    Simple disk I/0 latency measuring tool

  • javap

    Disassembles class files into code that reflects the java bytecode

  • jhat

    Java Heap Analysis Tool

  • jhsdb

    Launch a postmortem debugger to analyze the content of a core-dump from a crashed JVM

  • jinfo

    Prints configuration information for a given process

  • jstack

    Prints stack traces of threads for a given Java process

  • jstat

    Monitors GC and compiler statistics in the JVM

  • hwloc

    Reports the structure of the processor, number of cores, hyperthreads and cache size

  • likwid

    Read hardware performance counters on Intel and AMD processors

  • numactl

    Control NUMA policy for processes or shared memory

  • oprofile

    System-wide hardware performance monitoring with easy-to-use interface at low overhead

  • perf

    Linux profiling with performance counters

  • perf-tools

    Performance analysis tools based on Linux perf_events (aka perf) and ftrace

  • sysdig

    Capture system state and activity from a running Linux instance, then save, filter and analyze

  • sysstat

    Performance monitoring tools for Linux

  • taskset/process-affinity

    Retrieve or set a processes’s CPU affinity

  • tiptop

    Like top but also shows instructions per cycle (IPC)

Profilers

  • allocation-instrumenter

    Java agent that rewrites bytecode to instrument allocation sites

  • aprof

    Java memory allocation profiler

  • async-profiler

    Sampling CPU profiler for Java featuring AsyncGetCallTrace + perf_events

  • BTrace

    a safe, dynamic tracing tool for the Java platform

  • Byteman

    tracing, monitoring and testing tool for Java

  • bytestacks

    Turn JVM bytecode execution into flame graphs

  • Chronon

    Record your entire java program. Replay on any machine

  • GCeasy

    Machine learning guided Garbage collection log analysis tool. Auto-detect problems in the JVM GC logs and recommend solutions to it

  • GCViewer

    GCViewer is a tool that visualizes verbose GC output

  • grav

    A collection of tools to help visualise process execution

  • hawkshaw

    Tools for tracking down memory / JVM problems & generating predictable-as-possible VM behaviour

  • HdrHistogram

    A Histogram that supports recording and analyzing sampled data value counts

  • hdrhistogram-metrics-reservoir

    A Metrics Reservoir implementation backed by HdrHistogram

  • HdrLogProcessing

    Utilities for HDR Histogram logs manipulation

  • heapster

    Production heap profiling for the JVM

  • honest-profiler

    Sampling JVM profiler without the safepoint sample bias

  • jamm

    Measure actual object memory use including JVM overhead

  • Java Flight Recorder (JFR)

    Tool for collecting diagnostic and profiling data about a running Java application with almost no performance overhead

  • java-sizeof

    Memory consumption estimator for Java

  • jcstress

    Experimental harness and tests to aid the research in the correctness of concurrency support in the JVM, class libraries, and hardware

  • jfr-flame-graph

    Converting JFR Method Profiling Samples to FlameGraph compatible format

  • jfr-report-tool

    Tool for creating reports from Java Flight Recorder dumps

  • jitwatch

    Log analyser / visualiser for Java HotSpot JIT compiler

  • jitwatch-intellij

    JITWatch plugin for IntelliJ IDEA

  • jHiccup

    jHiccup is an open source tool designed to measure the pauses and stalls associated with an application’s underlying Java runtime platform

  • jmh

    Micro benchmarks written in Java and other languages targetting the JVM

  • jmh-compare-gui

    GUI for comparing JMH results

  • JOL

    Analyze actual object layout schemes, footprint, and references in JVMs

  • JProfiler

    Helps resolve performance bottlenecks, pin down memory leaks and understand threading issues

  • JVMTI

    Provide a native API to inspect the state and to control the execution of applications running in the JVM

  • jvmtop

    Lightweight console application to monitor running jvms on a machine in top-like manner

  • jvm-profiler

    Java Agent to collect various metrics and stacktraces for Hadoop/Spark JVM processes in a distributed way

  • MAT

    Java heap analyzer that help find memory leaks and reduce memory consumption

  • leakcanary

    A memory leak detection library for Android and Java

  • metrics

    Measure the behavior of critical components in production environment

  • micrometer

    An application metrics facade for the most popular monitoring tools

  • osquery

    osquery is an instrumentation framework that expose the operating system as a high-performance relational database

  • Overseer

    Low-Level Hardware Monitoring and Management for Java

  • OpenTracing

    A vendor-neutral open standard for distributed tracing

  • perf-map-agent

    Generate method mappings to use with the linux tool

  • perfj

    Linux perf for java programs

  • polarbear

    A tool to help diagnose OutOfMemoryError conditions

  • Riemann JVM Profiler

    JVM agent which sends function-level profiler telemetry to a Riemann server for analysis, visualization, and storage

  • statsd-jvm-profiler

    JVM agent profiler that sends profiling data to StatsD

  • Swiss Java Knife

    Small set of tools for JVM troublshooting, monitoring and profiling

  • Takipi

    Tells you when and why code breaks in production

  • Tracer

    Manages custom trace identifiers and carries them through distributed systems

  • YourKit

    Fully featured, easy to use, low overhead profiler

  • Zipkin

    A distributed tracing system gather timing data for disparate services developed by Twitter

Runtimes

  • Capsule

    Dead-Simple Packaging and Deployment for JVM Apps

  • CRaSH

    The shell for the Java Platform

  • Drip

    Fast JVM launching without the hassle of persistent JVMs

  • HotswapAgent

    Redefine classes at runtime and skip the redeploy process

  • jvmkill

    Agent that forcibly terminates the JVM when it is unable to allocate memory or create a thread

  • Nailgun

    Nailgun is a client, protocol, and server for running Java programs from the command line without incurring the JVM startup overhead

Virtual Machines

  • Avian

    Lightweight highly portable JVM with an option for AOT compilation

  • Dalvik

    Android runtime (ART) is the managed runtime used by applications and some system services on Android

  • DCEVM

    Modification of Java HotSwap VM with unlimited support for reloading classes at runtime

  • HotSpot

    HotSpot virtual machine maintained and distributed by Oracle Corporation

  • IBM J9

    JVM developed by IBM

  • Eclipse OpenJ9

    Eclipse OpenJ9

  • J2ObjC

    Translator from Java source to Objective-C code. Keeps shared code between iOS native apps and Android native apps

  • jvm.go

    A JVM written in Go

  • ParparVM

    An Open Source Java bytecode to C translator for iOS native development. Designed as a part of the WORA for mobile project

  • MobiDevelop's RoboVM Fork

    Ahead of time compiler for JVM bytecode targeting iOS, Mac OSX and Linux

  • Zing

    The only JVM that eliminates Java garbage collection pauses for large heap sizes

  • Zulu

    The only certified multi-platform build of OpenJDK: Free, 100% open source Java

Resources / Documentation

Resources / Communities

Resources / Media

Resources / People

More related projects

Add a GitHub project

Missing a project or an awesome list? Paste its GitHub URL and we fetch it right away.