La biblioteca ligera de juegos Java ( LWJGL ) es una biblioteca de software de código abierto que proporciona enlaces a una variedad de bibliotecas C para desarrolladores de videojuegos en Java . Expone bibliotecas multiplataforma que se usan comúnmente en el desarrollo de videojuegos y títulos multimedia, como Vulkan , OpenGL , OpenAL y OpenCL .
El objetivo principal del proyecto es proporcionar a los desarrolladores de Java una forma de acceder a recursos que de otro modo no estarían disponibles o que estarían mal implementados en la plataforma Java existente. La filosofía principal es exponer la tecnología subyacente como un envoltorio fino, creando así una API cercana a la original. También es la base de muchos motores y bibliotecas de juegos Java de alto nivel, como libGDX o jMonkeyEngine .
El desarrollo de la biblioteca comenzó en 2002 con el lanzamiento de J2SE 1.4 , haciendo uso de las operaciones de E/S no bloqueantes recientemente agregadas y el acceso a memoria fuera del montón . Estas incorporaciones al JDK permitieron un mejor acceso a la memoria nativa y a las bibliotecas que no forman parte del JDK. El primer lanzamiento oficial de la biblioteca fue el 4 de febrero de 2007. [1]
El 13 de noviembre de 2014 se anunció la versión 3, que se lanzó en versión alfa el 27 de abril de 2015 y es una reescritura completa de LWJGL. [5] [6] [7] Se agregaron muchos enlaces nuevos, incluidos GLFW , EGL y Objective-C . [4] [6] También se agregó soporte para el desarrollo de Oculus Rift con enlaces LibOVR. [4] [7] La nueva versión se lanzó el 4 de junio de 2016, después de más de 3 años y medio de desarrollo. [8]
La biblioteca accede al código C nativo a través de la interfaz nativa de Java (JNI). Los enlaces a cada una de las bibliotecas nativas existen como módulos diferentes para que los desarrolladores puedan crear compilaciones personalizadas solo con lo que necesitan en un programa determinado. [4] [7] [9]
Si bien las clases de utilidad están escritas en Java puro , la mayoría de las clases de enlace se generan automáticamente mediante un generador personalizado implementado en Kotlin . [2] [3]
Desde la versión 3.1, LWJGL está completamente dividido en 51 módulos que se pueden descargar y utilizar por separado. Para facilitar este proceso, el proyecto proporciona un configurador de compilación en línea, que permite a los usuarios descargar combinaciones personalizadas de módulos y genera automáticamente archivos de configuración de Maven y Gradle para facilitar su uso con proyectos existentes. [10] [11] [12]