Files
awesome-awesomeness/html/jvm.html
2025-07-18 22:22:32 +02:00

960 lines
51 KiB
HTML
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<h1 id="awesome-jvm-awesome">Awesome JVM <a
href="https://github.com/sindresorhus/awesome"><img
src="https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg"
alt="Awesome" /></a></h1>
<p>A curated list of awesome JVM low level, performance and
non-framework related stuff.</p>
<ul>
<li><a href="#awesome-jvm">Awesome JVM</a>
<ul>
<li><a href="#bytecode">Bytecode</a></li>
<li><a href="#garbage-collectors">Garbage collectors</a></li>
<li><a href="#load-tools">Load tools</a></li>
<li><a href="#languages">Languages</a></li>
<li><a href="#machine-learning">Machine Learning</a></li>
<li><a href="#memory-and-concurrency">Memory and Concurrency</a></li>
<li><a href="#metaprogramming">Metaprogramming</a></li>
<li><a href="#native">Native</a></li>
<li><a href="#network">Network</a></li>
<li><a href="#nix-tools">Nix tools</a></li>
<li><a href="#profilers">Profilers</a></li>
<li><a href="#runtimes">Runtimes</a></li>
<li><a href="#virtual-machines">Virtual Machines</a></li>
</ul></li>
<li><a href="#resources">Resources</a>
<ul>
<li><a href="#communities">Communities</a><br />
</li>
<li><a href="#documentation">Documentation</a></li>
<li><a href="#media">Media</a></li>
<li><a href="#people">People</a></li>
</ul></li>
<li><a href="#contributing">Contributing</a></li>
</ul>
<h2 id="bytecode">Bytecode</h2>
<p><em>Tools for bytecode manipulation and analysis.</em></p>
<ul>
<li><a
href="https://wiki.openjdk.java.net/display/CodeTools/asmtools">asmtools</a>
- Used to develop tools for the production of Java .class files.</li>
<li><a href="http://bytebuddy.net">Byte Buddy</a> - Code generation
library creating Java classes at runtime without the help of a
compiler.</li>
<li><a href="https://github.com/qmx/jitescript">Jitescript</a> -
Bytecode generation library similar to BiteScript.</li>
</ul>
<h2 id="garbage-collectors">Garbage collectors</h2>
<p><em>Garbage collectors for the JVM.</em></p>
<ul>
<li><a href="https://www.azul.com/files/wp_pgc_zing_v52.pdf">Azul
Pauseless Garbage Collection</a> - Providing continuous, pauseless
operation for Java applications.</li>
<li><a
href="http://www.ibm.com/developerworks/websphere/techjournal/1108_sciampacone/1108_sciampacone.html">Balanced
GC</a> - GC policy available in the Java Virtual Machine for IBM
WebSphere Application Server V8.</li>
<li><a href="http://openjdk.java.net/jeps/318">Epsilon GC</a> -
Completely passive GC implementation with bounded allocation limit, and
lowest runtime performance overhead possible.</li>
<li><a
href="http://www.oracle.com/technetwork/java/javase/tech/g1-intro-jsp-135488.html">G1</a>
- The Garbage-First Garbage Collector.</li>
<li><a href="http://openjdk.java.net/jeps/189">Shenandoah</a> -
Ultra-Low-Pause-Time Garbage Collector.</li>
<li><a href="http://gchandbook.org">The Garbage Collection Handbook</a>
- Book that addresses new challenges to garbage collection made by
recent advances in hardware and software.</li>
<li><a
href="http://mail.openjdk.java.net/pipermail/announce/2017-October/000237.html">ZGC</a>
- Garbage collector optimized for low latency and very large heaps.</li>
</ul>
<h2 id="load-tools">Load tools</h2>
<p><em>Tools that generate load and measure the system accurately
without coordinated omission</em></p>
<ul>
<li><a href="http://gatling.io">Gatling</a> - Asynchronous non-blocking
scenario driven load testing tool for testing HTTP servers.</li>
<li><a href="https://github.com/giltene/wrk2">wrk2</a> - A constant
throughput, correct latency recording variant of wrk.</li>
</ul>
<h2 id="languages">Languages</h2>
<p><em>Languages running on the JVM.</em> * <a
href="http://ceylon-lang.org/">Ceylon</a> - Object-oriented, strong and
static programming language with an emphasis on immutability, created by
Red Hat. * <a href="http://clojure.org/">Clojure</a> - Dialect of Lisp
created by Rich Hickey. Dynamically typed with emphasis on functional
programming. * <a href="http://www.erjang.org">Erjang</a> - A JVM-based
Erlang VM. * <a href="http://eta-lang.org/">Eta</a> - Pure, lazy,
strongly typed functional programming language on the JVM. * <a
href="https://github.com/Frege/frege">Frege</a> - Pure functional
programming language in the spirit of Haskell. * <a
href="https://github.com/sridharv/gojava">gojava</a> - Java bindings for
Go packages. * <a href="http://golo-lang.org/">Golo</a> - A simple
dynamic language that makes extensive usage of
<code>invokedynamic</code>. * <a
href="http://www.groovy-lang.org/">Groovy</a> - Optionally typed and
dynamic language, with static-typing and static compilation
capabilities. * <a
href="http://www.oracle.com/technetwork/java/javase/overview/index.html">Java</a>
- General-purpose, concurrent, strongly typed, class-based
object-oriented language. * <a href="http://jruby.org">JRuby</a> -
Implementation of the Ruby language on the JVM. * <a
href="https://github.com/jphp-group/jphp">JPHP</a> - PHP on the Java VM.
* <a href="http://www.jython.org">Jython</a> - Python for the Java
Platform. * <a href="http://www.gnu.org/software/kawa/">Kawa</a> -
Extension of the Scheme language, which is in the Lisp family of
programming languages. * <a href="http://kotlinlang.org/">Kotlin</a> -
Statically typed programming language for the JVM, Android and the
browser. * <a href="http://www.luaj.org/luaj/3.0/README.html">LuaJ</a> -
Java-centric implementation of lua vm built to leverage standard Java
features. * <a
href="http://openjdk.java.net/projects/nashorn/">Nashorn</a> -
Lightweight high-performance JavaScript runtime in Java with a native
JVM. * <a href="http://www.ocamljava.org/">OCaml-Java</a> - Supports
OCaml language v4. Generates plain Java bytecode and have seamless
integration with Java. * <a
href="https://github.com/mjanicek/rembulan">Rembulan</a> - Rembulan is
an implementation of Lua 5.3 for the JVM, written in pure Java with
minimal dependencies. * <a href="http://www.renjin.org/">Renjin</a> -
JVM-based interpreter for the R language for the statistical analysis *
<a href="http://www.scala-lang.org/">Scala</a> - Strong and static
programming language that combine object-oriented and functional
programming ideas. * <a href="http://www.eclipse.org/xtend/">Xtend</a> -
Flexible and expressive dialect of Java, which compiles into Java 5
source code.</p>
<h2 id="machine-learning">Machine Learning</h2>
<ul>
<li><a href="https://deeplearning4j.org/">Deeplearning4j</a> -
Open-Source, Distributed, Deep Learning Library for the JVM.</li>
<li><a href="https://www.h2o.ai/">H2O</a> - Fast statistical, machine
learning &amp; math runtime.</li>
<li><a href="https://github.com/haifengl/smile">Smile</a> - Statistical
Machine Intelligence &amp; Learning Engine.</li>
</ul>
<h2 id="memory-and-concurrency">Memory and concurrency</h2>
<p><em>Tools and data structures for efficient memory layout and
concurrent access.</em></p>
<ul>
<li><a href="https://github.com/google/agera">Agera</a> - Reactive
Programming for Android by Google.</li>
<li><a href="https://github.com/real-logic/Agrona">Agrona</a> - Library
of data structures and utility methods that are a common need when
building high-performance applications.</li>
<li><a href="http://arrow.apache.org/">Apache Arrow</a> - A
high-performance cross-system data layer for columnar in-memory
analytics.</li>
<li><a href="https://github.com/lemire/bloofi">bloofi</a> - Java
implementation of multidimensional Bloom filters</li>
<li><a href="https://capnproto.org/">Capn Proto</a> - Insanely fast
data interchange format and capability-based RPC system.</li>
<li><a href="https://github.com/ben-manes/caffeine">caffeine</a> - A
high performance caching library for Java 8.</li>
<li><a
href="https://github.com/OpenHFT/Chronicle-Bytes">Chronicle-Bytes</a> -
Low level memory access wrappers.</li>
<li><a
href="https://github.com/OpenHFT/Chronicle-Queue">Chronicle-Queue</a> -
Micro second messaging that stores everything to disk.</li>
<li><a href="https://github.com/OpenHFT/Chronicle-Map">Chronicle-Map</a>
- In-memory key-value store designed for low-latency and/or
multi-process applications.</li>
<li><a href="https://github.com/krukow/clj-ds">clj-ds</a> - Clojures
data structures modified for use outside of Clojure.</li>
<li><a href="https://github.com/pascaldekloe/colfer">colfer</a> - Binary
serialization format and class generator.</li>
<li><a
href="http://commons.apache.org/proper/commons-math">commons-math</a> -
Library of lightweight, self-contained mathematics and statistics
components.</li>
<li><a
href="https://github.com/MGunlogson/CuckooFilter4J">CuckooFilter4J</a> -
Bloom filter replacement for approximated set-membership queries.</li>
<li><a href="https://github.com/aol/cyclops">cyclops</a> - Integration
modules for RxJava, Reactor, FunctionalJava, Guava &amp; Javaslang.</li>
<li><a href="https://github.com/eclipse/eclipse-collections">Eclipse
Collections</a> - Collections framework for Java.</li>
<li><a
href="https://github.com/lemire/externalsortinginjava">externalsortinginjava</a>
- Sort very large files using multiple cores and an external-memory
algorithm.</li>
<li><a href="https://github.com/jhalterman/failsafe">failsafe</a> - A
lightweight, zero-dependency library for handling failures.</li>
<li><a href="https://github.com/boundary/fasttuple">fasttuple</a> -
Collections that are laid out adjacently in both on- and off-heap
memory.</li>
<li><a href="https://github.com/jchambers/fast-uuid">fast-uuid</a> -
Java library for quickly and efficiently parsing and writing UUIDs.</li>
<li><a href="http://google.github.io/flatbuffers/">FlatBuffers</a> -
Efficient cross platform serialization library for C++, C#, Go, Java,
JavaScript, PHP, and Python.</li>
<li><a href="https://github.com/davidmoten/geo">geohash</a> - Java
utility methods for geohashing.</li>
<li><a
href="https://github.com/goldmansachs/gs-collections">gs-collections</a>
- Goldman Sachs collections framework.</li>
<li><a href="https://github.com/Netflix/hollow">hollow</a> - Java
library and comprehensive toolset for harnessing small to moderately
sized in-memory datasets.</li>
<li><a
href="https://github.com/boundary/high-scale-lib">high-scale-lib</a> -
Cliff Clicks High Scale Library.</li>
<li><a href="https://github.com/carrotsearch/hppc">hppc</a> - High
Performance Primitive Collections.</li>
<li><a href="https://github.com/belliottsmith/injector">injector</a> - A
new Executor for Java.</li>
<li><a
href="https://github.com/romix/java-concurrent-hash-trie-map">java-concurrent-hash-trie-map</a>
- Java port of a concurrent trie hash map implementation from Scala
collections.</li>
<li><a
href="https://github.com/aggregateknowledge/java-hll">java-hll</a> -
Java library for the HyperLogLog algorithm.</li>
<li><a href="https://github.com/lemire/JavaFastPFOR">JavaFastPFOR</a> -
Library to compress and uncompress arrays of integers very fast.</li>
<li><a
href="https://github.com/tdebatty/java-string-similarity">java-string-similarity</a>
- String similarity and distance measures, including Levenshtein edit
distance and sibblings, Jaro-Winkler, Longest Common Subsequence, cosine
similarity etc.</li>
<li><a href="http://jctools.github.io/JCTools/">JCTools</a> - Concurrent
data structures currently missing from the JDK.</li>
<li><a href="http://github.com/ngs-doo/dsl-json">DSL-JSON</a> - High
performance JSON library with advanced compile-time databinding.</li>
<li><a href="http://jsoniter.com/">jsoniter</a> - Claims to be the
fastest JSON parser ever (copy of DSL-JSON).</li>
<li><a href="https://github.com/jOOQ/jOOL">jOOL</a> - Useful extensions
to Java 8 lambdas.</li>
<li><a href="https://github.com/OpenHFT/Koloboke">Koloboke</a> - Java
Collections til the last breadcrumb of memory and performance.</li>
<li><a href="https://github.com/dain/leveldb">LevelDB</a> - Rewrite
(port) of LevelDB in Java.</li>
<li><a
href="https://github.com/bryanduxbury/lightweight_trie">lightweight_trie</a>
- A very memory-efficient trie (radix tree) implementation.</li>
<li><a href="https://github.com/deephacks/lmdbjni">lmdbjni</a> - Java
API to LMDB (HawtJNI) which is an ultra-fast, ultra-compact key-value
embedded data store written in C.</li>
<li><a href="https://github.com/lmdbjava/lmdbjava">lmdbjava</a> - Java
API to LMDB (JNR) which is an ultra-fast, ultra-compact key-value
embedded data store written in C.</li>
<li><a
href="https://github.com/cowtowncoder/low-gc-membuffers">low-gc-membuffers</a>
- In-memory circular buffers that use direct ByteBuffers to minimize GC
overhead.</li>
<li><a href="https://github.com/LWJGL/lwjgl3">lwjgl3</a> - 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.</li>
<li><a href="http://www.mapdb.org">MapDB</a> - Collections backed by
off-heap or on-disk storage.</li>
<li><a href="https://github.com/indeedeng/mph-table">mph-table</a> -
Minimal Perfect Hash Tables are an immutable key/value store with
efficient space utilization and fast reads.</li>
<li><a href="https://google.github.io/mug/">mug</a> - A small, zero-dep
functional util library originating from Google.</li>
<li><a
href="http://netty.io/wiki/using-as-a-generic-library.html#wiki-h2-1">netty-buffers</a>
- Memory buffer pool implementation similar to jemalloc.</li>
<li><a href="http://objectlayout.org">ObjectLayout</a> - A
layout-optimized Java data structure package.</li>
<li><a href="https://github.com/snazy/ohc">ohc</a> - Java large off heap
cache developed for Apache Cassandra 3.0.</li>
<li><a href="https://github.com/square/okio">okio</a> - Modern Java IO
library that do clever things to save CPU and memory.</li>
<li><a href="https://github.com/onyx-platform/onyx-java">onyx-java</a> -
Mirrors the Onyx Platform core API by providing a Java equivalent for
each component of an Onyx workflow.</li>
<li><a href="https://parquet.apache.org/">parquet</a> - Columnar storage
format that uses the record shredding and assembly algorithm described
in the Dremel paper.</li>
<li><a
href="https://github.com/giltene/PauselessHashMap">PauselessHashMap</a>
- A java.util.HashMap compatible map that wont stall puts or gets when
resizing.</li>
<li><a href="https://github.com/hrldcpr/pcollections">pcollections</a> -
A Persistent Java Collections Library.</li>
<li><a
href="https://developers.google.com/protocol-buffers">protobuf</a> -
Googles data interchange format.</li>
<li><a href="http://www.paralleluniverse.co/quasar/">Quasar</a> -
Lightweight threads and actors for the JVM.</li>
<li><a href="https://github.com/davidmoten/rtree">rtree</a> - Immutable
in-memory R-tree and R*-tree implementations in Java with reactive
api.</li>
<li><a href="https://github.com/Sizmek/rtree2d">RTree2D</a> - 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.</li>
<li><a href="http://www.reactive-streams.org/">Reactive Streams</a> -
Standard for asynchronous stream processing with non-blocking back
pressure.</li>
<li><a
href="https://github.com/lightbend/reactive-streams-utils">Reactive
Streams Utilities</a> - Future standard utilities library for Reactive
Streams.</li>
<li><a
href="https://github.com/RoaringBitmap/RoaringBitmap">RoaringBitmap</a>
- A better compressed bitset in Java.</li>
<li><a
href="https://github.com/lemire/rollinghashjava">rollinghashjava</a> -
Rolling hash functions in Java.</li>
<li><a href="http://projectreactor.io/">Reactor</a> - Reactive data
applications on the JVM for Java, Groovy, Clojure and other.</li>
<li><a href="https://github.com/ReactiveX/RxJava">RxJava</a> - Library
for composing asynchronous and event-based programs using observable
sequences.</li>
<li><a href="https://github.com/OpenHFT/SmoothieMap">SmoothieMap</a> -
java.util.Map impl with worst put latencies more than 100 times smaller
than java.util.HashMap.</li>
<li><a
href="https://github.com/real-logic/simple-binary-encoding">Simple
Binary Encoding</a> - High Performance Message Codec.</li>
<li><a href="https://github.com/richardstartin/splitmap/">splitmap</a> -
A parallel bitmap implementation.</li>
<li><a href="https://datasketches.github.io/">DataSketches</a> - A Java
software library of stochastic streaming algorithms.</li>
<li><a href="https://github.com/chrisvest/stormpot">stormpot</a> - A
fast object pool for the JVM.</li>
<li><a href="https://github.com/addthis/stream-lib">stream-lib</a> - A
Java library for summarizing data in streams for which it is infeasible
to store all events.</li>
<li><a href="https://github.com/lemire/streamvbyte">streamvbyte</a> -
Fast integer compression in C using the StreamVByte codec.</li>
<li><a href="http://trane.io/">TraneIO</a> - High-performance
implementation of the Future abstraction.</li>
<li><a
href="https://github.com/cognitect-labs/transducers-java">transducers-java</a>
- Composable algorithmic transformations independent from the context of
their input and output sources.</li>
<li><a
href="https://github.com/bazelbuild/bazel/blob/master/src/main/java/com/google/devtools/build/lib/util/VarInt.java">VarInt</a>
- No-deps variable int implementation without deps (by Bazel).</li>
<li><a href="http://www.vavr.io/">vavr</a> - Functional Library for Java
8+.</li>
<li><a href="https://github.com/square/wire">wire</a> - Clean,
lightweight protocol buffers for Android and Java.</li>
<li><a
href="https://github.com/OpenHFT/Zero-Allocation-Hashing">Zero-Allocation-Hashing</a>
- Hashing any sequences of bytes in Java, including all kinds of
primitive arrays, buffers, CharSequences and more.</li>
</ul>
<h2 id="metaprogramming">Metaprogramming</h2>
<p><em>Parsers, interpreters, compilers and source generation targeted
for the JVM.</em></p>
<ul>
<li><a href="http://www.antlr.org/">Antlr</a> - Parser generator for
reading, processing, executing, or translating structured text or binary
files.</li>
<li><a href="https://github.com/google/auto">auto</a> - A collection of
source code generators for Java.</li>
<li><a href="http://calcite.apache.org/docs/">Apache Calcite</a> -
Dynamic data management framework and SQL parser plugin.</li>
<li><a href="http://types.cs.washington.edu/checker-framework/">Checker
Framework</a> - Compiler plug-ins that find bugs or verify their
absence.</li>
<li><a
href="https://github.com/google/compile-testing">compile-testing</a> -
Testing tools for javac and annotation processors.</li>
<li><a href="https://github.com/derive4j/derive4j">derive4j</a> -
Algebraic data types constructors, pattern-matching, morphisms, optics
and typeclasses.</li>
<li><a href="https://github.com/google/error-prone">error-prone</a> -
Catch common Java mistakes as compile-time errors.</li>
<li><a href="https://github.com/rahulmutt/ghcvm">GHCVM</a> - A Haskell
to JVM compiler that supports GHC Haskell.</li>
<li><a href="http://openjdk.java.net/projects/graal/">Graal</a> - New
experimental just-in-time compiler for Java that is integrated with the
HotSpot virtual machine.</li>
<li><a href="https://github.com/fge/grappa">grappa</a> - Java fork of
Parboiled. Write grammars with no preprocessing phase.</li>
<li><a href="http://immutables.github.io/">immutables</a> - Generate
simple, safe and consistent value objects.</li>
<li><a href="https://javacc.java.net/">javacc</a> - Parser generator for
use with Java.</li>
<li><a href="https://github.com/javaparser/javaparser">javaparser</a> -
Java 1.8 Parser and Abstract Syntax Tree for Java.</li>
<li><a href="https://github.com/square/javapoet">JavaPoet</a> - A Java
API for generating .java source files.</li>
<li><a href="https://github.com/jparsec/jparsec">jparsec</a> - Builds
mini parsers in pure Java a la Haskell Parsec.</li>
<li><a href="http://www.jsweet.org/">JSweet</a> - A transpiler from Java
to TypeScript/JavaScript.</li>
<li><a href="https://www.jetbrains.com/mps/">MPS</a> - Design and build
extensible DSLs and editors.</li>
<li><a href="https://projectlombok.org/">lombok</a> - Reduce the amount
of boilerplate code that is commonly written for Java classes.</li>
<li><a href="https://github.com/sirthias/parboiled">parboiled</a> -
Parsing of arbitrary input text based on parsing expression
grammars.</li>
<li><a href="https://github.com/graalvm/sulong">Sulong</a> - LLVM IR
interpreter written in Java using Truffle and Graal.</li>
<li><a href="https://github.com/konsoletyper/teavm">TeaVM</a> -
Ahead-of-time translating compiler (transpiler) from Java bytecode to
JavaScript.</li>
<li><a href="https://github.com/graalvm/truffle">Truffle</a> - Framework
for implementing languages as simple interpreters.</li>
<li><a href="https://eclipse.org/Xtext/">Xtext</a> - Framework for
development of programming languages and DSLs.</li>
</ul>
<h2 id="native">Native</h2>
<p><em>Interconnecting JVM and native code</em></p>
<ul>
<li><a href="https://github.com/fusesource/hawtjni">hawtjni</a> - A JNI
code generator based on the JNI generator used in Eclipse SWT.</li>
<li><a href="https://github.com/mikeakohn/java_grinder">Java Grinder</a>
- Compile Java bytecode to microcontroller assembly.</li>
<li><a href="https://github.com/eclipsesource/j2v8">j2v8</a> - Java API
for Googles V8 JavaScript engine.</li>
<li><a href="https://github.com/bytedeco/javacpp">JavaCPP</a> - JavaCPP
provides efficient access to native C++ inside Java.</li>
<li><a href="https://github.com/jnr/jnr-ffi">jnr-ffi</a> - Load native
libraries without writing JNI code by hand.</li>
<li><a href="https://github.com/dvx/jssembly">jssembly</a> - Execution
of native assembly from Java.</li>
<li><a href="https://github.com/brettwooldridge/NuProcess">NuProcess</a>
- A low-overhead, non-blocking I/O, external Process execution
implementation for Java.</li>
<li><a href="http://openjdk.java.net/projects/panama/">Project
Panama</a> - Enriching the connections between the JVM and APIs used by
C programmers.</li>
</ul>
<h2 id="network">Network</h2>
<p><em>Tools for network programming, packet capture, monitoring,
testing and resiliency.</em></p>
<ul>
<li><a href="https://github.com/real-logic/Aeron">Aeron</a> - Efficient
reliable UDP unicast, UDP multicast, and IPC message transport.</li>
<li><a href="https://github.com/line/armeria">armeria</a> - Asynchronous
RPC/API client/server library built on top of Java 8, Netty 4.1, HTTP/2,
and Thrift.</li>
<li><a
href="https://github.com/OpenHFT/Chronicle-Network">Chronicle-Network</a>
- A High Performance Network library.</li>
<li><a href="https://github.com/tylertreat/comcast">comcast</a> -
Simulating shitty network connections.</li>
<li><a href="https://github.com/buger/gor">gor</a> - HTTP traffic replay
in real-time.</li>
<li><a href="http://www.grpc.io/">gRPC</a> - A high performance, open
source, general RPC framework that puts mobile and HTTP/2 first.</li>
<li><a href="https://github.com/LatencyUtils/jRT">jRT</a> - Measures
response time of a java application to socket-based requests.</li>
<li><a href="https://github.com/accelio/JXIO">JXIO</a> - Java API over
AccelIO (C library), a high-performance asynchronous reliable messaging
and RPC library optimized for hardware acceleration.</li>
<li><a href="https://github.com/k3po/k3po">K3PO</a> - Create arbitrary
network traffic and behavior to certify whether a network endpoint
behaves correctly.</li>
<li><a href="https://github.com/mefellows/muxy">muxy</a> - Simulating
real-world distributed system failures.</li>
<li><a href="http://netty.io/">Netty</a> - Async event-driven network
library for high performance protocol servers &amp; clients.</li>
<li><a href="https://github.com/square/okhttp">okhttp</a> - An
HTTP+HTTP/2 client for Android and Java applications.</li>
<li><a href="https://github.com/odnoklassniki/one-nio">one-nio</a> -
library for building high performance Java servers.</li>
<li><a
href="https://github.com/netifi-proteus/proteus-java">proteus-java</a> -
Proteus Java Client based on RSocket.</li>
<li><a
href="https://github.com/salesforce/reactive-grpc">reactive-grpc</a> -
Reactive gRPC is a suite of libraries for using gRPC with Reactive
Streams programming libraries.</li>
<li><a href="http://rsocket.io/">RSocket</a> - RSocket is a binary
protocol for use on byte stream transports such as TCP, WebSockets, and
Aeron.</li>
<li><a href="https://github.com/Netflix/SimianArmy">SimianArmy</a> -
Resiliency tool that helps ensure that your applications can tolerate
random instance failures.</li>
<li><a href="https://github.com/kaitoy/pcap4j">pcap4j</a> - Java library
for capturing, crafting, and sending packets using libpcap.</li>
<li><a href="https://github.com/rafael-santiago/pig">pig</a> - A Linux
packet crafting tool.</li>
<li><a href="http://www.tcpdump.org/">tcpdump</a> - Packet analyzer for
network traffic capture.</li>
<li><a href="https://github.com/simsong/tcpflow">tcpflow</a> - Captures
TCP connections flows in a way that is convenient for protocol analysis
and debugging.</li>
<li><a href="https://github.com/appneta/tcpreplay">tcpreplay</a> - Pcap
editing and replay tools.</li>
</ul>
<h2 id="nix-tools">Nix tools</h2>
<p><em>Useful </em>nix tools when profiling the JVM and interaction with
the host environment<em> </em> <a
href="http://www.atoptool.nl/">atoptool</a> - Logging of system and
process activity for long-term analysis, highlighting overloaded system.
* <a href="https://github.com/iovisor/bcc">bcc</a> - Tools for BPF-based
Linux IO analysis, networking, monitoring, and more. * <a
href="http://www.brendangregg.com/flamegraphs.html">Flame Graphs</a> -
Visualization of profiled software, allowing the most frequent
code-paths to be identified quickly and accurately. * <a
href="https://github.com/koct9i/ioping">ioping</a> - Simple disk I/0
latency measuring tool. * <a
href="http://docs.oracle.com/javase/8/docs/technotes/tools/unix/javap.html">javap</a>
- Disassembles class files into code that reflects the java bytecode. *
<a
href="http://docs.oracle.com/javase/8/docs/technotes/tools/unix/jhat.html">jhat</a>
- Java Heap Analysis Tool * <a
href="https://docs.oracle.com/javase/9/tools/jhsdb.htm">jhsdb</a> -
Launch a postmortem debugger to analyze the content of a core-dump from
a crashed JVM. * <a
href="http://docs.oracle.com/javase/8/docs/technotes/tools/unix/jinfo.html">jinfo</a>
- Prints configuration information for a given process. * <a
href="http://docs.oracle.com/javase/8/docs/technotes/tools/unix/jstack.html">jstack</a>
- Prints stack traces of threads for a given Java process. * <a
href="https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jstat.html">jstat</a>
- Monitors GC and compiler statistics in the JVM. * <a
href="http://linux.die.net/man/7/hwloc">hwloc</a> - Reports the
structure of the processor, number of cores, hyperthreads and cache
size. * <a href="https://github.com/RRZE-HPC/likwid">likwid</a> - Read
hardware performance counters on Intel and AMD processors. * <a
href="http://linux.die.net/man/8/numactl">numactl</a> - Control NUMA
policy for processes or shared memory. * <a
href="http://oprofile.sourceforge.net/news/">oprofile</a> - System-wide
hardware performance monitoring with easy-to-use interface at low
overhead. * <a
href="https://perf.wiki.kernel.org/index.php/Main_Page">perf</a> - Linux
profiling with performance counters. * <a
href="https://github.com/brendangregg/perf-tools">perf-tools</a> -
Performance analysis tools based on Linux perf_events (aka perf) and
ftrace. * <a href="http://www.sysdig.org/">sysdig</a> - Capture system
state and activity from a running Linux instance, then save, filter and
analyze. * <a
href="http://sebastien.godard.pagesperso-orange.fr">sysstat</a> -
Performance monitoring tools for Linux. * <a
href="https://www.glennklockwood.com/hpc-howtos/process-affinity.html">taskset/process-affinity</a>
- Retrieve or set a processess CPU affinity. * <a
href="http://tiptop.gforge.inria.fr/">tiptop</a> - Like top but also
shows instructions per cycle (IPC).</p>
<h2 id="profilers">Profilers</h2>
<p><em>Tools that provide profiling and tracing information to aid
program optimization</em></p>
<ul>
<li><a
href="https://github.com/google/allocation-instrumenter">allocation-instrumenter</a>
- Java agent that rewrites bytecode to instrument allocation sites.</li>
<li><a href="https://github.com/Devexperts/aprof">aprof</a> - Java
memory allocation profiler.</li>
<li><a
href="https://github.com/jvm-profiling-tools/async-profiler">async-profiler</a>
- Sampling CPU profiler for Java featuring AsyncGetCallTrace +
perf_events.</li>
<li><a href="https://github.com/jbachorik/btrace">BTrace</a> - a safe,
dynamic tracing tool for the Java platform.</li>
<li><a href="http://byteman.jboss.org/">Byteman</a> - tracing,
monitoring and testing tool for Java</li>
<li><a href="https://github.com/cl4es/bytestacks">bytestacks</a> - Turn
JVM bytecode execution into flame graphs.</li>
<li><a href="http://chrononsystems.com">Chronon</a> - Record your entire
java program. Replay on any machine.</li>
<li><a href="http://gceasy.io/">GCeasy</a> - Machine learning guided
Garbage collection log analysis tool. Auto-detect problems in the JVM GC
logs and recommend solutions to it.</li>
<li><a href="https://github.com/chewiebug/GCViewer">GCViewer</a> -
GCViewer is a tool that visualizes verbose GC output.</li>
<li><a href="https://github.com/epickrram/grav">grav</a> - A collection
of tools to help visualise process execution.</li>
<li><a href="https://github.com/jClarity/hawkshaw">hawkshaw</a> - Tools
for tracking down memory / JVM problems &amp; generating
predictable-as-possible VM behaviour.</li>
<li><a
href="http://hdrhistogram.github.io/HdrHistogram/">HdrHistogram</a> - A
Histogram that supports recording and analyzing sampled data value
counts.</li>
<li><a
href="https://bitbucket.org/marshallpierce/hdrhistogram-metrics-reservoir">hdrhistogram-metrics-reservoir</a>
- A Metrics Reservoir implementation backed by HdrHistogram.</li>
<li><a
href="https://github.com/nitsanw/HdrLogProcessing">HdrLogProcessing</a>
- Utilities for HDR Histogram logs manipulation.</li>
<li><a href="https://github.com/mariusae/heapster">heapster</a> -
Production heap profiling for the JVM.</li>
<li><a
href="https://github.com/RichardWarburton/honest-profiler">honest-profiler</a>
- Sampling JVM profiler without the safepoint sample bias.</li>
<li><a href="https://github.com/jbellis/jamm">jamm</a> - Measure actual
object memory use including JVM overhead.</li>
<li><a
href="http://www.oracle.com/technetwork/java/javaseproducts/mission-control/java-mission-control-1998576.html">Java
Flight Recorder (JFR)</a> - Tool for collecting diagnostic and profiling
data about a running Java application with almost no performance
overhead.</li>
<li><a href="https://github.com/dweiss/java-sizeof">java-sizeof</a> -
Memory consumption estimator for Java.</li>
<li><a
href="http://openjdk.java.net/projects/code-tools/jcstress/">jcstress</a>
- Experimental harness and tests to aid the research in the correctness
of concurrency support in the JVM, class libraries, and hardware.</li>
<li><a
href="https://github.com/chrishantha/jfr-flame-graph">jfr-flame-graph</a>
- Converting JFR Method Profiling Samples to FlameGraph compatible
format.</li>
<li><a
href="https://github.com/lhotari/jfr-report-tool">jfr-report-tool</a> -
Tool for creating reports from Java Flight Recorder dumps.</li>
<li><a href="https://github.com/AdoptOpenJDK/jitwatch">jitwatch</a> -
Log analyser / visualiser for Java HotSpot JIT compiler.</li>
<li><a
href="https://github.com/yole/jitwatch-intellij">jitwatch-intellij</a> -
JITWatch plugin for IntelliJ IDEA.</li>
<li><a href="http://www.azul.com/jhiccup/">jHiccup</a> - jHiccup is an
open source tool designed to measure the pauses and stalls associated
with an applications underlying Java runtime platform.</li>
<li><a href="http://openjdk.java.net/projects/code-tools/jmh/">jmh</a> -
Micro benchmarks written in Java and other languages targetting the
JVM.</li>
<li><a
href="https://github.com/akarnokd/jmh-compare-gui">jmh-compare-gui</a> -
GUI for comparing JMH results.</li>
<li><a href="http://openjdk.java.net/projects/code-tools/jol/">JOL</a> -
Analyze actual object layout schemes, footprint, and references in
JVMs.</li>
<li><a
href="https://www.ej-technologies.com/products/jprofiler/overview.html">JProfiler</a>
- Helps resolve performance bottlenecks, pin down memory leaks and
understand threading issues.</li>
<li><a
href="https://docs.oracle.com/javase/8/docs/technotes/guides/jvmti/">JVMTI</a>
- Provide a native API to inspect the state and to control the execution
of applications running in the JVM.</li>
<li><a href="https://github.com/patric-r/jvmtop">jvmtop</a> -
Lightweight console application to monitor running jvms on a machine in
top-like manner.</li>
<li><a
href="https://github.com/uber-common/jvm-profiler">jvm-profiler</a> -
Java Agent to collect various metrics and stacktraces for Hadoop/Spark
JVM processes in a distributed way.</li>
<li><a href="https://eclipse.org/mat/">MAT</a> - Java heap analyzer that
help find memory leaks and reduce memory consumption.</li>
<li><a href="https://github.com/square/leakcanary">leakcanary</a> - A
memory leak detection library for Android and Java.</li>
<li><a href="http://metrics.dropwizard.io/">metrics</a> - Measure the
behavior of critical components in production environment.</li>
<li><a
href="https://github.com/micrometer-metrics/micrometer">micrometer</a> -
An application metrics facade for the most popular monitoring
tools.</li>
<li><a href="https://osquery.io/">osquery</a> - osquery is an
instrumentation framework that expose the operating system as a
high-performance relational database.</li>
<li><a
href="http://www.peternier.com/projects/overseer/overseer.php">Overseer</a>
- Low-Level Hardware Monitoring and Management for Java.</li>
<li><a href="http://opentracing.io/">OpenTracing</a> - A vendor-neutral
open standard for distributed tracing.</li>
<li><a
href="https://github.com/jrudolph/perf-map-agent">perf-map-agent</a> -
Generate method mappings to use with the linux <code>perf</code>
tool.</li>
<li><a href="https://github.com/coderplay/perfj">perfj</a> - Linux perf
for java programs.</li>
<li><a href="https://github.com/Cue/polarbear">polarbear</a> - A tool to
help diagnose OutOfMemoryError conditions.</li>
<li><a href="https://github.com/riemann/riemann-jvm-profiler">Riemann
JVM Profiler</a> - JVM agent which sends function-level profiler
telemetry to a Riemann server for analysis, visualization, and
storage.</li>
<li><a
href="https://github.com/etsy/statsd-jvm-profiler">statsd-jvm-profiler</a>
- JVM agent profiler that sends profiling data to StatsD.</li>
<li><a href="https://github.com/aragozin/jvm-tools">Swiss Java Knife</a>
- Small set of tools for JVM troublshooting, monitoring and
profiling.</li>
<li><a href="https://www.takipi.com/">Takipi</a> - Tells you when and
why code breaks in production.</li>
<li><a href="https://github.com/zalando/tracer">Tracer</a> - Manages
custom trace identifiers and carries them through distributed
systems.</li>
<li><a href="https://www.yourkit.com/">YourKit</a> - Fully featured,
easy to use, low overhead profiler.</li>
<li><a href="https://github.com/openzipkin/zipkin">Zipkin</a> - A
distributed tracing system gather timing data for disparate services
developed by Twitter.</li>
</ul>
<h2 id="runtimes">Runtimes</h2>
<p><em>Tools for managing jvm runtime processes</em> * <a
href="https://github.com/puniverse/capsule">Capsule</a> - Dead-Simple
Packaging and Deployment for JVM Apps. * <a
href="http://www.crashub.org/">CRaSH</a> - The shell for the Java
Platform. * <a href="https://github.com/ninjudd/drip">Drip</a> - Fast
JVM launching without the hassle of persistent JVMs. * <a
href="https://github.com/HotswapProjects/HotswapAgent">HotswapAgent</a>
- Redefine classes at runtime and skip the redeploy process. * <a
href="https://github.com/airlift/jvmkill">jvmkill</a> - Agent that
forcibly terminates the JVM when it is unable to allocate memory or
create a thread. * <a
href="http://martiansoftware.com/nailgun/">Nailgun</a> - Nailgun is a
client, protocol, and server for running Java programs from the command
line without incurring the JVM startup overhead.</p>
<h2 id="virtual-machines">Virtual Machines</h2>
<p><em>Virtual machines that implement the JVM specification or parts of
it.</em> * <a href="https://github.com/ReadyTalk/avian">Avian</a> -
Lightweight highly portable JVM with an option for AOT compilation. * <a
href="https://source.android.com/devices/tech/dalvik/">Dalvik</a> -
Android runtime (ART) is the managed runtime used by applications and
some system services on Android. * <a
href="http://dcevm.github.io">DCEVM</a> - Modification of Java HotSwap
VM with unlimited support for reloading classes at runtime. * <a
href="http://openjdk.java.net/groups/hotspot/">HotSpot</a> - HotSpot
virtual machine maintained and distributed by Oracle Corporation. * <a
href="http://www.ibm.com/developerworks/java/jdk/">IBM J9</a> - JVM
developed by IBM. * <a href="https://github.com/eclipse/openj9">Eclipse
OpenJ9</a> - Eclipse OpenJ9. * <a
href="https://github.com/google/j2objc">J2ObjC</a> - Translator from
Java source to Objective-C code. Keeps shared code between iOS native
apps and Android native apps. * <a
href="https://github.com/zxh0/jvm.go">jvm.go</a> - A JVM written in Go.
* <a
href="https://github.com/codenameone/CodenameOne/tree/master/vm">ParparVM</a>
- An Open Source Java bytecode to C translator for iOS native
development. Designed as a part of the <a
href="https://www.codenameone.com/">Codename One</a> WORA for mobile
project. * <a href="https://github.com/MobiVM/robovm">MobiDevelops
RoboVM Fork</a> - Ahead of time compiler for JVM bytecode targeting iOS,
Mac OSX and Linux. * <a
href="https://www.azul.com/products/zing/">Zing</a> - The only JVM that
eliminates Java garbage collection pauses for large heap sizes. * <a
href="https://www.azul.com/products/zulu/">Zulu</a> - The only certified
multi-platform build of OpenJDK: Free, 100% open source Java.</p>
<h1 id="resources">Resources</h1>
<h2 id="documentation">Documentation</h2>
<p><em>Documentation related to JVM</em> * <a
href="http://www.brendangregg.com/blog/2018-03-22/tcp-tracepoints.html">TCP
Tracepoints</a> Linux bcc/BPF using tcplife by Brendan Gregg * <a
href="https://github.com/goldshtn/linux-tracing-workshop">Linux tracing
workshop</a> - JVM monitoring with BPF, examples and hands-on labs for
Linux tracing tools workshops. * <a
href="https://shipilev.net/jvm-anatomy-park/">JVM Anatomy Park</a> -
mini-post series where every post goes deep for only a single topic by
Aleksey Shipilёv. * <a
href="https://groups.google.com/forum/#!msg/mechanical-sympathy/icNZJejUHfE/BfDekfBEs_sJ">Coordinated
Omission problem</a> - Discussion on Mechanical Sympathy. * <a
href="http://mechanical-sympathy.blogspot.se/2011/07/false-sharing.html">False
sharing</a> - Threads impact the performance of each other while
modifying independent variables sharing the same cache line. Martin
Thompson. * <a
href="https://docs.oracle.com/javase/specs/jvms/se8/jvms8.pdf">The JVM
specification</a> - The Java Virtual Machine Specification Java SE 8
Edition. * <a href="http://www.cs.umd.edu/~pugh/java/memoryModel/">The
Java Memory Model</a> - Starting point for discussions of and
information concerning the Java Memory Model. * <a
href="http://gee.cs.oswego.edu/dl/jmm/cookbook.html">The JSR-133
Cookbook for Compiler Writers</a> - Unofficial guide to implementing the
new Java Memory Model (JMM) specified by JSR-133. * <a
href="http://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/">Garbage
Collection Tuning Guide</a> - HotSpot Virtual Machine Garbage Collection
Tuning Guide. * <a
href="http://psy-lob-saw.blogspot.se/2014/03/where-is-my-safepoint.html">Safepoints</a>
- Where is my safepoint? Nitsan Wakart. * <a
href="https://www.informatica.com/downloads/1568_high_perf_messaging_wp/Topics-in-High-Performance-Messaging.htm">Topics
in High-Performance Messaging</a> - Design decisions, experience and
constraints explained in high performance messaging systems. * <a
href="http://www.infoq.com/articles/top-10-performance-mistakes">Top 10
Performance Mistakes</a> - Digest of the top 10 performance related
mistakes Martin Thompson has seen in production. * <a
href="http://www.brendangregg.com/usemethod.html">The USE method</a> -
The Utilization Saturation and Errors (USE) Method is a methodology for
analyzing the performance of any system. Brendan Gregg. * <a
href="https://github.com/aphyr/distsys-class">An introduction to
distributed systems</a> - Kyle Kingsbury (author of Jepsen). * <a
href="http://gee.cs.oswego.edu/dl/html/j9mm.html">Using JDK 9 Memory
Order Modes</a> - For expert programmers familiar with Java concurrency,
but unfamiliar with the memory order modes available in JDK 9 provided
by VarHandles. * <a
href="http://www.brendangregg.com/blog/2017-05-09/cpu-utilization-is-wrong.html">CPU
Utilization is Wrong</a> - Measure instructions per cycle (IPC) for CPU
utilization. Brendan Gregg. * <a
href="http://www.brendangregg.com/blog/2017-08-08/linux-load-averages.html">Linux
Load Averages: Solving the Mystery</a> - Brendan Gregg. * <a
href="http://codecapsule.com/2014/02/12/coding-for-ssds-part-6-a-summary-what-every-programmer-should-know-about-solid-state-drives/">What
every programmer should know about solid-state drives</a> - Emmanuel
Goossaert. * <a
href="https://gist.github.com/djspiewak/464c11307cabc80171c90397d4ec34ef">Quick
Tips for Fast Code on the JVM</a> - Daniel Spiewak. ## Communities</p>
<p><em>Active discussions.</em></p>
<ul>
<li><a
href="http://altair.cs.oswego.edu/mailman/listinfo/concurrency-interest">concurrency-interest</a>
- Discussion list for JSR-166.</li>
<li><a
href="http://mail.openjdk.java.net/mailman/listinfo/hotspot-compiler-dev">hotspot-compiler-dev</a>
- Technical discussion about the development of the HotSpot bytecode
compilers.</li>
<li><a
href="http://mail.openjdk.java.net/mailman/listinfo/hotspot-dev">hotspot-dev</a>
- HotSpot development mailing list.</li>
<li><a
href="http://mail.openjdk.java.net/mailman/listinfo/hotspot-gc-dev">hotspot-gc-dev</a>
- Technical discussion about the development of the HotSpot garbage
collectors.</li>
<li><a
href="https://groups.google.com/forum/#!forum/mechanical-sympathy">mechanical-sympathy</a>
- Discussing how to code sympathetically to and measure the underlying
stack/platform so good performance can be extracted.</li>
<li><a
href="https://plus.google.com/u/0/communities/107178245817384004088/">Performance
Java Users Group</a> - For expert Java <em>developers</em> who want to
push their systems to the next level</li>
<li><a href="http://vmmeetup.github.io/2017/">Virtual Machine Meetup
2017</a> - Venue for discussing the latest research and developments in
the area of managed language execution.</li>
</ul>
<h2 id="media">Media</h2>
<p><em>Videos, podcasts and other media related to JVMs</em> * <a
href="https://fosdem.org/2018/schedule/track/free_java/">FOSDEM 2018</a>
- FOSDEM 2018 Free Java devroom. * <a
href="https://www.youtube.com/playlist?list=PL2ekzZZrxVUkhrcMKuPMbiKoghc777plr">JFokus
2018</a> - The GC edition. Shenandoah, ZGC, Zing, Fibers, Falcon etc. *
<a href="http://nighthacking.com/g1-gc-with-kirk-pepperdine/">G1 Garbage
Collector in Java 8/9</a> - Kirk Pepperdine. * <a
href="https://youtu.be/7PkkxDaFDj8?list=PLKuh52zVrL6l6jzeSwNce77yLdfKmHAgD">Extreme
Profiling: Digging Into Hotspots</a> - Nitsan Wakart. * <a
href="http://www.infoq.com/presentations/java-vs-c-performance">Java
vs. C Performance</a> - Cliff Click. * <a
href="https://www.youtube.com/watch?v=LoyBTqkSkZk">Why JNI is slow?</a>
- Cliff Click * <a href="https://www.youtube.com/watch?v=OFgxAFdxYAQ">A
Crash Course in Modern Hardware</a> - Cliff Click * <a
href="https://www.youtube.com/watch?v=_6vJyciXkwo">Java Profiling from
the Ground Up</a> - Nitsan Wakart. * <a
href="https://www.youtube.com/watch?v=3g9R-RVIkOE">The Illusion of
Execution</a> - Nitsan Wakart. * <a
href="https://www.youtube.com/watch?v=MC1EKLQ2Wmg">Mythbusting Modern
Hardware to Gain Mechanical Sympathy</a> - Martin Thompson. * <a
href="https://www.youtube.com/watch?v=fDGWWpHlzvw">Designing for
Performance</a> - Martin Thompson. * <a
href="https://www.youtube.com/watch?v=lJ8ydIuPFeU">How NOT to Measure
Latency</a> - Gil Tene. * <a
href="http://openjdk.java.net/projects/mlvm/jvmlangsummit/">JVM Language
Summit 2015</a> - JVM Language Summit 2015. * <a
href="https://www.youtube.com/playlist?list=PLX8CzqL3ArzUY6rQAQTwI_jKvqJxrRrP_">JVM
Language Summit 2016</a> - JVM Language Summit 2016. * <a
href="https://www.youtube.com/playlist?list=PLX8CzqL3ArzXJ2EGftrmz4SzS6NRr6p2n">JVM
Language Summit 2017</a> - JVM Language Summit 2017. * <a
href="https://www.youtube.com/watch?v=vzzABBxo44g">Bits of advice for VM
writers</a> - Cliff Click. * <a
href="https://www.youtube.com/watch?v=_e5hujoTkgY">Understanding Java
garbage collection …</a> - Gil Tene. * <a
href="https://www.youtube.com/watch?v=bZuPTCaciLU">Faster Object
Arrays</a> - Gil Tene at GOTO Conferences. * <a
href="https://www.youtube.com/watch?v=TxqsKzxyySo">Java Memory Model
Pragmatics</a> - Aleksey Shipilev. * <a
href="https://www.youtube.com/watch?v=Y39kllzX1P8">With GC Solved, What
Else Makes a JVM Pause?</a> - John Cuthbertson. * <a
href="https://vimeo.com/120533011">JVM Mechanics</a> - Douglas Hawkins.
* <a href="https://www.youtube.com/watch?v=GsMs3n8CB6g">Give me 15
minutes and Ill change your view of Linux tracing</a> - Brendan Gregg.
* <a
href="https://www.slideshare.net/brendangregg/kernel-recipes-2017-performance-analysis-with-bpf">Kernel
Recipes 2017: Performance Analysis with BPF</a> - Brendan Gregg. * <a
href="https://shipilev.net/talks/vmm-Sep2017-shenandoah.pdf">Shenandoah
deep talk</a> - Aleksey Shipilëv slightly-deeper-than-usual Shenandoah
talk from Virtual Machine Meetup 2017. * <a
href="https://www.youtube.com/watch?v=VCeHkcwfF9Q">Shenandoah: The
Garbage Collector That Could</a> - Aleksey Shipilev - Devoxx 2017/11 *
<a href="https://www.youtube.com/watch?v=k7IX_diKCEo">Analyzing and
Debugging the Java HotSpot VM at the OS Level</a> - Volker Simonis. * <a
href="http://www.cliffc.org/blog/2017/09/16/programming-and-performance-intro/">Cliff
Click podcast 2017/09/16</a> - Programming and Performance Intro. * <a
href="http://www.cliffc.org/blog/2017/09/16/of-bugs-and-coding-styles/">Cliff
Click podcast 2017/09/16</a> - Bugs and Coding Styles. * <a
href="http://www.cliffc.org/blog/2017/09/18/java-vs-cc-the-podcast/">Cliff
Click podcast 2017/09/18</a> - Java vs C/C++. * <a
href="http://www.cliffc.org/blog/2017/09/21/debugging-data-races/">Cliff
Click podcast 2017/09/21</a> - Debugging Data Races. * <a
href="http://www.cliffc.org/blog/2017/09/24/fast-bytecodes-for-funny-languages/">Cliff
Click podcast 2017/09/24</a> - Fast Bytecodes for Funny Languages. * <a
href="http://www.cliffc.org/blog/2017/09/28/struct-of-arrays-vs-array-of-structs/">Cliff
Click podcast 2017/09/28</a> - Struct of Arrays vs Array of Structs. *
<a
href="http://www.cliffc.org/blog/2017/10/04/the-3-hardest-problems-in-programming/">Cliff
Click podcast 2017/10/04</a> - The 3 Hardest Problems in Programming. *
<a
href="http://cliffc.org/blog/2017/11/05/modern-hardware-performance-cache-lines/">Cliff
Click podcast 2017/11/05</a> - Modern Hardware Performance and Cache
Lines. * <a
href="http://cliffc.org/blog/2017/11/09/queuing-in-practice/">Cliff
Click podcast 2017/11/09</a> - Queuing In Practice. * <a
href="https://www.quora.com/Which-technique-do-programming-language-parsers-and-interpreters-use/answer/Cliff-Click-1?srid=dZAx">Which
technique do programming language parsers and interpreters use?</a> -
Cliff Click. * <a href="https://vimeo.com/233820012">Everything about
Stack Traces and Heap Dumps</a> - Andrei Pangin. * <a
href="http://s.sashag.net/velny17-jvm">Fast and safe production
monitoring of JVM with BPF tools</a> - Sasha Goldshtein. * <a
href="https://www.youtube.com/watch?time_continue=1&amp;v=xxWaa-lPR-8">The
Future of the Linux Page Cache</a> - Matthew Wilcox.</p>
<h2 id="people">People</h2>
<p><em>People that share hard-earned, often undocumented, knowledge and
data of the inner workings of the JVM</em> * <a
href="http://shipilev.net/">Aleksey Shipilëv</a> - Developing
Oracle/Open JDK/Hotspot and other Java-related technologies. * <a
href="https://twitter.com/abreslav">Andrey Breslav</a> - Lead Language
Designer of Kotlin @ JetBrains. * <a
href="https://twitter.com/BrianGoetz">Brian Goetz</a> - Java Language
Architect at Oracle. * <a href="https://twitter.com/benjchristensen">Ben
Christensen</a> - Facebook, Netflix, Apple engineering. * <a
href="http://www.brendangregg.com">Brendan Gregg</a> - Cloud
performance, kernel engineer, speaker, author. * <a
href="https://twitter.com/headius">Charles Nutter</a> - JRuby guy. * <a
href="https://twitter.com/cl4es">Claes Redestad</a> - Working with
OpenJDK stuff @ Oracle. * <a href="http://www.cliffc.org/blog/">Cliff
Click</a> - Creator of the HotSpot Server Compiler. * <a
href="https://blogs.oracle.com/dave/">Dave Dice</a> - Senior research
scientist in the Scalable Synchronization Research Group within Oracle.
* <a href="http://akarnokd.blogspot.se/">Dávid Karnok</a> - RxJava
committer that blogs about advanced RxJava. * <a
href="http://g.oswego.edu/">Doug Lea</a> - Author of the Java memory
model. * <a href="https://twitter.com/giltene">Gil Tene</a> - Azul
Systems. * <a href="https://twitter.com/heinzkabutz">Heinz Kabutz</a> -
Author of 250+ Java Specialists Newsletters. * <a
href="https://twitter.com/JohnWings">Ivan Krylov</a> - JVM expert. * <a
href="https://twitter.com/JakeWharton">Jake Wharton</a> - Square,
Google, open source hacker. * <a
href="https://blogs.oracle.com/jrose/">John Rose</a> - HotSpot
developer. * <a href="https://twitter.com/jboner">Jonas Bonér</a> -
Founder &amp; CTO of Lightbend. * <a
href="https://twitter.com/lukaseder">Lukas Eder</a> - Blogger. Author of
JOOQ. * <a href="https://twitter.com/lagergren">Marcus Lagergren</a> -
Java language team alumnus. * <a
href="https://twitter.com/mreinhold">Mark Reinhold</a> - Chief
Architect, Java Platform Group, Oracle. * <a
href="http://mechanical-sympathy.blogspot.se/">Martin Thompson</a> -
Pasty faced performance gangster. * <a
href="https://twitter.com/karianna">Martijn Verburg</a> - Java Champion.
* <a href="https://twitter.com/javaperftuning">Kirk Pepperdine</a> -
Working in high performance and distributed computing for nearly 20
years. * <a
href="http://psy-lob-saw.blogspot.se/2014/03/where-is-my-safepoint.html">Nitsan
Wakart</a> - Azul Systems. * <a
href="https://twitter.com/normanmaurer">Norman Maurer</a> - Netty
developer. * <a href="https://twitter.com/contrarivariant">Paul
Phillips</a> - Forever undisputed SLOC Scala compiler dev. * <a
href="https://twitter.com/perliden">Per Liden</a> - Hacking on the
HotSpot JVM at Oracle. * <a href="https://twitter.com/PeterLawrey">Peter
Lawrey</a> - Innovative developer of high performance Java systems for
competitive advantage. * <a
href="https://twitter.com/rafaelcodes">Rafael Winterhalter</a> - Author
of ByteBuddy. * <a href="https://twitter.com/RichardWarburto">Richard
Warburton</a> - Developer, Speaker, Author. * <a
href="http://richardstartin.uk/">Richard Startin</a> - Performance
Analyst, developer, blogger. * <a
href="https://twitter.com/pressron">Ron Pressler</a> - Parallel
Universe. Leading Fibers and Continuations for the JVM. * <a
href="https://twitter.com/jodastephen">Stephen Colebourne</a> - Java
Champion. Occasional blogger and speaker. Best known for Joda projects
and JSR-310. * <a href="https://twitter.com/toddlmontgomery">Todd L.
Montgomery</a> - Ex-CTO, Ex-NASA researcher, network geek, messaging
middleware designer. * <a href="https://twitter.com/smaldini">Stéphane
Maldini</a> - Project Reactor Lead <span class="citation"
data-cites="Pivotal">@Pivotal</span>. * <a
href="https://twitter.com/stuartmarks">Stuart Marks</a> - Doctor
Deprecator. Java/JDK/OpenJDK developer * <a
href="https://twitter.com/iwan0www">Vladimir Ivanov</a> - hacking
HotSpot JVM @ Oracle. * <a href="https://twitter.com/viktorklang">Viktor
Klang</a> - Deputy CTO at Typesafe Inc.</p>
<h1 id="contributing">Contributing</h1>
<p>Contributions are very welcome!</p>
<p>Please have a look at <a
href="https://github.com/deephacks/awesome-jvm/blob/master/contributing.md">contributing.md</a>
for guidelines.</p>
<p><a href="https://github.com/deephacks/awesome-jvm">jvm.md
Github</a></p>