Course Overview
Overall Narrative: Discuss Java 8’s capabilities (& limitations) and answer the question “Does the arrival of streams make Java 8 a functional language?”. Then discuss Java 8 concurrency in some detail.
Target Audience
Experienced and advanced Java programmers. Especially suitable for architects and team leaders who want to learn the limits of Java 8 or work out whether the time is right for them to move to Java 9. Also suitable for teams trying to decide whether to stick with Java or move to e.g. Kotlin or Scala.
Duration
1 day
Prerequisites
Attendees must already be experienced Java 8 programmers, and comfortable working with lambdas and the Streams API. Any wider knowledge of Functional Programming concepts is very helpful but not essential. Any experience programming in Scala, Clojure, Kotlin or Haskell will be an advantage.
Software Spec and Set-up Requirements:
EITHER:
A laptop with a Java 9 installation, Maven 3.5 or above and a Java IDE (Eclipse Oxygen, IntelliJ 2017.3 or Netbeans 9) that supports Java 9
OR:
A laptop with a Java 8 installation, Maven 3 and a Java IDE (Eclipse, IntelliJ or Netbeans 9) AND a setup to use Java 9 from the command line (e.g. VirtualBox Linux VM or Docker container)
Course Outline
<ol
<liMotivation</li
</ol
<ul
</ul
</ol
<ul
</ul
</ol
<ul
</ul
Lab: Building up FP in Java
</ol
<ul
</ul
Lab: Advanced Streams
</ol
<ul
</ul
<ol
- </ol
<ul
<liShortcomings</li
</ul
Lab: Parallel Streams
<liCompleteableFuture</li
</ol
<ul
<liCompleteableFuture</li
</ul
Lab: CompleteableFuture
</ol
<ul
<liCountdownLatch, CyclicBarrier and Phaser</li
</ul
<ol - </ol
9.New Version Scheme and Roadmap
<ul
</ul
<liModules</li
</ol
<ul
<liMaven</li
</ul
Lab: A first module
</ol
<ul
<liFlow, Publisher, Subscriber</li
</ul
Lab: Using Flows
</ol
<ul
<liEncapsulation</li
<liUnsafe</li
</ul