Jupyter Notebook is a collaborative work tool for programmers and software developers. It offers them the possibility to share code, graphics or multimedia files in interactive notebooks. But the tool offers even more features. Find out everything you need to know about Jupyter Notebook.
When developers want to collaborate with colleagues, it is common practice to share an application’s source code and executable separately. However, this practice makes it difficult to understand how the software works since communication is limited by the types of exchanges.
With Jupyter Notebook, the collaborative work reaches a new level. The tool allows project members to view, modify, document or execute code live. Programmers can interact with each other and observe in real time source code modifications on the compiled version of the application.
But what is Jupyter Notebook really and why is this tool so popular with IT professionals? The answer in our dossier.
Table of contents
What is Jupyter Notebook?
Jupyter Notebook is a open source web application Which came into existence in 2015. Formerly called IPython Notebook, the tool is a interactive computing environment which allows developers to present their work and interact with other project members.
The name Jupyter is a concatenation of the names of the languages Julia, Python and R. But the tool is not limited to these languages. The Jupyter Notebook environment allows to support more than 50 different programming languages.
Jupyter Notebook allows its users to create interactive documents called notebooks. These documents can contain computer code, comments, mathematical equations, graphics or multimedia content. The Jupyter application also allows you to export your documents in several formats (single document, web page, PDF file, etc.).
Each notebook can then be shared, reused or modified directly from the web browser. Once the modifications are saved, the Web application will display in real time the effects on the executable under development. This feature has made Jupyter Notebook an ideal tool for developing applications in data science or machine learning.
How to install the Jupyter Notebook application?
Although it is possible to install Jupyter Notebook via the Python “pip” command, the best way to get the application is to install the Anaconda package manager. This distribution gives access to more than 720 scientific libraries and allows to install the latest version of Python.
The Anaconda package manager also allows you to automatically solve dependency problems related to the use of Jupyter Notebook. Anaconda also offers access to JupyterLab and its many extensions.
JupyterLab is an interface to Jupyter Notebook that allows users to take advantage of drag-and-drop functionality in addition to many others.
However, users who do not wish to install Anaconda can access Jupyter Notebook by running it on a Docker container. This will require the use of the Docker Toolbox and a virtualization platform to run the Docker image of Jupyter Notebook.
How does Jupyter Notebook work?
The Jupyter Notebook application consists of three main components:
- The Jupyter Notebook client-server application Which allows editing and running notebooks via web browser. The tool can be accessed locally or on a remote server via the Internet.
- The kernel which is loaded to execute the computer code contained in a Notebook document. There is in fact a particular execution kernel for each of the programming languages supported by the application.
- The notebooks which are files with the extension .ipynb. A notebook usually contains a sequence of blocks and each block consists of two areas. The first area is an editable cell for the source code. The second cell, located just below the first, will display the output generated by the execution of the code.
The way the application is designed offers many advantages to developers. Indeed, the allows a variable declared in a block to be available in another block. This capability is very useful when the project is in the experimentation or test phase.
Furthermore, the block structure of a Jupyter document allows the fragmentation of a code. It thus allows to execute only a part of the code in order to carry out tests or modifications.
In addition, the display of the code and the outputs in the same interface allows to avoid the permanent switching between different windows.
What can Jupyter notebooks contain?
Jupyter Notebook allows you to create interactive documents that contain several types of ingredients organized in blocks. A Jupyter Notebook is usually a JSON document which can contain plain text or HTML text. A notebook can also contain CSS style sheets.
A Jupyter Notebook document also handles code or code blocks implemented in the Python language. However, thanks to the interpreters, Jupyter Notebook is able to support Julia, R and about fifty other languages.
After executing a block of code, which can be done in any order, the results appear directly in the output area just below.
The Notebook application also allows you to visualize graphics generated by a set of instructions. These graphics are obtained with the packages Matplotlib, Plotly or Bokeh. The visualization of the graphs is then done either in line, just next to the instruction blocks or in an external file.
One of the advantages of the Jupyter Notebook web application is that it allows support multimedia files. Indeed, all types of media (images, videos, sounds…) supported by a web page are available in a Jupyter notebook. The integration can be done either in HTML or using the IPython.display module.
Finally, the Jupyter application allows data files to be associated with notebooks. It allows the download data from Internet or from an external database. The integration of the data is then done through lines of code directly included in the Jupyter document.
It is generally unconventional to share notebook JSON files. To remedy this, Jupyter Notebook allows its users to download the notebook in different formats (native, HTML, PDF, Markdown, reStructuredText, Python script).
What can the Jupyter application be used for?
Originally intended for data science applications, Jupyter Notebook now offers several useful features for different industries.
In addition to sharing code and data via archives, developers use notebooks as blog posts to describe their experiences. These notebooks are available to other users to recreate or improve processes.
Jupyter Notebook is also very convenient for document a Python module or library. The Jupyter notepad can then be used as an interactive sandbox to experiment with the operation of a Python module. Indeed, all the libraries that work correctly in the application interface allow to perform this procedure.
Finally, using Jupyter Notebook allows for a better understanding of the results of a statistical analysis. It is common to share such results in the form of a static graph, however, this practice has its limitations. With Jupyter Notebooks, users can deepen the analysis by playing with the data or graphs in a totally interactive way.
What are the advantages of Jupyter Notebook?
Jupyter Notebook offers invaluable help for anyone who wants to write and run scripts in real time. Through the different libraries available, the application allows to visualize data or to carry out complex mathematical calculations. The application also allows the export of notebooks in different formats.
Furthermore, the availability of several interpreters allows developers to work with C++ or Java code in Jupyter Notebook. The platform also allows the live coding, version management and collaborative work through JupyterHub.
Finally, Jupyter Notebook is a web application free and open source which benefits from a strong community of developers and users.
What are the limitations of the Notebook application?
Although Jupyter Notebook offers many advantages, it also has several rather serious limitations. First of all, you have to understand that the application Notebook is not a complete IDE for programming languages. For example, Notebook does not support code completion or interactive debugging.
In addition, the restoration of the state of a code is not possible with the default Jupyter tools. This is due to the fact that the session is not kept. The next time the notebook is loaded, the code will have to be rerun to recover its state.
Finally, Jupyter notebooks are not autonomous. In other words, when a user wants to share a notebook with a colleague, the Jupyter runtime and all the necessary libraries must be installed on the neighboring machine. This is certainly one of the biggest limitations to the use of Jupyter Notebook.