Same kernel,same .ipynb file
These are two interfaces onto identical machinery. A notebook written in one opens unchanged in the other, because the file format never differed.
IPython, IRkernel, and the rest. The execution side is shared machinery, not a difference.
One .ipynb, JSON, with cells and outputs. Portable between the two without conversion.
Both are front ends onto Jupyter Server. Authentication and remote access work identically.
One document,or a workspace
Classic Notebook shows you a notebook. JupyterLab shows you a desktop that happens to contain notebooks.
Lab, unless you havea specific reason
The classic interface is in maintenance and Lab is where development happens. That settles most of it, but the exceptions are real.
Anything sustained: multiple files, a terminal beside the notebook, debugging, or a long-running project.
You want the single-document simplicity, on modern foundations. The best of the classic argument.
One document and nothing else on screen is genuinely easier for a beginner. This is a real reason, not nostalgia.
Notebook 7 muddied the comparison usefully: it is the classic interface rebuilt on Lab's foundations, so you get the simple single-document view with the modern extension system underneath. If the reason you preferred classic was the interface rather than the internals, that is the version to use.
The kernel runswhere the data is
This is the part that matters more than the interface question, and it is the same for both.
$ jupyter lab --ip 0.0.0.0 --no-browser
$ jupyter nbconvert --to script analysis.ipynb
Run the server on the machine holding the data and open it in a browser tab. Nothing is downloaded, the GPU is right there, and closing the tab does not stop the kernel. The thing to remember is that an idle notebook still holds a machine that is billing by the hour — stop the machine when you are finished, not when you next remember.
Jupyter Lab isalready built
Nothing here needs compiling. Pick a machine, and these two commands put it on there.
$ dxflow workflow create --identity jupyter hub://jupyter
$ dxflow workflow start jupyter