Book Image

Java 9 with JShell

By : Gaston C. Hillar
Book Image

Java 9 with JShell

By: Gaston C. Hillar

Overview of this book

The release of Java 9 has brought many subtle and not-so-subtle changes to the way in which Java programmers approach their code. The most important ones are definitely the availability of a REPL, known as JShell, which will make experiments and prototyping much more straightforward than the old IDE-based project-led approach. Another, more subtle change can be seen in the module system, which will lead to more modularized, maintainable code. The techniques to take full advantage of object-oriented code, functional programming and the new modularity features in Java 9 form the main subjects of this book. Each chapter will add to the full picture of Java 9 programming starting out with classes and instances and ending with generics and modularity in Java.
Table of Contents (23 chapters)
Java 9 with JShell
Credits
About the Author
Acknowledgement
About the Reviewer
www.PacktPub.com
Customer Feedback
Preface
Index

Understanding functions and methods as first-class citizens


Since its first release, Java has been an object-oriented programming language. Starting with Java 8, Java added support for the functional programming paradigm and continues to do so in Java 9. Functional programming favors immutable data, and therefore, functional programming avoids state changes.

Note

The code written with a functional programming style is as declarative as possible, and it is focused on what it does instead of how it must do it.

In most programming languages that provide support to the functional programming paradigm, functions are first-class citizens, that is, we can use functions as arguments for other functions or methods. Java 8 introduced many changes to reduce boilerplate code and make it easy for methods to become first-class citizens in Java and make it easy to write code that uses a functional programming approach. We can easily understand this concept with a simple example such as filtering a list....