awesome-java
A curated list of awesome frameworks, libraries and software for the Java programming language.
https://github.com/akullpp/awesome-java
Last synced: 18 days ago
JSON representation
-
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.
- JMapper - Uses byte code manipulation for lightning-fast mapping. Supports annotations and API or XML configuration.
- Orika - JavaBean-mapping framework that recursively copies (among other capabilities) data from one object to another.
- 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
- ASM - All-purpose, low-level bytecode manipulation and analysis.
- Byte Buddy - Further simplifies bytecode generation with a fluent API.
- Recaf - JVM reverse engineering toolkit, essentially an IDE for Java bytecode.
- cglib - Bytecode generation library.
- Mixin - Manipulate bytecode at runtime using real Java code.
- Perses - Dynamically injects failure/latency at the bytecode level according to principles of chaos engineering.
- Perses - Dynamically injects failure/latency at the bytecode level according to principles of chaos engineering.
-
Caching
- cache2k - In-memory high performance caching library.
- Ehcache - Distributed general-purpose cache.
- Infinispan - Highly concurrent key/value datastore used for caching.
-
CLI
- JCommander - Command-line argument-parsing framework with custom types and validation via implementing interfaces.
- picocli - ANSI colors and styles in usage help with annotation-based POSIX/GNU/any syntax, subcommands, strong typing for both options and positional args.
- Airline - Annotation-based framework for parsing Git-like command-line arguments.
- Text-IO - Aids the creation of full console-based applications.
-
Cloud
- AWS SDK for Java - Provides Java APIs for interacting with Amazon Web Services.
-
Cluster Management
- 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
- jQAssistant - Static code analysis with Neo4J-based query language. (GPL-3.0-only)
- p3c - Provides Alibaba's coding guidelines for PMD, IDEA and Eclipse.
- 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
- Avaje Http Server - Generates Lightweight JAX-RS style http servers using Javalin or Helidon (Nima) SE.
- Bootify ![c - Browser-based Spring Boot app generation with JPA model and REST API.
- Immutables - Annotation processors to generate simple, safe and consistent value objects.
- Joda-Beans - Small framework that adds queryable properties to Java, enhancing JavaBeans.
- JPA Buddy ![c - Plugin for IntelliJ IDEA. Provides visual tools for generating JPA entities, Spring Data JPA repositories, Liquibase changelogs and SQL scripts. Offers automatic Liquibase/Flyway script generation by comparing model to DB, and reverse engineering JPA entities from DB tables.
- ADT4J - JSR-269 code generator for algebraic data types.
- FreeBuilder - Automatically generates the Builder pattern.
- JavaPoet - API to generate source files.
-
Compiler-compiler
-
Computer Vision
-
Configuration
- avaje config - Loads yaml and properties files, supports dynamic configuration, plugins, file-watching and config event listeners.
- Curator Framework - High-level API for Apache ZooKeeper.
- ini4j - Provides an API for handling Windows' INI files.
- 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.
- ini4j - Provides an API for handling Windows' INI files.
-
Constraint Satisfaction Problem Solver
- Choco - Off-the-shelf constraint satisfaction problem solver that uses constraint programming techniques.
- OptaPlanner - Business planning and resource scheduling optimization solver.
- Timefold - Flexible solver with Spring/Quarkus support and quickstarts for the Vehicle Routing Problem, Maintenance Scheduling, Employee Shift Scheduling and much more.
-
CSV
- opencsv - Simple CSV parser.
- 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
- 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.
- Debezium - Low latency data streaming platform for change data capture.
- druid - High-performance, column-oriented, distributed data store.
- H2 - Small SQL database notable for its in-memory functionality.
- JDBI - Convenient abstraction of JDBC.
- Lettuce - Lettuce is a scalable Redis client for building non-blocking Reactive applications.
- MapDB - Embedded database engine that provides concurrent collections backed on disk or in off-heap memory.
- Querydsl - Typesafe unified queries.
- Trino - Distributed SQL query engine for big data.
- Vibur DBCP - JDBC connection pool library with advanced performance monitoring capabilities.
- Querydsl - Typesafe unified queries.
- Jest - Client for the Elasticsearch REST API.
- jetcd - Client library for etcd.
- Leaf - Distributed ID generate service.
- Speedment - Database access library that utilizes Java 8's Stream API for querying.
- Trino - Distributed SQL query engine for big data.
- Lettuce - Lettuce is a scalable Redis client for building non-blocking Reactive applications.
-
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.
- 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.
- SBE - Simple Binary Encoding, one of the fastest message formats around.
-
Date and Time
- Jollyday - Determines the holidays for a given year, country/name and eventually state/region.
-
Decompilation
-
Dependency Injection
- Apache DeltaSpike - CDI extension framework.
- Avaje Inject - Microservice-focused compile-time injection framework without reflection.
- Dagger - Compile-time injection framework without reflection.
- Feather - Ultra-lightweight, JSR-330-compliant dependency injection library.
- HK2 - Lightweight and dynamic dependency injection framework.
- JayWire - Lightweight dependency injection framework. (LGPL-3.0-only)
- HK2 - Lightweight and dynamic dependency injection framework.
-
Development
- AspectJ - Seamless aspect-oriented programming extension.
- DCEVM - JVM modification that allows unlimited redefinition of loaded classes at runtime. (GPL-2.0-only)
- NoException - Allows checked exceptions in functional interfaces and converts exceptions to Optional return.
- JavaSymbolSolver - Symbol solver.
- Tail - Enable infinite recursion using tail call optimization.
- NoException - Allows checked exceptions in functional interfaces and converts exceptions to Optional return.
-
Distributed Applications
- Apache Geode - In-memory data management system that provides reliable asynchronous event notifications and guaranteed message delivery.
- Apache Storm - Realtime computation system.
- Atomix - Fault-tolerant distributed coordination framework.
- Axon - Framework for creating CQRS applications.
- JGroups - Toolkit for reliable messaging and cluster creation.
- Quasar - Lightweight threads and actors for the JVM.
- 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
- 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.
- Capsule - Simple and powerful packaging and deployment. A fat JAR on steroids, or a "Docker for Java" that supports JVM-optimized containers.
- 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.
-
Financial
-
Formal Verification
- Daikon - Detects likely program invariants and generates JML specs based on those invariants.
- 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.
- 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)
- 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)
-
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)
-
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.
- 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.
- Jgeohash - Library for using the GeoHash algorithm.
-
GUI
- JavaFX - Successor of Swing.
- Scene Builder - Visual layout tool for JavaFX applications.
- SWT - Graphical widget toolkit.
- JavaFX - Successor of Swing.
-
High Performance
- HPPC - Primitive collections.
- Disruptor - Inter-thread messaging library.
- 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
- Avaje Http Client - Wrapper on JDK 11's HttpClient that adds Feign-like interface among other enhancements.
- Retrofit - Typesafe REST client.
- JQuickCurl - Executes HTTP requests from cURL syntax through annotations, XML configuration and dynamic proxy clients.
-
Hypermedia Types
-
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.
-
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.
- 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.
- 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.
-
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.
- Genson - Powerful and easy-to-use Java-to-JSON conversion library.
- HikariJSON - High-performance JSON parser, 2x faster than Jackson.
- Jackson-datatype-money - Open-source Jackson module to support JSON serialization and deserialization of JavaMoney data types.
- LoganSquare - JSON parsing and serializing library based on Jackson's streaming API. Outperforms GSON & Jackson's library.
- fastjson - Very fast processor with no additional dependencies and full data binding.
-
JVM and JDK
- Adopt Open JDK - Community-driven OpenJDK builds, including both HotSpot and OpenJ9.
- 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)
- 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.
- SAP Machine - SAP's no-cost, rigorously tested and JCK-verified OpenJDK friendly fork. (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.
-
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.
- 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.
- Graylog - Open-source aggregator suited for extended role and permission management. (GPL-3.0-only)
-
Categories
Sub Categories
Platform
38
People
33
Testing
32
Database
19
Miscellaneous
18
REST Frameworks
17
Websites
17
Web Frameworks
16
Security
15
Logging
13
Messaging
11
Monitoring
11
Distributed Applications
9
JVM and JDK
9
Game Development
9
PDF
9
Code Generators
8
Science
8
Machine Learning
8
Distribution
8
JSON
7
Utility
7
Formal Verification
7
Bytecode Manipulation
7
Microservice
7
Dependency Injection
7
Podcasts and Screencasts
6
Configuration
6
Data Structures
6
High Performance
6
Template Engine
6
Development
6
Bean Mapping
6
CSV
5
Natural Language Processing
5
Geospatial
5
Networking
5
Search
5
Server
4
Distributed Transactions
4
Introspection
4
ORM
4
Performance analysis
4
Serialization
4
Web Crawling
4
GUI
4
CLI
4
Caching
3
HTTP Clients
3
Functional Programming
3
Code Coverage
3
Mobile Development
3
Constraint Satisfaction Problem Solver
3
Workflow Orchestration Engines
3
Build
3
IDE
3
Code Analysis
3
Document Processing
3
Decompilation
2
Cluster Management
2
Hypermedia Types
2
Financial
2
Computer Vision
2
Compiler-compiler
2
PaaS
2
Reactive libraries
2
Version Managers
1
Date and Time
1
Native
1
Cloud
1
Frontends
1
Keywords
java
465
kotlin
46
database
32
spring-boot
31
commons
30
android
30
jvm
26
java-library
26
testing
26
microservices
25
spring
25
sql
23
library
21
python
20
static-analysis
18
framework
17
javascript
16
http
16
jdbc
16
javafx
15
apache
15
scala
14
json
14
security
14
machine-learning
14
monitoring
13
maven
13
api
13
big-data
13
maven-plugin
13
rest
12
cloud-native
12
xml
12
groovy
12
gradle
11
rust
11
rest-api
11
logging
11
high-performance
11
junit
11
messaging
11
web
11
performance
10
annotation-processor
10
golang
10
orm
10
c
10
gradle-plugin
10
java-8
9
cli
9