What is the difference between a Toolkit, a Framework, and a Library?

What is the difference between a Toolkit, a Framework, and a Library?
Photo by Todd Quackenbush / Unsplash

This week I was reading the first chapter of “Design Patterns: Elements of Reusable Object-Oriented Software” (I’ll refer to it from now on as “The DP Book”). While reading this chapter, I came across the terms "toolkit" and "framework". These were terms I’d always heard, but I’d never delved into the technical differences that were associated with them. In today’s post, I’ll be going over what I learned as I tried to understand the differences between them.

Libraries are commonly used to refer to a collection of pre-written code used to form a specific task. This could either be a single file or an entire directory. Toolkits and frameworks can comprise one or more libraries. So then what’s the difference between a toolkit and a framework?

Toolkits are a set of reusable and related classes that exist to provide general functionality. The DP book offers examples of toolkits such as the C++ I/O stream. The toolkit doesn’t impose any design on the application you’re developing. They help emphasize code reuse by allowing developers to not reimplement standard functionality.

Frameworks on the other hand are prebuilt pieces of software that developers can build upon. Unlike toolkits, frameworks can dictate the architecture of the application using them.

A good analogy I found to explain the difference between toolkits and frameworks is that toolkits are like going to an Ikea to pick out items to furnish your existing home, while a framework is like buying a model house that you can add things to. Essentially, with a toolkit, you’re writing the main body of the application and you call the code that you’d want to reuse.  With frameworks, you use the main body of code and write the ancillary code.

If you’re interested, feel free to visit the following links to learn more: