Awesome Java
A curated list of awesome Java libraries inspired by other Awesome lists
AOT compilers
Annotation processor
- immutables - Annotation processor to create immutable objects and builders.
- Lombok - Lombok is used to reduce boilerplate code for model/data objects.
- mapstruct - An annotation processor for generating type-safe bean mappers
Big collections, cache & off-heap memory
- Caffeine - High performance caching library for Java 8.
- Cache2k - Lightweight, high performance Java caching.
- Capsule - Capsule Hash Trie Collections Library.
- Cqengine - NoSQL collection indexing and query engine with ultra-low latency.
- Coherence - Oracle Coherence Community Edition and Hibernate support.
- ConcurrentLinkedHashMap - ConcurrentLinkedHashMap for Java.
- Concurrent-trees - Concurrent Radix Trees and Concurrent Suffix Trees for Java.
- Chronicle-Map - High performance key-value store.
- Java-concurrent-hash-trie-map - Concurrent trie hash map implementation.
- LArray - Large off-heap arrays and memory-mapped file (mmap).
- Level-db - Port of LevelDB to Java.
- Lmdb-jni - Lightning Memory-Mapped Database.
- LMAXCollections - LMAX Collections.
- PalDB - An embeddable write-once key-value store.
- Radix-tree - Radix tree data structure that adheres to the
java.util.Map
interface. - Mapdb - Concurrent Maps, Sets and Queues backed by disk storage or off-heap-memory.
- Vmlens - ExecutorService supporting multiple writing and a single reading thread.
- Weak-lock-free - concurrent map with weak keys and a detached thread local storage.
Messaging & queues
- https://github.com/real-logic/agrona
- https://github.com/JCTools/JCTools
- https://github.com/apache/ratis
Checkpoint & restore
- https://github.com/openjdk/crac
- https://wiki.openjdk.java.net/display/crac/Main
- https://openjdk.java.net/projects/crac/
- https://foojay.io/today/introducing-the-openjdk-coordinated-restore-at-checkpoint-project/
- https://thenewstack.io/azul-proposes-java-state-api-to-speed-app-start-up-times/
- https://mbien.dev/blog/entry/crac-coordinated-restore-at-checkpoint
- https://danheidinga.github.io/Everyone_wants_fast_startup/
- https://github.com/HanSolo/crac4
CLI parser
- Airline - Annotation-based framework for parsing Git like command line structures.
- args4j
- barclay - Command line argument parser and online documentation generation utilities.
- cli-toolbelt - Annotation based command line builder with support for git-like subcommands, basic argument parsing and works with others like JewelCLI.
- CmdOption - Simple annotation-driven command line parser.
- commandline - Annotation based command line parser.
- jbock - Curiously simple CLI parser.
- JewelCLI - Annotated interface to automatically parse and present command line arguments.
- jopt-simple - Java library for parsing command line options.
- picocli - Annotation based command line parser with strong typing and support for git-like subcommands.
Crypto
- java-otp - A one-time password (HOTP/TOTP) library for Java.
- OTP-Java - One-time password generator library according to RFC 4226 (HOTP) and RFC 6238 (TOTP).
- two-factor-auth - Two Factor Authentication Java code implementing the Time-based One-time Password Algorithm.
- JWT-Java - JSON Web Token implementation for Java according to RFC 7519.
DB engines
- Derby - Open source relational database implemented entirely in Java.
- Gaffer - Large-scale entity and relation database supporting aggregation of properties.
- H2 - H2 is an embeddable RDBMS written in Java.
- HSQLDB - HSQLDB (Hyper SQL Database) is a relational database management system written in Java, offering a fast, small database engine which offers both in-memory and disk-based tables
- LevelDB - Port of LevelDB to Java.
- PalDB - Embeddable write-once key-value store written in Java.
- MapDB - Fast and easy to use embedded Java database engine.
- Xodus - JetBrains Xodus is a Java transactional schema-less embedded database.
Dataflow & parallization
- Actr - Simple, fast and typesafe Java actor model implementation.
- JCSP - Communicating Sequential Processes (CSP) for Java.
- Quasar - Fibers, Channels and Actors for the JVM.
- GPars - Concurrency and parallelism framework for the JVM.
- Pipes - Lazy Data Flow Framework.
DI
- Dagger - Fast dependency injector.
- Tiger - Fastest java dependency injection framework.
- Purejin - Java dependency injection through code.
Error handling
- Failsafe - Simple, sophisticated failure handling.
- Resilience4j - Fault tolerance library designed for Java8 and functional programming.
File system
- Amazon-S3-FileSystem-NIO2 - S3 File System Provider for Java 7.
- Azure-storage-blob-nio - NIO File system for Azure storage.
- java-storage-nio - NIO File system for Google storage.
- Fuse-jna - Java bindings to FUSE using JNA.
- Javafs - Java filesystems as FUSE (++).
- Jimfs - in-memory file system for Java 7+.
- Jsr203-hadoop - Java NIO file system provider for HDFS.
- Nfs4j - Pure Java NFSv3 and NFSv4.1 implementation.
- s3fs-nio - Java (NIO2) FileSystem Provider for Amazon AWS S3.
- Tachyon - Memory Centric Reliable Distributed Storage.
Hashing
- Lz4-java - LZ4 compression for Java.
- xxHash - Extremely fast non-cryptographic hash algorithm.
- Zero-Allocation-Hashing - Zero-allocation hashing for Java.
- hashids-java - generate short unique ids from integers - https://hashids.org/java/
- icecore-hashids - lightweight generator for short, unique, non-sequential and decodable Hashids from non-negative numbers
- jnanoid - tiny (108 bytes), secure, URL-friendly, unique string ID generator - https://github.com/ai/nanoid
- friendly-id - Converts a given UUID to Base62 format (22 chars)
Http
- Http-builder-ng - The Easy Http Client for Groovy.
- OkHttp - HTTP+SPDY client for Android and Java applications.
- Unirest - Lightweight HTTP libraries for Java.
- retrofit - Type-safe HTTP client for Android and Java.
Logging
- blitz4j - Logging framework for fast asynchronous logging.
- log4j2 - Async Loggers have 18 times higher throughput than Log4j 1.x and Logback.
Math & ML
- Jblas - Linear Algebra for Java.
- FastR - R language intepreter.
- Renjin - JVM-based interpreter for the R language.
- Tribuo - Machine learning lib by Oracle
Messaging
- Aeron - Efficient reliable unicast and multicast message transport.
- MBassador - Event bus aiming at ease of use and performance.
- Mappedbus - Library for low latency IPC between multiple Java processes/JVMs.
Native invocation / FFI
Packaging
- badass-runtime-plugin - Create a custom runtime image of your non-modular application
- pf4j - Plugin Framework for Java
Regular expressions
- RE2/J - Linear time regular expression matching in Java.
Reactive stream
- JDeferred - Java Deferred/Promise library similar to JQuery.
- Reactive-streams - Reactive Streams Network Protocol.
- Simple-react - Future Streams & Async Data Structures for Java 8.
Serialization
- Blixtser - Fast Serialization library.
- Fast-serialization - Fast java serialization drop in-replacement.
- Ion - Java streaming parser/serializer for Ion.
- Kryo - Fast, efficient, automatic Java serialization and cloning.
- Kryo-serializers
- Java-Deserialization-Cheat-Sheet
Syntax parsing
- In-memory-antlr - In Memory compilation of ANTLR grammars
- Java-parser - Java 9 Parser and Abstract Syntax Tree for Java
- Groovy-Parrot - Brand new parser for Groovy programming language.
- Rewrite - Semantic code search and transformation via Java AST transformation.
Templating
- handlebars - Logic-less and semantic Mustache templates with Java
Task scheduler
- db-scheduler - Persistent cluster-friendly scheduler for Java
- Jobrunr - Background processing in Java. Backed by persistent storage.
- Workhorse - Java EE Job Engine for background jobs and business critical tasks
- Sundial - Lightweight Java job scheduling framework forked from Quartz
- ShedLock - Distributed lock for your scheduled tasks
Testing
- βetamax - Tool for mocking external HTTP web services and REST APIs.
- Ersatz - Mock HTTP server for testing client code.
- Overcast - Helper classes to write your tests against hosts in the cloud.
- Spock - Enterprise-ready testing and specification framework.
- WireMock - A tool for mocking HTTP services.
Other
- asciitable - Several implementations of a text table, originally using ASCII and UTF-8 characters for borders.
- Allocation instrumenter - Java agent that rewrites bytecode to instrument allocation sites.
- Arthas - Alibaba Java Profiling and Diagnostic Tool Arthas.
- Bloofi - Multidimensional Bloom filters.
- Cfg4j - Modern configuration library for distributed apps.
- directory-watcher - cross-platform Java recursive directory watcher, with a JNA macOS watcher.
- Docker-java - Java Docker API Client.
- Drip - Fast JVM launching without the hassle of persistent JVMs.
- emoji-java - Java library that helps you use Emojis in your java applications.
- Fastfilter - Fast Approximate Membership (Bloom) Filters (aka xor-filter)
- fast-classpath-scanner - Uber-fast, ultra-lightweight Java classpath scanner.
- file-leak-detector - Java agent that detects file handle leak.
- Goodtimes - Java 8 Date/Time API enhancements for Groovy.
- java-string-similarity- Various string similarity and distance algorithms.
- jOOR - Fluent Reflection in Java.
- jvmtop - Java monitoring for the command-line - Java 11 fork see here
- jmail - modern and lightweight library for working with email addresses in Java
- K8s-cli-java - Simple Java Demo of Kubernetes kubectl plugin + Java Graal native image.
- fabric8io/kubernetes-client - Java client for Kubernetes & OpenShift.
- Permit-reflect - Permit reflective access for java 11.
- square/OKIO - A modern I/O API for Java.
- text-io - library for creating interactive console applications in Java
- TornadoVM - Automatically run Java programs on GPUs
- RelProxy - Java and Groovy hot class reloader and Java based shell and scripting.
- hibernate-types - Extra types that are not supported by the Hibernate ORM core.
- java-stream-batch-processing
Web frameworks
- Jooby - Scalable, fast and modular micro web framework for Java.
- Micronaut - Micronaut Application Framework.
- Play framework - High Velocity Web Framework.
- Ratpack - A toolkit for JVM web applications .
- Spark - A Sinatra inspired framework for java.
- Vert.x - Vert.x is a tool-kit for building reactive applications on the JVM.