Once you start looking at developing on a particular platform, say Android, Windows 10 or iOS, you're likely to come across this word SDK. See Fig 6.2.1. You may already even know this stands for software development kit, but what does that mean? How does that differ from things like libraries and frameworks that we just covered?
Fig 6.2.1: SDK for Windows 10
Why the word kit? Usually when you hear the word kit, it’s usually part of phrases like electronics kit, model airplane kit and so on. So, kit meaning a bunch of stuff in a box. Well, actually that is what SDK means, or at least that's what it used to mean.
Fig 6.2.2: This is what an SDK meant in 1992
Fig 6.2.1 shows an example of what SDK used to mean back in 1992. This is the Microsoft Windows C and C++ software development kit. When you got an SDK in those days what you got was a big old box weighing about 30 pounds. Inside that box you would find things like a reference book for the C language, another reference book for the C++ language, yet another reference book for the class library, the standard library, a bunch of floppy disks including separate programs for writing code, compiling it and debugging it.
You'd also get some tutorials, help books and even a getting started manual to help you actually understand what was in the box. See Fig 6.2.3. That was a software development kit, a big box full of everything you needed and hopefully everything you might ever need to develop software on that platform.
Fig 6.2.3: Contents of SDK in 1992
Because these were expensive things to make and ship, they first moved to mainly CD rom with electronic versions of everything.
As the web developed, SDKs all became downloads.
These days the term SDK has become a little vague. On different platforms, some will tell you to download the main development application which will include the SDK. Others will tell you to download the SDK and that will include the main development application. See Fig 6.2.4.
Fig 6.2.4: Contents of SDK (only software) in recent time
It really doesn't matter.
SDK is a kind of a catch-all term for a bundle of different programs and tools that a developer might need during the entire process of writing, debugging, testing, developing and releasing code.
These days and SDK might include things like emulators to test a phone application using your desktop or laptop. SDK also include relevant frameworks and libraries that are available on that platform. They are part of it.