Frameworks, Libraries, and Platforms
These three terms are common when describing a technology for web programmers. They are only helpful, if you know what they are.
When you Google technical terminology, like “framework”, the results are generally as unfamiliar as the original term.
According to Wikipedia, “In computer programming, a software framework is an abstraction in which software providing generic functionality can be selectively changed by additional user-written code, thus providing application-specific software. A software framework provides a standard way to build and deploy applications. A software framework is a universal, reusable software environment that provides particular functionality as part of a larger software platform to facilitate development of software applications, products and solutions. Software frameworks may include support programs, compilers, code libraries, tool sets, and application programming interfaces (APIs) that bring together all the different components to enable development of a project or system.”
Oh, good grief, that’s a mess. If you know what all those words mean, you probably already know what a framework is. For the rest of us, a comparison might be good. A framework is like a cake mix. A cake mix is not a cake, but part of building a cake that saves you time. That’s the abstraction. You can imagine that it will be a cake. You can add stuff to the cake mix that will make it a cake. You can add additional stuff to the cake mix that will make it a different cake … like making pineapple upside-down cake from a yellow cake mix.
Libraries are collections of parts and pieces of code. Each of the parts and pieces do a different task. Libraries function like a cooking store. If you are making kimchi, you may only need gochugaru (Korean red pepper flakes), but the whole library is there for when you need some black strap molasses for gingerbread. A library may have code for a group of related tasks or for a variety of tasks that range from helping your computer run to making clickable widgets on a web page.
For example, the C programming language doesn’t have functions to save or open files; very important functions that are expected from most every program on a computer. But, there is a library that you to attach to you program that gives your code access to those functions … like those spices that go into a dish, but are not seen in the dish.
“The C standard library provides macros, type, definitions and functions for tasks such as string handling, mathematical computations, input/output processing, memory management, and several other operating system services.”
ReactJS is a very different library. It’s a front end library of widgets for a website. This library is more like buying serving platters and tablecloths to help with the presentation of that lovely Korean meal you are preparing.
It takes some time to learn about the multitude of libraries out there. Most likely, a programmer will only have time to learn about the libraries they need for their own work. Like making your own noodles, it might seem easier just to write your own code. You have to weigh the trade-off between time and quality and budgets.
Your platform is your kitchen. Some kitchens have every modern convenience. Other kitchens run leaner. Some kitchens are up to modern code. Others need a total remodel. All of these issues are also found in computer platforms.
A computer platform is your operating system, with the most common being Windows or Linux or Android or iOS. A platform makes all the rules for the programs that are installed on a device. One of the reasons that libraries and frameworks are so helpful is that they are already set up to work on a particular platform.
The development process gets a little complicated when you want the same software to run on different platforms with different rules and interface designs. For example, when people use their Android phone, they expect that each program on the phone will have the same tools and the same way to get to those tools. When tools look like the tools in the device, the tools are said to be “native”. For a program (app) to be native on both Android and iOS, some of the code will have to have two sets: one for each platform.