Tiempo de ejecución
# Tiempo de ejecución

Se denomina tiempo de ejecución (runtime en inglés) al intervalo de tiempo en el que un programa de computadora se ejecuta en un sistema operativo. Este tiempo se inicia con la puesta en memoria principal del programa, por lo que el sistema operativo comienza a ejecutar sus instrucciones. El intervalo finaliza en el momento en que este envía al sistema operativo la señal de terminación, sea esta una terminación normal, en que el programa tuvo la posibilidad de concluir sus instrucciones satisfactoriamente, o una terminación anormal, en el que el programa produjo algún error y el sistema debió forzar su finalización.

Este término suele emplearse, en oposición a tiempo de compilación, para indicar si una acción o hecho sucede en uno u otro tiempo.

También es usado en su forma original en inglés para nombrar otros conceptos en informática.

## Entorno de ejecución

Un entorno de ejecució (runtime environment en inglés) es un estado de máquina virtual que suministra servicios para los procesos de un programa de computadora que se está ejecutando. Puede pertenecer al mismo sistema operativo, o ser creado por el software del programa en ejecución.

En la mayoría de los casos, el sistema operativo maneja la carga del programa con una parte del código llamada cargador, haciendo configuración básica de memoria y enlazando el programa con cualquier biblioteca de vínculos dinámicos a la cual haga referencia. En algunos casos un lenguaje o implementación hará esas tareas en lugar del runtime del lenguaje, a pesar de que es inusual en los lenguajes principales sobre los sistemas operativos de usuarios normales.

Cierta depuración de programas solo puede realizarse (o ser más eficiente o precisa) cuando se realiza en ejecución. La comprobación de errores lógicos y límites de arrays son algunos ejemplos. Por esta razón, algunos errores de programación no son descubiertos hasta que el programa es probado en un entorno "en vivo" con datos reales, a pesar de comprobación en tiempo de compilación sofisticada y pruebas previas a la publicación. En este caso, el usuario final puede encontrar un mensaje de "error en tiempo de ejecución" (runtime error en inglés).

## Biblioteca runtime

Una biblioteca runtime es una colección de funciones de utilidad las cuales soporta un programa mientras se está ejecutando, trabajando con el Sistema Operativo para suministrar facilidades tales como funciones matemáticas, entrada y salida. Estas evitan a los programadores el trabajo de reescribir continuamente las capacidades básicas especificadas en un lenguaje de programación o suministradas por el sistema operativo.

Las primeras bibliotecas runtime fueron las que suministraba Fortran las cuales daban características como operaciones matemáticas. Otros lenguajes añadieron recolección de basura de memoria sofisticada, a menudo en asociación con soporte para objetos.

Los lenguajes más recientes tienden a tener runtimes más grandes con mayor funcionalidad aún. Muchos lenguajes orientados a objetos también incluyen un sistema conocido como un "dispatcher" (despachador) y un "classloader" (cargador de clases). La Java Virtual Machine (JVM) es un ejemplo de tal runtime: Esto también interpreta o compila el bytecode de los programas Java binarios portables en runtime. El framework .NET es otro ejemplo de biblioteca runtime.

El manejo de excepciones es una característica del lenguaje diseñada para manejar los errores en tiempo de ejecución, suministrando una forma estructurada de atrapar (catch) situaciones completamente inesperadas así como también errores predecibles o resultados inusuales sin la complicada comprobación de errores requerida de los lenguajes que no poseen esta característica.

## Ejemplo

Un programa escrito en lenguaje de programación Java podría usar servicios desde el Java Runtime Environment emitiendo comandos en respuesta a los cuales se devolviera el resultado esperado. Suministrando estos servicios, el software Java se considera un entorno runtime del programa. El programa y el software Java combinan peticiones de servicio desde el sistema operativo. El núcleo del sistema operativo suministra servicios para sí mismo y para todos los procesos y software que está ejecutándose bajo su control. El sistema operativo puede ser considerado como que suministra un entorno de ejecución por sí mismo.

