Biblioteca (informática)

En informática, una biblioteca o, llamada por vicio del lenguaje, librería (del inglés library) es un conjunto de implementaciones funcionales, codificadas en un lenguaje de programación, que ofrece una interfaz bien definida para la funcionalidad que se invoca.

Las bibliotecas pueden vincularse a un programa (o a otra biblioteca) en distintos puntos del desarrollo o la ejecución, según el tipo de vínculo que se quiera establecer, tal y como se detalla en el apartado de "Tipos".

Como tal, la mayor parte del código utilizado por las aplicaciones modernas se ofrece en estas bibliotecas.

Habitualmente se emplea el término librería para referirse a una biblioteca, por la similitud con el original inglés library.

El concepto COMPOOL (Communication Pool) fue popularizado por JOVIAL en 1959, aunque tomó la idea prestada del software de los grandes sistemas SAGE.

Este proceso, y el archivo ejecutable, se conoce como una construcción estática de la aplicación objetivo.

Por lo general, no se considera un error si un nombre puede encontrarse varias veces en un determinado conjunto de las bibliotecas.

Por tanto, han de estar disponibles como ficheros independientes al programa ejecutable (generalmente en directorios del sistema).

Esto puede llegar a ser bastante espacio, según el número de bibliotecas que requiera un programa.

Además, puede reutilizarse memoria principal (RAM) para programas que utilicen la misma biblioteca (por ejemplo, puede ser necesario cargar las bibliotecas de Qt solo una vez para todos los programas que las utilicen).

El enlace dinámico se desarrolló originalmente en los sistemas operativos Multics a partir de 1964.

Si la biblioteca es borrada, movida o renombrada, o si una versión incompatible de DLL es copiada en una ubicación que aparece antes en la ruta de búsqueda, el ejecutable no se podrá cargar.

En algunos sistemas, la ruta por defecto es especificada en un archivo de configuración; en otros, está prefijada (hard coded) en el cargador dinámico.

Esto puede ser usualmente alterado por una variable de entorno, aunque es deshabilitado para programas que tengan setuid o setgid, de manera que el usuario no puede forzar a ese programa a ejecutar un código arbitrario.

Por el contrario, esto puede hacer problemática la instalación de nuevas bibliotecas, pues hace que esos directorios crezcan mucho haciéndose complicada Otra solución al problema de las bibliotecas es usar ejecutables completamente separados (a menudo una versión ligera) y llamarlos mediante procedimiento remoto (RPC) sobre la red a otra computadora u ordenador.

Adicionalmente, dichos sistemas no requerirán que la biblioteca este grabada en la misma máquina, pudiendo redirigir la petición por la red.

Sin embargo, tal enfoque implica que cada llamada a la biblioteca requerirá una gran cantidad de gastos generales.

Este enfoque se usa comúnmente en las arquitecturas distribuidas que hacen un uso intensivo de las RPC, en los sistemas cliente-servidor y en aplicaciones como Enterprise JavaBeans.

Ilustración de una aplicación que utiliza la biblioteca libvorbisfile.so para reproducir un archivo Ogg Vorbis .