awesome-java
A curated list of awesome frameworks, libraries and software for the Java programming language.
https://github.com/akullpp/awesome-java
Last synced: 8 days ago
JSON representation
-
Projects
-
Distributed Applications
- Failsafe - Simple failure handling with retries and circuit breakers.
- JGroups - Toolkit for reliable messaging and cluster creation.
- resilience4j - Functional fault tolerance library.
- OpenIG - High-performance reverse proxy server with specialized session management and credential replay functionality.
- 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
- Atomikos - Provides transactions for REST, SOA and microservices with support for JTA and XA.
- 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.
- Narayana - Provides support for traditional ACID and compensation transactions, also complies with JTA, JTS and other standards. (LGPL-2.1-only)
-
Distribution
- Boxfuse ![c - Deployment of JVM applications to AWS using the principles of immutable infrastructure.
- 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 ![c - Fully managed package management SaaS with support for Maven/Gradle/SBT with a free tier.
- jDeploy - Deploy desktop apps as native Mac, Windows or Linux bundles.
- Nexus ![c - Binary management with proxy and caching capabilities.
- IzPack - Setup authoring tool for cross-platform deployments.
- Artipie - Binary artifact management toolkit which hosts them on the file system or S3.
- Capsule - Simple and powerful packaging and deployment. A fat JAR on steroids, or a "Docker for Java" that supports JVM-optimized containers.
- Getdown - System for deploying Java applications to end-user computers and keeping them up to date. Developed as an alternative to Java Web Start.
- jlink.online - Builds optimized runtimes over HTTP.
- 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.
- JavaPackager - Maven and Gradle plugin which provides an easy way to package Java applications in native Windows, macOS or GNU/Linux executables, and generate installers for them.
-
Document Processing
- 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.
- Sheetz - Library for reading and writing Excel and CSV files with annotation-based mapping, streaming support, and built-in validation.
-
Financial
-
Formal Verification
- Daikon - Detects likely program invariants and generates JML specs based on those invariants.
- 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)
- CATG - Concolic unit testing engine. Automatically generates unit tests using formal methods.
- Java Path Finder (JPF) - JVM formal verification tool containing a model checker and more. Created by NASA.
- Checker Framework - Pluggable type systems. Includes nullness types, physical units, immutability types and more. (GPL-2.0-only WITH Classpath-exception-2.0)
- 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
- Functional Java - Implements numerous basic and advanced programming abstractions that assist composition-oriented development.
- 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.
- 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.
- Packrat - Gatherers library for Java Stream API. Gatherers can enhance streams with custom intermediate operations.
- protonpack - Collection of stream utilities.
- StreamEx - Enhances Java 8 Streams.
- Parallel Collectors - Stream API Collectors for parallel processing with custom thread pools, designed for I/O-heavy workloads.
-
Game Development
- JBox2D - Port of the renowned C++ 2D physics engine.
- jMonkeyEngine - Game engine for modern 3D development.
- 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.
- FXGL - JavaFX Game Development Framework.
- JBox2D - Port of the renowned C++ 2D physics engine.
- vulkan4j - Vulkan, OpenGL ES2 and GLFW Memory Allocator bindings.
- Void2D - High-level 2D game engine with built-in physics based on Swing.
- input4j - Lightweight, cross-platform library for gamepad and joystick input handling.
-
Geospatial
- Apache SIS - Library for developing geospatial applications.
- GeoTools - Library that provides tools for geospatial data. (LGPL-2.1-only)
- H2GIS - Spatial extension of the H2 database. (LGPL-3.0-only)
- ArcGIS Maps SDK for Java ![c - JavaFX library for adding mapping and GIS functionality to desktop apps.
- Geo - GeoHash utilities in Java.
- GraphHopper - Road-routing engine. Used as a Java library or standalone web service.
- Jgeohash - Library for using the GeoHash algorithm.
- Mapsforge - Map rendering based on OpenStreetMap data. (LGPL-3.0-only)
- Spatial4j - General-purpose spatial/geospatial library.
- ArcGIS Maps SDK for Java ![c - JavaFX library for adding mapping and GIS functionality to desktop apps.
-
GUI
-
High Performance
- HPPC - Primitive collections.
- Disruptor - Inter-thread messaging library.
- JCTools - Concurrency tools currently missing from the JDK.
- Koloboke - Carefully designed extension of the Java Collections Framework with primitive specializations and more.
- Eclipse Collections - Collections framework inspired by Smalltalk.
- Agrona - Data structures and utility methods that are common in high-performance applications.
- fastutil - Fast and compact type-specific collections.
-
HTTP Clients
- Apache HttpComponents - Toolset of low-level Java components focused on HTTP and associated protocols.
- Avaje Http Client - Wrapper on JDK 11's HttpClient that adds Feign-like interface among other enhancements.
- Retrofit - Typesafe REST client.
- 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.
- Ribbon - Client-side IPC library that is battle-tested in the cloud.
- Riptide - Client-side response routing for Spring's RestTemplate.
- unirest-java - Simplified, lightweight HTTP client library.
-
Hypermedia Types
- hate - Builds hypermedia-friendly objects according to HAL specification.
- JSON-LD - JSON-LD implementation.
- Siren4J - Library for the Siren specification.
- Spring HATEOAS - Standalone and Spring support for building hypermedia-based APIs using HAL, HAL FORMS, Collection+JSON, ALPS and UBER.
-
IDE
- IntelliJ IDEA ![c - 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.
- SnapCode - Modern IDE for Java running in the browser, focused on education.
- Visual Studio Code - Provides Java support for lightweight projects with a simple, modern workflow by using extensions from the internal marketplace.
- Eclipse - Established open-source project with support for lots of plugins and languages.
-
Imagery
- ZXing - Multi-format 1D/2D barcode image processing library.
- Barcode-Lib4J - Generates QR Code, DataMatrix, and other 1D/2D barcodes as vector (PDF, EPS, SVG) and raster (PNG, BMP, JPG) images with DPI awareness, high precision, and CMYK color model support.
- 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.
- 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.
- vips-ffm - Comprehensive bindings for libvips, using Java's "Foreign Function & Memory" API.
-
Introspection
- 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.
- 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.
- 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
- 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
- Avaje Jsonb - Reflection-free Json binding via source code generation with Jackson-like annotations.
- 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.
- Jackson - Similar to GSON, but offers performance gains if you need to instantiate the library more often.
- Moshi - Modern JSON library, less opinionated and uses built-in types like List and Map.
- Genson - Powerful and easy-to-use Java-to-JSON conversion library.
- DSL-JSON - JSON library with advanced compile time databinding.
- 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.
- JSON-io - Convert Java to JSON/TOON and back. Supports complex object graphs, cyclic references, and TOON format for 40-50% LLM token savings.
- LoganSquare - JSON parsing and serializing library based on Jackson's streaming API. Outperforms GSON & Jackson's library.
- 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
- Adopt Open JDK - Community-driven OpenJDK builds, including both HotSpot and OpenJ9.
- Corretto - No-cost, multiplatform, production-ready distribution of OpenJDK by Amazon. (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)
- 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)
- Zulu - OpenJDK builds for Windows, Linux, and macOS. (GPL-2.0-only WITH Classpath-exception-2.0)
- Open JDK - Open JDK community home. (GPL-2.0-only WITH Classpath-exception-2.0)
- Which JDK - Overview of common JVMs with pros and cons.
- Graal - Polyglot embeddable JVM. (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)
- Microsoft JDK - Microsoft Build of OpenJDK, Free, Open Source, Freshly Brewed!
- 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.
- Dragonwell8 - Downstream version of OpenJDK optimized for online e-commerce, financial, logistics applications.
- Zulu - OpenJDK builds for Windows, Linux, and macOS. (GPL-2.0-only WITH Classpath-exception-2.0)
-
Logging
- 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.
- Logstash - Tool for managing log files.
- SLF4J - Abstraction layer/simple logging facade.
- Apache Log4j 2 - Complete rewrite with a powerful plugin and configuration architecture.
- Echopraxia - API designed around structured logging, rich context, and conditional logging. There are Logback and Log4J2 implementations, but Echopraxia's API is completely dependency-free, meaning it can be implemented with any logging API.
- Logbook - Extensible, open-source library for HTTP request and response logging.
- p6spy - Enables logging for all JDBC transactions without changes to the code.
- OpenTracing Toolbox - Collection of libraries that build on top of OpenTracing and provide extensions and plugins to existing instrumentations.
- Flogger - Flogger is a fluent logging API for Java. It supports a wide variety of features, and has many benefits over existing logging APIs.
- Logback - Robust logging library with interesting configuration options via Groovy.
- SLF4J - Abstraction layer/simple logging facade.
-
Machine Learning
- Apache Mahout - Scalable algorithms focused on collaborative filtering, clustering and classification.
- DatumBox - Provides several algorithms and pre-trained models for natural language processing.
- DJL - High-level and engine-agnostic framework for deep learning.
- oj! Algorithms - High-performance mathematics, linear algebra and optimisation needed for data science, machine learning and scientific computing.
- Tribuo - Provides tools for classification, regression, clustering, model development and interfaces with other libraries such as scikit-learn, pytorch and TensorFlow.
- JSAT - Algorithms for pre-processing, classification, regression, and clustering with support for multi-threaded execution. (GPL-3.0-only)
- m2cgen - CLI tool to transpile models into native code.
- Neureka - A lightweight, platform independent, OpenCL accelerated nd-array/tensor library.
- 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.
- Intelligent java - Seamlessly integrate with remote deep learning and language models programmatically.
- Deeplearning4j - Distributed and multi-threaded deep learning library.
-
Messaging
- 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 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.
- Hermes - Fast and reliable message broker built on top of Kafka.
- Aeron - Efficient, reliable, unicast and multicast message transport.
- Deezpatch - Simple, lightweight, and performant dispatch library for decoupling messages (requests and events) and message handlers.
- EventBus - Simple publish/subscribe event bus.
- 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.
- AutoMQ - AutoMQ is a cloud-native, serverless reinvented Kafka that is easily scalable, manage-less and cost-effective.
-
Programming Languages
Categories
Sub Categories
Testing
63
People
58
Platform
53
Miscellaneous
42
Database
40
Websites
29
Security
27
Web Frameworks
27
Monitoring
26
Utility
26
REST Frameworks
22
Code Generators
18
JSON
17
Science
16
Messaging
16
Distributed Applications
15
JVM and JDK
15
Code Analysis
14
Logging
14
Configuration
14
Related Awesome Lists
14
Networking
14
Distribution
13
PDF
13
Machine Learning
13
Dependency Injection
11
Development
11
Template Engine
11
Bytecode Manipulation
11
ORM
11
Microservice
11
Geospatial
10
Podcasts and Screencasts
10
HTTP Clients
10
Game Development
10
Data Structures
10
CLI
10
Functional Programming
9
Bean Mapping
9
Performance analysis
9
Imagery
8
Formal Verification
8
Introspection
7
Serialization
7
Influential Books
7
High Performance
7
Job Scheduling
7
Financial
6
Document Processing
6
CSV
6
GUI
6
Natural Language Processing
6
Reactive libraries
5
Web Crawling
5
Native
5
IDE
5
Search
5
Date and Time
5
PaaS
5
Artificial Intelligence
4
Workflow Orchestration Engines
4
Hypermedia Types
4
Build
4
Server
4
Constraint Satisfaction Problem Solver
4
Distributed Transactions
4
Code Coverage
4
Caching
4
Processes
3
Computer Vision
3
Mobile Development
3
Version Managers
3
Cloud
2
Compiler-compiler
2
Communities
2
Frontends
2
Architecture
2
Cluster Management
2
Pathfinding
1
Decentralization
1
Keywords
java
227
kotlin
18
spring-boot
17
testing
16
android
15
spring
14
microservices
13
jvm
13
monitoring
12
static-analysis
12
http
10
database
10
java-library
10
json
9
awesome
9
javascript
8
rest-api
8
python
8
rest
8
xml
7
annotation-processor
7
machine-learning
7
sql
7
rpc
7
orm
6
high-performance
6
cloud-native
6
jdbc
6
awesome-list
6
java8
6
framework
6
static-code-analysis
6
api
6
library
6
metrics
6
javafx
6
logging
6
maven-plugin
6
java-8
6
junit
6
configuration
6
serialization
6
gradle
5
generator
5
cli
5
functional-programming
5
performance
5
test-automation
5
testing-tools
5
grpc
5