Date: 15 – 16 March 2018, Cluj-Napoca
Training fee: €600/participant plus VAT, only 25 seats available
About the training
Reactive and Asynchronous applications are growing in popularity, but what is the best way to build them? This course teaches you how to apply the latest concurrency techniques to develop state of the art Java applications. With the rise of Microservices and Service Oriented Architectures, asynchronous concurrency is now critical to day-to-day Java development.
We start off by reviewing the differences between asynchronous and synchronous programming. You then build upon this theory by refactoring a project using different modern concurrency techniques including promises using Java 8’s CompletableFuture, actors using Akka and reactive streams using RxJava. You’ll learn the good, the bad and the ugly between these approaches in terms of compositionality, testability and simplicity.
Asynchronous vs Synchronous Programming
Asynchronous Servlets (3.0) and Spring
Why use asynchronous communications?
Solving the C10K Problem and the Microservices Performance problem
Approaches to Concurrency
The Reactive Manifesto and Functional Reactive Programming
Models of Concurrency: Event Based, Promises, The Actor Model, Reactive Streams
The full stack – from application right down to the OS
Promises using CompletableFutures
What is a Promise?
The Actor Model with Akka
What is the Actor model?
Why and when would you use actors?
Recovering from exceptions
Reactive Streams with RxJava
Introducing Reactive Streams
Connecting Reactive streams to databases and web sockets
Pull vs. Push models
Java 9 Flow API
Alternative Reactive Stream Implementations
Threading and Back Pressure
Good to know before the masterclass:
* How is the event going to go? Is it a practical workshop?
It’s a practical workshop – we have a number of hands-on exercises that involve solving coding problems.
* Are there any prerequisites? (e.g.: have a laptop, have knowledge in X topic, etc..)
You need to have a laptop and have an understanding of core Java. Some understanding of Lambda expressions and Java 8 is ideal, but not a prerequisite. If you don’t know lambdas let Richard know at the beginning of the lab and he’ll explain them.
* Will it be an intro into reactive or present real projects designed with reactive in mind (address a different population)?
It introduces the concepts and walks through practical coding exercises of the topics mentioned in the abstract. It uses libraries and frameworks that are reactive or asynchronous but doesn’t walk through exiting applications that are if that’s what you mean.
* There’s a lot of topics there, will all of them be presented in detail?
They will all be presented in some detail. CompletableFutures and Reactive Streams are more focused APIs than Actors so they will be covered more fully. Actors are a huge area with other some topics left uncovered in this course – but we cover the conceptual fundamentals rather than trying to cover every part of the API.
* Is this going to focus on programming (API & technological choices) or on system design (reactive microservices?)
The focus will be on the programming side of things, but we do also cover some system design concepts. For example talking about timeouts, failure detection, error handling, recovery and circuit breakers in the context of these programming APIs.
Richard is an empirical technologist and solver of deep-dive technical problems. Recently he has written a book on Java 8 Lambdas for O’Reilly. He’s worked as a developer in many areas including Statistical Analytics, Static Analysis, Compilers and Networking.
He is a leader in the London Java Community and runs OpenJDK Hackdays. Richard is also a known conference speaker, having talked at JavaOne, Devoxx, JFokus, DevoxxUK, Geecon, JAX London and Codemotion. He has obtained a PhD in Computer Science from The University of Warwick.