Java OpenGL
Java OpenGL (JOGL) est une bibliothèque qui permet d'utiliser OpenGL avec le langage de programmation Java. Elle était développée à l'origine par Kenneth Bradley Russell et Christopher John Kline, et fut développée par la suite par le Sun Microsystems Game Technology Group. Depuis 2010, c'est un projet open source indépendant sous licence BSD. C'est l'implémentation de référence de Java Bindings for OpenGL (JSR-231).

JOGL permet d'accéder à la plupart des fonctionnalités disponibles en C, à l'exception notable des appels OpenGL utility toolkit (GLUT) relatifs au système de fenêtrage, comme Java a les siens, Abstract Window Toolkit (AWT), Swing, et quelques extensions.

Architecture 
L'API de base en OpenGL C API, ainsi que son API de fenêtrage associée, sont accédées en JOGL via des appels Java Native Interface (JNI). Pour cette raison, le système sousjacent doit supporter OpenGL pour que JOGL fonctionne.

JOGL diffère des quelques autres bibliothèques en Java enveloppant OpenGL en cela qu'il expose plus ou moins l'API procédurale d'OpenGL via des méthodes dans peu de classes, plutôt que d'essayer d'appliquer le paradigme de la programmation orientée objet à OpenGL. Ainsi, une grande partie du code de JOGL est auto-générée à partir des fichiers d'entête d'OpenGL en C via un outil de conversion appelé GlueGen, qui avait été programmé spécialement pour faciliter la création de JOGL.

Cette décision d'architecture a à la fois ses avantages et ses inconvénients. La nature procédurale et sous forme de machine à états d'OpenGL se marie mal avec la manière typique de programmer en Java, ce qui est fastidieux pour beaucoup de programmeurs. Cependant, la correspondance directe entre l'API OpenGL en C et les méthodes Java rend le portage d'applications existantes écrites en C et des exemples de code bien plus simple. La fine couche d'abstraction fournie par JOGL rend l'exécution efficace, mais elle est plus difficile à coder en comparaison à des bibliothèques d'abstraction de haut niveau tel que Java3D. Comme la plupart du code est auto-générée, les changements d'OpenGL peuvent être rapidement ajoutés à JOGL.

Statut et standardisation 
À partir de 2007, JOGL fournit un accès complet à la spécification OpenGL 2.0. La dernière version 1.1.0 est l'implémentation de référence pour JSR-231 (Java Bindings for OpenGL). La version 1.1.1 donne un accès limité aux GLU NURBS, permettant le rendu de courbes et de surfaces par le biais des APIs traditionnelles de GLU.

La version 2.0.2 ajoute le support des versions d'OpenGL jusqu'à 4.3 et des versions d'OpenGL-ES 1, 2, and 3.

Java2D-OpenGL inter-operabilité 
Depuis la version Java SE 6 du langage Java, Java2D (l'API pour dessiner en 2D en Java) et JOGL sont devenus inter-opérables, ce qui permet :
 Superposer des composants Swing (menus légers, bulles, et d'autres widgets) au-dessus du rendu OpenGL.
 Dessiner des graphismes 3D en OpenGL au-dessus du rendu Java2D (voir ici pour un bouton avec une icône en OpenGL).
 Utiliser des graphismes 3D n'importe où, ordinairement, un widget Swing pourrait être utilisé (à l'intérieur d'une JTable, JTree, ...).
 Dessiner des graphismes Java2D au-dessus d'un rendu 3D en OpenGL.

Voir aussi 
 Java Bindings for OpenGL, The Java Community Specification Request for which JOGL provides an implementation
 Ardor3D, un scénographe très performant, professionnel utilisant JOGL
 Xith3D, un scénographe utilisant JOGL
 Elflight Engine, un moteur de jeu très performant optimisé pour le Web
 JMonkey Engine, un scénographe très performant, professionnel utilisant JOGL (uniquement dans JMonkeyEngine 2.0, support non officiel dans JMonkeyEngine 3)
 Wakfu, un jeu de rôle multijoueur en ligne utilisant JOGL
 Poxnora, un jeu multijoueur en ligne utilisant JOGL
 Wurm Online, un MMORPG dans un univers fantastique utilisant JOGL
 RuneScape, un MMORPG utilisant JOGL
 Jake2, le portage Java de Quake II utilisant JOGL comme API graphique de bas niveau
 Scilab, un programme de calcul numérique utilisant JOGL pour le rendu 2D et 3D
 Jreality, un paquetage de visualisation scientifique utilisant JOGL

Références

Liens externes 
 Site officiel
 Spécification de JOGL 2.x
 Spécification de la JSR 231 (draft)
 JSR-231 Java Bindings for OpenGL site web
 tool kiet, Le guide de la programmation OpenGL avec des exemples utilisant JOGL
 Tutoriels de Nehe et exemples de code
 Paramétrer JOGL dans Eclipse
 Paramétrer JOGL dans une JFrame Swing
 NetBeans OpenGL Pack, plug-in de développement en OpenGL pour l'EDI NetBeans
 Viewer3D, une applet qui affiche du contenu interactif en 3D avec JOGL
 Eclipse OpenGL Pack plug-in OpenGL pour l'EDI Eclipse

Bibliothèque logicielle Java