¿Cuál es la diferencia entre una API y un SDK?

159

Estaba revisando varias API y SDK, cuando me di cuenta de que realmente no podía distinguir la diferencia entre algo llamado API y algo que se llama un SDK .

Ambos son, conceptualmente, una forma para que su programa se interconecte y controle los recursos proporcionados por otra pieza de software, ya sea que otro software sea un servicio web, una aplicación de usuario final, un servicio de sistema operativo o un demonio o un controlador de dispositivo del núcleo.

Entonces, ¿cuál es la diferencia semántica entre un SDK y una API?

    
pregunta KeithS 17.08.2011 - 22:43
fuente

12 respuestas

159

Creo que cae en la línea de "Todos los SDK son / contienen API, pero no todas las API son SDK".

Un SDK parece ser un conjunto completo de API que le permiten realizar la mayoría de las acciones necesarias para crear aplicaciones. Además, un SDK puede incluir otras herramientas para desarrollar para la plataforma / elemento para el que está destinado.

Por otra parte, una API es solo una serie de métodos relacionados que pueden ser buenos para un propósito específico.

Como ejemplo, el JDK (Java Development Kit) contiene la API, así como los compiladores, los tiempos de ejecución y otras herramientas misceláneas. La API de Java es simplemente todas las bibliotecas que conforman el lenguaje central con el que puede trabajar de inmediato.

    
respondido por el Glenn Nelson 17.08.2011 - 22:52
fuente
79
  • API = Interfaz de programación de aplicaciones
  • SDK = Kit de desarrollo de software

Entonces, la verdadera diferencia es que una API no es más ni menos que una interfaz para "algún servicio", mientras que un SDK es un conjunto de herramientas / componentes / clases para un propósito específico. De hecho, un SDK te presenta una API con la que interactuar. Pero puede usar una API sin tener los componentes subyacentes, por ejemplo, cuando la API se proporciona a través de un servicio web.

Ejemplos de API:

Ejemplos de SDK:

respondido por el back2dos 17.08.2011 - 22:56
fuente
23

API → interfaz documentada (en un momento determinado, y para una audiencia determinada. La documentación puede estar incompleta y / o no disponible para el público en general, y esto puede ser a propósito, pero esto no disminuye el hecho de que estaba pensado para ser documentado para que terceros lo utilicen.)

SDK → documentación de la interfaz (+ ejemplos y herramientas)

    
respondido por el ZJR 18.08.2011 - 03:19
fuente
17

"SDK" es colectivo en un sentido más amplio que "API".

Por lo general, solo encuentras un SDK para cubrir una plataforma completa. Hay un MacOS X SDK y un iOS SDK, por ejemplo, y cada uno contiene las API para muchas áreas diferentes de funcionalidad.

La "API" también se usó originalmente como un término colectivo, y todavía se usa a menudo de esa manera (MAPI, WSAPI, etc.), pero generalmente se limita a alguna tecnología en particular. El alcance implícito por el "API" parece haber disminuido con los años; la gente solía hablar de la "API de la caja de herramientas de Mac" o la "API de Windows", que obviamente contenían una gran cantidad de funcionalidad. En estos días, no es raro escuchar que "API" se utiliza para significar una única función del sistema; podría decirse que una nueva versión de un sistema operativo contiene cientos de nuevas API, y lo que se entiende es cientos de nuevas llamadas al sistema.

Ningún término es muy preciso sin un poco de contexto.

    
respondido por el Caleb 17.08.2011 - 23:35
fuente
11

¿Qué es la API?

API es una interfaz que permite que los programas de software interactúen entre sí. Define un conjunto de reglas que los programas deben seguir para comunicarse entre sí. Las API generalmente especifican cómo deben definirse las rutinas, estructuras de datos, etc. para que dos aplicaciones se comuniquen. Las API difieren en la funcionalidad proporcionada por ellas. Existen API generales que proporcionan funcionalidades de biblioteca de un lenguaje de programación como la API de Java. También hay API que proporcionan funcionalidades específicas, como la API de Google Maps. También hay API dependientes del lenguaje, que solo podrían ser utilizadas por un lenguaje de programación específico. Además, hay API independientes del lenguaje que podrían usarse con varios lenguajes de programación. Las API deben implementarse con mucho cuidado al exponer solo la funcionalidad o los datos requeridos al exterior, mientras que las otras partes de la aplicación son inaccesibles. El uso de API se ha vuelto muy popular en internet. Se ha vuelto muy común permitir que parte de la funcionalidad y los datos a través de una API salgan de la Web. Esta funcionalidad se puede combinar para ofrecer una funcionalidad mejorada a los usuarios.

