Введение

Java OpenGL (JOGL) — это оберточная библиотека, позволяющая использовать OpenGL в языке программирования Java. Изначально разработана Кеннетом Брэдли Расселом и Кристофером Джоном Клайн, а затем доработана Группой игровых технологий Sun Microsystems. С 2010 года это независимый проект с открытым исходным кодом под лицензией BSD. JOGL является эталонной реализацией Java Bindings для OpenGL (JSR 231). JOGL обеспечивает доступ к большинству функций OpenGL, доступных программам на языке C, посредством Java Native Interface (JNI). Он предоставляет доступ как к стандартным функциям GL*, так и к функциям GLU*, однако библиотека OpenGL Utility Toolkit (GLUT) недоступна для вызовов, связанных с оконной системой, поскольку Java имеет собственные оконные системы: Abstract Window Toolkit (AWT), Swing и некоторые расширения.

Дизайн

Базовый OpenGL C API, а также связанный с ним API для работы с окнами, доступны в JOGL посредством вызовов Java Native Interface (JNI). Следовательно, для работы JOGL базовая система должна поддерживать OpenGL. JOGL отличается от некоторых других Java OpenGL-обёрток тем, что он лишь предоставляет доступ к процедурному OpenGL API через методы нескольких классов, а не пытается сопоставить функциональность OpenGL с парадигмой объектно-ориентированного программирования. Фактически, большая часть кода JOGL автоматически генерируется из файлов заголовков OpenGL C с помощью инструмента преобразования GlueGen, который был разработан специально для упрощения создания JOGL.

Статус и стандартизация

С 2015 года JOGL обеспечивает полный доступ к спецификации OpenGL 4.5, а также почти ко всем расширениям производителей (и OpenCL, OpenMAX и OpenAL). Версия 1.1.0 является эталонной реализацией JSR 231 (Java Bindings for OpenGL). Выпуск 1.1.1 предоставил ограниченный доступ к GLU NURBS, позволяя отрисовывать кривые линии и поверхности с использованием традиционных GLU API. В версии 2.3.2 добавлена поддержка версий OpenGL до 4.5 и OpenGL ES до 3.2. Планируется поддержка Wayland и Vulkan.