JACK is system for handling real-time, low latency audio (and MIDI). It runs on GNU/Linux, Solaris, FreeBSD, Mac OS X and Windows (and can be ported to other POSIX-conformant platforms). It can connect a number of different applications to an audio device, as well as allowing them to share audio between themselves. Its clients can run in their own processes (ie. as normal applications), or can they can run within the JACK server (ie. as a "plugin"). JACK also has support for distributing audio processing across a network, both fast & reliable LANs as well as slower, less reliable WANs, thus making it a good choice for live-coding environments such as Pure Data, which supports JACK.
Understanding JACK in different ways
The term "JACK" doesn't really identify anything very precisely. What "JACK" means depends a little bit on your perspective. There are several ways of understanding the term, all equally valid:
The JACK API
The definition of the data structures, protocols and functions used by programs that use JACK An implementation of the API.
The software (the server)
A server application, often called "jack", and a library used by clients. There are already two implementations of the API, known as "jack1" and "jack2" (formerly "jackmp"). Different implementations are (in almost every way) drop-in replacements for each other.
qjackctl (A GUI control application)
The existing implementations do not come with any GUI at all. To make life easier for most users, GUI control apps exist that allow easy modification of JACK startup parameters, and ways to monitor the state of a running JACK system. qjackctl is the most widely used GUI control application.
(adapted from http://jackaudio.org/)
Interfacing Pure Data with JACK
Pure Data is fairly easy to fit alongside Jack.
Start jack by running it from GUI or command line.
In the Media tab, choose jack.
In the Media > Audio Settings choose the number of channels you want PD to give to jack (in and out).
This assumes that you have Jack installed and probably the realtime configurations enabled for better performance.
Routing Browser audio to jack (including flash and other browser plugin containers)
(from Ubuntu Studio tutorials, can be used in other Linux variants)
sudo apt-get install pulseaudio-module-jack
After jackd is started, launch in a terminal:
pacmd load-module module-jack-source channels=2; pacmd load-module module-jack-sink channels=2;
Now go to the ubuntu sound options, switch to pulseaudio on output (and in if you like) and enjoy. It is all routed back to jack.
If you were successful it will show up in the GUI (qjackctl) as depicted below.
Tidying it up, if you use qjackctl
Go to Setup > Options
Add the load-module command above to the script to be started after jack is launched