List of libraries I recommend to use for Java projects & libraries I'd like to use.
At the moment this list is not complete, but I'll try to add most of libraries I've ever worked with.
- Spring Framework - Well known DI & much-much more.
- OSGi - Equinox - Very specific modular framework, overkill for most applications.
- Google Guice - Minimalistic implementation of JSR-330 (standardizes annotations like
@Inject
and theProvider
).
- Rapidoid - Extremely Fast, Simple and Powerful Java Web Framework!
- Akka - A toolkit and runtime for building highly concurrent, distributed, and resilient message-driven applications.
- Netflix - Hystrix - A latency and fault tolerance library.
- Netflix - Eureka - Service registry.
- Netflix - Ribbon - A Inter Process Communication (RPC) library with built in software load balancers.
- Netflix - EVCache - A distributed in-memory data store for the cloud.
- Netflix - Zuul - A gateway service that provides dynamic routing, monitoring, resiliency, security, and more.
- Zipkin - A distributed tracing system. It helps gather timing data needed to troubleshoot latency problems.
- Maven - This is Maven: solid but not flexible.
- Gradle - Cool, but require a lot of discipline in order not to generate mess in build scripts.
- Bazel - Language agnostic tool that automates software builds and tests.
- Apache Spark - Great distributed computing platform.
- Apache Storm - A free and open source distributed realtime computation system.
- Presto - Distributed SQL Query Engine for Big Data.
- Twitter Finagle - An extensible RPC system for the JVM, used to construct high-concurrency servers.
- RxJava - A library for composing asynchronous and event-based programs using observable sequences.
- Guava - Google provided utiities for things you missing in Java SDK.
- Dropwizard Metrics - Application-level metrics.
- FasterXML Jackson - Great XML/JSON/etc. <-> POJO converter.
- Project Lombock - Boilerplate genertion.
- Ehcache - In-memory cache for Java.
- JNA - Simple but powerfull integration with native code.
- okhhtp - An HTTP+HTTP/2 client for Android and Java applications.
- leakcanary - A memory leak detection library for Android and Java.
- Unirest - Lightweight HTTP Request Client Libraries.
- Retrofit - A type-safe HTTP client for Android and Java.
- JDeferred - is a Java Deferred/Promise library similar to JQuery's Deferred Object.
- Project Reactor - fourth-generation Reactive library for building non-blocking applications on the JVM based on the Reactive Streams Specification. Spring friendly.
- Javaslang - Functional programming in Java.
- JavaPoet - A Java API for generating .java source files.
- Netflix Hollow - comprehensive toolset for harnessing small to moderately sized in-memory datasets.
- JavaSpark - A tiny web framework for Java 8.
- okio - A modern I/O API for Java.
- JCTools - Concurrent data structures currently missing from the JDK.
- MapStruct - An annotation processor for DTO mapping (compile-time).
- EclipseLink - Ok JPA implementation (and much more), need to be carefull with big projects.
- Hibernate - Idiomatic persistence for Java and relational databases.
- HikariCP - high-performance JDBC connection pool.
- Liquibase - DB migration library.
- QueryDSL - DB integration helper tool.
- Slik - Scala library for functional relational mapping.
- Titan DB - A scalable graph database optimized for storing and querying graphs containing hundreds of billions of vertices and edges distributed across a multi-machine cluster.
- Apache ActiveMQ - Message broker, JMS implementation. Old & has a lot of design issues, in most cases it is overkill.
- Apache Camel - Powerfull implementation of EIP, but in modern applications it is rearly usefull.
- Apache Kafka - Used for building real-time data pipelines and streaming apps.
- JUnit - Just JUnit.
- TestNG - Just TestNG.
- Mockito - Mocking library.
- JMH - Best option for micro-benchmarks in Java!
- JOL - Java Object Layout, analyze object layout schemes in JVMs.
- RestAssured - DSL for testing REST API.
- H2 - Great for faking more serious SQL databases.
- Fongo - Fast dummy Mongo API compatible inmemory replacement, gread for tests.
- Embedded Mongo - Great way to bring MongoDB into test, but could be slow & require native (platform dependent libraries).
- JimFS - Goole library for testing file system related workflows.
- JUnit Theories - Yet unexplored JUnit feature for property based testing.
- WireMock - Mock HTTP services in tests.
- PiTest - Mutation testing.
- junit-quickcheck - Property based testing for JUnit.
- Spock - It is Groovy library, but in Java projects Groovy often used for testing.
- Awaitability - Helper library for async software testing.
- ScalaCheck - Property based testing.
- AMD Aparapi - AMD implementation of Java to OpenCL interface.
- aparapi - a framework for executing native Java code on the GPU.