The definitions of library, framework, and toolkit are fuzzy. When I first googled the subject, the most common response I read was something obscure about inversion of control. Any noob worthy of noob status would be wrinkling their forehead at this. You call the library but the framework calls you? WTF does that mean? So, before diving in to noobier explanations, just know that there are shades of gray between each category. For example, Django can be referred to as both a framework and a library for Python. Toolkits can be libraries. Frameworks can be libraries. But libraries can’t be frameworks.
A library is a collection of resources used to perform tasks that are often used in web development. It’s a collection of pre-compiled modules that you can use in your program.
In addition to pre-written snippets of code, the library may also contain documentation, configuration data, and other files that support the operation of the modules. Basically anything that helps with routine tasks.
In order to conceptualize the other two terms, framework and toolkit, it helps to use the analogy that we conventionally associate with those terms. Construction. If we were building a house, a framework would be a premade frame for our house. On that framework, we could say, “I want to add a door here.” We could get a premade door and put it in our house framework. Without the framework, we’d have to buy every beam of wood and every nail, and build everything from scratch.
In programming, a framework is a collection of codes that you can use so that you don’t have to write all the code for common or repetitive tasks yourself. Before frameworks, if you wanted to build a web application, you would code the whole thing yourself.
An example of a framework is Bootstrap. Bootstrap is a collection of commonly used front-end snippets of code for things like buttons, grid layouts, tables, navigation, and more. If you were writing the html and css of a website, and you wanted to insert a Submit button onto the page, you could use the html5 button tag, but it would look like an ugly, boring, old-fashioned button unless you styled it to look the way you wanted it to look. Bootstrap takes popular styling choices and codes them for you, so all you have to know is the bootstrap lingo for button, instead of all the html and css codes needed to make it look pretty. You could also use the Font Awesome toolkit to add icons on your buttons. Font Awesome is like a specialized Wingdings font.
There are also frameworks for back-end languages. Django, for example, is a framework for Python.
Our toolkit would contain tools that help us achieve certain tasks. Just like in construction, a toolkit is a set of tools designed to perform useful functions. Each tool is its own little mini-program. A software development kit (SDK) is an example of a toolkit. If you wanted to make an Android app using Java, you would download the Java Development Kit (JDK) because you would need those tools to develop that platform-specific app.