Biblioteca vs. framework vs API? [cerrado]

33

¿Cuál es la diferencia entre una biblioteca, un marco y una API? Todos me parecen iguales. Me gustaría escuchar a la gente pensar en esto.

Bob Dole
fuente
2
@Jorg: Deberías haber enviado esto como respuesta. Tal como están las cosas, se trata de un límite de spam y obstruye la página.
2
@Sergio - Jörg W Mittag tiene 1171 respuestas reflexivas y bien recibidas en SO (42 respuestas reflexivas y bien recibidas aquí). No está tratando de ser difícil. Él está tratando de mejorar la P.SE mostrando cuán innecesaria es esta pregunta (sin mencionar que ninguna respuesta aquí menciona la característica distintiva de un marco todavía).
Corbin marzo

Respuestas:

35

Una biblioteca es una colección de funciones / objetos que tiene un propósito particular. podrías usar una biblioteca en una variedad de proyectos.

Un marco es una colección de patrones y bibliotecas para ayudar a construir una aplicación.

Una API es una interfaz para que otros programas interactúen con su programa sin tener acceso directo.

Para decirlo de otra manera, piense en una biblioteca como un complemento / pieza de una aplicación, un marco como el esqueleto de la aplicación y una API como una parte externa de dicha aplicación.

GSto
fuente
77
Esa no es una muy buena definición de un marco. Realmente no llamaría a ningún marco una "colección de patrones y bibliotecas"
TheLQ
Un marco es más como un entorno para construir. Aparte de eso +1
Klaim
Sí, estaba un poco perdido para las palabras sobre eso. Alguien tiene alguna sugerencia mejor? de lo contrario no dude en editar. Busqué en Wikipedia, que llama a un marco: "Los marcos son un caso especial de las bibliotecas de software, ya que son abstracciones reutilizables de código envuelto en una interfaz de programación de aplicaciones (API) bien definida", lo que parece causar más confusión en el contexto de esta pregunta que ayuda.
GSto
3
Una biblioteca es cuando su código está a cargo (su código "usa la biblioteca") y un marco es cuando está a cargo (el marco "ejecuta su código"). Por ejemplo, un marco dicta el orden en que deben suceder las cosas (Swing, servlets), mientras que con una biblioteca usted decide cuándo y cómo se usa (conversión de imágenes, cifrado). Una API es solo una definición de un conjunto de funciones a las que puede llamar, y forma parte de bibliotecas y marcos.
Martin Wickman
14

Buenas respuestas hasta ahora, pero pierden un punto clave: un marco utiliza IoC . Su código está rodeado por un marco. Vive en su interior. Por el contrario, su código solo usa una biblioteca o API. Vive fuera de él. IoC es la diferencia.

Roger escaso
fuente
No necesariamente cierto. Un marco puede usar IoC, y su aplicación puede vivir dentro de un marco, pero no es necesario. Estúpidamente, la entrada de Wikipedia en Frameworks enumera esto como una 'característica distintiva' de un marco, y hace referencia a esta disertación " dirkriehle.com/computer-science/research/dissertation/… ", pero la disertación en sí no contiene las frases 'inversión 'o' ioc ', y en realidad dice "Normalmente, las aplicaciones usan no solo un marco, sino varios". (p26, ref p9)
Kirk Broadhurst
11
@Kirk Broadhurst: en realidad estaba pensando en Martin Fowler : "La inversión del control es una parte clave de lo que hace que un marco sea diferente a una biblioteca (...) Un marco incorpora un diseño abstracto, con más comportamiento incorporado. Para usar debe insertar su comportamiento en varios lugares del marco, ya sea subclasificando o conectando sus propias clases. El código del marco llama a su código ... "Si concluimos que IoC no es una característica distintiva, entonces no hay característica distintiva: son todos iguales y eso no es divertido.
Escaso Roger
@ScantRoger, ¿Java Framework Framework utiliza IoC? No parece así .......
Pacerier
3

Una biblioteca es una colección de código creada para realizar tareas comunes. El código de la biblioteca tiende a ser relativamente estable y libre de errores. El uso de bibliotecas apropiadas puede reducir la cantidad de código que se necesita escribir. Tiende a reducir los recuentos de líneas de código para que una aplicación aumente la velocidad a la que se entrega la funcionalidad. En la mayoría de los casos, es mejor usar una rutina de biblioteca que escribir su propio código.

Una API (interfaz de programación de aplicaciones) es una interfaz para algunas funciones que permite que una aplicación acceda a la funcionalidad disponible. Una API se puede denominar una interfaz. Existen API en muchos niveles, incluidos el sistema, la biblioteca, el marco, el programa y la aplicación. Las API deben definirse antes de implementar el código que las implementa.

Las API deben ser estables, aunque algunas partes de la API pueden quedar obsoletas por varios motivos. Cuanto más ampliamente se utiliza la API, más difícil es cambiarla. La mayoría, si no toda, la API de Java 1.0 todavía está disponible, aunque muchos métodos han quedado en desuso.

Un Framework es una colección de API diseñadas para simplificar la creación de aplicaciones. Los marcos proporcionan implementaciones para componentes reutilizables. Los buenos marcos tienden a especializarse en su aplicación.

