Java OpenGL
Java OpenGL (JOGL) is een wrapper-bibliotheek voor het gebruik van OpenGL in de programmeertaal Java. Het wordt ontwikkeld door de Game Technology Group bij Sun Microsystems.

Kenmerken 
JOGL biedt toegang tot de meeste functionaliteit die C-programmeurs kunnen gebruiken, uitgezonderd de venstergerelateerde aanroepen aan het systeem in OpenGL Utility Toolkit (GLUT) aangezien Java zelf systemen bevat voor het beheren van vensters, namelijk AWT en Swing. Ook ontbreken enkele uitbreidingen. JOGL is de referentie-implementatie van Java Specifiation Request 231: Java Binding for the OpenGL API.

De basis OpenGL C-API is toegankelijk in JOGL via Java Native Interface (JNI) aanroepen. Het onderliggende systeem moet hierdoor OpenGL ondersteunen om JOGL te kunnen gebruiken.

Ontwerp 
JOGL verschilt van sommige andere Java OpenGL-bibliotheken aangezien het de OpenGL-API alleen toegankelijk maakt via een aantal klassen in plaats van het overbrengen van de OpenGL-functionaliteit naar het objectgeoriënteerde programmeerparadigma. Het meeste van de JOGL-code is automatisch gegenereerd met behulp van de OpenGL C-headerbestanden met een conversieprogramma genaamd GlueGen.

Deze ontwerpkeuze heeft voor- en nadelen. De procedurele en eindige toestandsautomaat kenmerken van OpenGL komen niet overeen met de gebruikelijke manier van programmeren in Java, wat veel programmeurs tegenstaat. Aan de andere kant maakt de directe overeenkomst tussen de functionaliteit van de OpenGL C-API en de methoden in JOGL het gemakkelijk om bestaande C programma's over te zetten. Het vereenvoudigt ook voorbeeldcode om te leren werken met JOGL. De dunne laag van abstractie die door JOGL wordt geboden maakt het uitvoeren van programma's vrij efficiënt maar het is lastiger om te programmeren in vergelijking met bibliotheken met een hoger niveau van abstractie, zoals Java3D. Aangezien de meeste code automatisch gegenereerd is kunnen veranderingen in OpenGL snel toegevoegd worden aan JOGL.

Zie ook 
 Java OpenAL
 Lightweight Java Game Library

Externe links 
 Projectpagina
 Java Specification Request 231: Java Binding for the OpenGL API - Java Community Process

Java (programmeertaal)
Computerbibliotheek