軽量Javaゲームライブラリ(LWJGL)は、ビデオゲーム開発者向けにさまざまなCライブラリへのバインディングをJavaに提供するオープンソースのソフトウェアライブラリです。Vulkan 、OpenGL、GLFW、OpenAL、OpenCLなど、ビデオゲームやマルチメディアタイトルの開発で一般的に使用されるクロスプラットフォームライブラリを公開しています。
このプロジェクトの主な目的は、Java開発者が既存のJavaプラットフォームでは利用できない、または実装が不十分なリソースにアクセスできるようにすることです。基本的な考え方は、基盤となるテクノロジーを薄いラッパーとして公開し、オリジナルに近いAPIを作成することです。LWJGLは、 libGDX [ 4 ]やjMonkeyEngine [ 5 ]などの高レベルJavaゲームエンジンやライブラリの基盤となっています。
ライブラリの開発は、新しく追加されたノンブロッキング I/O 操作とオフヒープ メモリアクセスを利用するJ2SE 1.4のリリースとともに 2002 年に開始されました。これらのJDKへの追加により、ネイティブ メモリや JDK に含まれていないライブラリへのアクセスが改善されました。ライブラリの最初の公式リリースは 2007 年 2 月 4 日でした。[ 1 ]
2014 年 11 月 13 日にバージョン 3 が発表され、2015 年 4 月 27 日にアルファ版がリリースされました。これは LWJGL の完全な書き直しです。[ 6 ] [ 7 ] [ 8 ]バージョン 3 では、 Vulkanのサポートと、GLFW、EGL、Objective-Cを含む多くの新しいバインディングが追加されました。[ 8 ] [ 9 ] LibOVR バインディングによるOculus Rift開発のサポートも追加されました。[ 8 ]新バージョンは 3 年半以上の開発期間を経て、2016 年 6 月 4 日にリリースされました。[ 10 ]
このライブラリは、Java Native Interface (JNI) を介してネイティブCコードにアクセスします。各ネイティブ ライブラリへのバインディングは異なるモジュールとして存在するため、開発者は特定のプログラムで必要なものだけを含むカスタム ビルドを作成できます。[ 8 ] [ 11 ] [ 2 ]
ユーティリティクラスは純粋なJavaで記述されていますが、バインディングクラスのほとんどはKotlinで実装されたカスタムジェネレータによって自動的に生成されます。[ 2 ] [ 3 ]
バージョン 3.1 以降、LWJGL は 51 個のモジュールに完全に分割され、それぞれを個別にダウンロードして使用できるようになりました。このプロセスを容易にするために、プロジェクトではオンラインのビルド コンフィギュレータを提供しており、ユーザーはモジュールのカスタム組み合わせをダウンロードして、既存のプロジェクトでの使用を容易にするためにMavenおよびGradle構成ファイルを自動的に生成できます。[ 12 ] [ 13 ]