¿Qué es una API? Ejemplos y cómo funcionan

Rubén Castro, 23 junio 2021

En Cecotec (gran marca española de gadgets y pequeño electrodoméstico) están tirando la casa por la ventana y tienen ofertas de hasta el 60% en muchos de sus productos. ¡Corre que vuelan!

Quiero ver las mejores ofertas de Cecotec

¿Qué es una API?

El término API (application programming interface) o interfaz de programación de aplicaciones es una interfaz que actúa como puente entre dos o más aspectos de un sistema informático y que ofrece herramientas (una biblioteca de funciones) para ser utilizadas por otro software como una capa de abstracción.

Básicamente una API de un programa es una caja negra (no hace falta saber cómo funciona lo que hay dentro de la caja negra) con unas instrucciones muy claras y que permite que otro programa o usuario introduzca unos parámetros para conseguir una respuesta de ese programa.

Las API establecen las reglas sobre qué solicitudes de datos se pueden hacer, definen cómo hacer esas solicitudes, declaran el formato que deben tener los datos, etc. Esto puede parecer bastante restrictivo, pero las API ayudan a hacer la programación mucho más fácil.

Esto se debe a que ocultan efectivamente todas las minucias de fondo y el funcionamiento interno del sistema informático del programador y sólo les permite tener acceso a las herramientas que necesitan. Esto significa que habrá un montón de API diferentes, algunas de gran alcance y naturaleza, y otras con un papel muy específico.

Por ejemplo, una API puede servir para dibujar las ventanas del escritorio y para utilizarla necesitaremos decirle las dimensiones de la ventana y la posición. Con solo esos parámetros otro programa puede crear ventanas, evitándonos el trabajo de programar todo desde el principio.

Algunas de estas API nunca se hacen públicas, conocidas como API privadas, y sólo pueden ser utilizadas por la organización que las creó, para sus propias aplicaciones internas. Otras son semiprivadas, conocidas como API de socios, que se alquilan a usuarios aprobados; la idea es que el propietario de la API controle exactamente qué datos solicita la aplicación. Y, por último, tenemos las API públicas que pueden ser usadas por cualquiera.

API de gráficos de videojuegos

Existen infinidad de API, tantas como programas, aunque algunas de las que más te sonarán son Direct3D, OpenGL y Vulkan que están relacionadas con los gráficos de los videojuegos.

Estas API actúan son los cimientos fundamentales de cualquier código de renderizado, permitiendo a los programadores crear imágenes complejas con relativa facilidad.

Las API de gráficos establecen reglas específicas sobre cómo debe formarse y estructurarse todo, y ofrecen instrucciones sencillas para manejar algoritmos matemáticos rutinarios. Todas ellas se han actualizado significativamente a lo largo de los años y pueden usarse para hacer algo más que imágenes bonitas, todo ello gracias a los sombreadores de cálculo.

Las plataformas de juego que no son PC también utilizan API. Microsoft utiliza una versión modificada de Direct3D para la Xbox, pero Nintendo y Sony utilizan las suyas propias para la Switch y la PlayStation, aunque ambas tienen sus raíces en OpenGL.

Los más viejunos recordarán que, en los años 90, algunos fabricantes de tarjetas gráficas tenían sus propias API: 3dfx tenía Glide y S3 Graphics tenía S3D. Esto se debía a que OpenGL era relativamente nuevo y carecía de las características y el rendimiento que necesitaban los fabricantes.

¿Os acordáis de lo impresionante que era la tarjeta gráfica Voodoo 2 con Glide?

Durante un tiempo, Glide fue el rey de las API gráficas, ya que era fácil de programar y mostraba la Voodoo de 3dfx de la mejor manera posible. Glide y S3D tuvieron una vida muy breve, ya que eran altamente propietarias. Por su parte, Direct3D no es de código abierto y está limitado a Windows, pero cualquier proveedor de GPU puede hacer controladores para soportarlo en sus productos.

Dicho esto, las API gráficas propietarias siguen utilizándose hoy en día. La API CUDA de Nvidia es exclusiva de sus GPU, aunque está orientada al trabajo de cálculo de propósito general, más que al renderizado 3D.

Ya en 2013, AMD comenzó a trabajar en colaboración con los desarrolladores de los juegos Battlefield, para hacer una API de “bajo nivel”.

El término “bajo nivel” se refiere a la abstracción del hardware en la API, es decir, a las rutinas de software que ocultan al desarrollador los detalles específicos de la arquitectura del núcleo del chip, lo que facilita la escritura de un programa que funcione en diversas plataformas. Cuanto más trabajo tenga que hacer la API en este ámbito, mayor será la carga de trabajo de la CPU para procesarlo todo.

El objetivo de AMD para Mantle era que fuera menos dependiente de la CPU que Direct3D y OpenGL, además de ofrecer más programabilidad. El desarrollo del proyecto se detuvo en 2015 y se archivó por completo en 2019, ya que AMD había cedido su trabajo, de forma gratuita, al grupo Khronos , la organización responsable de Vulkan.

Todo se hace con API

Los juegos son algo más que un simple elemento visual; hay que codificar el audio, la red y la gestión de entradas. También las cámaras, los micrófonos, los sensores IR, la retroalimentación háptica y las pantallas táctiles tienen API específicas.

En realidad, Direct3D forma parte de una gran colección llamada DirectX, que contiene API y bibliotecas de software para todos los elementos de juego mencionados.

Por ejemplo, DirectInput maneja los comandos de gamepads, joysticks y volantes. Naturalmente, también hay equivalentes de OpenGL para estos elementos (por ejemplo, OpenAL para el audio), aunque algunos pueden ser cubiertos por el sistema operativo, que exploraremos en un momento.

Y hablando de la comunicación con el hardware, hay una verdadera cantidad de API que permiten a los programadores acceder y utilizar la multitud de capacidades que suelen tener los teléfonos. Por ejemplo, casi todos los teléfonos modernos tienen un acelerómetro, un pequeño chip que detecta el movimiento en tres dimensiones. Así que si una aplicación quiere saber en qué dirección apunta el teléfono, los programadores pueden utilizar una API para obtener fácilmente esa información.

Las aplicaciones de realidad aumentada, como las de observación de estrellas, son un buen ejemplo de software que utilizará estas API. Y si se trata de una que muestra las constelaciones que estás mirando, mientras apuntas el teléfono al cielo nocturno, tendrá que utilizar una API para la cámara, el acelerómetro, el sistema GPS, la pantalla táctil, etc.

Las redes sociales también tienen API para que otras aplicaciones puedes integrarse con ellas. Gracias a eso, podemos ver un tweet en una página web o en una aplicación no oficial.