Home > Blogs > VMware vSphere Blog


What’s the difference between an API vs SDK?

By William Lam, Sr. Technical Marketing Engineer

If you are not a developer or programmer, the term API and SDK maybe foreign words to you. If you have heard of either of these words, often times they are miss-used or used interchangeably with one or another which can cause confusion. So what is an API and SDK?

Wikipedia’s defines an API as:
An application programming interface (API) is a source code based specification intended to be used as an interface by software components to communicate with each other. An API may include specifications for routines, data structures, object classes, and variables.

Wikpedia’s defines an SDK as:
A software development kit (SDK or “devkit”) is typically a set of software development tools that allows for the creation of applications for a certain software package, software framework, hardware platform, computer system, video game console, operating system, or similar platform.

Basically, an API provides an interface for users to access the underlying platform capabilities and features. An SDK may provide a set of tools, helper classes (e.g. additional code that simplifies the access of an API), specific language bindings and sample code to help users develop and use the API. In general, you could have a single API exposing a set of functionality and have multiple SDKs to access that API. An SDK may not always exists for an API, but it is helpful when one is provided.

Let’s take a look at an example using one of VMware’s common API and SDK, the vSphere API and vSphere SDK.

Image1

The underlying platform in this case is VMware vSphere which consists of VMware vCenter Server and VMware ESX(i). The vSphere API exposes the various functionalities of the platform such as host management, virtual machine provisioning, monitoring, etc. as a Web services API. VMware provides several SDKs that target particular programming/scripting languages such as Java, .NET, and Perl to name a few, that helps users get started and develop against the vSphere API. Users may bypass the vSphere SDK and use the vSphere web Service API directly, but the SDKs are much friendly from a development standpoint.

Hopefully this gave you a better understanding between an API and an SDK. In the next post, we will dive into an introduction of the vSphere API and the various components that make up the API. Stay tuned!

Get notification of new blog postings and more by following lamw on Twitter:  @lamw

7 thoughts on “What’s the difference between an API vs SDK?

  1. iwan 'e1' Rahabok

    Thanks for the post. I think it would be good to officially include how Orchestrator & PowerCLI fit into this as it’s part of vSphere.
    It seems to me, Orchestrator & PowerCLI sit on top of the SDK, and providing an even higher level interface so typical VMware admin do not have to dive into Perl, .Net, and Java.
    Would be great if we can have documentation advising where Orchestrator and PowerCLI _overlaps_.
    Cheers!
    e1

    Reply
  2. VMware Automation

    Hi Iwan,
    Thanks for the feedback, we’ll definitely be covering how PowerCLI, vCLI/esxcli, vCO all fit in a future post. This post was just an introduction to what and API and SDK is and showing a simple example. We’ll definitely have several posts covering the various aspects of the API and different tools developers and administrators can use and automate/orchestrate their vSphere environment. Stay tuned!

    Reply
  3. donal

    Thanks for the informative article. I’m wondering if there is any progress on a vCloud and/or a vSphere SDK for python. Python is perhaps the most in-demand development language for alternative products such as OpenStack, KVM management software, etc.. Also, languages such as Ruby on Rails, and indeed, grails (now part of VMware) are often touted as ‘the language of the cloud’. It seems that VMware’s emphasis is on J2EE or .NET due to the popularity of VMware within the enterprise. I am wondering what can be done to coax product managers to release either a python SDK, or a documented set of bindings to the existing WSDL? There are several great projects out there that have made considerable progress towards this – psphere, pysphere, and pyvisdk are notable examples. Thanks, Donal

    Reply
  4. donal

    Absolutely. And also in generating demand to show the level of interest within the community for a native python SDK (perhaps by way of a survey or direct feedback from mutual customers, etc.) Thanks!

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>