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 the differences between mutating and non-mutating objects


The immutable version adds an overhead compared with the mutable version because it is necessary to create a new instance of the class as a result of calling the absolute, negate, add, or sub methods. The previously analyzed mutable class named Vector3D just changed the values for the fields, and it wasn't necessary to generate a new instance. Hence, the memory footprint for the immutable version is higher than the mutable version.

The immutable class named ImmutableVector3d has both a memory and performance overhead compared with the mutable version. It is more expensive to create a new instance than to change the values of a few fields. However, as previously explained, when we work with concurrent code, it makes sense to pay for the extra overhead to avoid potential issues caused by mutable objects. We just have to make sure we analyze the advantages and tradeoffs in order to decide which is the most convenient way...