Thread: what's the difference between an API, SDK, Framework, Library, and Assembly?

  1. #1
    Registered User
    Join Date
    Sep 2011
    Posts
    71

    what's the difference between an API, SDK, Framework, Library, and Assembly?

    I've been learning to program using the .NET implementation of C# and there are few concepts that I still don't fully understand and I worry that if someone asks me what they are, I am not going to be able to give a clear answer.

    I'll explain the concepts as I understand them and then you can correct me if I am wrong.

    API (Application Programming Interface) = an interface that allows the developer to use publicly exposed members in order to access functionality while hiding the code used to implement that functionality.

    SDK (Source Development Kit) = A set of tools, sample code, and/or documentation, that helps the developer use the API.

    Software Framework = (as in the .NET framework), it's a collection of software libraries that provide a defined API?

    Software Library = (as in .NET's Framework Class Library) a collection of assemblies?

    Assembly = an .exe or a .dll file that contains an API? For example, the mscorlib assembly contains the System namespace, System.IO namespace, etc, and that collection of namespaces (along with the types they contain) constitute one of the many API's provided by .NET's framework class library?


    As you can see, my understanding of these concepts is very shallow. Can someone please explain all these 5 concepts within the context of .NET and in a manner that is easy to understand?
    Last edited by y99q; 11-05-2011 at 11:02 AM.

  2. #2
    spurious conceit MK27's Avatar
    Join Date
    Jul 2008
    Location
    segmentation fault
    Posts
    8,300
    Quote Originally Posted by y99q View Post
    API (Application Programming Interface) = an interface that allows the developer to use publicly exposed members in order to access functionality while hiding the code used to implement that functionality.
    Yes. Now, what is the API an interface to?

    SDK (Source Development Kit) = A set of tools, sample code, and/or documentation, that helps the developer use the API.
    Actually the S is for "software".

    Software Framework = (as in the .NET framework), it's a collection of software libraries that provide a defined API?
    Okay.

    Software Library = (as in .NET's Framework Class Library) a collection of assemblies?
    I think this use of the word "assembly" is specific to certain technologies (eg, .NET). I've never heard anyone refer to the concept WRT to C or C++.

    Libraries are the executables (in the broad sense of being, executable objects; I think in a MS environment they are .dll's, but in a CS sense, a .dll is an executable object) to which the API is an interface. Hence, they are the core of an SDK or framework.

    The difference between a library and an .exe is that a library does not do anything by itself. In C/C++, library source code usually does not have a main().

    Frameworks may include interpreters or similar tools which, unlike libraries, do run on their own to provide some specific runtime functionality. Libraries may be built into these rather than being separate objects; when they are separate, they may be loaded into the runtime interpreter. Such things are often called modules.
    Last edited by MK27; 11-05-2011 at 03:19 PM.
    C programming resources:
    GNU C Function and Macro Index -- glibc reference manual
    The C Book -- nice online learner guide
    Current ISO draft standard
    CCAN -- new CPAN like open source library repository
    3 (different) GNU debugger tutorials: #1 -- #2 -- #3
    cpwiki -- our wiki on sourceforge

  3. #3
    Officially An Architect brewbuck's Avatar
    Join Date
    Mar 2007
    Location
    Portland, OR
    Posts
    7,396
    Quote Originally Posted by y99q View Post
    I've been learning to program using the .NET implementation of C# and there are few concepts that I still don't fully understand and I worry that if someone asks me what they are, I am not going to be able to give a clear answer.

    I'll explain the concepts as I understand them and then you can correct me if I am wrong.

    API (Application Programming Interface) = an interface that allows the developer to use publicly exposed members in order to access functionality while hiding the code used to implement that functionality.

    SDK (Source Development Kit) = A set of tools, sample code, and/or documentation, that helps the developer use the API.

    Software Framework = (as in the .NET framework), it's a collection of software libraries that provide a defined API?

    Software Library = (as in .NET's Framework Class Library) a collection of assemblies?

    Assembly = an .exe or a .dll file that contains an API? For example, the mscorlib assembly contains the System namespace, System.IO namespace, etc, and that collection of namespaces (along with the types they contain) constitute one of the many API's provided by .NET's framework class library?


    As you can see, my understanding of these concepts is very shallow. Can someone please explain all these 5 concepts within the context of .NET and in a manner that is easy to understand?
    From the most general thing to the most specific thing:

    A SDK is a group of installable components which provide one or more frameworks.

    A framework is a collection of one or more APIs.

    An API is a specified interface to a collection of software functionalities.

    Assemblies and libraries provide the actual data and machine instructions necessary to implement said functionalities. The difference between "assembly" and "library" is not that important.
    Code:
    //try
    //{
    	if (a) do { f( b); } while(1);
    	else   do { f(!b); } while(1);
    //}

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. difference between header and library
    By c_lady in forum C Programming
    Replies: 9
    Last Post: 12-08-2010, 04:21 PM
  2. Replies: 3
    Last Post: 05-11-2009, 04:50 AM
  3. What's the difference? (Assembly)
    By maxorator in forum Tech Board
    Replies: 5
    Last Post: 10-29-2006, 02:30 PM
  4. Replies: 19
    Last Post: 01-12-2006, 11:04 AM
  5. Difference between library and headers
    By ripper079 in forum C++ Programming
    Replies: 1
    Last Post: 11-20-2001, 09:16 AM