awesome-java
A curated list of awesome frameworks, libraries and software for the Java programming language.
https://github.com/eric-erki/awesome-java
Last synced: 9 days ago
JSON representation
-
Contributing
-
Websites
- CONTRIBUTING - java-validation).
-
-
Projects
-
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.
- Dozer - Mapper that copies data from one object to another using annotations and API or XML configuration.
- 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.
- 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.
- Selma - Annotation processor-based bean mapper.
-
Build
-
Bytecode Manipulation
- bytecode-viewer - Java 8 Jar & Android APK reverse engineering suite. (GPL-3.0-only)
- 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.
- ASM - All-purpose, low-level bytecode manipulation and analysis.
- Perses - Dynamically injects failure/latency at the bytecode level according to principles of chaos engineering.
-
Caching
- Caffeine - High-performance, near-optimal caching library.
-
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.
- JLine - Includes features from modern shells like completion or history.
- JOpt Simple - Fluent parser that uses the POSIX#getopt and GNU#getopt_long syntaxes.
- Text-IO - Aids the creation of full console-based applications.
- Lanterna - Easy console text-GUI library, similar to curses. (LGPL-3.0-only)
- args4j - Small library to parse command-line arguments.
-
Cluster Management
- Singularity - Mesos framework that makes deployment and operations easy. It supports web services, background workers, scheduled jobs, and one-off tasks.
-
Code Analysis
- Infer - Modern static analysis tool for verifying the correctness of code.
- Checkstyle - Static analysis of coding conventions and standards. (LGPL-2.1-or-later)
- Error Prone - Catches common programming mistakes as compile-time errors.
- 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)
- Spoon - Library for analyzing and transforming Java source code.
- Spotbugs - Static analysis of bytecode to find potential bugs. (LGPL-2.1-only)
- jQAssistant - Static code analysis with Neo4J-based query language. (GPL-3.0-only)
-
Code Coverage
- Clover - Relies on source-code instrumentation instead of bytecode instrumentation.
- JaCoCo - Framework that enables collection of code coverage metrics, using both offline and runtime bytecode instrumentation.
- Cobertura - Relies on offline (or static) bytecode instrumentation and class loading to collect code coverage metrics. (GPL-2.0-only)
-
Code Generators
- Joda-Beans - Small framework that adds queryable properties to Java, enhancing JavaBeans.
- ADT4J - JSR-269 code generator for algebraic data types.
- Auto - Generates factory, service, and value classes.
- FreeBuilder - Automatically generates the Builder pattern.
- JavaPoet - API to generate source files.
- JHipster - Yeoman source code generator for Spring Boot and AngularJS.
-
Compiler-compiler
- JavaCC - Parser generator that generates top-down parsers. Allows lexical state switching and permits extended BNF specifications.
-
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 for JVM languages.
- dotenv - Twelve-factor configuration library which uses environment-specific files.
- KAConf - Annotation-based configuration system for Java and Kotlin.
- owner - Reduces boilerplate of properties.
- owner - Reduces boilerplate of properties.
- ini4j - Provides an API for handling Windows' INI files.
-
Constraint Satisfaction Problem Solver
- JaCoP - Includes an interface for the FlatZinc language, enabling it to execute MiniZinc models. (AGPL-3.0)
-
CSV
- jackson-dataformat-csv - Jackson extension for reading and writing CSV.
- 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.
- opencsv - Simple CSV parser.
-
Database
- Realm - Mobile database to run directly inside phones, tablets or wearables.
- 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.
- Xodus - Highly concurrent transactional schema-less and ACID-compliant embedded database.
- Liquibase - Database-independent library for tracking, managing and applying database schema changes.
- Querydsl - Typesafe unified queries.
- AranoDB - ArangoDB Java driver.
- Chronicle Map - Efficient, in-memory (opt. persisted to disk), off-heap key-value 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.
- HikariCP - High-performance JDBC connection pool.
- jasync-sql - Async DB driver for MySQL and PostgreSQL.
- JDBI - Convenient abstraction of JDBC.
- 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).
- Leaf - Distributed ID generate service.
- MariaDB4j - Launcher for MariaDB that requires no installation or external dependencies.
- Redisson - Allows for distributed and scalable data structures on top of a Redis server.
- Speedment - Database access library that utilizes Java 8's Stream API for querying.
- Presto - Distributed SQL query engine for big data.
-
Data Structures
- Tape - Lightning-fast, transactional, file-based FIFO.
- 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.
- Wire - Clean, lightweight protocol buffers.
- SBE - Simple Binary Encoding, one of the fastest message formats around.
-
Date and Time
- iCal4j - Parse and build iCalendar [RFC 5545](https://tools.ietf.org/html/rfc5545) 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
- Inversion of Control
- 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
- 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.
- SneakyThrow - Ignores checked exceptions without bytecode manipulation. Can also be used inside Java 8 stream operations.
- NoException - Allows checked exceptions in functional interfaces and converts exceptions to Optional return.
-
Distributed Applications
- Quasar - Lightweight threads and actors for the JVM.
- Dropwizard Circuit Breaker - Circuit breaker design pattern for Dropwizard. (GPL-2.0-only)
- JGroups - Toolkit for reliable messaging and cluster creation.
- Orbit - Virtual actors; adds another level of abstraction to traditional actors.
- 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.
- Atomix - Fault-tolerant distributed coordination framework.
- Failsafe - Simple failure handling with retries and circuit breakers.
- JGroups - Toolkit for reliable messaging and cluster creation.
-
Distributed Transactions
- Seata - Delivers high performance and easy to use distributed transaction services under a microservices architecture.
- 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)
-
Distribution
- IzPack - Setup authoring tool for cross-platform deployments.
- Capsule - Simple and powerful packaging and deployment. A fat JAR on steroids, or a "Docker for Java" that supports JVM-optimized containers.
- 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.
- Boxfuse ![c - Deployment of JVM applications to AWS using the principles of immutable infrastructure.
-
Document Processing
- documents4j - API for document format conversion using third-party converters such as MS Word.
- docx4j - Create and manipulate Microsoft Open XML files.
- zerocell - Annotation-based API for reading data from Excel sheets into POJOs with focus on reduced overhead.
-
Financial
- Parity - Platform for trading venues.
- Philadelphia - Low-latency financial information exchange.
- Square - Integration with the Square API.
- Stripe - Integration with the Stripe API.
-
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)
- 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.
- OpenJML - Translates JML specifications into SMT-LIB format and passes the proof problems implied by the program to backend solvers. (GPL-2.0-only)
- 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.
- 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.
- protonpack - Collection of stream utilities.
- StreamEx - Enhances Java 8 Streams.
- cyclops-react - Monad and stream utilities, comprehensions, pattern matching, functional extensions for all JDK collections, future streams, trampolines and much more.
-
Game Development
-
Geospatial
- Geo - GeoHash utilities in Java.
- Geotoolkit.org - Library for developing geospatial applications. Built on top of the Apache SIS project. (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.
- H2GIS - Spatial extension of the H2 database. (LGPL-3.0-only)
- Geotoolkit.org - Library for developing geospatial applications. Built on top of the Apache SIS project. (LGPL-2.1-only)
-
GUI
- JavaFX - Successor of Swing.
-
High Performance
- HPPC - Primitive collections.
- Koloboke - Hash sets and hash maps.
- Disruptor - Inter-thread messaging library.
- JCTools - Concurrency tools currently missing from the JDK.
- fastutil - Fast and compact type-specific collections.
- 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
- restQL-core-java - Microservice query language that fetches information from multiple services.
- Async Http Client - Asynchronous HTTP and WebSocket client library.
- Feign - HTTP client binder inspired by Retrofit, JAXRS-2.0, and WebSocket.
- Play WS - Typesafe client with reactive streams and caching.
- 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.
- Feign - HTTP client binder inspired by Retrofit, JAXRS-2.0, and WebSocket.
-
Hypermedia Types
-
IDE
- 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.
- 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 - Compares two images with the same sizes and shows the differences visually by drawing rectangles.
- Imgscalr - Simple, efficient and hardware-accelerated image-scaling library implemented in pure Java 2D.
-
Introspection
- 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
- 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.
-
JSON
-
Programming Languages
Categories
Sub Categories
Twitter
53
Testing
32
Miscellaneous
29
Platform
28
Database
21
REST Frameworks
20
JSON
17
Security
15
Monitoring
14
Websites
14
Utility
13
Web Frameworks
12
Science
11
CLI
11
Awesome Lists
11
Networking
11
Distributed Applications
10
Bean Mapping
10
JVM and JDK
9
Geospatial
9
Code Analysis
9
Configuration
8
Logging
8
High Performance
8
Machine Learning
8
HTTP Clients
8
Bytecode Manipulation
7
Development
7
Data Structures
7
Messaging
7
Formal Verification
7
Functional Programming
7
Dependency Injection
7
PDF
7
Template Engine
6
Imagery
6
Code Generators
6
Introspection
5
Distribution
5
Performance analysis
5
Serialization
5
Influential Books
5
Natural Language Processing
5
Financial
4
Reactive libraries
4
ORM
4
Web Crawling
4
Microservice
4
CSV
4
Job Scheduling
4
Server
3
Communities
3
Document Processing
3
Code Coverage
3
Distributed Transactions
3
Native
3
Search
3
Version Managers
3
Build
3
Date and Time
3
Podcasts and Screencasts
3
Processes
3
IDE
2
Game Development
2
Hypermedia Types
2
Cluster Management
1
Constraint Satisfaction Problem Solver
1
Caching
1
GUI
1
Compiler-compiler
1
Frontends
1
Keywords
java
141
android
13
static-analysis
10
spring-boot
10
monitoring
10
microservices
9
jvm
8
http
7
testing
7
java-library
7
json
7
spring
7
rpc
7
awesome
7
kotlin
6
javafx
6
jdbc
6
static-code-analysis
6
grpc
5
reactive-streams
5
machine-learning
5
awesome-list
5
scala
5
javascript
5
xml
5
reactive
4
testing-tools
4
annotation-processor
4
scheduler
4
code-analysis
4
database
4
serialization
4
framework
4
jackson
4
library
4
python
4
java-8
4
functional-programming
4
http-client
4
nlp
4
c
4
test-automation
3
code-generator
3
performance
3
configuration
3
junit
3
c-plus-plus
3
concurrency
3
circuit-breaker
3
visualization
3