#### Overview of this book

Jupyter Notebook is a web-based environment that enables interactive computing in notebook documents. It allows you to create and share documents that contain live code, equations, visualizations, and explanatory text. The Jupyter Notebook system is extensively used in domains such as data cleaning and transformation, numerical simulation, statistical modeling, machine learning, and much more. This book starts with a detailed overview of the Jupyter Notebook system and its installation in different environments. Next we’ll help you will learn to integrate Jupyter system with different programming languages such as R, Python, JavaScript, and Julia and explore the various versions and packages that are compatible with the Notebook system. Moving ahead, you master interactive widgets, namespaces, and working with Jupyter in a multiuser mode. Towards the end, you will use Jupyter with a big data set and will apply all the functionalities learned throughout the book.
Learning Jupyter
Credits
www.PacktPub.com
Preface
Free Chapter
Introduction to Jupyter
Jupyter Python Scripting
Jupyter R Scripting
Jupyter Julia Scripting
Jupyter JavaScript Coding
Interactive Widgets
Sharing and Converting Jupyter Notebooks
Multiuser Jupyter Notebooks
Jupyter Scala
Jupyter and Big Data

## Scala immutability

Immutable means you cannot change something. In Scala, all variables are immutable unless specifically marked otherwise. This is the opposite of languages such as Java, where all variables are mutable unless specifically marked otherwise.

In Java, we can have the following function:

```public void calculate(integer amount) {
}
```

We can modify the value of `amount` inside the `calculate` function. We can tell Java not to allow changing the value if we use the `final` keyword:

```public void calculate(final integer amount) {
}
```

Whereas in Scala, the similar routine is as follows:

```def calculate (amount: Int): Int = {
amount = amount + 1;
return amount;
}
```

The preceding code leaves the value of the `amount` variable as it was before the routine was called.

We can see in the display that even though balance is a variable (marked as `var`), Scala will not allow you to change its value inside of the function.