que - Diferencia entre una API y SDK
librerias de sdk (10)
Estoy tratando de explicar 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 proporcione un SDK, aunque seguramente haya 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 (se escriban) interoperan 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 dactilares versus software para hacer la inscripción / verificación, así es como intenté explicarlo:
Si soy un fabricante de dispositivos / sensores de huellas dactilares y no estoy en el negocio de escribir software, las formas en que puedo comercializar mejor mi producto son:
- Asegúrese de que los controladores de mi dispositivo sean instalables en una amplia variedad de sistemas operativos
- Definir y proporcionar una API para desarrolladores de software para escribir programas (por ejemplo, para la 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 los desarrolladores de software escriban programas que funcionen con mi dispositivo de manera más fácil y rápida. Los SDK pueden proporcionar bibliotecas de códigos auxiliares, aplicaciones de referencia, documentación, etc.
API = Diccionario de palabras disponibles y sus significados (y la gramática requerida para combinarlos)
SDK = Un sistema de procesamiento de palabras ... para bebés de 2 años ... que escribe directamente desde las ideas
Aunque PODRÁS ir a la escuela y convertirte en un maestro en tu idioma después de algunos años, usar el SDK te ayudará a escribir oraciones completas y significativas en poco tiempo (perdonando el hecho de que, en este ejemplo, como un bebé ni siquiera has llegado para aprender cualquier otro idioma para al menos aprender a usar el SDK).
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 para la plataforma / ítem para el que está destinado.
Una API, por otro lado, es solo una serie de métodos relacionados que pueden ser útiles 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 central con el que puede trabajar de forma predeterminada.
Ejemplos de API: API de Java, API de Google Maps, API de Flash Player.
Ejemplos de SDK: JDK, GWT, Flex SDK.
API es especificaciones sobre cómo hacer algo, una interfaz, como "Las vías del tren están a cuatro pies de distancia, y la barra de metal tiene 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 tu código, no hace nada.
SDK es un paquete de herramientas reales que ya estaba preocupado por las especificaciones. "Aquí hay un tren, un poco de carbón y un hombre de mantenimiento. Úselo para ir de un lugar a otro" Con el SDK no se preocupe por los detalles. Un SDK es un código real, se puede usar solo para hacer algo, pero, por supuesto, el tren no arrancará espontáneamente, usted todavía tiene que conseguir un conductor para controlar el tren.
Los SDK también tienen sus propias API. "Si quiere alimentar al tren, cargue carbón", "Tire de la palanca azul para mover el tren", "Si el tren comienza a actuar de manera rara, llame al técnico de mantenimiento", etc.
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 fuentes de respaldo, como encabezados o archivos IDL. Los SDK generalmente contienen API, pero a menudo a menudo agregan compiladores, herramientas y muestras a la mezcla.
Pedazo de pastel:
- una API es una interfaz . Es como la especificación del sistema telefónico o el cableado eléctrico en su casa. Cualquier cosa * puede usarlo siempre que sepa cómo interactuar. Incluso puede comprar software listo para usar para usar una API en particular, del mismo modo que puede comprar equipos telefónicos o dispositivos que se conectan al cableado de CA de su casa.
- un SDK es una herramienta de implementación . Es como un kit que le permite ** construir algo personalizado para conectarlo al sistema telefónico o al cableado eléctrico.
* Cualquier cosa puede usar una API. Algunas API tienen disposiciones de seguridad para requerir claves de licencia, autenticación, etc. que pueden prohibir el uso completo de la API en instancias particulares, pero eso es solo porque los pasos de autenticación / autorización particulares fallan. Cualquier software que presente las credenciales correctas (si es necesario) puede usar la API.
** Técnicamente, si una API está bien documentada, no necesita un SDK para construir su propio software para usar la API. Pero tener un SDK generalmente hace que el proceso sea mucho más fácil.
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, pedazos 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.
Supongamos que la compañía C ofrece el producto P y P implica 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 para que los desarrolladores de software lo utilicen para modificar, configurar, corregir, mejorar, etc. la pieza de software de P.
Si C desea 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.
A propósito, sin embargo, son bastante distintos.
Construyes algo con un SDK y usas o consumes algo con una API.
Utiliza un SDK para acceder a la funcionalidad de una biblioteca y una API para controlarlo.
API es como los componentes básicos de un juego desconcertante con el que juega un niño para unir bloques de diferentes formas y construir algo en lo que se pueda pensar.
SDK , por otro lado, es un taller adecuado donde están disponibles todas las herramientas de desarrollo, en lugar de bloques de construcción preconfigurados. En un taller tiene las herramientas reales y no está limitado a bloques, y por lo tanto puede hacer sus propios bloques, o puede crear algo sin ningún bloque para comenzar.
La codificación sin SDK o API es como hacer todo desde cero sin un taller: incluso tienes que hacer tus propias herramientas
Application Programming Interface 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 envoltorio 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í misma está construida por componentes de software compuestos 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 (construido en Java) proporciona API para controlar cualquier navegador de forma nativa, mientras que el capybara se puede considerar como un SDK que facilita a los desarrolladores de Ruby usar el 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 nativos del navegador en un solo paquete.