Git Product home page Git Product logo

awesome-java8's Introduction

Awesome Java 8 Build Status

A curated list of useful, if not amazingly awesome, tools, libraries, frameworks, and other resources that take advantage of (or even require) Java 8 features, such as Lambdas, or have a more modern approach to writing Java code. Those that require Java 8 are marked with an ๐ŸŽฑ emoji (for "eight ball" or sometimes "billiards").

If you want a larger list of Java resources not specific to Java 8, check out Awesome Java.


Table of Contents


Libraries and Frameworks

Code Generators

  • FreeBuilder - Writes builder-pattern builders for your code. Very well documented and supports all major IDEs and build tools. Supports Java 8 mapper methods.

Distributed Systems libraries

Libraries that support distributed systems, e.g., queues, key-value stores, and quorum/consensus.

  • Atomix - Event-driven framework for coordinating fault-tolerant distributed systems built on the Raft consensus algorithm. ๐ŸŽฑ

Functional libraries

Libraries that make Java 8 more functional, especially filling in the gaps in streams.

  • 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. ๐ŸŽฑ
  • Javaslang - Adds the notion of Tuples, along with immutable Values and Pattern Matching, to make it easier to write more functional Java code. ๐ŸŽฑ
  • jOOฮป - Part of the jOOQ series of libraries, provides more Functions, Tuples, and Seq that provides methods like crossJoin(), join(), and groupBy(). ๐ŸŽฑ
  • ProtonPack - Offers about a dozen utilities for Stream, e.g., takeWhile, zip, aggregate, and a unique collector. ๐ŸŽฑ

Interoperability libraries

Not sure what to call these other than interoperability libraries, i.e., libraries that make it easier to work with existing libraries that Java 8 provides. I could be convinced to put this under Functional libraries...

  • 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. ๐ŸŽฑ

Microservices

While the term can sometimes be ambiguous, hopefully it'll become more clear as new libraries and frameworks become available. This section may include entire frameworks, or libraries that help with coordinating and connecting separately deployed services (aka microservices).

  • Apollo - A library for writing HTTP microservices that focuses on composability and simplicity, with high performance using modern Java idioms and features. ๐ŸŽฑ
  • 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. ๐ŸŽฑ

Networking libraries

  • Javaslang-CircuitBreaker - A lightweight, easy-to-use CircuitBreaker library designed for Java8 and functional programming based on Javaslang. ๐ŸŽฑ

Persistence libraries

  • Speedment - A fluent database access library that looks just like Java 8 code, using the Stream API for querying. Supports MySQL, MariaDB, and PostgreSQL. ๐ŸŽฑ

Reactive libraries

Focused on "pulling" items from a stream. There may be overlap between these libraries and the Functional ones (above), but the ones here are primarily/exclusively focused on the Reactive way of thinking about streams.

  • Cyclops React - A library that focuses on users needing async and lazy streams (formerly Simple React). Very well documented with lots of diagrams (yay!). ๐ŸŽฑ

Testing

  • AssertJ - Fluent assertions for Java unit testing, with the 3.0 release requiring Java 8. ๐ŸŽฑ
  • Lambda Behave - BDD-oriented framework that leverages lambdas to make tests more "behavioral". If you've seen Jasmine or Spock, this will be familiar. ๐ŸŽฑ
  • Mockito - The Java 8-specific version of the wonderful mocking library, Mockito. Works great with AssertJ. ๐ŸŽฑ

Web App/API frameworks

Frameworks (and micro-frameworks) that make it easy to create services that provide Web APIs (aka REST), and/or full web sites without a "full-blown" JAX-RS implementation.

  • 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. ๐ŸŽฑ
  • 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. ๐ŸŽฑ
  • Ratpack - Reactive framework built on the Netty engine for non-blocking I/O. Also supports Groovy. ๐ŸŽฑ
  • Spark Java - Concise (micro-) framework for quickly creating Web APIs or web pages. Does not use annotations. Embeds the Jetty web server. ๐ŸŽฑ

Tools

Tools to help upgrade your code to Java 8, or other utilities that don't become part of your codebase.

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

Books & Videos

I hesitated to add this, but with the restriction that these be real books and videos (as in, not a promotion or tied to a specific vendor of products), then let's see how this goes.

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

awesome-java8's People

Contributors

tedyoung avatar vincecima avatar robwin avatar jbgi avatar readmecritic avatar dkhamsing avatar

Watchers

James Cloos avatar Sangkyun Yoon avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.