Pregunta

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 realizar 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:

     
      
  1. Asegúrese de que los controladores de mi dispositivo se puedan instalar en una amplia variedad de sistemas operativos
  2.   
  3. Definir y proporcionar una API para que los desarrolladores de software escriban programas (por ejemplo, para inscripción, verificación) para "hablar" o utilizar mi   dispositivo
  4.   
  5. Desarrolle y proporcione 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, referencia   aplicaciones, documentación, etc.
  6.   
¿Fue útil?

Solución

Pedazo de pastel:

  • una API es una interfaz . Es como la especificación del sistema telefónico o el cableado eléctrico de su casa. Cualquier cosa * puede usarlo siempre que sepa cómo interactuar. Incluso puede comprar software comercial para usar una API particular, al igual que puede comprar equipos o dispositivos telefónicos que se conectan al cableado de CA de su hogar.
  • un SDK es herramientas 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 casos particulares, pero eso es solo porque fallan los pasos de autenticación / autorización particulares. 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 facilita mucho el proceso.

Otros consejos

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 ningún bloque para empezar.

la codificación sin un SDK o API es como hacer todo desde cero sin un taller: incluso tiene que hacer sus propias herramientas

Suponga 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 piensa 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, en realidad, son bastante distintos.

Crea algo con un SDK y usa o consume algo con una API.

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, Selenium web driver (integrado en Java) proporciona API para controlar cualquier navegador de forma nativa, mientras que capybara puede considerarse 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 de navegador nativos en un solo paquete.

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.

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 tiene 1 pulgada de ancho". Ahora que tiene la API, ahora puede construir un tren que se ajuste a esas vías de ferrocarril si desea 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 te preocupes por detalles. Un SDK es un código real, se puede usar solo para hacer algo, pero, por supuesto, el tren no arranca de manera espontánea, aún debe obtener un conductor para controlar el tren.

Los SDK también tienen sus propias API. "Si desea impulsar el tren, coloque 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.

API = Diccionario de palabras disponibles y sus significados (y la gramática requerida para combinarlas)

SDK = Un sistema de procesamiento de textos & # 8230; para bebés de 2 años & # 8230; que escribe directamente desde las 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é no tienes ' incluso aprendí cualquier otro idioma para al menos aprender a usar el SDK).

¿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.

Utiliza un SDK para acceder a la funcionalidad de una biblioteca y una API para controlarlo.

API = interfaz de programación de aplicaciones SDK = Kit de desarrollo de software

Un SDK parece ser un conjunto completo de API que le permiten 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 misceláneas. 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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top