Your first time on this page? Allow me to give some explanations.
A curated list of awesome frameworks, libraries and software for the Java programming language.
Here you can see meta information about this topic like the time we last updated this page, the original creator of the awesome list and a link to the original GitHub repository.
Thank you akullpp & contributors
View Topic on GitHub:
Search for resources by name or description.
Simply type in what you are looking for and the results will be filtered on the fly.
Further filter the resources on this page by type (repository/other resource), number of stars on GitHub and time of last commit in months.
dOOv (Domain Object Oriented Validation) a fluent API for type-safe bean validation and mapping
Dozer is a Java Bean to Java Bean mapper that recursively copies data from one object to another.
Elegance, high performance and robustness all in one java bean mapper
An annotation processor for generating type-safe bean mappers
Intelligent object mapping
Simpler, better and faster Java bean mapping framework
A declarative mapping library to simplify testable object mappings.
Selma Java bean mapping that compiles
A fast build system that encourages the creation of small, reusable modules over a variety of platforms and languages.
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.
A Java 8+ Jar & Android APK Reverse Engineering Suite (Decompiler, Editor, Debugger & More)
cglib - Byte Code Generation Library is high level API to generate and transform Java byte code. It is used by AOP, testing, data access frameworks to generate dynamic proxy objects and intercept field access.
Java bytecode engineering toolkit
Mixin is a trait/mixin and bytecode weaving framework for Java using ASM
A project to cause (controlled) destruction on your jvm application
A high performance caching library for Java 8
Several implementations of a text table, originally using ASCII and UTF-8 characters for borders.
Java annotation-based framework for parsing Git like command line structures
Jansi is a small java library that allows you to use ANSI escape sequences to format your console output which works even on windows.
ASCII renderer in pure java with no external dependencies
The jbock command line parser
JLine is a Java library for handling console input.
A library for creating interactive console applications in Java
Java library for creating text-based GUIs
Command-line argument-parsing framework with custom types and validation via implementing interfaces.
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.
Fluent parser that uses the POSIX#getopt and GNU#getopt_long syntaxes.
Checkstyle is a development tool to help programmers write Java code that adheres to a coding standard. By default it supports the Google Java Style Guide and Sun Code Conventions, but is highly configurable. It can be invoked with an ANT task and a command line program.
Catch common Java mistakes as compile-time errors
A static analyzer for Java, C, C++, and Objective-C
A tool to help eliminate NullPointerExceptions (NPEs) in your Java code with low build-time overhead
An extensible multilanguage static code analyzer.
SonarSource Static Analyzer for Java Code Quality and Security
Spoon is a metaprogramming library to analyze and transform Java source code (up to Java 15). is made with , and . It parses source files to build a well-designed AST with powerful analysis and transformation API.
SpotBugs is FindBugs' successor. A tool for static analysis to look for bugs in Java code.
Static code analysis with Neo4J-based query language. (GPL-3.0-only)
Relies on source-code instrumentation instead of bytecode instrumentation.
Relies on offline (or static) bytecode instrumentation and class loading to collect code coverage metrics. (GPL-2.0-only)
adt4j - Algebraic Data Types for Java
A collection of source code generators for Java.
Automatic generation of the Builder pattern for Java
A Java API for generating .java source files.
JHipster is a development platform to quickly generate, develop, & deploy modern web applications & microservice architectures.
Annotation processors to generate simple, safe and consistent value objects.
Small framework that adds queryable properties to Java, enhancing JavaBeans.
Parser generator that generates top-down parsers. Allows lexical state switching and permits extended BNF specifications.
Highly-available version-controlled service configuration repository based on Git, ZooKeeper and HTTP/2
Modern configuration library for distributed apps written in Java.
configuration library for JVM languages using HOCON files
A simple configuration library for Java applications providing a node structure, a variety of formats, and tools for transformation
A twelve-factor configuration (12factor.net/config) library for Java 8+
KickAss Configuration. An annotation-based configuration system for Java and Kotlin
Get rid of the boilerplate code in properties based configuration.
Constraint Satisfaction Problem Solver
Java Constraint Programming solver
Off-the-shelf constraint satisfaction problem solver that uses constraint programming techniques.
(DEPRECATED) -- moved under: https://github.com/FasterXML/jackson-dataformats-text
uniVocity-parsers is a suite of extremely fast and reliable parsers for Java. It provides a consistent interface for handling different file formats, and a solid framework for the development of new parsers.
A big, fast and persistent queue based on memory mapped file.
Union, intersection, and set cardinality in loglog space
A Persistent Java Collections Library
Protocol Buffers - Google's data interchange format
A better compressed bitset in Java
Simple Binary Encoding (SBE) - High Performance Message Codec
A lightning fast, transactional, file-based FIFO for Android and Java.
gRPC and protocol buffers for Android, Kotlin, and Java.
Data interchange format with dynamic typing, untagged data, and absence of manually assigned IDs.
Fast and efficient columnar storage format for Hadoop-based workloads.
Columnar storage format based on assembly algorithms from Google's paper on Dremel.
The official ArangoDB Java driver.
Replicate your Key Value Store across your network, with consistency, persistance and performance.
eXist Native XML Database and Application Platform
FlexyPool adds metrics and failover strategies to a given Connection Pool, allowing it to resize on demand.
光 HikariCP・A solid, high-performance, JDBC connection pool at last.
A blazingly small and sane redis java client
Elasticsearch Java Rest Client.
Java binding for etcd
LINQ-style queries for Java 8
Distributed ID Generate Service
MariaDB Embedded in Java JAR
Model Layer Implementation for a J2EE Pull MVC WebApp
Build JPA Criteria queries using a Stream-like API
Realm is a mobile database: a replacement for SQLite & ORMs
Redisson - Redis Java client with features of In-Memory Data Grid. Over 50 Redis based Java objects and services: Set, Multimap, SortedSet, Map, List, Queue, Deque, Semaphore, Lock, AtomicLong, Map Reduce, Publish / Subscribe, Bloom filter, Spring Cache, Tomcat, Scheduler, JCache API, Hibernate, MyBatis, RPC, local cache ...
requery - modern SQL based query & persistence for Java / Kotlin / Android
Speedment is a Stream ORM Java Toolkit and Runtime
Transactional schema-less embedded database used by JetBrains YouTrack and JetBrains Hub.
Dynamic data management framework. It contains many of the pieces that comprise a typical database management system.
Distributed, schema on-the-fly, ANSI SQL query engine for Big Data exploration.
High-performance relational database layer over HBase for low-latency applications.
Database-independent library for tracking, managing and applying database schema changes.
Thin JDBC wrapper that simplifies database access and provides simple mapping of ResultSets to POJOs.
Date and Time
A Java-based calendar converter
A Java library for parsing and building iCalendar data models
Provides additional date-time classes that complement those in JDK 8
Advanced date, time and interval library for Java with sun/moon-astronomy and calendars like Chinese, Coptic, Ethiopian, French Republican, Hebrew, Hijri, Historic Christian, Indian National, Japanese, Julian, Korean, Minguo, Persian, Thai, Vietnamese
Lightweight dependency injection for Java and Android (JSR-330)
Governator is a library of extensions and utilities that enhance Google Guice to provide: classpath scanning and automatic binding, lifecycle management, configuration to field mapping, field validation and parallelized object warmup.
Guice (pronounced 'juice') is a lightweight dependency injection framework for Java 6 and above, brought to you by Google.
JayWire Dependency Injection
A library that simplifies error handling for Functional Programming in Java
Java unlimited redefinition of classes at runtime.
Java 1-15 Parser and Abstract Syntax Tree for Java, including preview features to Java 13
old repository --> this is now integrated in https://github.com/javaparser/javaparser
Manifold plugs into Java to supplement it with powerful features, from Type-safe Metaprogramming (direct access to GraphQL, JSON, XML, etc.), Extension Methods, Operator Overloading, and Unit Expressions to an integrated Template Engine and a Preprocessor. All fully supported in IntelliJ IDEA and Android Studio. Simply add Manifold to your project and begin taking advantage of it.
SneakyThrow is a Java library to ignore checked exceptions
JVM modification that allows unlimited redefinition of loaded classes at runtime. (GPL-2.0-only)
Allows checked exceptions in functional interfaces and converts exceptions to Optional return.
A circuit breaker design pattern for dropwizard
Fault tolerance and resilience patterns for the JVM
Open Source In-Memory Data Grid
Resilience4j is a fault tolerance library designed for Java8 and functional programming
ScaleCube Services is a high throughput, low latency reactive microservices library built to scale. it features: API-Gateways, service-discovery, service-load-balancing, the architecture supports plug-and-play service communication modules and features. built to provide performance and low-latency real-time stream-processing. its open and designed to accommodate changes. (no sidecar in a form of broker or any kind)
Zuul is a gateway service that provides dynamic routing, monitoring, resiliency, security, and more.
In-memory data management system that provides reliable asynchronous event notifications and guaranteed message delivery.
Coordination service with distributed configuration, synchronization, and naming registry for large distributed systems.
JTA Transaction Manager
Seata is an easy-to-use, high-performance, open source distributed transaction solution.
Provides transactions for REST, SOA and microservices with support for JTA and XA.
Dead-Simple Packaging and Deployment for JVM Apps
Download, Install, Update
Gradle/Maven plugin to package Java applications as native Windows, Mac OS X, or GNU/Linux executables and create installers for them.
Build optimized Java runtimes in your browser!
Packages your JAR, assets and a JVM for distribution on Windows, Linux and Mac OS X
maven plugin for making chmod +x jar files
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.
Generate and read big Excel files quickly
Simple, efficient Excel to POJO library for Java
Supports OOXML (XLSX, DOCX, PPTX) as well as OLE2 (XLS, DOC or PPT).
API for document format conversion using third-party converters such as MS Word.
Open source software platform for trading venues
Low-latency Financial Information Exchange (FIX) engine for the JVM
Java client library for the Square Connect v2 API
Java library for the Stripe API.
a concolic testing engine for Java
JPF is an extensible software analysis framework for Java bytecode. jpf-core is the basis for all JPF projects; you always need to install it. It contains the basic VM and model checking infrastructure, and can be used to check for concurrency defects like deadlocks, and unhandled exceptions like NullPointerExceptions and AssertionErrors.
Pluggable type systems. Includes nullness types, physical units, immutability types and more. (GPL-2.0-only WITH Classpath-exception-2.0)
Detects likely program invariants and generates JML specs based on those invariants.
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)
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)
An advanced, but easy to use, platform for writing functional applications in Java 8.
Java 8 annotation processor and framework for deriving algebraic data types constructors, pattern-matching, folds, optics and typeclasses.
jOOλ - The Missing Parts in Java 8 jOOλ improves the JDK libraries in areas where the Expert Group's focus was elsewhere. It adds tuple support, function support, and a lot of additional functionality around sequential Streams. The JDK 8's main efforts (default methods, lambdas, and the Stream API) were focused around maintaining backwards compatibility and implementing a functional API for parallelism.
Stream utilities for Java 8
Enhancing Java Stream API
Implements numerous basic and advanced programming abstractions that assist composition-oriented development.
Geohash utitlies in java
Open source routing engine for OpenStreetMap. Use it as Java library or server.
Vector map library and writer - running on Android and Desktop.
LocationTech Spatial4j: A Geospatial Library for Java
Visual layout tool for JavaFX applications.
High Performance data structures and utility methods for Java
Eclipse Collections is a collections framework for Java with optimized data structures and a rich, functional and fluent API.
Java Collections till the last breadcrumb of memory and performance
Asynchronous Http and WebSocket Client library for Java
Feign makes writing java http clients easier
Google HTTP Client Library for Java
⚗️ Lightweight HTTP extensions for Java 11
Microservice query language
Ribbon is a Inter Process Communication (remote procedure calls) library with built in software load balancers. The primary usage model involves REST calls with various serialization scheme support.
Client-side response routing for Spring
Unirest in Java: Simplified, lightweight HTTP client library.
A toolset of low level Java components focused on HTTP and associated protocols.
HATEOAS with HAL for Java
JSON-LD implementation for Java
Java library for the Siren Hypermedia Type Specification
Popular open-source IDE, mainly for Java but with plugin support for a wide array of languages and platforms. ![Open-Source Software][OSS Icon] ![Freeware][Freeware Icon]
Created to provide software visualizations that work in conjunction with the debugger such as Control Structure Diagrams, UML class diagrams and Object Viewer.
Provides integration for several Java SE and EE features, from database access to HTML5.
Simple Java image-scaling library implementing Chris Campbell's incremental scaling algorithm as well as Java2D's "best-practices" image-scaling techniques.
Java JNA wrapper for Tesseract OCR API
Thumbnailator - a thumbnail generation library for Java
TwelveMonkeys ImageIO: Additional plug-ins and extensions for Java's ImageIO
ZXing ("Zebra Crossing") barcode scanning library for Java, Android
Published on Maven Central and jCenter Java 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.
An uber-fast, ultra-lightweight, parallelized Java classpath scanner and module scanner.
jOOR - Fluent Reflection in Java jOOR is a very simple fluent API that gives access to your Java Class structures in a more intuitive way. The JDK's reflection APIs are hard and verbose to use. Other languages have much simpler constructs to access type meta information at runtime. Let us make Java reflection better.
High performance Java reflection
Java runtime metadata analysis
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.
An extremely easy way to perform background processing in Java. Backed by persistent storage. Open and free for commercial use.
Code for Quartz Scheduler
A Light-weight Job Scheduling Framework
A simple Java Scheduler library with a minimal footprint and a straightforward API
Persistent cluster-friendly scheduler for Java
The simple, stupid batch framework for Java
Distributed lock for your scheduled tasks
High performance JVM JSON library
A Java serialization/deserialization library to convert Java Objects into JSON and back
High-performance JSON parser
Set of support modules for Java 8 datatypes (Optionals, date/time) and features (parameter names)
Extension module to properly support datatypes of javax.money
Main Portal page for the Jackson project
Convert Java to JSON. Convert JSON to Java. Pretty print JSON. Java JSON serializer.
Screaming fast JSON parsing and serialization library for Android.
A modern JSON library for Kotlin and Java.
Eclipse Yasson project
A fast JSON parser/generator for Java.
JSON to JSON transformation library written in Java.
Java JsonPath implementation
A streaming JsonPath processor in Java
JVM and JDK
[INACTIVE] Avian is a lightweight virtual machine and class library designed to provide a useful subset of Java's features, suitable for building self-contained applications.
Alibaba Dragonwell8 JDK
GraalVM: Run Programs Faster Anywhere
Eclipse OpenJ9: A Java Virtual Machine for OpenJDK that's optimized for small footprint, fast start-up, and high throughput. Builds on Eclipse OMR (https://github.com/eclipse/omr) and combines with the Extensions for OpenJDK for OpenJ9 repo.
Write once run anywhere native mobile apps using with Java 8 or Kotlin. Supports iOS (iPhone/iPad), Android, Windows (UWP) & others
Community-driven OpenJDK builds, including both HotSpot and OpenJ9.
No-cost, multiplatform, production-ready distribution of OpenJDK by Amazon. (GPL-2.0-only WITH Classpath-exception-2.0)
Built from OpenJDK, thoroughly tested and passed the JCK. (GPL-2.0-only WITH Classpath-exception-2.0)
Open JDK community home. (GPL-2.0-only WITH Classpath-exception-2.0)
RedHat's OpenJDK distribution. (GPL-2.0-only WITH Classpath-exception-2.0)
SAP's no-cost, rigorously tested and JCK-verified OpenJDK friendly fork. (GPL-2.0-only WITH Classpath-exception-2.0)
An extensible Java library for HTTP request and response logging
P6Spy is a framework that enables database data to be seamlessly intercepted and logged with no code changes to the application.
Best-of-breed OpenTracing utilities, instrumentations and extensions
Complete rewrite with a powerful plugin and configuration architecture.
graylog2](https://twitter.com/graylog2) | - | Field-tested open source data analytics system used and trusted all around the world. Search your logs, create charts, send reports and be alerted when something happens. All running on the existing JVM in your datacenter. |
Analyzes and visualizes log files. Some features require payment.
Robust logging library with interesting configuration options via Groovy.
Java Statistical Analysis Tool, a Java library for Machine Learning
Oryx 2: Lambda architecture on Apache Spark, Apache Kafka for real-time large scale machine learning
Stream Processing and Complex Event Processing Engine
Statistical Machine Intelligence & Learning Engine
Scalable algorithms focused on collaborative filtering, clustering and classification.
Provides several algorithms and pre-trained models for natural language processing.
Efficient reliable UDP unicast, UDP multicast, and IPC message transport
Event bus for Android and Java that simplifies communication between Activities, Fragments, Threads, Services, etc. Less code, better quality.
Pure Java ZeroMQ
A distributed event bus that implements a RESTful API abstraction on top of Kafka-like queues
RabbitMQ Java client
A modular and portable open source XMPP client library written in Java for Android and Java (SE) VMs
Java client for NATS
Message broker that implements JMS and converts synchronous to asynchronous communication.
Glues together different transport APIs via Enterprise Integration Patterns.
Fast, reliable, and scalable distributed messaging platform.
Apache Qpid makes messaging tools that speak AMQP and support many languages and platforms.
Your go-to microservice framework for any situation, from the creator of Netty et al. You can build any type of microservice leveraging your favorite technologies, including gRPC, Thrift, Kotlin, Retrofit, Reactive Streams, Spring Boot and Dropwizard.
Java client for Consul HTTP API
AWS Service registry for resilient mid-tier load balancing and failover.
A powerful flow control component enabling reliability, resilience and monitoring for microservices. (面向云原生微服务的高可用流控防护组件)
Lightweight and fast library for complex high-load distributed applications and Memcached-like solutions.
Two-style approach for writing microservices: Functional-reactive and as an implementation of MicroProfile.
Modern full-stack framework with focus on modularity, minimal memory footprint and startup time.
Dynamic service discovery, configuration and service management platform for building cloud native applications.
Ultra-fast SQL-like queries on Java collections
Design patterns implemented in Java
Feature Flags for Java made easy
FizzBuzz Enterprise Edition is a no-nonsense implementation of FizzBuzz made by serious businessmen for serious business purposes.
A Java to iOS Objective-C translation tool and runtime.
Java interface to OpenCV, FFmpeg, and more
Make Slack and Facebook Bots in Java.
An in-memory file system for Java 7+
The easiest way to integrate Maven into your project!
API gateway for REST and SOAP written in Java.
A lightweight, simple FTP server. Pure Java, no dependencies.
Modern Java - A Guide to Java 8
Detect uses of legacy Java APIs
OctoLinker — Links together, what belongs together
A lightweight command processing pipeline ❍ ⇢ ❍ ⇢ ❍ for your Java awesome app.
Support alternative markup for Apache Maven POM files
Simple API, Complex Emails (JavaMail smtp wrapper)
An extensible Java framework for building XML and non-XML (CSV, EDI, Java, etc...) streaming applications
Tools for working with generic types
Java XML library. A really cool one. Obviously.
The open-source Java obfuscation tool working with Ant and Gradle by yWorks - the diagramming experts
Basic currency and money classes and algorithms not provided by the JDK.
Tool for working with messy data: cleaning, transforming, extending it with web services and linking it to databases.
Cross-platform solution for writing native mobile apps. (GPL-2.0-only WITH Classpath-exception-2.0)
Cross-platform framework for developing mobile apps with native UI in Java and Kotlin.
Automon combines the power of AOP (AspectJ) with monitoring or logging tools you already use to declaratively monitor your Java code, the JDK, and 3rd party libraries.
Endpoint library for the failsafe framework
JavaMelody : monitoring of JavaEE applications
Jaeger Bindings for Java OpenTracing API
Capturing JVM- and application-level metrics. So you know what's going on.
Get inside your JVM
APM, (Application Performance Management) tool for large-scale distributed systems.
Prometheus instrumentation library for JVM applications
an open source solution to application performance monitoring for java server applications
A lightweight platform monitoring tool for Java VMs
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.
The New Official Aparapi: a framework for executing native Java and Scala code on the GPU.
The missing bridge between Java and native C++
Java Native Access
Java Abstracted Foreign Function Layer
Natural Language Processing
CogComp's Natural Language Processing libraries and Demos:
Provides a set of fundamental tools for tasks like tagging, named entity recognition, and sentiment analysis. (GPL-3.0-or-later)
Collection of reusable NLP tools for linguistic pre-processing, machine learning, lexical resources, etc.
Fibers and actors for web development
Apache Dubbo is a high-performance, java based, open source RPC framework.
The Java gRPC implementation. HTTP/2 based RPC
TCP/UDP client/server library for Java, based on Kryo
An annotation-based Java library for creating Thrift serializable types and services.
A networking framework that evolves with your application
ssh, scp and sftp for java
A Java library that implements a ByteChannel interface over SSLEngine, enabling easy-to-use (socket-like) TLS for Java applications.
Java library for representing, parsing and encoding URNs as in RFC2141 and RFC8141
Abstract, event-driven async I/O API for network operations over TCP/IP and UDP/IP via Java NIO.
DAO oriented database mapping framework for Java 8+
MyBatis SQL mapper framework for Java
Language-Natural Persistence Layer for Java
Fast and Easy mapping from database and csv to POJO. A java micro ORM, lightweight alternative to iBatis and Hibernate. Fast Csv Parser and Csv Mapper
Provides a clean, static API for data access. Also includes a GUI Modeler for working with database mappings, and DB reverse engineering and generation.
Supports a number of persistence standards: JPA, JAXB, JCA and SDO.
Java reporting library for creating dynamic report designs at runtime
XML/XHTML and CSS 2.1 renderer in pure Java
An HTML to PDF library for the JVM. Based on Flying Saucer and Apache PDF-BOX 2. With SVG image support. Now also with accessible PDF support (WCAG, Section 508, PDF/UA)!
OpenPDF is a free Java library for creating and editing PDF files with a LGPL and MPL open source license. OpenPDF is based on a fork of iText. We welcome contributions from other developers. Please feel free to submit pull-requests and bugreports to this GitHub repository. ⛺
Extract tables from PDF files
Abstraction layer to JasperReports. (LGPL-3.0-only)