Java SE 8 is arguably the most important Java update in many years. The addition of the special and unique tool – ‘Lambda Expressions / Functional Programming’ – represents the most significant change to the Java language since the introduction of ‘generics’. This course provides an introduction to the capability known as ‘Lambda Expressions’ or ‘Functional Programming’. The course illustrates the new syntax, new libraries and new programming paradigm associated with this new Java tool. The course will show how to write programs faster and more concisely, as compared to using only pre-Java 8 techniques, ‘imperative/procedural programming’ and ‘object-oriented programming’. Furthermore, the course illustrates that ‘functional programs’ are in many cases easier to ‘parallelize’, so that programs can take advantage of multi-core architectures to enhance performance
- The course is for Java software developers coming from an ‘object-oriented programming’ and ‘imperative/procedural programming’ background with little or no prior exposure to ‘functional programming’. The student is assumed to have a working knowledge of Java 5 or later, including an understanding of ‘generics’, and the ‘anonymous inner classes’ tool. The student will be presented with code examples and explanatory narratives to show how to write simple, clean library-level code that solves programming problems cleanly and concisely.
At the end of the course, students will be able to:
- 1. Explain what ‘functional programming’ is.
- 2. Show how ‘lambda expressions’ implement functional interfaces.
- 3. Show how functional programming simplifies programming tasks that would be less straight-forward using other techniques.
- 4. Explain the new additions to interfaces, ‘default methods’ and ‘static methods’.
- 5. Explain what ‘Streams’ are, how to create Streams, and explain what ‘intermediate operations’ and ‘terminal operations’ of streams are.
- 6. Illustrate the ‘laziness’ associated with functional programming, and explain its benefits.
- 7. Explain ‘parallelism’ and show how this is more easily achieved with functional programming.
- 8. Illustrate the implementation of some design patterns using functional programming techniques.