Awesome Java
A curated list of awesome Java frameworks, libraries and software.
Contents
Projects
Bean Mapping
Frameworks that ease bean mapping.
-
dOOv - Provides fluent API
for typesafe domain model validation and mapping. It uses annotations,
code generation and a type safe DSL to make bean validation and mapping
fast and easy.
-
JMapper
- Uses byte code manipulation for lightning-fast mapping. Supports
annotations and API or XML configuration.
-
MapStruct - Code
generator that simplifies mappings between different bean types, based
on a convention-over-configuration approach.
-
ModelMapper -
Intelligent object mapping library that automatically maps objects to
each other.
-
Orika -
JavaBean-mapping framework that recursively copies (among other
capabilities) data from one object to another.
-
reMap - Lambda and
method handle-based mapping which requires code and not annotations if
objects have different names.
-
Selma - Annotation
processor-based bean mapper.
Build
Tools that handle the build cycle and dependencies of an
application.
-
Apache Maven - Declarative build
and dependency management that favors convention over configuration. It
might be preferable to Apache Ant, which uses a rather procedural
approach and can be difficult to maintain.
-
Bazel - Tool from Google that builds
code quickly and reliably.
-
Buck - Encourages the
creation of small, reusable modules consisting of code and resources.
-
Gradle - Incremental builds programmed
via Groovy instead of declaring XML. Works well with Maven’s dependency
management.
Bytecode Manipulation
Libraries to manipulate bytecode programmatically.
-
ASM - All-purpose, low-level bytecode
manipulation and analysis.
-
Byte Buddy - Further simplifies
bytecode generation with a fluent API.
-
bytecode-viewer
- Java 8 Jar & Android APK reverse engineering suite. (GPL-3.0-only)
-
Byteman - Manipulate bytecode at
runtime via DSL (rules); mainly for testing/troubleshooting.
(LGPL-2.1-or-later)
-
cglib - Bytecode generation
library.
-
Javassist -
Tries to simplify bytecode editing.
-
Mixin - Manipulate
bytecode at runtime using real Java code.
-
Perses -
Dynamically injects failure/latency at the bytecode level according to
principles of chaos engineering.
Caching
Libraries that provide caching facilities.
-
cache2k - In-memory high performance
caching library.
-
Caffeine -
High-performance, near-optimal caching library.
-
Ehcache - Distributed
general-purpose cache.
-
Infinispan - Highly concurrent
key/value datastore used for caching.
CLI
Libraries for everything related to the CLI.
-
ASCII Table - Library
to draw tables in ASCII.
-
Airline -
Annotation-based framework for parsing Git-like command-line arguments.
-
args4j - Small library to parse
command-line arguments.
-
Jansi - ANSI escape
codes to format console output.
-
Java ASCII Render
- Graphical primitives for the console.
-
JCommander - Command-line
argument-parsing framework with custom types and validation via
implementing interfaces.
-
jbock - Reflectionless
command line parser.
-
Jexer - Advanced console
(and Swing) text user interface (TUI) library, with mouse-draggable
windows, built-in terminal window manager, and sixel image support.
Looks like
Turbo Vision.
-
JLine - Includes features
from modern shells like completion or history.
-
JOpt Simple -
Fluent parser that uses the POSIX#getopt and GNU#getopt_long syntaxes.
-
picocli - ANSI colors and styles in
usage help with annotation-based POSIX/GNU/any syntax, subcommands,
strong typing for both options and positional args.
-
Text-IO - Aids the
creation of full console-based applications.
-
Lanterna - Easy console
text-GUI library, similar to curses. (LGPL-3.0-only)
Cluster Management
Frameworks that can dynamically manage applications inside of a
cluster.
-
Apache Aurora - Mesos framework
for long-running services and cron jobs.
-
Singularity - Mesos framework
that makes deployment and operations easy. It supports web services,
background workers, scheduled jobs, and one-off tasks.
Code Analysis
Tools that provide metrics and quality measurements.
-
Checkstyle -
Static analysis of coding conventions and standards. (LGPL-2.1-or-later)
-
Error Prone -
Catches common programming mistakes as compile-time errors.
-
Infer - Modern static
analysis tool for verifying the correctness of code.
-
jQAssistant - Static code analysis
with Neo4J-based query language. (GPL-3.0-only)
-
NullAway - Eliminates
NullPointerExceptions with low build-time overhead.
-
PMD - Source code analysis for
finding bad coding practices.
-
SonarJava -
Static analyzer for SonarQube & SonarLint. (LGPL-3.0-only)
-
Sourcetrail - Visual source
code navigator.
-
Spoon - Library for
analyzing and transforming Java source code.
-
Spotbugs - Static
analysis of bytecode to find potential bugs. (LGPL-2.1-only)
Code Coverage
Frameworks and tools that enable code coverage metrics collection for
test suites.
-
Clover - Relies
on source-code instrumentation instead of bytecode instrumentation.
-
Cobertura - Relies
on offline (or static) bytecode instrumentation and class loading to
collect code coverage metrics. (GPL-2.0-only)
-
JaCoCo - Framework that
enables collection of code coverage metrics, using both offline and
runtime bytecode instrumentation.
Code Generators
Tools that generate patterns for repetitive code in order to reduce
verbosity and error-proneness.
-
ADT4J - JSR-269 code
generator for algebraic data types.
-
Auto - Generates factory,
service, and value classes.
-
Bootify
- Browser-based Spring Boot app generation with JPA model and REST API.
-
FreeBuilder -
Automatically generates the Builder pattern.
-
Immutables - Annotation
processors to generate simple, safe and consistent value objects.
-
JavaPoet - API to
generate source files.
-
JHipster -
Yeoman source code generator for Spring Boot and AngularJS.
-
Joda-Beans - Small
framework that adds queryable properties to Java, enhancing JavaBeans.
-
Lombok - Code generator that
aims to reduce verbosity.
-
Telosys - Simple and light code
generator available as an Eclipse Plugin and also as a CLI.
Compiler-compiler
Frameworks that help to create parsers, interpreters or compilers.
-
ANTLR - Complex full-featured
framework for top-down parsing.
-
JavaCC - Parser generator
that generates top-down parsers. Allows lexical state switching and
permits extended BNF specifications.
-
JFlex - Lexical analyzer generator.
Computer Vision
Libraries which seek to gain high level information from images and
videos.
-
BoofCV - Library for image processing,
camera calibration, tracking, SFM, MVS, 3D vision, QR Code and much
more.
-
ImageJ - Medical image
processing application with an API.
-
JavaCV - Java interface
to OpenCV, FFmpeg, and much more.
Configuration
Libraries that provide external configuration.
-
centraldogma -
Highly-available version-controlled service configuration repository
based on Git, ZooKeeper and HTTP/2.
-
cfg4j - Modern
configuration library for distributed apps written in Java.
-
config - Configuration
library supporting Java properties, JSON or its human optimized superset
HOCON.
-
Configurate -
Configuration library with support for various configuration formats and
transformations.
-
dotenv - Twelve-factor
configuration library which uses environment-specific files.
-
ini4j - Provides an API for
handling Windows’ INI files.
-
KAConf -
Annotation-based configuration system for Java and Kotlin.
-
microconfig - Configuration system
designed for microservices which helps to separate configuration from
code. The configuration for different services can have common and
specific parts and can be dynamically distributed.
-
owner - Reduces
boilerplate of properties.
Constraint Satisfaction Problem Solver
Libraries that help with implementing optimization and satisfiability
problems.
-
Choco - Off-the-shelf constraint
satisfaction problem solver that uses constraint programming techniques.
-
JaCoP - Includes an
interface for the FlatZinc language, enabling it to execute MiniZinc
models. (AGPL-3.0)
-
OptaPlanner - Business
planning and resource scheduling optimization solver.
CSV
Frameworks and libraries that simplify reading/writing CSV data.
-
FastCSV -
Performance-optimized, dependency-free and RFC 4180 compliant.
-
jackson-dataformat-csv
- Jackson extension for reading and writing CSV.
-
opencsv - Simple CSV
parser.
-
Super CSV -
Powerful CSV parser with support for Dozer, Joda-Time and Java 8.
-
uniVocity-parsers
- One of the fastest and most feature-complete parsers. Also comes with
parsers for TSV and fixed-width records.
Data Structures
Efficient and specific data structures.
-
Apache Avro - Data interchange
format with dynamic typing, untagged data, and absence of manually
assigned IDs.
-
Apache Orc - Fast and efficient
columnar storage format for Hadoop-based workloads.
-
Apache Parquet - Columnar
storage format based on assembly algorithms from Google’s paper on
Dremel.
-
Apache Thrift - Data interchange
format that originated at Facebook.
-
Big Queue - Fast
and persistent queue based on memory-mapped files.
-
HyperMinHash-java
- Probabilistic data structure for computing union, intersection, and
set cardinality in loglog space.
-
Persistent Collection
- Persistent and immutable analogue of the Java Collections Framework.
-
Protobuf -
Google’s data interchange format.
-
RoaringBitmap
- Fast and efficient compressed bitmap.
-
SBE -
Simple Binary Encoding, one of the fastest message formats around.
-
Tape - Lightning-fast,
transactional, file-based FIFO.
-
Wire - Clean, lightweight
protocol buffers.
Database
Everything that simplifies interactions with the database.
-
Apache Calcite - Dynamic data
management framework. It contains many of the pieces that comprise a
typical database management system.
-
Apache Drill - Distributed,
schema on-the-fly, ANSI SQL query engine for Big Data exploration.
-
Apache Phoenix -
High-performance relational database layer over HBase for low-latency
applications.
-
AranoDB -
ArangoDB Java driver.
-
Chronicle Map -
Efficient, in-memory (opt. persisted to disk), off-heap key-value store.
-
Debezium - Low latency data streaming
platform for change data capture.
-
druid - High-performance,
column-oriented, distributed data store.
-
eXist - NoSQL document
database and application platform. (LGPL-2.1-only)
-
FlexyPool -
Brings metrics and failover strategies to the most common connection
pooling solutions.
-
Flyway - Simple database migration
tool.
-
H2 - Small SQL database notable for
its in-memory functionality.
-
HikariCP -
High-performance JDBC connection pool.
-
JDBI - Convenient abstraction of JDBC.
-
Jedis - Small client
for interaction with Redis, with methods for commands.
-
Jest - Client for the
Elasticsearch REST API.
-
jetcd - Client library
for etcd.
-
Jinq - Typesafe database
queries via symbolic execution of Java 8 Lambdas (on top of JPA or
jOOQ).
-
jOOQ - Generates typesafe code based
on SQL schema.
-
Leaf -
Distributed ID generate service.
-
Liquibase - Database-independent
library for tracking, managing and applying database schema changes.
-
MapDB - Embedded database engine that
provides concurrent collections backed on disk or in off-heap memory.
-
MariaDB4j -
Launcher for MariaDB that requires no installation or external
dependencies.
-
Modality -
Lightweight ORM with database reverse engineering features.
-
Spring Data JPA MongoDB Expressions
- Allows you to use MongoDB query language to query your relational
database.
-
Trino - Distributed SQL query engine for
big data.
-
QueryStream -
Build JPA Criteria queries using a Stream-like API.
-
Querydsl - Typesafe unified
queries.
-
Realm - Mobile
database to run directly inside phones, tablets or wearables.
-
Redisson - Allows for
distributed and scalable data structures on top of a Redis server.
-
requery - Modern,
lightweight but powerful object mapping and SQL generator. Easily map to
or create databases, or perform queries and updates from any Java-using
platform.
-
Speedment -
Database access library that utilizes Java 8’s Stream API for querying.
-
Vibur DBCP - JDBC connection pool
library with advanced performance monitoring capabilities.
-
Xodus - Highly
concurrent transactional schema-less and ACID-compliant embedded
database.
Date and Time
Libraries related to handling date and time.
-
Almanac Converter
- Simple conversion between different calendar systems.
-
iCal4j - Parse and build
iCalendar
RFC 5545 data models.
-
ThreeTen-Extra
- Additional date-time classes that complement those in JDK 8.
-
Time4J - Advanced date
and time library. (LGPL-2.1-only)
Dependency Injection
Libraries that help to realize the
Inversion of Control
paradigm.
-
Apache DeltaSpike - CDI
extension framework.
-
Dagger - Compile-time injection
framework without reflection.
-
Feather -
Ultra-lightweight, JSR-330-compliant dependency injection library.
-
Governator -
Extensions and utilities that enhance Google Guice.
-
Guice - Lightweight and
opinionated framework that completes Dagger.
-
HK2 - Lightweight and
dynamic dependency injection framework.
-
JayWire -
Lightweight dependency injection framework. (LGPL-3.0-only)
Development
Augmentation of the development process at a fundamental level.
-
AspectJ - Seamless
aspect-oriented programming extension.
-
DCEVM - JVM modification that
allows unlimited redefinition of loaded classes at runtime.
(GPL-2.0-only)
-
Faux Pas - Library
that simplifies error handling by circumventing the issue that none of
the functional interfaces in the Java Runtime is allowed by default to
throw checked exceptions.
-
HotswapAgent
- Unlimited runtime class and resource redefinition. (GPL-2.0-only)
-
JavaParser -
Parse, modify and generate Java code.
-
JavaSymbolSolver
- Symbol solver.
-
Manifold -
Re-energizes Java with powerful features like type-safe metaprogramming,
structural typing and extension methods.
-
NoException - Allows
checked exceptions in functional interfaces and converts exceptions to
Optional return.
-
SneakyThrow
- Ignores checked exceptions without bytecode manipulation. Can also be
used inside Java 8 stream operations.
-
Tail - Enable infinite
recursion using tail call optimization.
Distributed Applications
Libraries and frameworks for writing distributed and fault-tolerant
applications.
-
Apache Geode - In-memory data
management system that provides reliable asynchronous event
notifications and guaranteed message delivery.
-
Apache Storm - Realtime
computation system.
-
Apache ZooKeeper -
Coordination service with distributed configuration, synchronization,
and naming registry for large distributed systems.
-
Atomix - Fault-tolerant distributed
coordination framework.
-
Axon - Framework for creating CQRS
applications.
-
Dropwizard Circuit Breaker
- Circuit breaker design pattern for Dropwizard. (GPL-2.0-only)
-
Failsafe - Simple
failure handling with retries and circuit breakers.
-
Hazelcast - Highly
scalable in-memory datagrid with a free open-source version.
-
JGroups - Toolkit for reliable
messaging and cluster creation.
-
Quasar -
Lightweight threads and actors for the JVM.
-
resilience4j
- Functional fault tolerance library.
-
ScaleCube Services
- Embeddable Cluster-Membership library based on SWIM and gossip
protocol.
-
Zuul - Gateway service
that provides dynamic routing, monitoring, resiliency, security, and
more.
Distributed Transactions
Distributed transactions provide a mechanism for ensuring consistency
of data updates in the presence of concurrent access and partial
failures.
-
Atomikos - Provides transactions
for REST, SOA and microservices with support for JTA and XA.
-
Bitronix - Simple but
complete implementation of the JTA 1.1 API.
-
Narayana - Provides support for
traditional ACID and compensation transactions, also complies with JTA,
JTS and other standards. (LGPL-2.1-only)
-
Seata - Delivers high
performance and easy to use distributed transaction services under a
microservices architecture.
Distribution
Tools that handle the distribution of applications in native
formats.
-
Artipie - Binary
artifact management toolkit which hosts them on the file system or S3.
-
Boxfuse
- Deployment of JVM applications to AWS using the principles of
immutable infrastructure.
-
Capsule - Simple and
powerful packaging and deployment. A fat JAR on steroids, or a “Docker
for Java” that supports JVM-optimized containers.
-
Central Repository - Largest
binary component repository available as a free service to the
open-source community. Default used by Apache Maven, and available in
all other build tools.
-
Cloudsmith
- Fully managed package management SaaS with support for
Maven/Gradle/SBT with a free tier.
-
Getdown - A system
for deploying Java applications to end-user computers and keeping them
up to date. Developed as an alternative to Java Web Start.
-
IzPack - Setup authoring tool for
cross-platform deployments.
-
JavaPackager -
Maven and Gradle plugin which provides an easy way to package Java
applications in native Windows, Mac OS X or GNU/Linux executables, and
generate installers for them.
-
jlink.online -
Builds optimized runtimes over HTTP.
-
Nexus
- Binary management with proxy and caching capabilities.
-
packr - Packs JARs, assets
and the JVM for native distribution on Windows, Linux and macOS.
-
really-executable-jars-maven-plugin
- Maven plugin for making self-executing JARs.
Document Processing
Libraries that assist with processing office document formats.
-
Apache POI - Supports OOXML (XLSX,
DOCX, PPTX) as well as OLE2 (XLS, DOC or PPT).
-
documents4j - API for document
format conversion using third-party converters such as MS Word.
-
docx4j - Create and
manipulate Microsoft Open XML files.
-
fastexcel - High
performance library to read and write large Excel (XLSX) worksheets.
-
zerocell -
Annotation-based API for reading data from Excel sheets into POJOs with
focus on reduced overhead.
Financial
Libraries related to the financial domain.
-
Parity - Platform
for trading venues.
-
Philadelphia
- Low-latency financial information exchange.
-
Square -
Integration with the Square API.
-
Stripe - Integration
with the Stripe API.
-
ta4j - Library for technical
analysis.
Formal-methods tools: proof assistants, model checking, symbolic
execution, etc.
-
CATG - Concolic unit
testing engine. Automatically generates unit tests using formal methods.
-
Checker Framework - Pluggable
type systems. Includes nullness types, physical units, immutability
types and more. (GPL-2.0-only WITH Classpath-exception-2.0)
-
Daikon - Detects
likely program invariants and generates JML specs based on those
invariants.
-
Java Path Finder (JPF)
- JVM formal verification tool containing a model checker and more.
Created by NASA.
-
JMLOK 2.0
- Detects inconsistencies between code and JML specification through
feedback-directed random tests generation, and suggests a likely cause
for each nonconformance detected. (GPL-3.0-only)
-
KeY - Formal software
development tool that aims to integrate design, implementation, formal
specification, and formal verification of object-oriented software as
seamlessly as possible. Uses JML for specification and symbolic
execution for verification. (GPL-2.0-or-later)
-
OpenJML - Translates JML
specifications into SMT-LIB format and passes the proof problems implied
by the program to backend solvers. (GPL-2.0-only)
Functional Programming
Libraries that facilitate functional programming.
-
Cyclops - Monad and stream
utilities, comprehensions, pattern matching, functional extensions for
all JDK collections, future streams, trampolines and much more.
-
derive4j - Java 8
annotation processor and framework for deriving algebraic data types
constructors, pattern-matching and morphisms. (GPL-3.0-only)
-
Fugue - Functional
extensions to Guava.
-
Functional Java - Implements
numerous basic and advanced programming abstractions that assist
composition-oriented development.
-
jOOλ - Extension to Java 8
that aims to fix gaps in lambda by providing numerous missing types and
a rich set of sequential Stream API additions.
-
protonpack -
Collection of stream utilities.
-
StreamEx - Enhances
Java 8 Streams.
-
Vavr - Functional component library
that provides persistent data types and functional control structures.
Game Development
Frameworks that support the development of games.
-
FXGL - JavaFX Game
Development Framework.
-
JBox2D - Port of the renowned C++
2D physics engine.
-
jMonkeyEngine - Game engine for
modern 3D development.
-
libGDX - All-round cross-platform,
high-level framework.
-
Litiengine - AWT-based,
lightweight 2D game engine.
-
LWJGL - Robust framework that
abstracts libraries like OpenGL/CL/AL.
-
Mini2Dx - Beginner-friendly,
master-ready framework for rapidly prototyping and building 2D games.
Geospatial
Libraries for working with geospatial data and algorithms.
-
Apache SIS - Library for developing
geospatial applications.
-
Geo - GeoHash utilities
in Java.
-
GeoTools - Library that provides
tools for geospatial data. (LGPL-2.1-only)
-
GraphHopper -
Road-routing engine. Used as a Java library or standalone web service.
-
H2GIS - Spatial extension of the H2
database. (LGPL-3.0-only)
-
Jgeohash - Library
for using the GeoHash algorithm.
-
Mapsforge - Map
rendering based on OpenStreetMap data. (LGPL-3.0-only)
-
Spatial4j -
General-purpose spatial/geospatial library.
GUI
Libraries to create modern graphical user interfaces.
-
JavaFX
- Successor of Swing.
-
Scene Builder
- Visual layout tool for JavaFX applications.
-
SWT - Graphical widget
toolkit.
Everything about high-performance computation, from collections to
specific libraries.
-
Agrona - Data
structures and utility methods that are common in high-performance
applications.
-
Disruptor -
Inter-thread messaging library.
-
Eclipse Collections
- Collections framework inspired by Smalltalk.
-
fastutil - Fast and compact
type-specific collections.
-
HPPC - Primitive
collections.
-
JCTools - Concurrency
tools currently missing from the JDK.
-
Koloboke - Carefully
designed extension of the Java Collections Framework with primitive
specializations and more.
HTTP Clients
Libraries that assist with creating HTTP requests and/or binding
responses.
-
Apache HttpComponents - A toolset
of low level Java components focused on HTTP and associated protocols.
-
Async Http Client
- Asynchronous HTTP and WebSocket client library.
-
Feign - HTTP client
binder inspired by Retrofit, JAXRS-2.0, and WebSocket.
-
Google HTTP Client
- Pluggable HTTP transport abstraction with support for
java.net.HttpURLConnection, Apache HTTP Client, Android, Google App
Engine, XML, Gson, Jackson and Protobuf.
-
methanol - HTTP
client extensions library.
-
restQL-java -
Microservice query language that fetches information from multiple
services.
-
Retrofit - Typesafe
REST client.
-
Ribbon - Client-side IPC
library that is battle-tested in cloud.
-
Riptide - Client-side
response routing for Spring’s RestTemplate.
-
unirest-java -
Simplified, lightweight HTTP client library.
Libraries that handle serialization to hypermedia types.
-
hate - Builds
hypermedia-friendly objects according to HAL specification.
-
JSON-LD -
JSON-LD implementation.
-
Siren4J -
Library for the Siren specification.
IDE
Integrated development environments that try to simplify several
aspects of development.
-
Eclipse - Established open-source
project with support for lots of plugins and languages.
-
IntelliJ IDEA
- Supports many JVM languages and provides good options for Android
development. The commercial edition targets the enterprise sector.
-
jGRASP - Created to provide
software visualizations that work in conjunction with the debugger such
as Control Structure Diagrams, UML class diagrams and Object Viewer.
-
NetBeans - Provides
integration for several Java SE and EE features, from database access to
HTML5.
-
Recaf - Bytecode editor.
-
Visual Studio Code
- Provides Java support for lightweight projects with a simple, modern
workflow by using extensions from the internal marketplace.
Imagery
Libraries that assist with the creation, evaluation or manipulation of
graphical images.
-
Imgscalr - Simple,
efficient and hardware-accelerated image-scaling library implemented in
pure Java 2D.
-
Tess4J - JNA wrapper for
Tesseract OCR API.
-
Thumbnailator -
High-quality thumbnail generation library.
-
TwelveMonkeys -
Collection of plugins that extend the number of supported image file
formats.
-
ZXing - Multi-format 1D/2D
barcode image processing library.
-
image-comparison
- Library that compares 2 images with the same sizes and shows the
differences visually by drawing rectangles. Some parts of the image can
be excluded from the comparison. Can be used for automation qa tests.
Introspection
Libraries that help make the Java introspection and reflection API
easier and faster to use.
-
ClassGraph -
ClassGraph (formerly FastClasspathScanner) is an uber-fast,
ultra-lightweight, parallelized classpath scanner and module scanner for
Java, Scala, Kotlin and other JVM languages.
-
jOOR - jOOR stands for jOOR
Object Oriented Reflection. It is a simple wrapper for the
java.lang.reflect package.
-
Mirror -
Mirror was created to bring light to a simple problem, usually named
ReflectionUtil, which is on almost all projects that rely on reflection
to do advanced tasks.
-
Objenesis - Allows dynamic
instantiation without default constructor, e.g. constructors which have
required arguments, side effects or throw exceptions.
-
ReflectASM
- ReflectASM is a very small Java library that provides high performance
reflection by using code generation.
-
Reflections -
Reflections scans your classpath, indexes the metadata, allows you to
query it on runtime and may save and collect that information for many
modules within your project.
Job Scheduling
Libraries for scheduling background jobs.
-
JobRunr - Job
scheduling library which utilizes lambdas for fire-and-forget, delayed
and recurring jobs. Guarantees execution by single scheduler instance
using optimistic locking. Has features for persistence, minimal
dependencies and is embeddable.
-
Quartz -
Feature-rich, open source job scheduling library that can be integrated
within virtually any Java application.
-
Sundial - Lightweight
framework to simply define jobs, define triggers and start the
scheduler.
-
Wisp - Simple library with
minimal footprint and straightforward API.
-
db-scheduler -
Persistent and cluster-friendly scheduler.
-
easy-batch - Set up
batch jobs with simple processing pipelines. Records are read in
sequence from a data source, processed in pipeline and written in
batches to a data sink.
-
shedlock - Makes
sure that your scheduled tasks are executed at most once at the same
time. If a task is being executed on one node, it acquires a lock which
prevents execution of the same task from another node or thread.
JSON
Libraries for serializing and deserializing JSON to and from Java
objects.
-
DSL-JSON - JSON
library with advanced compile time databinding.
-
Genson - Powerful and easy-to-use
Java-to-JSON conversion library.
-
Gson - Serializes objects
to JSON and vice versa. Good performance with on-the-fly usage.
-
HikariJSON -
High-performance JSON parser, 2x faster than Jackson.
-
jackson-modules-java8
- Set of Jackson modules for Java 8 datatypes and features.
-
Jackson-datatype-money
- Open-source Jackson module to support JSON serialization and
deserialization of JavaMoney data types.
-
Jackson - Similar to
GSON, but offers performance gains if you need to instantiate the
library more often.
-
JSON-io - Convert Java
to JSON. Convert JSON to Java. Pretty print JSON. Java JSON serializer.
-
jsoniter - Fast and flexible library
with iterator and lazy parsing API.
-
LoganSquare -
JSON parsing and serializing library based on Jackson’s streaming API.
Outperforms GSON & Jackson’s library.
-
Moshi - Modern JSON
library, less opinionated and uses built-in types like List and Map.
-
Yasson - Binding
layer between classes and JSON documents similar to JAXB.
-
fastjson - Very fast
processor with no additional dependencies and full data binding.
-
Jolt - JSON to JSON
transformation tool.
-
JsonPath - Extract
data from JSON using XPATH-like syntax.
-
JsonSurfer -
Streaming JsonPath processor dedicated to processing big and complicated
JSON data.
JVM and JDK
Current implementations of the JVM/JDK.
-
Adopt Open JDK - Community-driven
OpenJDK builds, including both HotSpot and OpenJ9.
-
Avian - JVM with JIT,
AOT modes and iOS port.
-
Corretto - No-cost,
multiplatform, production-ready distribution of OpenJDK by Amazon.
(GPL-2.0-only WITH Classpath-exception-2.0)
-
Dragonwell8 -
Downstream version of OpenJDK optimized for online e-commerce,
financial, logistics applications.
-
Graal - Polyglot
embeddable JVM. (GPL-2.0-only WITH Classpath-exception-2.0)
-
Liberica JDK - Built from OpenJDK,
thoroughly tested and passed the JCK. (GPL-2.0-only WITH
Classpath-exception-2.0)
-
OpenJ9 - High
performance, enterprise-calibre, flexibly licensed, openly-governed
cross-platform JVM extending and augmenting the runtime technology
components from the Eclipse OMR and OpenJDK project.
-
Open JDK - Open JDK community
home. (GPL-2.0-only WITH Classpath-exception-2.0)
-
ParparVM
- VM with non-blocking, concurrent GC for iOS. (GPL-2.0-only WITH
Classpath-exception-2.0)
-
RedHat Open JDK
- RedHat’s OpenJDK distribution. (GPL-2.0-only WITH
Classpath-exception-2.0)
-
SAP Machine - SAP’s
no-cost, rigorously tested and JCK-verified OpenJDK friendly fork.
(GPL-2.0-only WITH Classpath-exception-2.0)
-
Zulu -
OpenJDK builds for Windows, Linux, and macOS. (GPL-2.0-only WITH
Classpath-exception-2.0)
Logging
Libraries that log the behavior of an application.
-
Apache Log4j 2 -
Complete rewrite with a powerful plugin and configuration architecture.
-
Graylog - Open-source aggregator
suited for extended role and permission management. (GPL-3.0-only)
-
Kibana - Analyzes and
visualizes log files. Some features require payment.
-
Logback - Robust logging library
with interesting configuration options via Groovy.
-
Logbook - Extensible,
open-source library for HTTP request and response logging.
-
Logstash - Tool for
managing log files.
-
p6spy - Enables logging for
all JDBC transactions without changes to the code.
-
SLF4J - Abstraction layer/simple
logging facade.
-
tinylog - Lightweight logging
framework with static logger class.
-
OpenTracing Toolbox
- Collection of libraries that build on top of OpenTracing and provide
extensions and plugins to existing instrumentations.
Machine Learning
Tools that provide specific statistical algorithms for learning from
data.
-
Apache Flink - Fast, reliable,
large-scale data processing engine.
-
Apache Mahout - Scalable
algorithms focused on collaborative filtering, clustering and
classification.
-
DatumBox - Provides several
algorithms and pre-trained models for natural language processing.
-
Deeplearning4j - Distributed
and multi-threaded deep learning library.
-
DJL - High-level and engine-agnostic
framework for deep learning.
-
H2O
- Analytics engine for statistics over big data.
-
JSAT - Algorithms for
pre-processing, classification, regression, and clustering with support
for multi-threaded execution. (GPL-3.0-only)
-
oj! Algorithms - High-performance
mathematics, linear algebra and optimisation needed for data science,
machine learning and scientific computing.
-
Oryx 2 - Framework for
building real-time, large-scale machine learning applications. Includes
end-to-end applications for collaborative filtering, classification,
regression, and clustering.
-
Siddhi - Cloud native
streaming and complex event processing engine.
-
Smile - Statistical
Machine Intelligence and Learning Engine provides a set of machine
learning algorithms and a visualization library.
-
Tribuo - Provides tools for
classification, regression, clustering, model development and interfaces
with other libraries such as scikit-learn, pytorch and TensorFlow.
-
Weka - Collection of
algorithms for data mining tasks ranging from pre-processing to
visualization. (GPL-3.0-only)
Messaging
Tools that help send messages between clients to ensure protocol
independency.
-
Aeron - Efficient,
reliable, unicast and multicast message transport.
-
Apache ActiveMQ - Message
broker that implements JMS and converts synchronous to asynchronous
communication.
-
Apache Camel - Glues together
different transport APIs via Enterprise Integration Patterns.
-
Apache Kafka - High-throughput
distributed messaging system.
-
Apache Pulsar - Distributed
pub/sub-messaging system.
-
Apache RocketMQ - Fast,
reliable, and scalable distributed messaging platform.
-
Apache Qpid - Apache Qpid makes
messaging tools that speak AMQP and support many languages and
platforms.
-
EventBus - Simple
publish/subscribe event bus.
-
Hermes - Fast and reliable
message broker built on top of Kafka.
-
JeroMQ - Implementation
of ZeroMQ.
-
Nakadi - Provides a
RESTful API on top of Kafka.
-
RabbitMQ Java client
- RabbitMQ client.
-
Smack -
Cross-platform XMPP client library.
-
NATS client - NATS
client.
Microservice
Tools for creating and managing microservices.
-
ActiveRPC - Lightweight and fast
library for complex high-load distributed applications and
Memcached-like solutions.
-
Apollo - Libraries for
writing composable microservices.
-
Armeria - Asynchronous
RPC/REST client/server library built on top of Java 8, Netty, HTTP/2,
Thrift and gRPC.
-
consul-api - Client
for the Consul API: a distributed, highly available and datacenter-aware
registry/discovery service.
-
Eureka - REST-based
service registry for resilient load balancing and failover.
-
Helidon - Two-style approach for
writing microservices: Functional-reactive and as an implementation of
MicroProfile.
-
Micronaut - Modern full-stack
framework with focus on modularity, minimal memory footprint and startup
time.
-
Nacos - Dynamic service discovery,
configuration and service management platform for building cloud native
applications.
-
Quarkus - Kubernetes stack tailored for
the HotSpot and Graal VM.
-
Sentinel - Flow
control component enabling reliability, resilience and monitoring for
microservices.
Miscellaneous
Everything else.
-
CQEngine - Ultra-fast,
SQL-like queries on Java collections.
-
Design Patterns
- Implementation and explanation of the most common design patterns.
-
FF4J - Feature Flags for
Java.
-
FizzBuzz Enterprise Edition
- No-nonsense implementation of FizzBuzz made by serious businessmen for
serious business purposes. (No explicit license)
-
J2ObjC -
Java-to-Objective-C translator for porting Android libraries to iOS.
- JBake - Static website generator.
-
JBot - Framework for
building chatbots. (GPL-3.0-only)
-
JCuda - JCuda offers Java bindings for
CUDA and CUDA-related libraries.
-
Jimfs - In-memory file
system.
-
Joda-Money - Basic
currency and money classes and algorithms not provided by the JDK.
- JPad - Snippet runner.
-
jsweet - Source
transpiler to TypeScript/JavaScript.
-
Maven Wrapper -
Analogue of Gradle Wrapper for Maven, allows building projects without
installing maven.
-
Membrane Service Proxy
- Open-source, reverse-proxy framework.
-
MinimalFTP -
Lightweight, small and customizable FTP server.
-
Modern Java - A Guide to Java 8
- Popular Java 8 guide.
-
Modernizer
- Detect uses of legacy Java APIs.
-
OctoLinker -
Browser extension which allows to navigate through code on GitHub more
efficiently.
-
OpenRefine - Tool for working with
messy data: cleaning, transforming, extending it with web services and
linking it to databases.
-
PipelinR - Small
utility library for using handlers and commands with pipelines.
-
Polyglot for Maven
- Extensions for Maven 3.3.1+ that allows writing the POM model in
dialects other than XML.
-
Simple Java Mail
- Mailing with a clean and fluent API.
-
Smooks - Framework for
fragment-based message processing. (Apache-2.0 OR LGPL-3.0-or-later)
-
Togglz - Implementation of the
Feature Toggles pattern.
-
TypeTools - Tools
for resolving generic types.
-
XMLBeam - Processes
XML by using annotations or XPath within code.
-
yGuard - Obfuscation via
renaming and shrinking.
Mobile Development
Tools for creating or managing mobile applications.
-
Codename One - Cross-platform
solution for writing native mobile apps. (GPL-2.0-only WITH
Classpath-exception-2.0)
-
MobileUI - Cross-platform framework
for developing mobile apps with native UI in Java and Kotlin.
-
Multi-OS Engine - Open-source,
cross-platform engine to develop native mobile (iOS, Android, etc.)
apps.
Monitoring
Tools that monitor applications in production.
-
Automon - Combines
the power of AOP with monitoring and/or logging tools.
-
Failsafe Actuator
- Out of the box monitoring of Failsafe Circuit Breaker in Spring-Boot
environment.
-
Glowroot - Open-source Java APM.
-
inspectIT - Captures detailed
run-time information via hooks that can be changed on the fly. It
supports tracing over multiple systems via the OpenTracing API and can
correlate the data with end user monitoring.
-
Instrumental
- Real-time Java application performance monitoring. A commercial
service with free development accounts.
-
JavaMelody -
Performance monitoring and profiling.
-
Jaeger client
- Jaeger client.
-
jmxtrans - Connect to
multiple JVMs and query them for their attributes via JMX. Its query
language is based on JSON, which allows non-Java programmers to access
the JVM attributes. Supports different output writes, including
Graphite, Ganglia, and StatsD.
- Jolokia - JMX over REST.
-
Metrics - Expose
metrics via JMX or HTTP and send them to a database.
-
Datadog
- Modern monitoring & analytics.
-
nudge4j -
Remote developer console from the browser for Java 8 via bytecode
injection.
-
Pinpoint - Open-source
APM tool.
-
Prometheus -
Provides a multi-dimensional data model, DSL, autonomous server nodes
and much more.
-
SPM
- Performance monitor with distributing transaction tracing for JVM
apps.
-
Stagemonitor
- Open-source performance monitoring and transaction tracing for JVM
apps.
-
Sysmon - Lightweight
platform monitoring tool for Java VMs.
-
zipkin - Distributed tracing system
which gathers timing data needed to troubleshoot latency problems in
microservice architectures.
Native
For working with platform-specific native libraries.
-
Aparapi - Converts
bytecode to OpenCL which allows execution on GPUs.
-
JavaCPP - Provides
efficient and easy access to native C++.
-
JNA - Work with
native libraries without writing JNI. Also provides interfaces to common
system libraries.
-
JNR - Work with native
libraries without writing JNI. Also provides interfaces to common system
libraries. Same goals as JNA, but faster, and serves as the basis for
the upcoming
Project Panama.
Natural Language Processing
Libraries that specialize in processing text.
-
CogCompNLP -
Provides common annotators for plain text input. (Research and Academic
Use License)
-
CoreNLP -
Provides a set of fundamental tools for tasks like tagging, named entity
recognition, and sentiment analysis. (GPL-3.0-or-later)
-
DKPro - Collection of reusable NLP
tools for linguistic pre-processing, machine learning, lexical
resources, etc.
-
LingPipe - Toolkit for tasks
ranging from POS tagging to sentiment analysis.
Networking
Libraries for building network servers.
-
Commons-networking
- Client for server-sent events (SSE).
-
Comsat - Integrates
standard Java web-related APIs with Quasar fibers and actors.
-
Dubbo - High-performance
RPC framework.
-
Grizzly - NIO framework.
Used as a network layer in Glassfish.
-
gRPC - RPC framework
based on protobuf and HTTP/2.
-
KryoNet -
Provides a clean and simple API for efficient TCP and UDP client/server
network communication using NIO and Kryo.
-
MINA - Abstract, event-driven
async I/O API for network operations over TCP/IP and UDP/IP via Java
NIO.
-
Netty - Framework for building
high-performance network applications.
-
Drift - Easy-to-use,
annotation-based library for creating Thrift clients and serializable
types.
-
ServiceTalk -
Framework built on Netty with APIs tailored to specific protocols and
support for multiple programming paradigms.
-
sshj - Programmatically
use SSH, SCP or SFTP.
-
TLS Channel
- Implements a ByteChannel interface over SSLEngine, enabling
easy-to-use (socket-like) TLS.
-
Undertow - Web server providing both
blocking and non-blocking APIs based on NIO. Used as a network layer in
WildFly. (LGPL-2.1-only)
-
urnlib - Represent, parse
and encode URNs, as in RFC 2141. (GPL-3.0-only)
ORM
APIs that handle the persistence of objects.
-
Apache Cayenne - Provides a
clean, static API for data access. Also includes a GUI Modeler for
working with database mappings, and DB reverse engineering and
generation.
-
Doma - Database
access framework that verifies and generates source code at compile time
using annotation processing as well as native SQL templates called
two-way SQL.
-
Ebean - Provides simple and fast data
access.
-
EclipseLink -
Supports a number of persistence standards: JPA, JAXB, JCA and SDO.
-
Hibernate - Robust and widely
used, with an active community. (LGPL-2.1-only)
-
MyBatis - Couples
objects with stored procedures or SQL statements.
-
ObjectiveSql -
ActiveRecord ORM for rapid development and convention over
configuration.
-
Permazen -
Language-natural persistence layer.
-
SimpleFlatMapper
- Simple database and CSV mapper.
PaaS
Java platform as a service.
PDF
Tools to help with PDF files.
-
Apache FOP - Creates
PDFs from XSL-FO.
-
Apache PDFBox - Toolbox for
creating and manipulating PDFs.
-
Dynamic Jasper - Abstraction
layer to JasperReports. (LGPL-3.0-only)
-
DynamicReports
- Simplifies JasperReports. (LGPL-3.0-only)
-
Eclipse BIRT - Report engine
for creating PDF and other formats (DOCX, XLSX, HTML, etc) using
Eclipse-based visual editor.
-
flyingsaucer
- XML/XHTML and CSS 2.1 renderer. (LGPL-2.1-or-later)
-
iText
- Creates PDF files programmatically.
-
JasperReports
- Complex reporting engine. (LGPL-3.0-only)
-
Open HTML to PDF
- Properly supports modern PDF standards based on flyingsaucer and
Apache PDFBox.
-
OpenPDF - Open-source
iText fork. (LGPL-3.0-only & MPL-2.0)
-
Tabula - Extracts
tables from PDF files.
Tools for performance analysis, profiling and benchmarking.
-
fastThread
- Analyze and visualize thread dumps with a free cloud-based upload
interface.
-
GCeasy
- Tool to analyze and visualize GC logs. It provides a free cloud-based
upload interface.
-
honest-profiler
- Low-overhead, bias-free sampling profiler.
-
jHiccup - Logs and
records platform JVM stalls.
-
JITWatch -
Analyze the JIT compiler optimisations made by the HotSpot JVM.
-
JMH -
Harness for building, running, and analysing nano/micro/milli/macro
benchmarks written in Java and other languages targeting the JVM.
(GPL-2.0 only WITH Classpath-exception-2.0)
-
LatencyUtils
- Utilities for latency measurement and reporting.
Frameworks that are suites of multiple libraries encompassing several
categories.
Apache Commons
-
BCEL - Byte
Code Engineering Library - analyze, create, and manipulate Java class
files.
-
BeanUtils
- Easy-to-use wrappers around the Java reflection and introspection
APIs.
-
BeanUtils2
- Redesign of Commons BeanUtils.
-
BSF - Bean
Scripting Framework - interface to scripting languages, including
JSR-223.
-
Chain -
Chain of Responsibility pattern implementation.
-
ClassScan
- Find Class interfaces, methods, fields, and annotations without
loading.
-
CLI -
Command-line arguments parser.
-
CLI2 -
Redesign of Commons CLI.
-
Codec -
General encoding/decoding algorithms, e.g. phonetic, base64 or URL.
-
Collections
- Extends or augments the Java Collections Framework.
-
Compress
- Defines an API for working with tar, zip and bzip2 files.
-
Configuration
- Reading of configuration/preferences files in various formats.
-
Convert
- Commons-Convert aims to provide a single library dedicated to the task
of converting an object of one type to another.
-
CSV -
Component for reading and writing comma separated value files.
-
Daemon -
Alternative invocation mechanism for unix-daemon-like java code.
-
DBCP -
Database connection pooling services.
-
DbUtils
- JDBC helper library.
-
Digester
- XML-to-Java-object mapping utility.
-
Email -
Library for sending e-mail from Java.
-
Exec - API
for dealing with external process execution and environment management
in Java.
-
FileUpload
- File upload capability for your servlets and web applications.
-
Finder -
Java library inspired by the UNIX find command.
-
Flatfile
- Java library for working with flat data structures.
-
Functor
- Function that can be manipulated as an object, or an object
representing a single, generic function.
-
Graph -
General purpose graph APIs and algorithms.
-
I18n -
Adds the feature of localized message bundles that consist of one or
many localized texts that belong together.
-
Id - Id is a
component used to generate identifiers.
-
Imaging
- Image library.
-
IO -
Collection of I/O utilities.
-
Javaflow
- Continuation implementation to capture the state of the application.
-
JCI - Java
Compiler Interface.
-
JCS - Java
Caching System.
-
Jelly -
XML based scripting and processing engine.
-
Jexl -
Expression language which extends the Expression Language of the JSTL.
-
JNet -
JNet allows to use dynamically register url stream handlers through the
java.net API.
-
JXPath -
Utilities for manipulating Java Beans using the XPath syntax.
-
Lang -
Provides extra functionality for classes in java.lang.
-
Logging
- Wrapper around a variety of logging API implementations.
-
Math -
Lightweight, self-contained mathematics and statistics components.
-
Monitoring
- Monitoring aims to provide a simple but extensible monitoring solution
for Java applications.
-
Nabla -
Nabla provides automatic differentiation classes that can generate
derivative of any function implemented in the Java language.
-
Net -
Collection of network utilities and protocol implementations.
-
OGNL -
Object-graph navigation language.
-
OpenPGP
- Interface to signing and verifying data using OpenPGP.
-
Performance
- Small framework for microbenchmark clients, with implementations for
Commons DBCP and Pool.
-
Pipeline
- Provides a set of pipeline utilities designed around work queues that
run in parallel to sequentially process data objects.
-
Pool -
Generic object pooling component.
-
Proxy -
Library for creating dynamic proxies.
-
RDF -
Common implementation of RDF 1.1 that could be implemented by systems on
the JVM.
-
RNG -
Commons Rng provides implementations of pseudo-random numbers
generators.
-
SCXML -
Implementation of the State Chart XML specification aimed at creating
and maintaining a Java SCXML engine.
-
Validator
- Framework to define validators and validation rules in an xml file.
-
VFS -
Virtual File System component for treating files, FTP, SMB, ZIP and such
like as a single logical file system.
-
Weaver -
Provides an easy way to enhance (weave) compiled bytecode.
Other
-
CUBA Platform - High-level
framework for developing enterprise applications with a rich web
interface, based on Spring, EclipseLink and Vaadin.
-
Light-4J - Fast,
lightweight and productive microservices framework with built-in
security.
-
Orienteer -
Open-source business application platform for rapid
configuration/development of CRM, ERP, LMS and other applications.
-
Spring - Provides many
packages for dependency injection, aspect-oriented programming,
security, etc.
Processes
Libraries that help the management of operating system processes.
-
ch.vorburger.exec
- Convenient API around Apache Commons Exec.
-
zt-exec -
Provides a unified API to Apache Commons Exec and ProcessBuilder.
-
zt-process-killer
- Stops processes started from Java or the system processes via PID.
Reactive libraries
Libraries for developing reactive applications.
-
Akka - Toolkit and runtime for building
concurrent, distributed, fault-tolerant and event-driven applications.
-
Reactive Streams
- Provides a standard for asynchronous stream processing with
non-blocking backpressure.
-
Reactor - Library
for building reactive fast-data applications.
-
RxJava - Allows for
composing asynchronous and event-based programs using observable
sequences.
-
vert.x - Polyglot event-driven
application framework.
REST Frameworks
Frameworks specifically for creating RESTful services.
-
Dropwizard -
Opinionated framework for setting up modern web applications with Jetty,
Jackson, Jersey and Metrics.
-
Elide - Opinionated framework for JSON-
or GraphQL-APIs based on a JPA data model.
-
Jersey - JAX-RS reference
implementation.
-
Microserver -
Convenient, extensible microservices plugin system for Spring &
Spring Boot. With more than 30 plugins and growing, it supports both
micro-monolith and pure microservices styles.
-
Rapidoid - Simple, secure and
extremely fast framework consisting of an embedded HTTP server, GUI
components and dependency injection.
-
rest.li - Framework
for building robust, scalable RESTful architectures using typesafe
bindings and asynchronous, non-blocking IO with an end-to-end developer
workflow that promotes clean practices, uniform interface design and
consistent data modeling.
-
RESTEasy - Fully certified and
portable implementation of the JAX-RS specification.
-
RestExpress -
Thin wrapper on the JBoss Netty HTTP stack that provides scaling and
performance.
-
Restlet Framework
- Pioneering framework with powerful routing and filtering capabilities,
and a unified client and server API.
-
Spark - Sinatra inspired framework.
-
Crnk - Implementation of the JSON API
specification to build resource-oriented REST endpoints with sorting,
filtering, paging, linking, object graphs, type-safety, bulk updates,
integrations and more.
-
springdoc-openapi
- Automates the generation of API documentation using Spring Boot
projects.
-
Swagger - Standard, language-agnostic
interface to REST APIs.
Science
Libraries for scientific computing, analysis and visualization.
-
BioJava - Facilitates processing
biological data by providing algorithms, file format parsers, sequencing
and 3D visualization commonly used in bioinformatics.
-
Chart-FX -
Scientific charting library with focus on performance optimised
real-time data visualisation at 25 Hz update rates for large data sets.
-
DataMelt - Environment for
scientific computation, data analysis and data visualization.
(GPL-3.0-or-later)
-
Erdos -
Modular, light and easy graph framework for theoretic algorithms.
-
GraphStream - Library for
modeling and analyzing dynamic graphs.
-
JFreeChart - 2D chart
library for Swing, JavaFX and server-side applications. (LGPL-2.1-only)
-
JGraphT - Graph library
that provides mathematical graph-theory objects and algorithms.
-
JGraphX - Library for
visualizing (mainly Swing) and interacting with node-edge graphs.
-
LogicNG - Library for
creating, manipulating and solving Boolean and Pseudo-Boolean formulas.
-
Mines Java Toolkit -
Library for geophysical scientific computation, visualization and
digital signal analysis.
-
Morpheus -
Provides a versatile two-dimensional memory efficient tabular data
structure called a DataFrame to enable efficient in-memory analytics for
scientific computing on the JVM.
-
Orson-Charts -
Generates a wide variety of 3D charts that can be displayed with Swing
and JavaFX or exported to PDF, SVG, PNG and JPEG. (GPL-3.0-only)
-
Tablesaw - Includes
a data-frame, an embedded column store, and hundreds of methods to
transform, summarize, or filter data.
-
XChart - Light-weight
library for plotting data. Many customizable chart types are available.
Search
Engines that index documents for search and analysis.
-
Apache Lucene -
High-performance, full-featured, cross-platform, text search engine
library.
-
Apache Solr - Enterprise
search engine optimized for high-volume traffic.
-
Elasticsearch - Distributed,
multitenant-capable, full-text search engine with a RESTful web
interface and schema-free JSON documents.
-
Indexer4j - Simple
and light full text indexing and searching library.
Security
Libraries that handle security, authentication, authorization or
session management.
-
Apache Shiro - Performs
authentication, authorization, cryptography and session management.
-
Bouncy Castle -
All-purpose cryptographic library and JCA provider offering a wide range
of functions, from basic helpers to PGP/SMIME operations.
-
Cryptomator - Multiplatform,
transparent, client-side encryption of files in the cloud.
(GPL-3.0-only)
-
Hdiv - Runtime application
that repels application security risks included in the OWASP Top 10,
including SQL injection, cross-site scripting, cross-site request
forgery, data tampering, and brute force attacks.
-
jjwt - JSON web token for
Java and Android.
-
Jwks RSA - JSON Web
Key Set parser.
-
Kalium - Binding for
the Networking and Cryptography (NaCl) library.
-
Keycloak - Integrated SSO and IDM
for browser apps and RESTful web services.
-
Keywhiz - System for
distributing and managing secrets.
-
Nbvcxz - Advanced
password strength estimation.
-
OACC - Provides permission-based
authorization services.
-
OTP-Java -
One-time password generator library according to RFC 4226 (HOTP) and RFC
6238 (TOTP).
-
pac4j - Security engine.
-
Password4j -
User-friendly cryptographic library that supports Argon2, Bcrypt,
Scrypt, PBKDF2 and various other cryptographic hash functions.
-
SecurityBuilder
- Fluent Builder API for JCA and JSSE classes and especially X.509
certificates.
-
SSLContext-Kickstart
- High-level SSL context builder for configuring HTTP clients with
SSL/TLS.
-
Themis -
Multi-platform high-level cryptographic library provides easy-to-use
encryption for protecting sensitive data: secure messaging with forward
secrecy, secure data storage (AES256GCM); suits for building end-to-end
encrypted applications.
-
Tink - Provides a simple
and misuse-proof API for common cryptographic tasks.
Serialization
Libraries that handle serialization with high efficiency.
-
FlatBuffers -
Memory-efficient serialization library that can access serialized data
without unpacking and parsing it.
-
FST
- JDK-compatible, high-performance object graph serialization.
-
Kryo - Fast and
efficient object graph serialization framework.
-
MessagePack -
Efficient binary serialization format.
-
PHP Serializer
- Serializing objects in the PHP serialization format.
Server
Servers specifically used to deploy applications.
-
Apache Tomcat - Robust,
all-round server for Servlet and JSP.
-
Apache TomEE - Tomcat plus Java
EE.
-
Jetty - Provides a Web
server and javax.servlet container, plus support for HTTP/2, WebSocket,
OSGi, JMX, JNDI, JAAS and many other integrations.
-
nanohttpd - Tiny,
easily embeddable HTTP server.
-
WildFly - Formerly known as JBoss
and developed by Red Hat with extensive Java EE support. (LGPL-2.1-only)
Template Engine
Tools that substitute expressions in a template.
-
Freemarker - Library to
generate text output (HTML web pages, e-mails, configuration files,
source code, etc.) based on templates and changing data.
-
Handlebars.java
- Logicless and semantic Mustache templates.
-
Jade4J - Implementation
of Pug (formerly known as Jade).
-
jte - Compiles to classes and
uses an easy syntax, several features to make development easier and
provides fast execution and a small footprint.
-
Jtwig - Modular,
configurable and fully tested template engine.
-
Pebble - Inspired by Twig and
separates itself with its inheritance feature and its easy-to-read
syntax. It ships with built-in autoescaping for security and it includes
integrated support for internationalization.
-
Rocker - Optimized,
memory efficient and speedy template engine producing statically typed,
plain objects.
-
StringTemplate -
Template engine for generating source code, web pages, emails, or any
other formatted text output.
-
Thymeleaf - Aims to be a
substitute for JSP and works for XML files.
Testing
Tools that test from model to the view.
Asynchronous
Tools that simplify testing asynchronous services.
-
Awaitility - DSL
for synchronizing asynchronous operations.
-
ConcurrentUnit
- Toolkit for testing multi-threaded and asynchronous applications.
-
GreenMail - In-memory
email server for integration testing. Supports SMTP, POP3 and IMAP
including SSL. (GPL-2.0-only)
-
Hoverfly Java
- Native bindings for Hoverfly, a proxy which allows you to simulate
HTTP services.
-
Karate - DSL that
combines API test-automation, mocks and performance-testing making
testing REST/HTTP services easy.
-
REST Assured
- DSL for easy testing of REST/HTTP services.
BDD
Testing for the software development process that emerged from TDD and
was heavily influenced by DDD and OOAD.
-
Cucumber -
Provides a way to describe features in a plain language which customers
can understand.
-
Cukes-REST - Collection of
Gherkin steps for REST-service testing using Cucumber.
-
J8Spec - Follows a
Jasmine-like syntax.
-
JBehave - Extensively configurable
framework that describes stories.
-
JGiven - Provides a fluent API which
allows for simpler composition.
-
Lamdba Behave
- Aims to provide a fluent API to write tests in long and descriptive
sentences that read like plain English.
-
Serenity BDD
- Automated Acceptance testing and reporting library that works with
Cucumber, JBehave and JUnit to make it easier to write high quality
executable specifications.
Fixtures
Everything related to the creation and handling of random data.
Frameworks
Provide environments to run tests for a specific use case.
-
ArchUnit - Test library
for specifying and asserting architecture rules.
-
Apache JMeter - Functional
testing and performance measurements.
-
Arquillian - Integration and
functional testing platform for Java EE containers.
-
Citrus - Integration testing
framework that focuses on both client- and server-side messaging.
-
Gatling - Load testing tool designed
for ease of use, maintainability and high performance.
-
JUnit - Common testing
framework.
-
jqwik - Engine for property-based
testing built on JUnit 5.
-
Pact JVM -
Consumer-driven contract testing.
-
PIT - Fast mutation-testing framework
for evaluating fault-detection abilities of existing JUnit or TestNG
test suites.
Matchers
Libraries that provide custom matchers.
-
AssertJ -
Fluent assertions that improve readability.
-
Hamcrest - Matchers that
can be combined to create flexible expressions of intent.
-
JSONAssert - Simplifies
testing JSON strings.
-
Truth - Google’s fluent assertion and
proposition framework.
-
XMLUnit - Simplifies
testing for XML output.
Miscellaneous
Other stuff related to testing.
-
junit-dataprovider
- TestNG-like data provider/runner for JUnit.
-
LogCaptor - Captures
log entries for unit testing purposes.
-
Mutability Detector
- Reports whether instances of a given class are immutable.
-
raml-tester - Tests
if a request/response matches a given RAML definition.
-
TestContainers
- Provides throwaway instances of common databases, Selenium web
browsers, or anything else that can run in a Docker container.
-
pojo-tester - Automatically performs
tests on basic POJO methods. (LGPL-3.0-only)
Mocking
Tools which mock collaborators to help testing single, isolated
units.
-
JMockit - Integration testing,
API mocking and faking, and code coverage.
-
Mockito - Mocking
framework that lets you write tests with a clean and simple API.
-
MockServer - Allows mocking of
systems integrated with HTTPS.
-
Moco - Concise web
services for stubs and mocks.
-
PowerMock - Mocks
static methods, constructors, final classes and methods, private
methods, and removal of static initializers.
-
WireMock - Stubs and mocks web
services.
Utility
Libraries which provide general utility functions.
-
Arthas - Allows to
troubleshoot production issues for applications without modifying code
or restarting servers.
-
bucket4j
- Rate limiting library based on token-bucket algorithm.
-
cactoos - Collection
of object-oriented primitives.
-
CRaSH - Provides a shell into a JVM
that’s running CRaSH. Used by Spring Boot and others.
(LGPL-2.1-or-later)
-
Dex - Java/JavaFX tool
capable of powerful ETL and data visualization.
-
Embulk - Bulk data loader
that helps data transfer between various databases, storages, file
formats, and cloud services.
-
fswatch
- Micro library to watch for directory file system changes, simplifying
java.nio.file.WatchService.
-
Gephi - Cross-platform for
visualizing and manipulating large graph networks. (GPL-3.0-only)
-
Guava - Collections,
caching, primitives support, concurrency libraries, common annotations,
string processing, I/O, and more.
-
JADE - Framework and environment for
building and debugging multi-agent systems. (LGPL-2.0-only)
-
Java Diff Utils
- Utilities for text or data comparison and patching.
-
JavaVerbalExpressions
- Library that helps with constructing difficult regular expressions.
-
JGit - Lightweight, pure
Java library implementing the Git version control system.
-
minio-java - Provides
simple APIs to access any Amazon S3-compatible object storage server.
-
Protégé - Provides an
ontology editor and a framework to build knowledge-based systems.
-
Underscore-java
- Port of Underscore.js functions.
Version Managers
Utilities that help create the development shell environment and switch
between different Java versions.
-
jabba - Java Version
Manager inspired by nvm. Supports macOS, Linux and Windows.
-
jenv - Java Version Manager
inspired by rbenv. Can configure globally or per project. Tested on
Debian and macOS.
-
SDKMan - Java Version
Manager inspired by RVM and rbenv. Supports UNIX-based platforms and
Windows.
Web Crawling
Libraries that analyze the content of websites.
-
Apache Nutch - Highly extensible,
highly scalable web crawler for production environments.
-
Crawler4j - Simple
and lightweight web crawler.
-
jsoup - Scrapes, parses, manipulates and
cleans HTML.
-
StormCrawler - SDK for building
low-latency and scalable web crawlers.
-
webmagic - Scalable
crawler with downloading, url management, content extraction and
persistent.
Web Frameworks
Frameworks that handle the communication between the layers of a web
application.
-
ActiveJ - Lightweight asynchronous
framework built from the ground up for developing high-performance web
applications.
-
Apache Tapestry -
Component-oriented framework for creating dynamic, robust, highly
scalable web applications.
-
Apache Wicket - Component-based
web application framework similar to Tapestry, with a stateful GUI.
-
Blade - Lightweight,
modular framework that aims to be elegant and simple.
-
Bootique - Minimally opinionated
framework for runnable apps.
-
Firefly - Asynchronous
framework for rapid development of high-performance web application.
-
Jooby - Scalable, fast and modular
micro-framework that offers multiple programming models.
-
Ninja - Full-stack web
framework.
-
Pippo - Small, highly modularized,
Sinatra-like framework.
-
Play - Built on Akka, it
provides predictable and minimal resource consumption (CPU, memory,
threads) for highly-scalable applications in Java and Scala.
-
PrimeFaces - JSF framework with
both free and commercial/support versions and frontend components.
-
Ratpack - Set of libraries that
facilitate fast, efficient, evolvable and well-tested HTTP applications.
-
Takes - Opinionated web
framework which is built around the concepts of True Object-Oriented
Programming and immutability.
-
Vaadin - Event-driven framework that
uses standard web components. Server-side architecture with Ajax on the
client side.
Workflow Orchestration Engines
-
Cadence - Stateful code
platform from Uber.
-
Temporal - Microservice orchestration
platform, forked from Cadence but gRPC based.
Resources
Awesome Lists
Awesome lists related to the Java & JVM ecosystem.
Communities
Active discussions.
Frontends
Websites that provide a frontend for this list. Please note, there
won’t be an official website. We don’t associate with a particular
website and everybody is allowed to create one.
Influential Books
Books that made a big impact and are still worth reading.
Podcasts and Screencasts
Something to look at or listen to while programming.
Active accounts to follow. Descriptions from Twitter.
-
Adam Bien - Freelance author,
JavaOne Rockstar speaker, consultant, Java Champion.
-
Aleksey Shipilëv -
Performance geek, benchmarking czar, concurrency bug hunter.
-
Antonio Goncalves - Java
Champion, JUG Leader, Devoxx France, Java EE 6/7, JCP, Author.
-
Arun Gupta - Java Champion,
JavaOne Rockstar, JUG Leader, Devoxx4Kids-er, VP of Developer Advocacy
at Couchbase.
-
Brian Goetz - Java Language
Architect at Oracle.
-
Bruno Borges - Product
Manager/Java Jock at Oracle.
-
Chris Richardson -
Software architect, consultant, and serial entrepreneur, Java Champion,
JavaOne Rock Star, *POJOs in Action- author.
-
Ed Burns - Consulting Member
of the Technical Staff at Oracle.
-
Eugen Paraschiv - Author of
the Spring Security Course.
-
Heinz Kabutz - Java
Champion, speaker, author of The Java Specialists’ Newsletter,
concurrency performance expert.
-
Holly Cummins -
Technical Lead of IBM London’s Bluemix Garage, Java Champion, developer,
author, JavaOne rockstar.
-
James Weaver -
Java/JavaFX/IoT developer, author and speaker.
-
Java EE - Official Java EE
Twitter account.
-
Java Magazine - Official
Java Magazine account.
-
Java - Official Java Twitter
account.
-
Javin Paul - Well-known Java
blogger.
-
Josh Long - Spring Advocate
at Pivotal, author of O’Reilly’s Cloud Native Java- and Building
Microservices with Spring Boot, JavaOne Rock Star.
-
Lukas Eder - Java Champion,
speaker, JUG.ch co-leader, Founder and CEO Data Geekery (jOOQ).
-
Mani Sarkar - Java
champion, Polyglot, Software Crafter involved with
@graalvm, AI/ML/DL,
Data Science, Developer communities, speaker & blogger. Creator of
couple of awesome lists like this one.
-
Mario Fusco - RedHatter,
JUG coordinator, frequent speaker and author.
-
Mark Heckler - Pivotal
Principal Technologist and Developer Advocate, conference speaker,
published author, and Java Champion, focusing on Internet of Things and
the cloud.
-
Mark Reinhold - Chief
Architect, Java Platform Group, Oracle.
-
Markus Eisele - Java EE
evangelist, Red Hat.
-
Martijn Verburg - London JUG
co-leader, speaker, author, Java Champion and much more.
-
Martin Thompson - Pasty faced
performance gangster.
-
Monica Beckwith - Performance
consultant, JavaOne Rock Star.
-
OpenJDK - Official OpenJDK
account.
-
Peter Lawrey - Peter
Lawrey, Java performance expert.
-
Randy Shoup - Stitch Fix VP
Engineering, speaker, JavaOne Rock Star.
-
Reza Rahman - Java
EE/GlassFish/WebLogic evangelist, author, speaker, open source hacker.
-
Sander Mak - Java Champion,
author.
-
Simon Maple - Java Champion,
VirtualJUG founder, LJC leader, RebelLabs author.
-
Spencer Gibb - Software
Engineer, Dad, Geek, Co-founder and Lead of Spring Cloud Core
@pivotal.
-
Stephen Colebourne - Java
Champion, speaker.
-
Trisha Gee - Java Champion
and speaker.
-
Venkat Subramaniam - Author,
University of Houston professor, MicroSoft MVP award recipient, JavaOne
Rock Star, Java Champion.
-
Vlad Mihalcea - Java
Champion working on Hypersistence Optimizer, database aficionado, author
of High-Performance Java Persistence book.
Websites
Sites to read.
Contributing
Contributions are very welcome!
Please have a look at the
CONTRIBUTING
guidelines and
the validation tools.