views:

2574

answers:

4
+6  Q: 

API vs. SDK

I am trying to explain to a non-developer the difference between an API an SDK. I need to explain why a commercial fingerprint software vendor will likely not provide an SDK although they may certainly have used one. But both device vendors and software vendors can and should expose a well-defined API. This API allows other software programs to (be written to) interoperate with the vendor’s own software components or hardware devices. If someone has more ideas to explain this clearly, I would very much appreciate the suggestions. Thanks! (P.S. I want to emphasize that the goal is to explain to a non-programmer who does not know developer lingo)

Specifically, in the context of a fingerprint sensor versus software to do enrolment/verification, here is how I attempted to explain it: "If I am a fingerprint device/sensor manufacturer and not in the business of writing software, the ways I could better market my product are: 1. Make sure my device drivers are installable on a wide variety of operating systems, 2. Define and provide an API for software developers to write programs (e.g., for enrollment, verification) to “talk” to or use my device; 3. Develop and provide an SDK (one step beyond an API) to make it easier and faster for software developers to write programs that work with my device. SDKs may provide helper code libraries, reference applications, documentation etc."

+14  A: 

Piece of cake:

  • an API is an interface. It's like the specification of the telephone system or the electrical wiring in your house. Anything* can use it as long as it knows how to interface. You can even buy off-the-shelf software to use a particular API, just as you can buy off the shelf telephone equipment or devices that plug into the AC wiring in your house.
  • an SDK is implementation tooling. It's like a kit that allows** you to build something custom to hook up to the telephone system or electrical wiring.

*Anything can use an API. Some APIs have security provisions to require license keys, authentication, etc. which may prohibit complete use of the API in particular instances, but that's only because particular authentication/authorization steps fail. Any software that presents the right credentials (if required) can use the API.

**Technically, if an API is well-documented, you don't need an SDK to build your own software to use the API. But having an SDK generally makes the process much easier.

Jason S
Some other ideas I have for explaining this is the iPhone example (proprietary code but well-defined API), telephone jack or USB port example to explain what a software interface is with an easier to visually understand hardware analogy
Sliceoftime
+2  A: 

I'm not sure there's any official definition of these two terms. I understand an API to be a set of documented programmable libraries and supporting source such as headers or IDL files. SDKs usually contain APIs but often often add compilers, tools, and samples to the mix.

jlew
technically APIs need to be specified but don't have to be publicly documented, they could be secret.
Jason S
+1  A: 

Suppose company C offers product P and P involves software in some way. Then C can offer a library/set of libraries to software developers that drive P's software systems.

That library/libraries are an SDK. It is part of the systems of P. It is a kit for software developers to use in order to modify, configure, fix, improve, etc the software piece of P.

If C wants to offer P's functionality to other companies/systems, it does so with an API.

This is an interface to P. A way for external systems to interact with P.

If you think in terms of implementation, they will seem quite similar. Especially now that the internet has become like one large distributed operating system.

In purpose, though, they are actually quite distinct.

You build something with an SDK and you use or consume something with an API.

Jack Widman