Jupyter
Jupyter, formally known as the Jupyter Project, is a non-profit organization that creates open-source interactive computing software. It was founded in 2014 by Colombian physicist and software developer Fernando Pérez, as a language-agnostic version of the IPython (interactive Python) project. Jupyter provides tools for mathematicians, scientists, students, data analysts, and computing professionals to write code interactively, view real time results, and publish results on the web.
Jupyter Notebook
Jupyter Notebook is an interactive computing environment and Python web server, providing a browser-based UI (user interface) for Jupyter users. Jupyter Notebooks are an ordered list of input/output cells, each providing a REPL (read-eval-print loop) for writing code and a window to show output in real time.
The picture shows the Jupyter Notebook interface, displaying a Python program that uses Pythreejs (a Python interface for Threejs, a JavaScript 3-D graphics library). The 3-D objects in the output window update immediately when changes to the code are saved.
In addition to code, Jupyter Notebooks may contain text (written in the Markdown format), and rich media, such as audio and video. The Jupyter Notebooks are stored internally as JSON (JavaScript Object Notation) files, and have the file extension .ipynb.
A next-generation UI for Jupyter Notebooks, called JupyterLab, is currently in development, with a stable version released in 2018.
Jupyter kernels
Jupyter kernels are modular kernels that interpret the code in Jupyter Notebooks. As of May 2019, over 100 kernels are available or in active development, each supporting one specific programming language, with a handful of exceptions. Languages with Jupyter kernels include Python, R, Julia, Haskell, Ruby, Fortran, Perl, Go, Scala, Erlang, Elixir, OCaml, PHP (PHP: Hypertext Preprocessor), Octave, MATLAB, C, Racket, Scheme, Bash, and PowerShell.
Jupyter kernels use ZeroMQ, an asynchronous messaging library, to interface with Juypter Notebook components concurrently, enabling high scalability and non-blocking I/O.
JupyterHub
JupyterHub is a multi-user service for Jupyter Notebooks, providing collaboration tools and the ability to allow multiple Jupyter Notebooks to interact with one another.
Cloud services
Organizations that don't want to administer a JupyterHub can host their Jupyter Notebooks in the cloud. Cloud services that support Jupyter include:
- Amazon SageMaker Notebooks - available on AWS (Amazon Web Services).
- Google Colaboratory - available on GCP (Google Cloud Platform).
- Microsoft Azure Notebook - available on Microsoft Azure.
Jupyter Notebooks can also be hosted and rendered on GitHub.
Notable businesses that use Jupyter
Netflix uses Jupyter internally to track and analyze global data usage in real-time, and employs a dedicated staff of Jupyter engineers.