Christopher (@chbatey) is a Senior Engineer at Lightbend. He works primarily in Scala but also spent 10 years writing Java and a couple of years writing Go.
Currently he works on the core Akka team responsible for developing core Akka, Akka Http and Akka Streams. He has previously built trading systems, online television platforms and worked extensively with Apache Cassandra. You can check out his blog at: http://www.batey.info
What can you do in Scala that you can’t do in Java? What are the practical uses of more advanced language features? What could the future hold for Java?
We’ll cover specific language features with their uses cases:
- Function composition as an alternative to layered architectures
- Functional approaches to implement dependency injection
- Writing reusable code with higher kinded types
- Avoiding mutability with expressions
- Compile time checked serialisation with generic programming
As well as posing some higher level questions about language features:
- Why do we embrace runtime reflection frameworks but fear compile time implicit parameters?
- Ease of initial understanding vs long term productivity of a language
- Simple vs familiar language features and patterns
The goal of this talk is for you to learn some specifics about language features not yet in Java as well as to get you excited about programing languages in general
What are reliable ways of building responsive and scalable services? What does it means for our programs to be asynchronous and back pressured and why is it important? This talks aims to answer these questions. We’ll cover:
- Thread per request vs asynchronous services
- What back pressure is and how to do it all the way down to the network layer
- How to achieve all of this with Akka HTTP and Akka Streams
- How it compares to other tools for asynchronous programming e.g. CompletableFutures, Observables
- Reactive streams specification and API
Time permitting we’ll also demo a networked application built with Akka sending back pressure through the application layer, through TCP and into the client application.