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: 7 days ago
JSON representation
-
Resources
-
Awesome Lists
-
Twitter
- Brian Goetz - Java Language Architect at Oracle.
- Heinz Kabutz - Java Champion, speaker, author of The Java Specialists' Newsletter, concurrency performance expert.
- Lukas Eder - Java Champion, speaker, JUG.ch co-leader, Founder and CEO Data Geekery (jOOQ).
- Mark Reinhold - Chief Architect, Java Platform Group, Oracle.
- Martijn Verburg - London JUG co-leader, speaker, author, Java Champion and much more.
- Peter Lawrey - Peter Lawrey, Java performance expert.
- Stephen Colebourne - Java Champion, speaker.
- Aleksey Shipilëv - Performance geek, benchmarking czar, concurrency bug hunter.
- Bruno Borges - Product Manager/Java Jock at Oracle.
- Chris Richardson - Software architect, consultant, and serial entrepreneur, Java Champion, JavaOne Rock Star, \*POJOs in Action- author.
- Ed Burns - Consulting Member of the Technical Staff at Oracle.
- Eugen Paraschiv - Author of the Spring Security Course.
- Holly Cummins - Technical Lead of IBM London's Bluemix Garage, Java Champion, developer, author, JavaOne rockstar.
- James Weaver - Java/JavaFX/IoT developer, author and speaker.
- Java Magazine - Official Java Magazine account.
- Javin Paul - Well-known Java blogger.
- Josh Long - Spring Advocate at Pivotal, author of O'Reilly's Cloud Native Java- and Building Microservices with Spring Boot, JavaOne Rock Star.
- Mario Fusco - RedHatter, JUG coordinator, frequent speaker and author.
- Mark Heckler - Pivotal Principal Technologist and Developer Advocate, conference speaker, published author, and Java Champion, focusing on Internet of Things and the cloud.
- Markus Eisele - Java EE evangelist, Red Hat.
- Martin Thompson - Pasty faced performance gangster.
- Monica Beckwith - Performance consultant, JavaOne Rock Star.
- OpenJDK - Official OpenJDK account.
- Randy Shoup - Stitch Fix VP Engineering, speaker, JavaOne Rock Star.
- Reza Rahman - Java EE/GlassFish/WebLogic evangelist, author, speaker, open source hacker.
- Sander Mak - Java Champion, author.
- Simon Maple - Java Champion, VirtualJUG founder, LJC leader, RebelLabs author.
- Spencer Gibb - Software Engineer, Dad, Geek, Co-founder and Lead of Spring Cloud Core @pivotal.
- Trisha Gee - Java Champion and speaker.
- Venkat Subramaniam - Author, University of Houston professor, MicroSoft MVP award recipient, JavaOne Rock Star, Java Champion.
- Vlad Mihalcea - Java Champion working on Hypersistence Optimizer, database aficionado, author of High-Performance Java Persistence book.
- Josh Long - Spring Advocate at Pivotal, author of O'Reilly's Cloud Native Java- and Building Microservices with Spring Boot, JavaOne Rock Star.
- Chris Richardson - Software architect, consultant, and serial entrepreneur, Java Champion, JavaOne Rock Star, \*POJOs in Action- author.
- Randy Shoup - Stitch Fix VP Engineering, speaker, JavaOne Rock Star.
- Arun Gupta - Java Champion, JavaOne Rockstar, JUG Leader, Devoxx4Kids-er, VP of Developer Advocacy at Couchbase.
- Java EE - Official Java EE Twitter account.
- Adam Bien - Freelance author, JavaOne Rockstar speaker, consultant, Java Champion.
- Holly Cummins - Technical Lead of IBM London's Bluemix Garage, Java Champion, developer, author, JavaOne rockstar.
- Java - Official Java Twitter account.
- Monica Beckwith - Performance consultant, JavaOne Rock Star.
- Sander Mak - Java Champion, author.
- Spencer Gibb - Software Engineer, Dad, Geek, Co-founder and Lead of Spring Cloud Core @pivotal.
- Venkat Subramaniam - Author, University of Houston professor, MicroSoft MVP award recipient, JavaOne Rock Star, Java Champion.
- Vlad Mihalcea - Java Champion working on Hypersistence Optimizer, database aficionado, author of High-Performance Java Persistence book.
- Bruno Borges - Product Manager/Java Jock at Oracle.
- Antonio Goncalves - Java Champion, JUG Leader, Devoxx France, Java EE 6/7, JCP, Author.
- Heinz Kabutz - Java Champion, speaker, author of The Java Specialists' Newsletter, concurrency performance expert.
- Brian Goetz - Java Language Architect at Oracle.
- Aleksey Shipilëv - Performance geek, benchmarking czar, concurrency bug hunter.
- Markus Eisele - Java EE evangelist, Red Hat.
- Martin Thompson - Pasty faced performance gangster.
- Peter Lawrey - Peter Lawrey, Java performance expert.
-
Communities
- Stack Overflow - Question/answer platform.
- r/java - Subreddit for the Java community.
- VirtualJUG - Virtual Java User Group.
-
Influential Books
-
Websites
-
Podcasts and Screencasts
- The Java Council
- The Java Posse - Discontinued as of 02/2015.
- Java Off Heap
- Marco Behler's Screencasts - Screencasts about modern Java development.
-
Frontends
-
-
Projects
-
Security
- Themis - Multi-platform high-level cryptographic library provides easy-to-use encryption for protecting sensitive data: secure messaging with forward secrecy, secure data storage (AES256GCM); suits for building end-to-end encrypted applications.
- Bouncy Castle - All-purpose cryptographic library and JCA provider offering a wide range of functions, from basic helpers to PGP/SMIME operations.
- Keywhiz - System for distributing and managing secrets.
- pac4j - Security engine.
- jjwt - JSON web token for Java and Android.
- Jwks RSA - JSON Web Key Set parser.
- SecurityBuilder - Fluent Builder API for JCA and JSSE classes and especially X.509 certificates.
- Tink - Provides a simple and misuse-proof API for common cryptographic tasks.
- Hdiv - Runtime application that repels application security risks included in the OWASP Top 10, including SQL injection, cross-site scripting, cross-site request forgery, data tampering, and brute force attacks.
- Nbvcxz - Advanced password strength estimation.
- Kalium - Binding for the Networking and Cryptography (NaCl) library.
- Bouncy Castle - All-purpose cryptographic library and JCA provider offering a wide range of functions, from basic helpers to PGP/SMIME operations.
- Vault - Secures, stores, and tightly controls access to tokens, passwords, certificates, API keys, and other secrets. It handles leasing, key revocation, key rolling, and auditing. Through a unified API, users can access an encrypted Key/Value store and network encryption-as-a-service, or generate AWS IAM/STS credentials, SQL/NoSQL databases, X.509 certificates, SSH credentials, and more.
- OACC - Provides permission-based authorization services.
- Keycloak - Integrated SSO and IDM for browser apps and RESTful web services.
-
Code Analysis
- Infer - Modern static analysis tool for verifying the correctness of code.
- PMD - Source code analysis for finding bad coding practices.
- 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.
- 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)
- Sourcetrail - Visual source code navigator.
-
JSON
- 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.
- fastjson - Very fast processor with no additional dependencies and full data binding.
- 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. Convert JSON to Java. Pretty print JSON. Java JSON serializer.
- jsoniter - Fast and flexible library with iterator and lazy parsing API.
- 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.
- Jolt - JSON to JSON transformation tool.
- JsonSurfer - Streaming JsonPath processor dedicated to processing big and complicated JSON data.
- JsonSurfer - Streaming JsonPath processor dedicated to processing big and complicated JSON data.
- JsonPath - Extract data from JSON using XPATH-like syntax.
- Genson - Powerful and easy-to-use Java-to-JSON conversion library.
- Yasson - Binding layer between classes and JSON documents similar to JAXB.
-
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.
- jasync-sql - Async DB driver for MySQL and PostgreSQL.
- HikariCP - High-performance JDBC connection pool.
- 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.
- 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.
- sql2o - Thin JDBC wrapper that simplifies database access and provides simple mapping of ResultSets to POJOs.
-
Monitoring
- LeakCanary - Memory leak detection.
- SPM  data models.
- Time4J - Advanced date and time library. (LGPL-2.1-only)
- Almanac Converter - Simple conversion between different calendar systems.
-
Introspection
- jOOR - jOOR stands for jOOR Object Oriented Reflection. It is a simple wrapper for the java.lang.reflect package.
- ClassGraph - ClassGraph (formerly FastClasspathScanner) is an uber-fast, ultra-lightweight, parallelized classpath scanner and module scanner for Java, Scala, Kotlin and other JVM languages.
- 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.
- 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.
-
Web Crawling
- webmagic - Scalable crawler with downloading, url management, content extraction and persistent.
- Crawler4j - Simple and lightweight web crawler.
- StormCrawler - SDK for building low-latency and scalable web crawlers.
- StormCrawler - SDK for building low-latency and scalable web crawlers.
- Apache Nutch - Highly extensible, highly scalable web crawler for production environments.
- jsoup - Scrapes, parses, manipulates and cleans HTML.
-
Native
- JNA - Work with native libraries without writing JNI. Also provides interfaces to common system libraries.
- JavaCPP - Provides efficient and easy access to native C++.
- JNR - Work with native libraries without writing JNI. Also provides interfaces to common system libraries. Same goals as JNA, but faster, and serves as the basis for the upcoming [Project Panama](http://openjdk.java.net/projects/panama).
-
Build
-
Networking
- gRPC - RPC framework based on protobuf and HTTP/2.
- KryoNet - Provides a clean and simple API for efficient TCP and UDP client/server network communication using NIO and Kryo.
- sshj - Programatically use SSH, SCP or SFTP.
- Finagle - Extensible RPC system for constructing high-concurrency servers. It implements uniform client and server APIs for several protocols, and is protocol-agnostic to simplify implementation of new protocols.
- AkkaGRPC - Support for building streaming gRPC servers and clients on top of Akka Streams.
- ServiceTalk - Framework built on Netty with APIs tailored to specific protocols and support for multiple programming paradigms.
- Comsat - Integrates standard Java web-related APIs with Quasar fibers and actors.
- urnlib - Represent, parse and encode URNs, as in RFC 2141. (GPL-3.0-only)
- TLS Channel - Implements a ByteChannel interface over SSLEngine, enabling easy-to-use (socket-like) TLS.
- Nifty - Implementation of Thrift clients and servers on Netty.
- Dubbo - High-performance RPC framework.
- Grizzly - NIO framework. Used as a network layer in Glassfish.
- Nifty - Implementation of Thrift clients and servers on Netty.
-
Version Managers
-
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.
- jbock - Typesafe, reflection-free, annotation based command-line parser.
- Jexer - 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](https://en.wikipedia.org/wiki/Turbo_Vision).
-
Cluster Management
- Singularity - Mesos framework that makes deployment and operations easy. It supports web services, background workers, scheduled jobs, and one-off tasks.
- Apache Mesos - Abstracts CPU, memory, storage, and other compute resources away from machines.
-
Compiler-compiler
- JavaCC - Parser generator that generates top-down parsers. Allows lexical state switching and permits extended BNF specifications.
-
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.
-
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.
-
Hypermedia Types
-
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.
-
Logging
- Logbook - Extensible, open-source library for HTTP request and response logging.
- p6spy - Enables logging for all JDBC transactions without changes to the code.
- Tracer - Call tracing and log correlation in distributed systems.
- Logstash - Tool for managing log files.
- Kibana - Analyzes and visualizes log files. Some features require payment.
- Tracer - Call tracing and log correlation in distributed systems.
- Logback - Robust logging library with interesting configuration options via Groovy.
- SLF4J - Abstraction layer/simple logging facade.
- Apache Log4j 2 - Complete rewrite with a powerful plugin and configuration architecture.
- tinylog - Lightweight logging framework with static logger class.
-
Processes
- ch.vorburger.exec - Convenient API around Apache Commons Exec.
- zt-exec - Provides a unified API to Apache Commons Exec and ProcessBuilder.
- zt-process-killer - Stops processes started from Java or the system processes via PID.
-
PaaS
- Google Cloud ![c - Google's cloud infrastructure.
-
Search
- Indexer4j - Simple and light full text indexing and searching library.
- Elasticsearch - Distributed, multitenant-capable, full-text search engine with a RESTful web interface and schema-free JSON documents.
- Apache Solr - Enterprise search engine optimized for high-volume traffic.
-
-
Contributing
-
Websites
- CONTRIBUTING - java-validation).
-
Programming Languages
Categories
Sub Categories
Twitter
52
Testing
37
Miscellaneous
32
Platform
26
Database
22
REST Frameworks
20
JSON
19
Monitoring
15
Websites
15
Security
15
CLI
13
Networking
13
Utility
13
JVM and JDK
13
Web Frameworks
12
Distributed Applications
12
Awesome Lists
11
Science
11
Bean Mapping
10
Code Analysis
10
Logging
10
Geospatial
10
HTTP Clients
10
Machine Learning
9
PDF
9
ORM
8
High Performance
8
Configuration
7
Dependency Injection
7
Development
7
Messaging
7
Functional Programming
7
Formal Verification
7
Data Structures
7
Bytecode Manipulation
7
Performance analysis
7
Web Crawling
6
Microservice
6
Imagery
6
Template Engine
6
Distribution
6
Introspection
6
Code Generators
6
Influential Books
5
Natural Language Processing
5
Serialization
5
Financial
4
Job Scheduling
4
Game Development
4
Podcasts and Screencasts
4
Date and Time
4
Reactive libraries
4
Processes
3
Native
3
Hypermedia Types
3
Server
3
Communities
3
Document Processing
3
CSV
3
Code Coverage
3
Distributed Transactions
3
GUI
3
Search
3
Version Managers
3
Build
3
IDE
2
Cluster Management
2
PaaS
1
Caching
1
Constraint Satisfaction Problem Solver
1
Frontends
1
Compiler-compiler
1
Keywords
java
140
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