So far we’ve concerned ourselves mostly with data and code that lives inside our application. Modern software, however, usually requires communication with file systems, other processes, and remote software. Web servers talk with browsers, applications send messages to queueing systems, and scripts build entire stacks with descriptions—all communicating with others in various ways.
In the next few pages, we’ll explore some of Clojure’s facilities for communicating with other programs and resources, and the tools and techniques that facilitate this. The data we’re concerned with in this chapter is serializable data.