Software development kit (SDK):

A software development kit (SDK) is a collection of software development tools that allow developers to write or use an existing framework to develop applications for a given platform. A platform can be a hardware device, an operating system, a programming language, a web browser, or a cloud service. SDKs are provided by the manufacturers or vendors of the platforms to help developers easily integrate their applications with the platform's features and functionalities.

SDKs typically include the following components:

  • Compiler: A compiler is a program that converts the source code written by the developer into executable code that can run on the target platform.
  • Debugger: A debugger is a program that helps the developer find and fix errors or bugs in the source code or the executable code.
  • Application programming interface (API): An API is a set of predefined functions, methods, classes, or protocols that enable communication and data exchange between different software components or systems. An API defines how the developer can use the platform's services or resources in their application.
  • Libraries: Libraries are collections of reusable code or data that perform specific tasks or provide common functionalities. Libraries can be static or dynamic, meaning they can be linked to the application at compile time or run time.
  • Documentation: Documentation is the written information that explains how to use the SDK and its components. Documentation can include manuals, tutorials, guides, references, examples, and FAQs.
  • Sample code: Sample code is the code that demonstrates how to use the SDK and its components in various scenarios or use cases. Sample code can help the developer learn and understand how to build applications using the SDK.

SDKs have many advantages for developers and platform providers. Some of the advantages are:

  • Easiness: SDKs make it easy for developers to create applications for a specific platform without having to write everything from scratch. SDKs provide ready-made tools and components that simplify and speed up the development process.
  • Consistency: SDKs ensure consistency and compatibility across different applications that use the same platform. SDKs follow the platform's standards, conventions, and best practices, which help maintain quality and performance of the applications.
  • Accessibility: SDKs make it accessible for developers to use the platform's features and functionalities without having to know the low-level details or complexities of the platform. SDKs abstract away the technical details and provide a high-level interface for the developer.
  • Support: SDKs provide support and assistance for developers who use the platform. SDKs include documentation, sample code, testing tools, debugging tools, and online resources that help developers solve problems and improve their skills.

In conclusion, a software development kit (SDK) is a set of software development tools that enable developers to create applications for a specific platform. SDKs include compiler, debugger, API, libraries, documentation, and sample code. SDKs have many advantages such as easiness, consistency, accessibility, and support.

SDK Examples:

Windows SDK, Android SDK, Java SDK (JDK)

Application programming interface (API):

An application programming interface (API) is a way for two or more computer programs to communicate with each other. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how to build or use such a connection or interface is called an API specification.

An API simplifies programming by abstracting the underlying implementation and only exposing objects or actions the developer needs. For example, an API for file input/output might give the developer a function that copies a file from one location to another without requiring that the developer understand the file system operations occurring behind the scenes.

An API may be custom-built for a particular pair of systems, or it may be a shared standard allowing interoperability among many systems. There are APIs for programming languages, software libraries, computer operating systems, and computer hardware¹. APIs originated in the 1940s, though the term did not emerge until the 1960s and 1970s.

One of the most common types of APIs today are web APIs, which allow communication between computers that are joined by the internet. Web APIs enable applications to exchange data and functionality easily and securely². For example, when a user purchases a product on an ecommerce site, they may be prompted to "Pay with Paypal" or another type of third-party system. This function relies on APIs to make the connection between the product website and the payment system.

APIs offer many benefits to developers and organizations, such as improved collaboration, accelerated innovation, and simplified integration. APIs enable integration so that different platforms and apps can seamlessly communicate with each other, breaking down silos that hinder productivity and performance². APIs also offer flexibility, allowing companies to make connections with new business partners, offer new services to their existing market, and access new markets that can generate massive returns and drive digital transformation.

SDK and API Examples:

Windows operating system provides user APIs through windows Win32 DLLs.

CreateFile() is an example API to access files system of windows. It has been provided by kernel32.dll.

Now developer who wants to access file system must call CreateFile() function from application. Windows Win32 SDK provides this facility. It provides C++ header files and import libraries as a part of SDK. CreateFile() function has been declared in winbase.h and imported through kernel32.lib.

About our authors: Team EQA

Further readings

Where is WinMain() function in MFC application ?

MFC hides WinMain in its framework and includes source file on WinMain(). This explains how framework calls global CWinApp::Initinstance() from entry WinMain.

What is the utility of CWinApp class?

This is constructed during global C++ objects are constructed and is already available when Windows calls the WinMain function, which is supplied by the ...

Basic steps in Win32 GUI Application with source code.

Define a custom Window class structure, Register the class name, CreateWindow, Show windows and write message get and dispatch loop statements. Define the Window CallBack procedure and write the handlers.

What is a Window CallBack procedure and what is its utility?

DispatchMessage() is a API which indirectly triggers the Window CallBack procedure. Message structure members from this function are passed to the CallBack procedure. CallBack procedure should implement event handlers depending on the need of the application.

What are LPARAM and WPARAM in window proc function?

LPARAM and WPARAM are the two parameters in Window CallBack procedure. They signifies parameters of various events. They are used in handing individual events.

What are the basic steps of a typical MFC based application?

We need to write WinMain and need to follow all these in a Win32 application. However we need not to write much if we are writing an application with MFC ...

#