Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Frameworks vs. SDKs

What is the difference between a framework and an SDK? Take, for example, the MS platform SDK and the .NET framework. Both have API's, both hide their inner workings, and both provide functionality that may not be quickly/easily accessible otherwise (in other words, they serve a real-world purpose).

So what's the difference? Is it primarily a marketing game of semantics, or are there actual differences in how developers are expected to interact with the software (and conversely, how the developers can expect the software to behave)? Is one expected to be higher- or lower-level than the other, etc?

Thanks!

EDIT: This question applies to SDKs and frameworks in general, not just the two mentioned above.

like image 609
Brian Avatar asked Jan 08 '09 16:01

Brian


People also ask

Is SDK a library or framework?

An SDK (software development kit) is a library or group of libraries (often with extra tool applications, data files and sample code) that aid you in developing code that uses a particular system (e.g. extension code for using features of an operating system (Windows SDK), drawing 3D graphics via a particular system ( ...

Is Android SDK a framework?

Native Android development platform like the many others we have already discussed also stars among some of the world's most popular mobile development frameworks. The SDK provides developers with API libraries and developer tools necessary to build, test, and debug brilliant apps for Android Platform.

What is the difference between APIs and SDKs?

An API is a set of libraries that make up the core language that you can work with out of the box, whereas an SDK is a development kit that facilitates usages of an API. Conceptually both are a way for your program to interface with and control the resources provided by another piece of software.

What is difference between library and SDK?

Android SDK -> is the core features and software tools that allow you to create an app for the Android Platform. An SDK contains lots of libraries and tools which you will use to develop your application. A Library -> is a collection of pre-built compiled code which you can use to extend your application's features.


2 Answers

I'll just copy from Wikipedia:

Library:

A library is a collection of subroutines or classes used to develop software. Libraries contain code and data that provide services to independent programs. This allows code and data to be shared and changed in a modular fashion.

Framework:

A software framework, in computer programming, is an abstraction in which common code providing generic functionality can be selectively overridden or specialized by user code providing specific functionality. Frameworks are similar to software libraries in that they are reuseable abstractions of code wrapped in a well-defined API. Unlike libraries, however, the overall program's flow of control is not dictated by the caller, but by the framework. This inversion of control is the distinguishing feature of software frameworks.

SDK:

A software development kit (SDK or "devkit") is typically a set of development tools that allows a software engineer to create applications for a certain software package, software framework, hardware platform, computer system, video game console, operating system, or similar platform. It may be something as simple as an application programming interface in the form of some files to interface to a particular programming language or include sophisticated hardware to communicate with a certain embedded system. Common tools include debugging aids and other utilities often presented in an IDE. SDKs also frequently include sample code and supporting technical notes or other supporting documentation to help clarify points from the primary reference material.

So:

  • Library is code that your application calls.
  • Framework is an application or library that is almost ready made. You just fill in some blank spots with your own code that the framework calls.
  • SDK is a bigger concept as it can include libraries, frameworks, documentation, tools, etc.
  • .NET is really more like a platform, not a software framework.
like image 58
John Smith Avatar answered Sep 30 '22 09:09

John Smith


An SDK is expected to offer tools to program against a certain system resource or feature. A Framework not necessarily (although .NET offers a whole set of tools such as the compilers, etc - but these are mandatory for it to work anyways).

So, you could develop a Framework consisting solely of libraries, but if you call it SDK you will be expected to offer something to support development.

like image 44
Otávio Décio Avatar answered Sep 30 '22 09:09

Otávio Décio