Track Awesome Jvm Updates Weekly
A curated list of awesome loosely performance related JVM stuff. Inspired by awesome-python.
🏠 Home · 🔍 Search · 🔥 Feed · 📮 Subscribe · ❤️ Sponsor · 😺 deephacks/awesome-jvm · ⭐ 1.9K · 🏷️ Platforms
Jul 09 - Jul 15, 2018
Memory and concurrency
- DSL-JSON (⭐825) - High performance JSON library with advanced compile-time databinding.
- jsoniter - Claims to be the fastest JSON parser ever (copy of DSL-JSON).
Jul 02 - Jul 08, 2018
Languages
- JPHP (⭐1.7k) - PHP on the Java VM.
Memory and concurrency
- RTree2D (⭐120) - 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.
Virtual Machines
- MobiDevelop's RoboVM Fork (⭐776) - Ahead of time compiler for JVM bytecode targeting iOS, Mac OSX and Linux.
Apr 02 - Apr 08, 2018
Profilers
- jvm-profiler (⭐1.7k) - Java Agent to collect various metrics and stacktraces for Hadoop/Spark JVM processes in a distributed way.
Mar 19 - Mar 25, 2018
Garbage collectors
- Azul Pauseless Garbage Collection - Providing continuous, pauseless operation for Java applications.
Nix tools
- taskset/process-affinity - Retrieve or set a processes’s CPU affinity.
Profilers
- Byteman - tracing, monitoring and testing tool for Java
- jfr-report-tool (⭐49) - Tool for creating reports from Java Flight Recorder dumps.
Documentation
- TCP Tracepoints Linux bcc/BPF using tcplife by Brendan Gregg
People
- Claes Redestad - Working with OpenJDK stuff @ Oracle.
- Ivan Krylov - JVM expert.
- Lukas Eder - Blogger. Author of JOOQ.
- Paul Phillips - Forever undisputed SLOC Scala compiler dev.
- Per Liden - Hacking on the HotSpot JVM at Oracle.
- Rafael Winterhalter - Author of ByteBuddy.
- Richard Startin - Performance Analyst, developer, blogger.
- Ron Pressler - Parallel Universe. Leading Fibers and Continuations for the JVM.
- Stephen Colebourne - Java Champion. Occasional blogger and speaker. Best known for Joda projects and JSR-310.
- Vladimir Ivanov - hacking HotSpot JVM @ Oracle.
Mar 12 - Mar 18, 2018
Network
- Chronicle-Network (⭐223) - A High Performance Network library.
- one-nio (⭐573) - library for building high performance Java servers.
- proteus-java (⭐42) - Proteus Java Client based on RSocket.
Profilers
- micrometer (⭐3.6k) - An application metrics facade for the most popular monitoring tools.
Feb 26 - Mar 04, 2018
Memory and concurrency
- Reactive Streams Utilities (⭐61) - Future standard utilities library for Reactive Streams.
Native
- Java Grinder (⭐392) - Compile Java bytecode to microcontroller assembly.
Media
- FOSDEM 2018 - FOSDEM 2018 Free Java devroom.
- JFokus 2018 - The GC edition. Shenandoah, ZGC, Zing, Fibers, Falcon etc.
Feb 12 - Feb 18, 2018
Nix tools
- bcc (⭐16k) - Tools for BPF-based Linux IO analysis, networking, monitoring, and more.
Feb 05 - Feb 11, 2018
Memory and concurrency
- mph-table (⭐91) - Minimal Perfect Hash Tables are an immutable key/value store with efficient space utilization and fast reads.
- splitmap (⭐18) - A parallel bitmap implementation.
Network
- reactive-grpc (⭐754) - Reactive gRPC is a suite of libraries for using gRPC with Reactive Streams programming libraries.
Profilers
- bytestacks (⭐33) - Turn JVM bytecode execution into flame graphs.
Jan 22 - Jan 28, 2018
Memory and concurrency
- externalsortinginjava (⭐230) - Sort very large files using multiple cores and an external-memory algorithm.
- fast-uuid (⭐136) - Java library for quickly and efficiently parsing and writing UUIDs.
Jan 08 - Jan 14, 2018
Memory and concurrency
- mug - A small, zero-dep functional util library originating from Google.
Metaprogramming
- lombok - Reduce the amount of boilerplate code that is commonly written for Java classes.
Dec 25 - Dec 31, 2017
Documentation
- Safepoints - Where is my safepoint? Nitsan Wakart.
- Quick Tips for Fast Code on the JVM - Daniel Spiewak.
Dec 18 - Dec 24, 2017
Memory and concurrency
- VarInt (⭐20k) - No-deps variable int implementation without deps (by Bazel).
Nix tools
- ioping (⭐868) - Simple disk I/0 latency measuring tool.
Profilers
- GCeasy - Machine learning guided Garbage collection log analysis tool. Auto-detect problems in the JVM GC logs and recommend solutions to it.
- osquery - osquery is an instrumentation framework that expose the operating system as a high-performance relational database.
Dec 11 - Dec 17, 2017
Machine Learning
- Deeplearning4j - Open-Source, Distributed, Deep Learning Library for the JVM.
- H2O - Fast statistical, machine learning & math runtime.
- Smile (⭐5.6k) - Statistical Machine Intelligence & Learning Engine.
Dec 04 - Dec 10, 2017
Documentation
- What every programmer should know about solid-state drives - Emmanuel Goossaert.
Media
People
- Andrey Breslav - Lead Language Designer of Kotlin @ JetBrains.
- Heinz Kabutz - Author of 250+ Java Specialists' Newsletters.
- Jake Wharton - Square, Google, open source hacker.
Nov 13 - Nov 19, 2017
Garbage collectors
- Epsilon GC - Completely passive GC implementation with bounded allocation limit, and lowest runtime performance overhead possible.
Memory and concurrency
- Eclipse Collections (⭐2.1k) - Collections framework for Java.
- failsafe (⭐3.8k) - A lightweight, zero-dependency library for handling failures.
- injector (⭐59) - A new Executor for Java.
- java-concurrent-hash-trie-map (⭐146) - Java port of a concurrent trie hash map implementation from Scala collections.
- java-hll (⭐294) - Java library for the HyperLogLog algorithm.
- JavaFastPFOR (⭐478) - Library to compress and uncompress arrays of integers very fast.
Metaprogramming
- grappa (⭐62) - Java fork of Parboiled. Write grammars with no preprocessing phase.
Nov 06 - Nov 12, 2017
Media
- Shenandoah: The Garbage Collector That Could - Aleksey Shipilev - Devoxx 2017/11
- 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.
Oct 30 - Nov 05, 2017
Garbage collectors
- ZGC - Garbage collector optimized for low latency and very large heaps.
Profilers
- OpenTracing - A vendor-neutral open standard for distributed tracing.
Documentation
- Linux tracing workshop (⭐1.1k) - JVM monitoring with BPF, examples and hands-on labs for Linux tracing tools workshops.
Oct 09 - Oct 15, 2017
Virtual Machines
- Eclipse OpenJ9 (⭐3k) - Eclipse OpenJ9.
Oct 02 - Oct 08, 2017
Memory and concurrency
- streamvbyte (⭐270) - Fast integer compression in C using the StreamVByte codec.
Communities
- Virtual Machine Meetup 2017 - Venue for discussing the latest research and developments in the area of managed language execution.
Media
- 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.
- 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.
Sep 18 - Sep 24, 2017
Memory and concurrency
- jOOL (⭐2k) - Useful extensions to Java 8 lambdas.
- wire (⭐3.9k) - Clean, lightweight protocol buffers for Android and Java.
Profilers
- grav (⭐280) - A collection of tools to help visualise process execution.
Aug 07 - Aug 13, 2017
Network
- JXIO (⭐76) - Java API over AccelIO (C library), a high-performance asynchronous reliable messaging and RPC library optimized for hardware acceleration.
Documentation
- Linux Load Averages: Solving the Mystery - Brendan Gregg.
Jul 31 - Aug 06, 2017
Media
- JVM Language Summit 2017 - JVM Language Summit 2017.
Jul 03 - Jul 09, 2017
Profilers
- async-profiler (⭐5.5k) - Sampling CPU profiler for Java featuring AsyncGetCallTrace + perf_events.
Jun 05 - Jun 11, 2017
Nix tools
- jhsdb - Launch a postmortem debugger to analyze the content of a core-dump from a crashed JVM.
May 29 - Jun 04, 2017
Memory and concurrency
- java-string-similarity (⭐2.5k) - String similarity and distance measures, including Levenshtein edit distance and sibblings, Jaro-Winkler, Longest Common Subsequence, cosine similarity etc.
- vavr - Functional Library for Java 8+.
Network
- RSocket - RSocket is a binary protocol for use on byte stream transports such as TCP, WebSockets, and Aeron.
Documentation
- JVM Anatomy Park - mini-post series where every post goes deep for only a single topic by Aleksey Shipilёv.
Media
- G1 Garbage Collector in Java 8/9 - Kirk Pepperdine.
People
- Kirk Pepperdine - Working in high performance and distributed computing for nearly 20 years.
May 15 - May 21, 2017
Media
- Analyzing and Debugging the Java HotSpot VM at the OS Level - Volker Simonis.
May 08 - May 14, 2017
Memory and concurrency
- onyx-java (⭐5) - Mirrors the Onyx Platform core API by providing a Java equivalent for each component of an Onyx workflow.
Nix tools
- tiptop - Like top but also shows instructions per cycle (IPC).
Documentation
- CPU Utilization is Wrong - Measure instructions per cycle (IPC) for CPU utilization. Brendan Gregg.
Mar 27 - Apr 02, 2017
Profilers
- jcstress - Experimental harness and tests to aid the research in the correctness of concurrency support in the JVM, class libraries, and hardware.
Mar 20 - Mar 26, 2017
Garbage collectors
- The Garbage Collection Handbook - Book that addresses new challenges to garbage collection made by recent advances in hardware and software.
Memory and concurrency
- colfer (⭐678) - Binary serialization format and class generator.
Documentation
- 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.
Mar 06 - Mar 12, 2017
Languages
- Eta - Pure, lazy, strongly typed functional programming language on the JVM.
Memory and concurrency
- TraneIO - High-performance implementation of the Future abstraction.
Feb 20 - Feb 26, 2017
Memory and concurrency
- lmdbjni (⭐201) - Java API to LMDB (HawtJNI) which is an ultra-fast, ultra-compact key-value embedded data store written in C.
- lmdbjava (⭐673) - Java API to LMDB (JNR) which is an ultra-fast, ultra-compact key-value embedded data store written in C.
Feb 06 - Feb 12, 2017
Memory and concurrency
- parquet - Columnar storage format that uses the record shredding and assembly algorithm described in the Dremel paper.
Jan 30 - Feb 05, 2017
Memory and concurrency
- geohash (⭐380) - Java utility methods for geohashing.
- hollow (⭐1.1k) - Java library and comprehensive toolset for harnessing small to moderately sized in-memory datasets.
Jan 23 - Jan 29, 2017
Memory and concurrency
- rtree (⭐990) - Immutable in-memory R-tree and R*-tree implementations in Java with reactive api.
- DataSketches - A Java software library of stochastic streaming algorithms.
Jan 09 - Jan 15, 2017
Memory and concurrency
- commons-math - Library of lightweight, self-contained mathematics and statistics components.
Dec 26 - Jan 01, 2016
Media
- Give me 15 minutes and I'll change your view of Linux tracing - Brendan Gregg.
Dec 12 - Dec 18, 2016
Media
- A Crash Course in Modern Hardware - Cliff Click
Dec 05 - Dec 11, 2016
Documentation
- An introduction to distributed systems (⭐8.2k) - Kyle Kingsbury (author of Jepsen).
Nov 21 - Nov 27, 2016
Memory and concurrency
- CuckooFilter4J (⭐160) - Bloom filter replacement for approximated set-membership queries.
Documentation
- The USE method - The Utilization Saturation and Errors (USE) Method is a methodology for analyzing the performance of any system. Brendan Gregg.
People
- Brendan Gregg - Cloud performance, kernel engineer, speaker, author.
Oct 03 - Oct 09, 2016
Languages
- Rembulan (⭐157) - Rembulan is an implementation of Lua 5.3 for the JVM, written in pure Java with minimal dependencies.
Aug 15 - Aug 21, 2016
Native
- NuProcess (⭐588) - A low-overhead, non-blocking I/O, external Process execution implementation for Java.
Nix tools
- sysdig - Capture system state and activity from a running Linux instance, then save, filter and analyze.
Profilers
- jitwatch-intellij (⭐165) - JITWatch plugin for IntelliJ IDEA.
Aug 08 - Aug 14, 2016
Profilers
- Tracer (⭐181) - Manages custom trace identifiers and carries them through distributed systems.
Communities
- Performance Java User's Group - For expert Java developers who want to push their systems to the next level
Media
- Why JNI is slow? - Cliff Click
- JVM Language Summit 2016 - JVM Language Summit 2016.
Jul 04 - Jul 10, 2016
Memory and concurrency
- Chronicle-Map (⭐2.5k) - In-memory key-value store designed for low-latency and/or multi-process applications.
- lwjgl3 (⭐4k) - 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.
Jun 27 - Jul 03, 2016
Network
- armeria (⭐4k) - Asynchronous RPC/API client/server library built on top of Java 8, Netty 4.1, HTTP/2, and Thrift.
Jun 20 - Jun 26, 2016
Media
- Extreme Profiling: Digging Into Hotspots - Nitsan Wakart.
Jun 13 - Jun 19, 2016
Memory and concurrency
- Zero-Allocation-Hashing (⭐691) - Hashing any sequences of bytes in Java, including all kinds of primitive arrays, buffers, CharSequences and more.
Jun 06 - Jun 12, 2016
Profilers
- jmh-compare-gui (⭐70) - GUI for comparing JMH results.
May 30 - Jun 05, 2016
Memory and concurrency
- Agera (⭐7.3k) - Reactive Programming for Android by Google.
Metaprogramming
- auto (⭐9.9k) - A collection of source code generators for Java.
- immutables - Generate simple, safe and consistent value objects.
Runtimes
- Capsule (⭐1.1k) - Dead-Simple Packaging and Deployment for JVM Apps.
May 23 - May 29, 2016
Languages
- gojava (⭐184) - Java bindings for Go packages.
Metaprogramming
- TeaVM (⭐2.1k) - Ahead-of-time translating compiler (transpiler) from Java bytecode to JavaScript.
May 16 - May 22, 2016
Garbage collectors
- Balanced GC - GC policy available in the Java Virtual Machine for IBM WebSphere Application Server V8.
Memory and concurrency
- Chronicle-Queue (⭐2.8k) - Micro second messaging that stores everything to disk.
- cyclops (⭐1.2k) - Integration modules for RxJava, Reactor, FunctionalJava, Guava & Javaslang.
- LevelDB (⭐1.4k) - Rewrite (port) of LevelDB in Java.
- MapDB - Collections backed by off-heap or on-disk storage.
- rollinghashjava (⭐72) - Rolling hash functions in Java.
Metaprogramming
- Checker Framework - Compiler plug-ins that find bugs or verify their absence.
Network
- Aeron (⭐6.2k) - Efficient reliable UDP unicast, UDP multicast, and IPC message transport.
- gRPC - A high performance, open source, general RPC framework that puts mobile and HTTP/2 first.
- Netty - Async event-driven network library for high performance protocol servers & clients.
- okhttp (⭐43k) - An HTTP+HTTP/2 client for Android and Java applications.
Media
- With GC Solved, What Else Makes a JVM Pause? - John Cuthbertson.
- JVM Mechanics - Douglas Hawkins.
May 09 - May 15, 2016
Metaprogramming
- GHCVM (⭐2.5k) - A Haskell to JVM compiler that supports GHC Haskell.
Profilers
- HdrLogProcessing (⭐29) - Utilities for HDR Histogram logs manipulation.
- Java Flight Recorder (JFR) - Tool for collecting diagnostic and profiling data about a running Java application with almost no performance overhead.
- jfr-flame-graph (⭐244) - Converting JFR Method Profiling Samples to FlameGraph compatible format.
May 02 - May 08, 2016
Memory and concurrency
- Cap’n Proto - Insanely fast data interchange format and capability-based RPC system.
- protobuf - Google's data interchange format.
Apr 25 - May 01, 2016
Metaprogramming
- JSweet - A transpiler from Java to TypeScript/JavaScript.
Documentation
- Top 10 Performance Mistakes - Digest of the top 10 performance related mistakes Martin Thompson has seen in production.
Media
- Java vs. C Performance - Cliff Click.
People
- Dávid Karnok - RxJava committer that blogs about advanced RxJava.
- Jonas Bonér - Founder & CTO of Lightbend.
- Peter Lawrey - Innovative developer of high performance Java systems for competitive advantage.
- Richard Warburton - Developer, Speaker, Author.
- Stéphane Maldini - Project Reactor Lead @Pivotal.
- Stuart Marks - Doctor Deprecator. Java/JDK/OpenJDK developer
Apr 11 - Apr 17, 2016
Memory and concurrency
- ohc (⭐776) - Java large off heap cache developed for Apache Cassandra 3.0.
Mar 21 - Mar 27, 2016
Memory and concurrency
- bloofi (⭐70) - Java implementation of multidimensional Bloom filters
- FlatBuffers - Efficient cross platform serialization library for C++, C#, Go, Java, JavaScript, PHP, and Python.
- SmoothieMap (⭐277) - java.util.Map impl with worst put latencies more than 100 times smaller than java.util.HashMap.
- Simple Binary Encoding (⭐2.7k) - High Performance Message Codec.
- stream-lib (⭐2.2k) - A Java library for summarizing data in streams for which it is infeasible to store all events.
Mar 14 - Mar 20, 2016
Native
- JavaCPP (⭐3.9k) - JavaCPP provides efficient access to native C++ inside Java.
Feb 15 - Feb 21, 2016
Memory and concurrency
- Apache Arrow - A high-performance cross-system data layer for columnar in-memory analytics.
Metaprogramming
- derive4j (⭐543) - Algebraic data types constructors, pattern-matching, morphisms, optics and typeclasses.
- Sulong (⭐627) - LLVM IR interpreter written in Java using Truffle and Graal.
- Truffle (⭐18k) - Framework for implementing languages as simple interpreters.
Feb 08 - Feb 14, 2016
Media
- Java Profiling from the Ground Up - Nitsan Wakart.
Jan 18 - Jan 24, 2016
Languages
- LuaJ - Java-centric implementation of lua vm built to leverage standard Java features.
Memory and concurrency
- pcollections (⭐700) - A Persistent Java Collections Library.
- RoaringBitmap (⭐2.8k) - A better compressed bitset in Java.
Dec 28 - Jan 03, 2015
Virtual Machines
- Avian (⭐1.2k) - Lightweight highly portable JVM with an option for AOT compilation.
- J2ObjC (⭐5.9k) - Translator from Java source to Objective-C code. Keeps shared code between iOS native apps and Android native apps.
- ParparVM (⭐1.3k) - An Open Source Java bytecode to C translator for iOS native development. Designed as a part of the Codename One WORA for mobile project.
Dec 21 - Dec 27, 2015
Memory and concurrency
- Reactor - Reactive data applications on the JVM for Java, Groovy, Clojure and other.
Dec 07 - Dec 13, 2015
Languages
- Xtend - Flexible and expressive dialect of Java, which compiles into Java 5 source code.
Memory and concurrency
- Reactive Streams - Standard for asynchronous stream processing with non-blocking back pressure.
Native
- hawtjni (⭐151) - A JNI code generator based on the JNI generator used in Eclipse SWT.
Documentation
- Topics in High-Performance Messaging - Design decisions, experience and constraints explained in high performance messaging systems.
People
- Ben Christensen - Facebook, Netflix, Apple engineering.
- Charles Nutter - JRuby guy.
- Marcus Lagergren - Java language team alumnus.
- Mark Reinhold - Chief Architect, Java Platform Group, Oracle.
- Martijn Verburg - Java Champion.
- Norman Maurer - Netty developer.
- Todd L. Montgomery - Ex-CTO, Ex-NASA researcher, network geek, messaging middleware designer.
- Viktor Klang - Deputy CTO at Typesafe Inc.
Nov 30 - Dec 06, 2015
Languages
- Golo - A simple dynamic language that makes extensive usage of
invokedynamic
.
- OCaml-Java - Supports OCaml language v4. Generates plain Java bytecode and have seamless integration with Java.
Memory and concurrency
- clj-ds (⭐221) - Clojure's data structures modified for use outside of Clojure.
- gs-collections (⭐1.8k) - Goldman Sachs collections framework.
- transducers-java (⭐117) - Composable algorithmic transformations independent from the context of their input and output sources.
Nov 16 - Nov 22, 2015
Memory and concurrency
- JCTools - Concurrent data structures currently missing from the JDK.
Metaprogramming
- Apache Calcite - Dynamic data management framework and SQL parser plugin.
- Graal - New experimental just-in-time compiler for Java that is integrated with the HotSpot virtual machine.
Nix tools
- likwid (⭐1.3k) - Read hardware performance counters on Intel and AMD processors.
Profilers
- jHiccup - jHiccup is an open source tool designed to measure the pauses and stalls associated with an application’s underlying Java runtime platform.
Virtual Machines
- 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.
Documentation
- Coordinated Omission problem - Discussion on Mechanical Sympathy.
Media
- The Illusion of Execution - Nitsan Wakart.
- Mythbusting Modern Hardware to Gain 'Mechanical Sympathy' - Martin Thompson.
- Designing for Performance - Martin Thompson.
Nov 09 - Nov 15, 2015
Load tools
- Gatling - Asynchronous non-blocking scenario driven load testing tool for testing HTTP servers.
- wrk2 (⭐3.6k) - A constant throughput, correct latency recording variant of wrk.
Memory and concurrency
- RxJava (⭐47k) - Library for composing asynchronous and event-based programs using observable sequences.
Profilers
- hdrhistogram-metrics-reservoir - A Metrics Reservoir implementation backed by HdrHistogram.
- metrics - Measure the behavior of critical components in production environment.
Media
- How NOT to Measure Latency - Gil Tene.
Sep 28 - Oct 04, 2015
Garbage collectors
- Shenandoah - Ultra-Low-Pause-Time Garbage Collector.
Memory and concurrency
- lightweight_trie (⭐47) - A very memory-efficient trie (radix tree) implementation.
Metaprogramming
- Antlr - Parser generator for reading, processing, executing, or translating structured text or binary files.
- compile-testing (⭐630) - Testing tools for javac and annotation processors.
- error-prone (⭐6.2k) - Catch common Java mistakes as compile-time errors.
- javacc - Parser generator for use with Java.
- javaparser (⭐4.4k) - Java 1.8 Parser and Abstract Syntax Tree for Java.
- JavaPoet (⭐9.9k) - A Java API for generating .java source files.
- jparsec (⭐321) - Builds mini parsers in pure Java a la Haskell Parsec.
- MPS - Design and build extensible DSLs and editors.
- parboiled (⭐1.2k) - Parsing of arbitrary input text based on parsing expression grammars.
- Xtext - Framework for development of programming languages and DSLs.
Native
- jnr-ffi (⭐1k) - Load native libraries without writing JNI code by hand.
- jssembly (⭐121) - Execution of native assembly from Java.
Profilers
- HdrHistogram - A Histogram that supports recording and analyzing sampled data value counts.
- jmh - Micro benchmarks written in Java and other languages targetting the JVM.
Sep 21 - Sep 27, 2015
Bytecode
- Jitescript (⭐182) - Bytecode generation library similar to BiteScript.
Memory and concurrency
- Agrona (⭐2.4k) - Library of data structures and utility methods that are a common need when building high-performance applications.
- caffeine (⭐13k) - A high performance caching library for Java 8.
- high-scale-lib (⭐399) - Cliff Click's High Scale Library.
- hppc (⭐875) - High Performance Primitive Collections.
- Koloboke (⭐965) - Java Collections til the last breadcrumb of memory and performance.
- low-gc-membuffers (⭐132) - In-memory circular buffers that use direct ByteBuffers to minimize GC overhead.
- okio (⭐8.1k) - Modern Java IO library that do clever things to save CPU and memory.
- PauselessHashMap (⭐145) - A java.util.HashMap compatible map that won't stall puts or gets when resizing.
- Quasar - Lightweight threads and actors for the JVM.
- stormpot (⭐303) - A fast object pool for the JVM.
Native
- j2v8 (⭐2.3k) - Java API for Google's V8 JavaScript engine.
- Project Panama - Enriching the connections between the JVM and APIs used by C programmers.
Network
- comcast (⭐9.7k) - Simulating shitty network connections.
- gor (⭐16k) - HTTP traffic replay in real-time.
- jRT (⭐45) - Measures response time of a java application to socket-based requests.
- K3PO (⭐44) - Create arbitrary network traffic and behavior to certify whether a network endpoint behaves correctly.
- muxy (⭐810) - Simulating real-world distributed system failures.
- pig (⭐426) - A Linux packet crafting tool.
- tcpdump - Packet analyzer for network traffic capture.
- tcpflow (⭐1.4k) - Captures TCP connections flows in a way that is convenient for protocol analysis and debugging.
- tcpreplay (⭐928) - Pcap editing and replay tools.
Nix tools
- Flame Graphs - Visualization of profiled software, allowing the most frequent code-paths to be identified quickly and accurately.
Profilers
- allocation-instrumenter (⭐433) - Java agent that rewrites bytecode to instrument allocation sites.
- aprof (⭐210) - Java memory allocation profiler.
- hawkshaw - Tools for tracking down memory / JVM problems & generating predictable-as-possible VM behaviour.
- heapster (⭐387) - Production heap profiling for the JVM.
- jamm (⭐617) - Measure actual object memory use including JVM overhead.
- java-sizeof (⭐123) - Memory consumption estimator for Java.
- jitwatch (⭐2.8k) - Log analyser / visualiser for Java HotSpot JIT compiler.
- MAT - Java heap analyzer that help find memory leaks and reduce memory consumption.
- leakcanary (⭐28k) - A memory leak detection library for Android and Java.
- perf-map-agent (⭐1.5k) - Generate method mappings to use with the linux
perf
tool.
- perfj (⭐356) - Linux perf for java programs.
- polarbear (⭐20) - A tool to help diagnose OutOfMemoryError conditions.
- statsd-jvm-profiler (⭐329) - JVM agent profiler that sends profiling data to StatsD.
Documentation
- False sharing - Threads impact the performance of each other while modifying independent variables sharing the same cache line. Martin Thompson.
Sep 07 - Sep 13, 2015
Bytecode
- Byte Buddy - Code generation library creating Java classes at runtime without the help of a compiler.
Network
- SimianArmy (⭐7.9k) - Resiliency tool that helps ensure that your applications can tolerate random instance failures.
Profilers
- honest-profiler (⭐1.2k) - Sampling JVM profiler without the safepoint sample bias.
Runtimes
- jvmkill (⭐160) - Agent that forcibly terminates the JVM when it is unable to allocate memory or create a thread.
Virtual Machines
- jvm.go (⭐3.4k) - A JVM written in Go.
Aug 31 - Sep 06, 2015
Bytecode
- asmtools - Used to develop tools for the production of Java .class files.
Memory and concurrency
- Chronicle-Bytes (⭐325) - Low level memory access wrappers.
- fasttuple (⭐137) - Collections that are laid out adjacently in both on- and off-heap memory.
- netty-buffers - Memory buffer pool implementation similar to jemalloc.
- ObjectLayout - A layout-optimized Java data structure package.
Network
- pcap4j (⭐1k) - Java library for capturing, crafting, and sending packets using libpcap.
Nix tools
- jstat - Monitors GC and compiler statistics in the JVM.
- hwloc - Reports the structure of the processor, number of cores, hyperthreads and cache size.
- numactl - Control NUMA policy for processes or shared memory.
- oprofile - System-wide hardware performance monitoring with easy-to-use interface at low overhead.
- perf-tools (⭐8.7k) - Performance analysis tools based on Linux perf_events (aka perf) and ftrace.
Profilers
- JOL - Analyze actual object layout schemes, footprint, and references in JVMs.
Aug 24 - Aug 30, 2015
Profilers
- jvmtop (⭐1.1k) - Lightweight console application to monitor running jvms on a machine in top-like manner.
- Overseer - Low-Level Hardware Monitoring and Management for Java.
- YourKit - Fully featured, easy to use, low overhead profiler.
Runtimes
- HotswapAgent (⭐1.9k) - Redefine classes at runtime and skip the redeploy process.
- Nailgun - Nailgun is a client, protocol, and server for running Java programs from the command line without incurring the JVM startup overhead.
Virtual Machines
- DCEVM - Modification of Java HotSwap VM with unlimited support for reloading classes at runtime.
Aug 17 - Aug 23, 2015
Garbage collectors
- G1 - The Garbage-First Garbage Collector.
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.
- Frege (⭐3.6k) - Pure functional programming language in the spirit of Haskell.
- 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.
- Nashorn - Lightweight high-performance JavaScript runtime in Java with a native JVM.
- 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.
Nix tools
- atoptool - Logging of system and process activity for long-term analysis, highlighting overloaded system.
- javap - Disassembles class files into code that reflects the java bytecode.
- jhat - Java Heap Analysis Tool
- jinfo - Prints configuration information for a given process.
- jstack - Prints stack traces of threads for a given Java process.
- perf - Linux profiling with performance counters.
- sysstat - Performance monitoring tools for Linux.
Profilers
- BTrace (⭐5.2k) - a safe, dynamic tracing tool for the Java platform.
- Chronon - Record your entire java program. Replay on any machine.
- GCViewer (⭐4.1k) - GCViewer is a tool that visualizes verbose GC output.
- 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.
- Riemann JVM Profiler (⭐288) - JVM agent which sends function-level profiler telemetry to a Riemann server for analysis, visualization, and storage.
- Swiss Java Knife (⭐3.1k) - Small set of tools for JVM troublshooting, monitoring and profiling.
- Takipi - Tells you when and why code breaks in production.
- Zipkin (⭐16k) - A distributed tracing system gather timing data for disparate services developed by Twitter.
Runtimes
- CRaSH - The shell for the Java Platform.
- Drip (⭐1.5k) - Fast JVM launching without the hassle of persistent JVMs.
Virtual Machines
- Dalvik - Android runtime (ART) is the managed runtime used by applications and some system services on Android.
- HotSpot - HotSpot virtual machine maintained and distributed by Oracle Corporation.
- IBM J9 - JVM developed by IBM.
Documentation
- The JVM specification - The Java Virtual Machine Specification Java SE 8 Edition.
- 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.
Communities
- concurrency-interest - Discussion list for JSR-166.
- 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.
- mechanical-sympathy - Discussing how to code sympathetically to and measure the underlying stack/platform so good performance can be extracted.
Media
- JVM Language Summit 2015 - JVM Language Summit 2015.
- 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.
People
- Aleksey Shipilëv - Developing Oracle/Open JDK/Hotspot and other Java-related technologies.
- Brian Goetz - Java Language Architect at Oracle.
- Cliff Click - Creator of the HotSpot Server Compiler.
- Dave Dice - Senior research scientist in the Scalable Synchronization Research Group within Oracle.
- Doug Lea - Author of the Java memory model.
- Gil Tene - Azul Systems.
- John Rose - HotSpot developer.
- Martin Thompson - Pasty faced performance gangster.
- Nitsan Wakart - Azul Systems.