awesome-jvm
A curated list of awesome loosely performance related JVM stuff. Inspired by awesome-python.
https://github.com/deephacks/awesome-jvm
Last synced: 2 days ago
JSON representation
-
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.
- asmtools - Used to develop tools for the production of Java .class files.
- Jitescript - Bytecode generation library similar to BiteScript.
-
Communities
- mechanical-sympathy - Discussing how to code sympathetically to and measure the underlying stack/platform so good performance can be extracted.
- hotspot-compiler-dev - Technical discussion about the development of the HotSpot bytecode compilers.
- hotspot-dev - HotSpot development mailing list.
- hotspot-gc-dev - Technical discussion about the development of the HotSpot garbage collectors.
- Performance Java User's Group - For expert Java *developers* who want to push their systems to the next level
- Virtual Machine Meetup 2017 - Venue for discussing the latest research and developments in the area of managed language execution.
- hotspot-compiler-dev - Technical discussion about the development of the HotSpot bytecode compilers.
- hotspot-dev - HotSpot development mailing list.
- hotspot-gc-dev - Technical discussion about the development of the HotSpot garbage collectors.
- Virtual Machine Meetup 2017 - Venue for discussing the latest research and developments in the area of managed language execution.
-
Documentation
- TCP Tracepoints
- JVM Anatomy Park - mini-post series where every post goes deep for only a single topic by Aleksey Shipilёv.
- False sharing - Threads impact the performance of each other while modifying independent variables sharing the same cache line. Martin Thompson.
- The JVM specification - The Java Virtual
- The Java Memory Model - Starting point for discussions of and information concerning the Java Memory Model.
- The JSR-133 Cookbook for Compiler Writers - Unofficial guide to implementing the new Java Memory Model (JMM) specified by JSR-133.
- Garbage Collection Tuning Guide - HotSpot Virtual Machine Garbage Collection Tuning Guide.
- Topics in High-Performance Messaging - Design decisions, experience and constraints explained in high performance messaging systems.
- Top 10 Performance Mistakes - Digest of the top 10 performance related mistakes Martin Thompson has seen in production.
- The USE method - The Utilization Saturation and Errors (USE) Method is a methodology for analyzing the performance of any system. Brendan Gregg.
- Using JDK 9 Memory Order Modes - For expert programmers familiar with Java concurrency, but unfamiliar with the memory order modes available in JDK 9 provided by VarHandles.
- CPU Utilization is Wrong - Measure instructions per cycle (IPC) for CPU utilization. Brendan Gregg.
- Linux Load Averages: Solving the Mystery - Brendan Gregg.
- What every programmer should know about solid-state drives - Emmanuel Goossaert.
- Quick Tips for Fast Code on the JVM - Daniel Spiewak.
- JVM Anatomy Park - mini-post series where every post goes deep for only a single topic by Aleksey Shipilёv.
- Linux tracing workshop - JVM monitoring with BPF, examples and hands-on labs for Linux tracing tools workshops.
- The Java Memory Model - Starting point for discussions of and information concerning the Java Memory Model.
- The JSR-133 Cookbook for Compiler Writers - Unofficial guide to implementing the new Java Memory Model (JMM) specified by JSR-133.
- Safepoints - Where is my safepoint? Nitsan Wakart.
- An introduction to distributed systems - Kyle Kingsbury (author of Jepsen).
-
Garbage collectors
- 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.
- Epsilon GC - Completely passive GC implementation with bounded allocation limit, and lowest runtime performance overhead possible.
- Shenandoah - Ultra-Low-Pause-Time Garbage Collector.
- ZGC - Garbage collector optimized for low latency and very large heaps.
- The Garbage Collection Handbook - Book that addresses new challenges to garbage collection made by recent advances in hardware and software.
- G1 - The Garbage-First Garbage Collector.
- Balanced GC - GC policy available in the Java Virtual Machine for IBM WebSphere Application Server V8.
- Balanced GC - GC policy available in the Java Virtual Machine for IBM WebSphere Application Server V8.
-
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.
- Golo - A simple dynamic language that makes extensive usage of `invokedynamic`.
- 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.
- 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.
- 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.
- Nashorn - Lightweight high-performance JavaScript runtime in Java with a native JVM.
- Frege - Pure functional programming language in the spirit of Haskell.
- gojava - Java bindings for Go packages.
- Groovy - Optionally typed and dynamic language, with static-typing and static compilation capabilities.
- JPHP - PHP on the Java VM.
- LuaJ - Java-centric implementation of lua vm built to leverage standard Java features.
- 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
- Java - General-purpose, concurrent, strongly typed, class-based object-oriented language.
- Golo - A simple dynamic language that makes extensive usage of `invokedynamic`.
- JRuby - Implementation of the Ruby language on the JVM.
-
Load tools
-
Machine Learning
- Deeplearning4j - Open-Source, Distributed, Deep Learning Library for the JVM.
- H2O - Fast statistical, machine learning & math runtime.
- Deeplearning4j - Open-Source, Distributed, Deep Learning Library for the JVM.
- Smile - Statistical Machine Intelligence & Learning Engine.
-
Media
- FOSDEM 2018 - FOSDEM 2018 Free Java devroom.
- JFokus 2018 - The GC edition. Shenandoah, ZGC, Zing, Fibers, Falcon etc.
- G1 Garbage Collector in Java 8/9 - Kirk Pepperdine.
- Extreme Profiling: Digging Into Hotspots - Nitsan Wakart.
- Java vs. C Performance - Cliff Click.
- Why JNI is slow? - Cliff Click
- A Crash Course in Modern Hardware - Cliff Click
- Java Profiling from the Ground Up - Nitsan Wakart.
- The Illusion of Execution - Nitsan Wakart.
- Mythbusting Modern Hardware to Gain 'Mechanical Sympathy' - Martin Thompson.
- Designing for Performance - Martin Thompson.
- How NOT to Measure Latency - Gil Tene.
- JVM Language Summit 2015 - JVM Language Summit 2015.
- JVM Language Summit 2016 - JVM Language Summit 2016.
- JVM Language Summit 2017 - JVM Language Summit 2017.
- Bits of advice for VM writers - Cliff Click.
- Understanding Java garbage collection ... - Gil Tene.
- Faster Object Arrays - Gil Tene at GOTO Conferences.
- Java Memory Model Pragmatics - Aleksey Shipilev.
- With GC Solved, What Else Makes a JVM Pause? - John Cuthbertson.
- JVM Mechanics - Douglas Hawkins.
- Give me 15 minutes and I'll change your view of Linux tracing - Brendan Gregg.
- Kernel Recipes 2017: Performance Analysis with BPF - Brendan Gregg.
- Shenandoah deep talk - Aleksey Shipilëv slightly-deeper-than-usual Shenandoah talk from Virtual Machine Meetup 2017.
- Shenandoah: The Garbage Collector That Could - Aleksey Shipilev - Devoxx 2017/11
- Analyzing and Debugging the Java HotSpot VM at the OS Level - Volker Simonis.
- Cliff Click podcast 2017/09/16 - Programming and Performance Intro.
- Cliff Click podcast 2017/09/16 - Bugs and Coding Styles.
- Cliff Click podcast 2017/09/18 - Java vs C/C++.
- Cliff Click podcast 2017/09/21 - Debugging Data Races.
- Cliff Click podcast 2017/09/24 - Fast Bytecodes for Funny Languages.
- Cliff Click podcast 2017/09/28 - Struct of Arrays vs Array of Structs.
- Cliff Click podcast 2017/10/04 - The 3 Hardest Problems in Programming.
- Cliff Click podcast 2017/11/05 - Modern Hardware Performance and Cache Lines.
- Cliff Click podcast 2017/11/09 - Queuing In Practice.
- Which technique do programming language parsers and interpreters use? - Cliff Click.
- Everything about Stack Traces and Heap Dumps - Andrei Pangin.
- Fast and safe production monitoring of JVM with BPF tools - Sasha Goldshtein.
- The Future of the Linux Page Cache - Matthew Wilcox.
- JVM Language Summit 2015 - JVM Language Summit 2015.
- Cliff Click podcast 2017/09/16 - Programming and Performance Intro.
- Cliff Click podcast 2017/09/16 - Bugs and Coding Styles.
- Cliff Click podcast 2017/09/18 - Java vs C/C++.
- Cliff Click podcast 2017/09/21 - Debugging Data Races.
- Cliff Click podcast 2017/09/24 - Fast Bytecodes for Funny Languages.
- Cliff Click podcast 2017/09/28 - Struct of Arrays vs Array of Structs.
- Cliff Click podcast 2017/10/04 - The 3 Hardest Problems in Programming.
- JFokus 2018 - The GC edition. Shenandoah, ZGC, Zing, Fibers, Falcon etc.
- Extreme Profiling: Digging Into Hotspots - Nitsan Wakart.
- JVM Language Summit 2016 - JVM Language Summit 2016.
- JVM Language Summit 2017 - JVM Language Summit 2017.
- Fast and safe production monitoring of JVM with BPF tools - Sasha Goldshtein.
- G1 Garbage Collector in Java 8/9 - Kirk Pepperdine.
- Kernel Recipes 2017: Performance Analysis with BPF - Brendan Gregg.
-
Memory and concurrency
- Apache Arrow - A high-performance cross-system data layer for columnar in-memory analytics.
- Cap’n Proto - Insanely fast data interchange format and capability-based RPC system.
- commons-math - Library of lightweight, self-contained mathematics and statistics components.
- jsoniter - Claims to be the fastest JSON parser ever (copy of DSL-JSON).
- MapDB - Collections backed by off-heap or on-disk storage.
- netty-buffers - Memory buffer pool implementation similar to jemalloc.
- ObjectLayout - A layout-optimized Java data structure package.
- parquet - Columnar storage format that uses the record shredding and assembly algorithm described in the Dremel paper.
- protobuf - Google's data interchange format.
- Quasar - Lightweight threads and actors for the JVM.
- Reactive Streams - Standard for asynchronous stream processing with non-blocking back pressure.
- 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.
- DataSketches - A Java software library of stochastic streaming algorithms.
- TraneIO - High-performance implementation of the Future abstraction.
- VarInt - No-deps variable int implementation without deps (by Bazel).
- vavr - Functional Library for Java 8+.
- Agera - Reactive Programming for Android by Google.
- bloofi - Java implementation of multidimensional Bloom filters
- 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.
- CuckooFilter4J - Bloom filter replacement for approximated set-membership queries.
- cyclops - Integration modules for RxJava, Reactor, FunctionalJava, Guava & Javaslang.
- 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.
- 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.
- 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.
- jOOL - Useful extensions to Java 8 lambdas.
- 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.
- 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.
- 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.
- PauselessHashMap - A java.util.HashMap compatible map that won't stall puts or gets when resizing.
- pcollections - A Persistent Java Collections Library.
- rtree - Immutable in-memory R-tree and R*-tree implementations in Java with reactive api.
- 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.
- SmoothieMap - java.util.Map impl with worst put latencies more than 100 times smaller than java.util.HashMap.
- stormpot - A fast object pool for the JVM.
Categories
Sub Categories
Keywords
java
32
jvm
6
performance
5
c
5
kotlin
5
android
4
golang
3
reactive-streams
3
observability
3
low-latency
2
high-performance
2
code-generator
2
code-generation
2
chronicle
2
javascript
2
aot
2
chaos-engineering
2
chaos
2
functional-programming
2
forensics
2
c-plus-plus
2
jit-compiler
2
bytecode
2
assembly
2
linux
2
flow
2
reactive
2
microservices
2
monitoring
2
profiling
1
threading
1
x86
1
cloud-native
1
metrics
1
monad
1
java8
1
agera
1
data-structures
1
collections
1
asynchronous
1
zend-php
1
php-language
1
php
1
jphp
1
jit
1
java-vm
1
compiler
1
sum-types
1
optics
1
laziness
1