Java Collections Framework es una colección de API para varios tipos de objetos que se pueden usar para manejar colecciones. Proporciona una jerarquía de API a varias colecciones. En Java Collections Framework, la interfaz SortedSet amplía la interfaz Set, que a su vez amplía la interfaz Collection. Estas API son interfaces abstractas y las implementaciones reales tienen nombres diferentes. El marco de colecciones simplifica la implementación de colecciones y simplifica las implementaciones cambiantes durante el desarrollo.

Los marcos pueden construirse a partir de marcos más pequeños como se ve en el Java Spring Framework dirigido al desarrollo de J2EE. Spring consta de más de una docena de marcos, muchos de los cuales pueden usarse solos o reemplazarse por otros marcos.

El uso de las bibliotecas, API y marcos adecuados puede simplificar el desarrollo. Estos componentes se ocupan de los problemas comunes y permiten que el equipo de desarrollo se concentre en los problemas específicos de la aplicación.

BillThor
fuente
2

Un marco es un paso adelante de la biblioteca. Si su caja de herramientas es una biblioteca, entonces su taller sería un marco.

Wikipedia dice

Una API es una abstracción que describe una interfaz para la interacción con un conjunto de funciones utilizadas por los componentes de un sistema de software.

La distinción importante entre una API y una interfaz de usuario es que una API permite que otros software / servicios interactúen con su solución mediante programación.

Las API se pueden construir tanto para aplicaciones (a través de dll o complementos) como para sitios web y servicios (a través de REST y servicios web)

Homde
fuente
Buena analogía ...
sunwukung
1

Las API definen cómo usar algo más en términos de qué objetos y métodos se pueden usar desde una fuente. Por ejemplo, la integración de Twitter o Facebook en un sitio utiliza una API de Twitter o Facebook para garantizar que se actualicen los datos adecuados.

Los marcos tienden a ser un poco más voluminosos en cierto sentido, ya que a veces casi pueden formar su propio lenguaje. jQuery es un ejemplo de un marco que tiene su propia sintaxis y tiene un poco más de peso en términos de entrar en mi código en cierto sentido. Los marcos también pueden ser plataformas que los hacen similares a las API en cierto sentido, por ejemplo, Win32API o .Net Framework tienen numerosos métodos para construir una aplicación, por lo que puede haber marcos que tienen API en ellos y API que también se ven como marcos.

Las bibliotecas tienden a ser archivos binarios que implementan una API o Framework y, por lo tanto, son los bits que debe tener para usar una API o Framework en algunos casos. Al menos así es como veo estos términos y las diferencias entre ellos.

JB King
fuente
1

Ve a una biblioteca y comienza a leer libros. Si usted es la aplicación, entonces la colección de libros es la biblioteca. Los estantes, los armarios y el complejo que alberga todo esto constituyen el marco. Todo lo que entra en contacto mientras realiza la tarea de leer los libros es la API.

explorest
fuente
Esta es una respuesta maravillosa.
Magus
0

Una biblioteca es una colección de código que se utiliza para simplificar tareas comunes: puede ser clases, funciones o lo que sea específico de su idioma o plataforma. Un buen ejemplo podría ser una biblioteca de manipulación de cadenas que brinde ayuda para tareas comunes (construir, dividir, buscar u ordenar cadenas, etc.).

Una API (interfaz de programación de aplicaciones) es una definición ('interfaz') de cómo trabajar con otra aplicación, sistema o tecnología. Básicamente, define las operaciones que están disponibles para interactuar con ese otro sistema. Una API puede ser una biblioteca (lo que significa que la API está envuelta en una biblioteca o un conjunto de clases), pero la distinción es que una API siempre hace referencia a un sistema externo, ya sea una base de datos, un servicio web, otra aplicación o el sistema operativo sí mismo.

Un Framework es un concepto más amplio: normalmente contendrá una serie de bibliotecas y API para realizar tareas comunes. Existe en un nivel conceptual más alto: no es solo una colección de herramientas, sino también una colección de patrones de diseño, mejores prácticas y metodologías. Un marco de software es una extensión de un marco general : sus significados incluyen ser una base a partir de la cual se construyen las cosas, proporcionar soporte y estructura, y dar orientación y definición a los requisitos.

Kirk Broadhurst
fuente
0

La aplicación se desarrolla utilizando bibliotecas basadas en un marco y se comunica a través de una API.

Si crea una aplicación, diga una aplicación de procesamiento de imágenes en línea,

  • Puede usar algunas bibliotecas de procesamiento de imágenes previamente escritas.
  • en cualquier marco que conozca que lo guiará para construir la aplicación.
  • Proporcionará a la aplicación alguna forma de interactuar con el mundo exterior ... esa sería la API de su aplicación para el resto del mundo.

Cuando entra una llamada a su aplicación

  • se manejaría de la forma en que se diseñó con la guía del marco
  • procesamiento de la llamada realizada por la biblioteca
  • se accederá a estas funciones a través de su API desde el mundo exterior

a la persona que llama

razones por las cuales existen:

  • biblioteca: le evita reinventar la rueda
  • framework: lo salva de trampas inesperadas del diseño y manejo del sistema a menos que el framework en sí tenga fallas
  • API: garantiza la seguridad de la aplicación mediante la interfaz del núcleo desde el acceso al mundo real
ganesh
fuente