Estoy tratando de explicarle a un no desarrollador la diferencia entre una API y un SDK. Necesito explicar por qué un proveedor comercial de software de huellas dactilares probablemente no proporcionará un SDK, aunque ciertamente pueden haber usado uno.
Tanto los proveedores de dispositivos como los proveedores de software pueden y deben exponer una API bien definida. Esta API permite que otros programas de software interactúen con los componentes de software o dispositivos de hardware del proveedor.
Si alguien tiene más ideas para explicar esto claramente, agradecería mucho las sugerencias. Quiero enfatizar que el objetivo es explicar los conceptos a un no programador que no conoce la jerga del desarrollador .
Específicamente, en el contexto de un sensor de huellas digitales versus software para hacer la inscripción / verificación, así es como intenté explicarlo:
Si soy un fabricante de dispositivos / sensores de huellas digitales y no estoy en el negocio de escribir software, las formas en que podría comercializar mejor mi producto son:
- Asegúrese de que los controladores de mis dispositivos se puedan instalar en una amplia variedad de sistemas operativos
- Definir y proporcionar una API para que los desarrolladores de software escriban programas (por ejemplo, para inscripción, verificación) para "hablar" o usar mi dispositivo
- Desarrollar y proporcionar un SDK (un paso más allá de una API) para que sea más fácil y rápido para los desarrolladores de software escribir programas que funcionen con mi dispositivo. Los SDK pueden proporcionar bibliotecas de código auxiliar, aplicaciones de referencia, documentación, etc.
API es como los bloques de construcción de un juego desconcertante con el que un niño juega para unir bloques en diferentes formas y construir algo en lo que pueda pensar.
SDK , por otro lado, es un taller adecuado donde todas las herramientas de desarrollo están disponibles, en lugar de bloques de construcción preformados. En un taller, tiene las herramientas reales y no está limitado a bloques, por lo que puede crear sus propios bloques o puede crear algo sin bloques para empezar.
codificar sin un SDK o API es como hacer todo desde cero sin un taller: incluso tiene que hacer sus propias herramientas
fuente
not limited to blocks, or can create something without any blocks to begin with
eso, más como el SDK le ofrece composiciones aún mejores de los bloques de la API para trabajar. El SDK se construye sobre una API.Supongamos que la compañía C ofrece el producto P y P involucra software de alguna manera. Entonces C puede ofrecer una biblioteca / conjunto de bibliotecas a los desarrolladores de software que manejan los sistemas de software de P.
Esa biblioteca / bibliotecas son un SDK . Es parte de los sistemas de P. Es un kit que los desarrolladores de software pueden usar para modificar, configurar, arreglar, mejorar, etc., la pieza de software de P.
Si C quiere ofrecer la funcionalidad de P a otras compañías / sistemas, lo hace con una API .
Esta es una interfaz para P. Una forma para que los sistemas externos interactúen con P.
Si piensas en términos de implementación, parecerán bastante similares. Especialmente ahora que Internet se ha convertido en un gran sistema operativo distribuido.
Sin embargo, a propósito, en realidad son bastante distintos.
Construye algo con un SDK y usa o consume algo con una API.
fuente
La interfaz de programación de aplicaciones es un conjunto de rutinas / estructuras de datos / clases que especifica una forma de interactuar con la plataforma / software de destino como OS X, Android, aplicación de gestión de proyectos, software de virtualización, etc.
Mientras que el kit de desarrollo de software es un contenedor de API / s que facilita el trabajo para los desarrolladores.
Por ejemplo, Android SDK facilita a los desarrolladores interactuar con la plataforma Android en su conjunto, mientras que la plataforma en sí está construida por componentes de software compuesto que se comunican a través de API.
Además, a veces los SDK se crean para facilitar el desarrollo en un lenguaje de programación específico. Por ejemplo, el controlador web Selenium (integrado en Java) proporciona API para controlar cualquier navegador de forma nativa, mientras que el capibara puede considerarse un SDK que facilita a los desarrolladores de Ruby el uso del controlador web Selenium. Sin embargo, el controlador web Selenium también es un SDK en sí mismo, ya que combina la interacción con varios controladores de navegador nativos en un solo paquete.
fuente
No estoy seguro de que haya alguna definición oficial de estos dos términos. Entiendo que una API es un conjunto de bibliotecas programables documentadas y una fuente de soporte como encabezados o archivos IDL. Los SDK generalmente contienen API, pero a menudo agregan compiladores, herramientas y muestras a la mezcla.
fuente
API es especificaciones sobre cómo hacer algo, una interfaz, como "Las vías del ferrocarril están a cuatro pies de distancia, y la barra de metal es de 1 pulgada de ancho" Ahora que tiene la API, ahora puede construir un tren que se ajuste a esos ferrocarriles pistas si quieres ir a cualquier parte. API es solo información sobre cómo construir su código, no hace nada.
SDK es un paquete de herramientas reales que ya se preocupaban por las especificaciones. "Aquí hay un tren, algo de carbón y un hombre de mantenimiento. Úselo para ir de un lugar a otro" Con el SDK no le preocupan los detalles. Un SDK es un código real, se puede usar solo para hacer algo, pero, por supuesto, el tren no arranca espontáneamente, aún debe obtener un conductor para controlar el tren.
Los SDK también tienen sus propias API. "Si desea impulsar el tren, ponga carbón", "Tire de la palanca azul para mover el tren", "Si el tren comienza a actuar de manera extraña, llame al encargado de mantenimiento", etc.
fuente
API = Diccionario de palabras disponibles y sus significados (y la gramática requerida para combinarlos)
SDK = Un sistema de procesamiento de textos ... para bebés de 2 años ... que escribe directamente a partir de ideas
Aunque PODRÍAS ir a la escuela y convertirte en un maestro en tu idioma después de unos años, usar el SDK te ayudará a escribir oraciones enteras y significativas en poco tiempo (perdonando el hecho de que, en este ejemplo, como un bebé ni siquiera has conseguido aprender cualquier otro idioma para al menos aprender a usar el SDK).
fuente
Qué tal ... Es como si quisieras instalar un sistema de cine en casa en tu casa. Usar una API es como obtener todos los cables, tornillos, brocas y piezas. Las posibilidades son infinitas (limitadas solo por las piezas que recibe), pero a veces abrumadoras. Un SDK es como obtener un kit. Todavía tiene que armarlo, pero es más como obtener piezas precortadas e instrucciones para una estantería IKEA que una caja de tornillos.
fuente
Utiliza un SDK para acceder a la funcionalidad de una biblioteca y una API para controlarla.
fuente
API = Interfaz de programación de aplicaciones SDK = Kit de desarrollo de software
Un SDK parece ser un conjunto completo de API que le permite realizar casi cualquier acción que necesite para crear aplicaciones. Además un SDK puede incluir otras herramientas para desarrollar la plataforma / elemento para el que es.
Una API por otro lado, 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, tiempos de ejecución y otras herramientas diversas. La API de Java es simplemente todas las bibliotecas que componen el lenguaje principal con el que puede trabajar de forma inmediata.
Ejemplos de API: API de Java, API de Google Maps, API de Flash Player.
Ejemplos de SDK: JDK, GWT, Flex SDK.
fuente