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

Building immutable classes in Java 9


So far, we have been working with mutable classes and mutating objects. Whenever we expose mutable fields, we create a class that will generate mutable instances. In certain scenarios, we might prefer an object that cannot change its state after it has been initialized. We can design classes to be immutable and to generate immutable instances that cannot change their state after they were created and initialized.

A typical scenario where immutable objects are extremely useful is when we work with concurrent code. Objects that cannot change their state solve many typical concurrency problems and avoid potential bugs that might be difficult to detect and solve. Because immutable objects cannot change their state, it is not possible to end up with an object with a corrupted or inconsistent state when many different threads modify it without the appropriate synchronization mechanisms.

Note

An immutable object is also known as a non-mutating object.

We will create...