Framework vs Library vs Platform vs API vs SDK vs Toolkits vs IDE
Get this down.
I’ve read somewhere that each word in a piece of text that you are not familiar with can slice up your attention and enough such words mean you’re not going to end up reading all of that information. This problem gets worse when you’re a new developer and the introductory sentence of the introductory page of some tool you are trying to use drops a couple of big words on you that you don’t quite understand. If you don’t understand these words, it could turn you off from developing the software.
Personally, I need to get these definitions clear.
Note: I found this answer on Stack Overflow, but unfortunately, it did not explain the concepts to me satisfactorily.
I want some examples. I always get confused, so with some examples I might be able to figure it out better. Also: Is…stackoverflow.com
So here is my attempt to do better.
Platform: A platform is simply the hardware or software for which the piece of software is built. For example, software may be built for a Windows, OS X, Android, iOS, XBOX One, PS4, etc. These are all platforms. Since different platforms have different requirements and interface differently to the software, the code you write may not run on all platforms and it is important to know which platforms you are building for.
Library: A library refers to code that provides functions that you can call from your own code to deal with common tasks. For example a math library will provide you with common mathematical functionality such as trigonometric or logarithmic functions. Programming languages usually have libraries for all sorts of tasks such as data processing, plotting of graphs, text parsing, etc. Once included, libraries save you the trouble of writing all those functions yourself.
API: Short for Application Programming Interface. This term refers to the “face” of the library, as it is accessible to the programmer. Think of it as a logical representation of what is in the library, and the relevant documentation that explains what the programmer can do with the library. The difference being that library refers to the code itself, whereas API refers to the interface. There are many interesting APIs, some of the exciting ones are provided by websites we use daily such as Google APIs, Facebook Messenger API, etc.
IDE: Short for Integrated Development Environment. The IDE is an application which helps you during the process of writing the code itself by automating many useful processes such as debugging, refactoring, code generation, etc. An IDE is just a tool to help programmers, and you may simply use Notepad if you wish. Examples of IDEs include: Eclipse, IntelliJ IDEA, Netbeans, Visual Studio, etc.
SDK: Short for Software Development Kit. This is a complete kit of software development tools for a specific platform. This “kit” can include all sorts of things such as: Libraries, APIs, IDEs, Documentation, etc. For example the Android SDK, which provides everything you may need for Android development.
Toolkit: Seems to me a loose term to refer to any collection of “tools” (another loose term) that have a common goal.
Framework: A framework is a generic structure that provides a skeleton architecture with which specific software can be implemented. The abstraction allows for common design patterns to be easily reused while still allowing the specific details to be left to the developers. Reusing common design patterns means having the general structure for solving similar sorts of problems. For example the Java Swing Framework provides the functionality and structure for Java GUI programming; it can be used for whatever GUI programming you may need to do. Another example is the Model-View-Controller Framework that describes in very abstract terms the three main parts of a common web application. The framework may be manifested as functions and classes that necessarily need to be implemented such as the run() method in Java Swing, requiring the user to conform with the design pattern that the framework is all about.
All right. I got it!