Apache Portable Runtime (APR) es una biblioteca de soporte para el servidor web Apache. Provee un conjunto de API que permiten recurrir al sistema operativo (SO) subyacente. En los casos en que el SO soporta una función particular, APR provee una emulación de la misma. Por tanto, los programadores pueden emplear APR para lograr que un programa sea verdaderamente portátil a través de diversas plataformas.
Originalmente, APR formaba parte del Servidor HTTP Apache, pero la Fundación Apache lo organizó como un proyecto separado. Otras aplicaciones pueden usarlo para lograr independencia de las plataformas.
Entre las funciones independientes de plataformas ofrecidas por APR se incluyen:
- Glib provee una funcionalidad similar. Soporta muchas más estructuras de datos y funciones independientes del sistema operativo, pero menos funciones relacionadas con la comunicación entre procesos. (Glib carece de locking local y global, así como de facilidades de manejo de memoria compartida.)
- NSPR es una biblioteca de abstracción multiplataforma usada por el proyecto Mozilla. Es usada por otro subproyecto de Mozilla, XPFE, para ofrecer una funcionalidad de interfaz gráfica de usuario (GUI) con características multiplataforma.
- Adaptive Communication Environment (ACE) es una biblioteca orientada a objetos escrita en C++, similar a APR en cuanto a su funcionalidad. Tiene una amplia difusión como parte de productos comerciales.[1]
- commonc++ es una biblioteca multiplataforma de clases C++ para la programación de sistemas, con una funcionalidad muy parecida a la de APR.
- POCO es un framework moderno para C++, de concepción similar pero más extensiva que la de APR.
- WxWidgets es una biblioteca multiplataforma orientada a objetos para la interfaz gráfica de usuario que también provee clases de abstracción destinadas a la comunicación de bases de datos, IPC y funciones destinadas a la comunicación en red.
- Qt, un framework multiplataforma para el desarrollo de aplicaciones con características similares, también puede ayudar al desarrollo de GUIs.