Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
awesome-java8
Curated list of useful, if not amazing, resources that take advantage of Java 8 and "Modern Java" thinking.
https://github.com/tedyoung/awesome-java8
- Caffeine - High performance Java 8-based in-memory caching library providing a near optimal "hit rate". Well-documented and flexible. :8ball:
- Atomix - Event-driven framework for coordinating fault-tolerant distributed systems built on the Raft consensus algorithm. :8ball:
- Derive4J - Code generator for user-defined algebraic data types (aka sum types) based on an enhanced "visitor" pattern. Provides structural pattern matching, laziness, functional setters (return a copy of an object with one field modified) & more. :8ball:
- Vavr - Adds the notion of Tuples, along with immutable Values and Pattern Matching, to make it easier to write more functional Java code. (Formerly known as Javaslang.) :8ball:
- jOOλ - Part of the jOOQ series of libraries, provides more Functions, Tuples, and `Seq` that provides methods like `crossJoin()`, `join()`, and `groupBy()`. :8ball:
- NoException - Allows checked exceptions in functional interfaces and converts exceptions to Optional return. :8ball:
- ProtonPack - Offers about a dozen utilities for `Stream`, e.g., `takeWhile`, `zip`, `aggregate`, and a `unique` collector. :8ball:
- Release 21
- Guava - One of the most widely used and well-written general-purpose Java libraries. As of Release 21, only works with Java 8 (or later). :8ball:
- Cyclops - Very modular, so only include what you need. From function exception handling (`try`), to generic monad operations, to pattern matching. Specific integrations to Javaslang, functionaljava, and Guava. :8ball:
- Apollo - A library for writing HTTP microservices that focuses on composability and simplicity, with high performance using modern Java idioms and features. :8ball:
- SnoopEE - While this is "experimental", it's worth looking at if you're coming to microservices from a "slimmed down" Java EE point of view and need something to handle service discovery. This was shown in a JavaOne 2015 conference talk [here](https://www.youtube.com/watch?v=REuBLPTeFDg). :8ball:
- Resilience4j - A lightweight, easy-to-use, fault-tolerance library designed for Java8 and functional programming (inspired by Netflix's Hystrix).
- Speedment - A fluent database access library that looks just like Java 8 code, using the Stream API for querying. Supports MySQL, MariaDB, and PostgreSQL. :8ball:
- Reactive
- Cyclops React - A library that focuses on users needing async and lazy streams (formerly Simple React). Very well documented with lots of diagrams (yay!). :8ball:
- Project Reactor - A second-generation Reactive library for building non-blocking applications on the JVM based on the Reactive Streams Specification.
- StreamEx - Does what it says: enhances the Java 8 streams. The ["cheat sheet"](https://github.com/amaembo/streamex/blob/master/CHEATSHEET.md) is really nice: if you know what you want (e.g., swap keys and values coming from entries in a map), it tells you how to get it. :8ball:
- AssertJ - Fluent assertions for Java unit testing, with the 3.0 release requiring Java 8. :8ball:
- Lambda Behave - BDD-oriented framework that leverages lambdas to make tests more "behavioral". If you've seen Jasmine or Spock, this will be familiar. :8ball:
- Mockito - The Java 8-specific version of the wonderful mocking library, Mockito. Works great with *AssertJ*. :8ball:
- Bootique - A "minimally opinionated" web framework that leverages Google's Guice dependency-injection library to include modules such as JOOQ, Curator, Jersey, Kafka, Metrics, and more. :8ball:
- Jooby Project - A modular web framework that supports multiple servers (Netty, Jetty, and Undertow), Websockets, etc., and can be used in many different ways by including a wide variety of modules, e.g., provide a full MVC web site, or just provide APIs. :8ball:
- Play Framework - The popular Play Framework, from Typesafe, is "reactive" and built on Akka (the Actor framework) and supports non-blocking I/O, and is stateless. :8ball:
- Ratpack - Reactive framework built on the [Netty](http://netty.io/) engine for non-blocking I/O. Also supports Groovy. :8ball:
- Vert.x - Mature, fast, reactive and event-driven framework built on [Netty](http://netty.io) engine for non-blocking I/O. Modular and supports numerous languages. Great community support and documentation. :8ball:
- Spark Java - Concise (micro-) framework for quickly creating Web APIs or web pages. Does not use annotations. Embeds the [Jetty](http://www.eclipse.org/jetty/) web server. :8ball:
- FreeBuilder - Writes builder-pattern builders for your code. Very well documented and supports all major IDEs and build tools. Supports Java 8 [mapper methods](https://github.com/google/FreeBuilder#accessor-methods).
- Modernizer - Use this Maven plugin to find out what libraries you can get rid of and replace with Java 8 (and 7) built-in classes.
- Java 8 in Action - One of the earlier Java 8 books, but has lots of good diagrams and pictures to help one learn about things like internal vs. external iteration in streams.
- Java 8 Lambdas - Written by the author of the Lambda Behave testing framework, clearly Richard Warburton knows his lambdas. Concise, yet covers testing & debugging, design, and concurrency.
- Java SE 8 for the Really Impatient - Cay S. Horstmann has been writing Java books forever. This book is right on target and includes even some of the "minor" new features in Java 8, such as using a lambda to do "compare-and-set" operations on atomic variables.
- What's New in Java 8 - Free to read online, and includes lots of examples. Includes lambdas, streams, Nashorn (JavaScript engine), and the new Date/Time API.
Programming Languages
Keywords
java
7
java-8
3
streams-api
2
java8
2
functional-programming
2
collections
2
reactive-streams
1
reactive
1
monoid
1
monad-transformers
1
monad
1
data-structures
1
asynchronous
1
guava
1
visitor-pattern
1
visitor
1
tagged-unions
1
sum-types
1
optics
1
laziness
1
fold
1
exhaustiveness-checking
1
discriminated-unions
1
derive4j
1
catamorphisms
1
annotation-processor
1
algebraic-data-types
1
webframework
1
web-framework
1
modular
1
microframework
1
micro-framework
1
kotlin
1
testing
1
mockito
1
mocking
1
stream
1
spring-boot
1
spring
1
orm
1
javafx
1
java-ee
1
database
1
code-generator
1
retry
1
resilience
1
rate-limiter
1
metrics
1
circuitbreaker
1
bulkhead
1