Skip to content

List of libraries I recommend to use for Java projects & libraries I'd like to use

Notifications You must be signed in to change notification settings

aigor/best-of-java-libs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 

Repository files navigation

Best of Java Libraries

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.

Application Glue (IoC, DI, etc.)

Battle tested

Waiting for reviews

  • Google Guice - Minimalistic implementation of JSR-330 (standardizes annotations like @Inject and the Provider).

Micro-Frameworks for Web Applications

Waiting for reviews

  • Rapidoid - Extremely Fast, Simple and Powerful Java Web Framework!

Microservices & Distributed Computation

Waiting for reviews

  • 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.

Build tools

Battle tested

  • 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.

Waiting for reviews

  • Bazel - Language agnostic tool that automates software builds and tests.

Computation Frameworks

Battle tested

Waiting for reviews

  • 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.

General Purpose Libraries (Collections, Networking, Monitoring, etc.)

Battle tested

  • 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.

Waiting for reviews

  • 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).

DB & Integration Tools

Battle tested

  • EclipseLink - Ok JPA implementation (and much more), need to be carefull with big projects.

Waiting for reviews

  • 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.

Application Integration & Messaging (EIP)

Battle tested

  • 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.

Waiting for reviews

  • Apache Kafka - Used for building real-time data pipelines and streaming apps.

Application Testing (Unit, Integration)

Battle tested

  • 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.

Waiting for reviews

  • 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.

Java & GPU Computation

Waiting for reviews

  • AMD Aparapi - AMD implementation of Java to OpenCL interface.
  • aparapi - a framework for executing native Java code on the GPU.

About

List of libraries I recommend to use for Java projects & libraries I'd like to use

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published