¿Qué es SDK?

SDK es un conjunto de herramientas que se pueden usar para desarrollar aplicaciones de software dirigidas a una plataforma específica. Los SDK incluyen herramientas, bibliotecas, documentación y código de muestra que ayudaría a un programador a desarrollar una aplicación. La mayoría de los SDK se pueden descargar de Internet y muchos de los SDK se proporcionan de forma gratuita para alentar a los programadores a utilizar el lenguaje de programación del SDK. Algunos SDK ampliamente utilizados son Java SDK (JDK) que incluye todas las bibliotecas, utilidades de depuración, etc., lo que facilitaría mucho la escritura de programas en Java. Los SDK hacen que la vida de un desarrollador de software sea fácil, ya que no es necesario buscar componentes / herramientas que sean compatibles entre sí y todos ellos están integrados en un solo paquete que es fácil de instalar.

¿Cuál es la diferencia entre API y SDK?

API es una interfaz que permite que los programas de software interactúen entre sí, mientras que un SDK es un conjunto de herramientas que se pueden usar para desarrollar aplicaciones de software dirigidas a una plataforma específica. La versión más simple de un SDK podría ser una API que contenga algunos archivos necesarios para interactuar con un lenguaje de programación específico. Por lo tanto, una API se puede ver como un simple SDK sin todo el soporte de depuración, etc.

    
respondido por el chiranjib 18.08.2011 - 07:38
fuente
6

Un SDK podría ser nada más que una API (archivos para interactuar con otra aplicación), pero generalmente incluye otro código para ayudar con la depuración y otras piezas para su IDE.

Me he quedado sin acrónimos.

    
respondido por el JeffO 17.08.2011 - 22:52
fuente
5

Todo lo mencionado anteriormente es cierto, pero sobre el SDK me gustaría agregar que un kit de desarrollo de software es (o debería ser) un paquete realmente completo con (casi) todas las herramientas necesarias para el proceso de desarrollo, mientras que la API es "simplemente "una interfaz para interactuar con.

    
respondido por el Scorchio 17.08.2011 - 23:08
fuente
1

Mis dos centavos: Creo que el término API a menudo se usa incorrectamente.

Una API es una interfaz de programación de aplicaciones.

Aunque es un nombre un tanto incómodo, significa que es una interfaz . Por lo tanto, una aplicación podría tener una API para permitir que otras aplicaciones se comuniquen con ella. Y una pieza de software (por ejemplo, una clase en un sistema OO) podría ofrecer una API para permitir que otros módulos en el sistema se comuniquen con él.

Sin embargo, a menudo el término API se usa como sinónimo de "biblioteca". No creo que sea un uso correcto de la palabra. La parte de la biblioteca es una API para permitir que el código la use, pero la biblioteca no es una API.

Y un SDK es un tipo de biblioteca, así que ahí es donde podría estar la confusión.

    
respondido por el Aviv Cohn 02.08.2014 - 22:59
fuente
0

Muchas de las otras respuestas explican que un SDK es herramientas , pero ninguna de ellas sale directamente y dice que una API es una especificación .

La API para compoonent X es toda la información que necesita para escribir algún otro componente que interactúe con X. Un SDK para el componente X puede contener rutinas de biblioteca que lo hacen más fácil para usted para escribir ese componente, pero las bibliotecas no son la API: son simplemente una realización de la API.

    
respondido por el Solomon Slow 29.08.2016 - 18:32
fuente
-3

Me gustaría comparar de esta manera.

Si eres un desarrollador que usa herramientas de Microsoft:

  

API = Microsoft.Net Framework Vs SDK = Visual Studio

Si eres un desarrollador utilizando Java:

  

API = Java RunTime Vs SDK = cualquier herramienta que proporcione el Kit de desarrollo (JDK)

Supongo que un SDK tendría que depender necesariamente de una API correspondiente, no hay un SDK sin una API.

    
respondido por el Arun 18.08.2011 - 18:51
fuente
-3

Aquí hay una analogía simple ... Las API son como palabras que puedes usar, y los SDK son como oraciones que se han reunido para ti.

    
respondido por el Peter 08.04.2013 - 16:48
fuente
-4

A medida que las aplicaciones se desarrollan y mejoran al interactuar con otras aplicaciones, es necesario para permitir que otras aplicaciones (lógica) interactúen con la lógica central, esto se hace a través de un conjunto definido de API. El SDK se usa para crear / crear código que usa API para interactuar con otras aplicaciones.

    
respondido por el user144980 02.08.2014 - 16:01
fuente

Lea otras preguntas en las etiquetas