Search icon CANCEL
Subscription
0
Cart icon
Your Cart (0 item)
Close icon
You have no products in your basket yet
Save more on your purchases now! discount-offer-chevron-icon
Savings automatically calculated. No voucher code required.
Arrow left icon
Explore Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Conferences
Free Learning
Arrow right icon
Arrow up icon
GO TO TOP
Learning Java Functional Programming

You're reading from   Learning Java Functional Programming Create robust and maintainable Java applications using the functional style of programming

Arrow left icon
Product type Paperback
Published in Oct 2015
Publisher
ISBN-13 9781783558483
Length 296 pages
Edition 1st Edition
Languages
Arrow right icon
Authors (2):
Arrow left icon
Richard M. Reese Richard M. Reese
Author Profile Icon Richard M. Reese
Richard M. Reese
Richard M Reese Richard M Reese
Author Profile Icon Richard M Reese
Richard M Reese
Arrow right icon
View More author details
Toc

Table of Contents (11) Chapters Close

Preface 1. Getting Started with Functional Programming 2. Putting the Function in Functional Programming FREE CHAPTER 3. Function Composition and Fluent Interfaces 4. Streams and the Evaluation of Expressions 5. Recursion Techniques in Java 8 6. Optional and Monads 7. Supporting Design Patterns Using Functional Programming 8. Refactoring, Debugging, and Testing 9. Bringing It All Together Index

Chapter 1. Getting Started with Functional Programming

Functional programming languages have been used successfully for decades and present a different and often more elegant way of expressing the program logic. Functional languages, such as Lisp, Clojure, or Haskell, incorporate techniques that may seem odd and hard to follow by programmers who are used to imperative programming techniques.

A language such as Java, while not initially developed with a functional orientation, can incorporate functional techniques. This is the major change to the language made with the release of Java 8. Java now incorporates imperative, procedural, object-oriented, and functional techniques.

It is possible to write a non-object-oriented program in Java. Likewise, it is possible to write a nonfunctional program in Java 8. The goal of this book is to enlighten the reader to the nature of functional programming techniques and how to incorporate these techniques in Java 8 applications.

We will start with a discussion of the attributes commonly associated with functional programming. From there, we will examine the support, Java provides for developing applications using a functional-style programming approach.

A predominant feature of functional programming languages is the use of functions. The term, function, is generally understood to be:

  • A way of expressing an algorithm
  • A mathematical function
  • Where the goal is to avoid state changes and mutable data

In functional programming, applications are constructed using only pure functions. A pure function is a function which does not have side effects. A side effect occurs when a function does something else besides simply returning a value, such as mutating a global variable or performing IO. In this chapter, we will examine the major aspects of functional programming including:

  • Functions and function composition
  • Fluent interfaces
  • Strict and non-strict evaluation
  • Persistent data structures, monads, and the Optional class
  • Recursion and parallelism

This is followed by the support Java 8 provides for functional programming, including:

  • Lambda expressions
  • Default methods
  • Functional interface
  • Method and constructor references
  • Collections

In addition, to our discussion of functional programming support as provided by Java 8, refactoring, debugging, and testing Java 8 code are also important topics, which need to be addressed. These topics are covered in Chapter 8, Refactoring, Debugging, and Testing.

So, let's begin with an overview of what constitutes the functional programming approach.

lock icon The rest of the chapter is locked
Register for a free Packt account to unlock a world of extra content!
A free Packt account unlocks extra newsletters, articles, discounted offers, and much more. Start advancing your knowledge today.
Unlock this book and the full library FREE for 7 days
Get unlimited access to 7000+ expert-authored eBooks and videos courses covering every tech area you can think of
Renews at $19.99/month. Cancel anytime