Awesome Java Awesome

A curated list of awesome Java frameworks, libraries and software.

Contents

Projects

Bean Mapping

Frameworks that ease bean mapping.

Build

Tools that handle the build cycle and dependencies of an application.

Bytecode Manipulation

Libraries to manipulate bytecode programmatically.

Caching

Libraries that provide caching facilities.

Cluster Management

Frameworks that can dynamically manage applications inside of a cluster.

Code Analysis

Tools that provide metrics and quality measurements.

Code Coverage

Frameworks and tools that enable code coverage metrics collection for test suites.

Code Generators

Tools that generate patterns for repetitive code in order to reduce verbosity and error-proneness.

Command-line Argument Parsers

Libraries that make it easy to parse command line options, arguments, etc.

Compiler-compiler

Frameworks that help to create parsers, interpreters or compilers.

Configuration

Libraries that provide external configuration.

Constraint Satisfaction Problem Solver

Libraries that help with implementing optimization and satisfiability problems.

CSV

Frameworks and libraries that simplify reading/writing CSV data.

Database

Everything that simplifies interactions with the database.

Data Structures

Efficient and specific data structures.

Date and Time

Libraries related to handling date and time.

Dependency Injection

Libraries that help to realize the Inversion of Control paradigm.

Development

Augmentation of the development process at a fundamental level.

Distributed Applications

Libraries and frameworks for writing distributed and fault-tolerant applications.

Distributed Transactions

Distributed transactions provide a mechanism for ensuring consistency of data updates in the presence of concurrent access and partial failures.

Distribution

Tools that handle the distribution of applications in native formats.

Document Processing

Libraries that assist with processing office document formats.

Formal Verification

Formal-methods tools: proof assistants, model checking, symbolic execution, etc.

Functional Programming

Libraries that facilitate functional programming.

Game Development

Frameworks that support the development of games.

Geospatial

Libraries for working with geospatial data and algorithms.

GUI

Libraries to create modern graphical user interfaces.

High Performance

Everything about high-performance computation, from collections to specific libraries.

HTTP Clients

Libraries that assist with creating HTTP requests and/or binding responses.

Hypermedia Types

Libraries that handle serialization to hypermedia types.

IDE

Integrated development environments that try to simplify several aspects of development.

Imagery

Libraries that assist with the creation, evaluation or manipulation of graphical images.

JSON

Libraries for serializing and deserializing JSON to and from Java objects.

JSON Processing

Libraries for processing data in JSON format.

JVM and JDK

Current implementations of the JVM/JDK.

Logging

Libraries that log the behavior of an application.

Machine Learning

Tools that provide specific statistical algorithms for learning from data.

Messaging

Tools that help send messages between clients to ensure protocol independency.

Miscellaneous

Everything else.

Microservice

Tools for creating and managing microservices.

Monitoring

Tools that monitor applications in production.

Native

For working with platform-specific native libraries.

Natural Language Processing

Libraries that specialize in processing text.

Networking

Libraries for building network servers.

ORM

APIs that handle the persistence of objects.

PaaS

Java platform as a service.

PDF

Tools to help with PDF file creation.

Performance analysis

Tools for performance analysis, profiling and benchmarking.

Platform

Frameworks that are suites of multiple libraries encompassing several categories.

Apache Commons

Other

Processes

Libraries that help the management of operating system processes.

Reactive libraries

Libraries for developing reactive applications.

REST Frameworks

Frameworks specifically for creating RESTful services.

Science

Libraries for scientific computing, analysis and visualization.

Engines that index documents for search and analysis.

Security

Libraries that handle security, authentication, authorization or session management.

Serialization

Libraries that handle serialization with high efficiency.

Server

Servers specifically used to deploy applications.

Template Engine

Tools that substitute expressions in a template.

Testing

Tools that test from model to the view.

Asynchronous

Tools that simplify testing asynchronous services.

BDD

Testing for the software development process that emerged from TDD and was heavily influenced by DDD and OOAD.

Fixtures

Everything related to the creation and handling of random data.

Frameworks

Provide environments to run tests for a specific use case.

Matchers

Libraries that provide custom matchers.

Miscellaneous

Other stuff related to testing.

Mocking

Tools which mock collaborators to help testing single, isolated units.

Parameterization

Simplifies the writing of parameterized tests.

Utility

Libraries which provide general utility functions.

Version Managers

Utilities that help create the development shell environment and switch between different Java versions.

Web Crawling

Libraries that analyze the content of websites.

Web Frameworks

Frameworks that handle the communication between the layers of a web application.

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.

Twitter

Active accounts to follow. Descriptions from Twitter.

Websites

Sites to read.

Contributing

Contributions are very welcome!

Please have a look at the CONTRIBUTING guidelines.