Software development kit
Encyclopedia
A software development kit (SDK or "devkit") is typically a set of software development
Software development
Software development is the development of a software product...

 tools that allows for the creation of applications
Application software
Application software, also known as an application or an "app", is computer software designed to help the user to perform specific tasks. Examples include enterprise software, accounting software, office suites, graphics software and media players. Many application programs deal principally with...

 for a certain software package, software framework
Software framework
In computer programming, a software framework is an abstraction in which software providing generic functionality can be selectively changed by user code, thus providing application specific software...

, hardware
Hardware
Hardware is a general term for equipment such as keys, locks, hinges, latches, handles, wire, chains, plumbing supplies, tools, utensils, cutlery and machine parts. Household hardware is typically sold in hardware stores....

 platform, computer system, video game console
Video game console
A video game console is an interactive entertainment computer or customized computer system that produces a video display signal which can be used with a display device to display a video game...

, operating system
Operating system
An operating system is a set of programs that manage computer hardware resources and provide common services for application software. The operating system is the most important type of system software in a computer system...

, or similar platform.

It may be something as simple as an application programming interface
Application programming interface
An application programming interface is a source code based specification intended to be used as an interface by software components to communicate with each other...

 (API) in the form of some files to interface to a particular programming language
Programming language
A programming language is an artificial language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs that control the behavior of a machine and/or to express algorithms precisely....

 or include sophisticated hardware to communicate with a certain embedded system
Embedded system
An embedded system is a computer system designed for specific control functions within a larger system. often with real-time computing constraints. It is embedded as part of a complete device often including hardware and mechanical parts. By contrast, a general-purpose computer, such as a personal...

. Common tools include debugging aids and other utilities often presented in an integrated development environment
Integrated development environment
An integrated development environment is a software application that provides comprehensive facilities to computer programmers for software development...

 (IDE). SDKs also frequently include sample code and supporting technical notes or other supporting documentation to help clarify points from the primary reference material.

SDKs may have attached license
License
The verb license or grant licence means to give permission. The noun license or licence refers to that permission as well as to the document recording that permission.A license may be granted by a party to another party as an element of an agreement...

s that make them unsuitable for building software intended to be developed under an incompatible license. For example, a proprietary SDK will probably be incompatible with free software
Free software
Free software, software libre or libre software is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with restrictions that only ensure that further recipients can also do...

 development, while a GPL
GNU General Public License
The GNU General Public License is the most widely used free software license, originally written by Richard Stallman for the GNU Project....

-licensed SDK could be incompatible with proprietary software development. LGPL
GNU Lesser General Public License
The GNU Lesser General Public License or LGPL is a free software license published by the Free Software Foundation . It was designed as a compromise between the strong-copyleft GNU General Public License or GPL and permissive licenses such as the BSD licenses and the MIT License...

 SDKs are typically safe for proprietary development.

A software engineer typically receives the SDK from the target system developer. Often the SDK can be downloaded directly via the Internet
Internet
The Internet is a global system of interconnected computer networks that use the standard Internet protocol suite to serve billions of users worldwide...

. Many SDKs are provided for free to encourage developers to use the system or language. Sometimes this is used as a marketing tool. For example, Foo Products might provide the Widget SDK for free to encourage people to use it. In turn, more people will be encouraged to buy more of their widgets
Widget (economics)
The word widget is a placeholder name for an object or, more specifically, a mechanical or other manufactured device. It is an abstract unit of production. The Oxford English Dictionary defines it as "An indefinite name for a gadget or mechanical contrivance, esp. a small manufactured item" and...

 since they can program them for free.

An SDK for an operating system add-on (for instance, QuickTime
QuickTime
QuickTime is an extensible proprietary multimedia framework developed by Apple Inc., capable of handling various formats of digital video, picture, sound, panoramic images, and interactivity. The classic version of QuickTime is available for Windows XP and later, as well as Mac OS X Leopard and...

 for Mac OS
Mac OS
Mac OS is a series of graphical user interface-based operating systems developed by Apple Inc. for their Macintosh line of computer systems. The Macintosh user experience is credited with popularizing the graphical user interface...

) may include the add-on software itself, to be used for development purposes, if not necessarily for redistribution. An interesting situation arises here between platforms where it is possible to develop applications that can at least start up on a system configuration without the add-on installed, and use a Gestalt
Gestalt (Mac OS)
Gestalt was the name of a system call introduced into the Apple Macintosh operating system System Software 6.0.4 in 1989 to allow applications to dynamically query what capabilities were present in the running system configuration....

-style run-time environment query to determine if the add-on is present, and ones where the application will simply fail to start. In other words, it is possible to build a single binary that will run on configurations with and without the add-on present, albeit operating with reduced functionality in the latter situation.

Providers of SDKs for specific systems or subsystems may sometimes substitute a more specific term instead of software. For instance, both Microsoft
Microsoft
Microsoft Corporation is an American public multinational corporation headquartered in Redmond, Washington, USA that develops, manufactures, licenses, and supports a wide range of products and services predominantly related to computing through its various product divisions...

 and Apple provide driver development kits (DDK) for developing device driver
Device driver
In computing, a device driver or software driver is a computer program allowing higher-level computer programs to interact with a hardware device....

s.

Related pages

  • Application programming interface
    Application programming interface
    An application programming interface is a source code based specification intended to be used as an interface by software components to communicate with each other...

  • Native Development Kit
    Native development kit
    A native development kit is a software development kit based on a native application programming interface which allows computer software to be developed directly on a computing platform, rather than via a virtual machine....

  • Graphics library
    Graphics library
    A graphics library is a program library designed to aid in rendering computer graphics to a monitor. This typically involves providing optimized versions of functions that handle common rendering tasks. This can be done purely in software and running on the CPU, common in embedded systems, or being...

  • Widget toolkit
    Widget toolkit
    In computing, a widget toolkit, widget library, or GUI toolkit is a set of widgets for use in designing applications with graphical user interfaces...

    (or GUI toolkit)
The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK