<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://jogamp.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Gouessej</id>
	<title>JogampWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://jogamp.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Gouessej"/>
	<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Special:Contributions/Gouessej"/>
	<updated>2026-04-21T13:12:28Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=WebAssembly_(wasm)_Target_Platform&amp;diff=2230</id>
		<title>WebAssembly (wasm) Target Platform</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=WebAssembly_(wasm)_Target_Platform&amp;diff=2230"/>
		<updated>2025-08-25T07:54:12Z</updated>

		<summary type="html">&lt;p&gt;Gouessej: /* GraalVM */ support wasm as a target&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Extracted from [[SW Tracking Report Feature Objectives Overview|Feature &amp;amp; Objectives]].&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
See [https://jogamp.org/bugzilla//show_bug.cgi?id=1506 Bug 1506] describing this feature.&lt;br /&gt;
&lt;br /&gt;
Since Java Applets are not more supported within browser or by OpenJDK for years,&lt;br /&gt;
it may seems feasible to evaluate the WebAssembly target running within e.g. web browser nowadays.&lt;br /&gt;
&lt;br /&gt;
An initial evaluation on small C++ projects using the emscripten front-end for LLVM&#039;s clang++ to wasm compiler, which supports many ported system libraries like SDL, OpenGL, .. has been undertaken successfully with variable results.&lt;br /&gt;
* [https://webassembly.org/ WebAssembly]&lt;br /&gt;
* [https://emscripten.org/ emscripten]&lt;br /&gt;
* [https://jausoft.com/cgit/cs_class/gfxbox2.git/about/ gfxbox2 C++/wasm evaluation]&lt;br /&gt;
* Project [https://jausoft.com/cgit/gamp.git/about/ Gamp]&lt;br /&gt;
&lt;br /&gt;
The wasm target is comparable to Java bytecode but the wasm virtual machine is not as performant, efficient or flexible as actual native code. The lack of hassle free native threads and native high-performance may remind one of the first JVM steps. The wasm code runs within a virtual machine like the JVM and additionally lacks of native binding capabilities.&lt;br /&gt;
&lt;br /&gt;
Some limitations may be overcome, others are likely by design as it usually runs on the same browser virtual machine as the JavaScript companion. Compromises must be made on shared memory and native threads, cached non-local file I/O and socket communication - while other native features will simply never work, e.g. operating system ioctl-calls, etc.&lt;br /&gt;
&lt;br /&gt;
Opening the door for any language to be compiled to a platform independent intermediate representation (IR) like Java’s bytecode suitable for a versatile runtime environment including its virtual machine is surely still desirable.&lt;br /&gt;
&lt;br /&gt;
= Initial C++/wasm Evaluation =&lt;br /&gt;
[https://jausoft.com/cgit/cs_class/gfxbox2.git/about/ Our little gfxbox2 games] compiled to [https://webassembly.org/ wasm] run about ~50% slower [https://jausoft.com/cgit/cs_class/gfxbox2.git/about/#online-webassembly-examples within a browser] than in native code, depending on coding strategy of our graphics (pixelmap vs SDL/OpenGL primitives). &lt;br /&gt;
&lt;br /&gt;
The used [https://emscripten.org/ emscripten] frontend allowed us to use memory-growth, envelop files used in the wasm file, add cheap stack-overflow cockies and nullptr writes and so forth. Utilization of OpenGL ES via SDL2 was a breeze.&lt;br /&gt;
&lt;br /&gt;
The underlying LLVM compiler did an excellent job and overall, the transition was easy and almost involved no code changes but dropping native thread (std::thread) usage.&lt;br /&gt;
&lt;br /&gt;
The overall program structure had to be adapted to align to the single-thread main-loop workflow&lt;br /&gt;
and specific emscripten-javascript hooks added to allow seamless interaction.&lt;br /&gt;
All in all, nothing to be too afraid of and depending on the class of applications to be ported &lt;br /&gt;
to the browser these days, a feasible procedure.&lt;br /&gt;
&lt;br /&gt;
= Project [https://jausoft.com/cgit/gamp.git/about/ Gamp] =&lt;br /&gt;
[https://jausoft.com/cgit/gamp.git/about/ Gamp] stands for Graphics, Audio, Multimedia and Processing, the same way as JogAmp, but natively plus using WebAssembly.&lt;br /&gt;
&lt;br /&gt;
Gamp replicates JogAmp&#039;s experience natively via C++ in a condensed form, allowing a similar workflow on native targets and [https://jausoft.com/cgit/gamp.git/about/#online-webassembly-examples within the browser] via WebAssembly. Ironically this will bring back runs everywhere including the web.&lt;br /&gt;
&lt;br /&gt;
Initial goal reimplementing [https://jausoft.com/blog/tag/graph_type_rendering/ Resolution independent NURBS curves rendering using programmable graphics pipeline (Graph)] has been completed.&lt;br /&gt;
&lt;br /&gt;
Gamp uses [https://jausoft.com/cgit/jaulib.git/about/ jaulib] for general purpose functionality including linear algebra and geometry and builds upon initial wasm experience collected with [https://jausoft.com/cgit/cs_class/gfxbox2.git/about/ gfxbox2].&lt;br /&gt;
&lt;br /&gt;
= Java Support =&lt;br /&gt;
Java bytecode compiler to wasm including some &#039;&#039;runtime envelop&#039;&#039; &lt;br /&gt;
* [https://github.com/google/j2cl/blob/master/docs/getting-started-j2wasm.md J2wasm] within [https://github.com/google/j2cl J2CL] emits naïve Wasm using the text format and it relies on Binaryen toolchain to assemble, link, and optimize&lt;br /&gt;
** [https://www.wingolog.org/pub/epfl-wasm-gc-feb-2024-slides.pdf 2024 Slides]&lt;br /&gt;
* [https://github.com/konsoletyper/teavm TeaVM] [https://teavm.org/docs/intro/overview.html overview]&lt;br /&gt;
* [https://github.com/i-net-software/JWebAssembly JWebAssembly] [https://github.com/i-net-software/JWebAssembly/wiki doc]&lt;br /&gt;
* [https://mirkosertic.github.io/Bytecoder/ Bytecoder]&lt;br /&gt;
&lt;br /&gt;
Further interesting bits &amp;amp; pieces&lt;br /&gt;
* [https://openjdk.org/jeps/457 JEP 457: Class-File API ]&lt;br /&gt;
* [https://openjdk.org/projects/babylon/articles/linq Babylon]&lt;br /&gt;
&lt;br /&gt;
== GraalVM ==&lt;br /&gt;
GraalVM experimentally hosts wasm only and is producing a wasm target for the wasm (browser) runtime.&lt;br /&gt;
* [https://www.graalvm.org/latest/reference-manual/wasm/ GraalVM + wasm (WebAssembly runtime in Java)]&lt;br /&gt;
** with the help of emscripten&lt;br /&gt;
** [https://www.graalvm.org/22.0/reference-manual/native-image/JNI/ GraalVM + JNI]&lt;br /&gt;
* [https://2025.wasm.io/slides/the-future-of-write-once-run-anywhere-from-java-to-webassembly-wasmio25.pdf GraalVM Native Image supporting wasm as a target]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/oracle/graal/issues/3391 Request for enhancement about wasm target in GraalVM].&lt;br /&gt;
&lt;br /&gt;
= Java Browser Outlook =&lt;br /&gt;
So far the only question arises why reinventing the wheel once again? Dropping utilization of a well working JVM for the web had no technical reasoning.&lt;br /&gt;
&lt;br /&gt;
However, in case no suitable wasm target for the Java bytecode and the Java Runtime pieces can be established, one might either want to also look into bringing back the JRE into the browser or painfully drop Java for C++, as the latter is already close to have acceptable (slower and limited) wasm target runtime properties.&lt;/div&gt;</summary>
		<author><name>Gouessej</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Rudimentary_standalone_example_using_the_fixed_pipeline_by_Julien_Gouesse&amp;diff=2204</id>
		<title>Rudimentary standalone example using the fixed pipeline by Julien Gouesse</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Rudimentary_standalone_example_using_the_fixed_pipeline_by_Julien_Gouesse&amp;diff=2204"/>
		<updated>2024-03-04T18:35:17Z</updated>

		<summary type="html">&lt;p&gt;Gouessej: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This program displays a simple 3D rendering of a polygon using JOGL. Please note though that this code is a demonstration of the use of JOGL and as such makes use of immediate mode drawing commands; this serves to show how the conventional C style API is used through JOGL, but it is strongly recommended to make use of modern OpenGL techniques.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;import java.awt.*;&lt;br /&gt;
import java.awt.event.*;&lt;br /&gt;
import com.jogamp.opengl.*;&lt;br /&gt;
import com.jogamp.opengl.awt.GLCanvas;&lt;br /&gt;
import com.jogamp.opengl.fixedfunc.*;&lt;br /&gt;
import com.jogamp.opengl.util.Animator;&lt;br /&gt;
 &lt;br /&gt;
/**&lt;br /&gt;
 * Self-contained example (within a single class only to keep it simple) &lt;br /&gt;
 * displaying a rotating quad&lt;br /&gt;
 */&lt;br /&gt;
public class JOGLQuad implements GLEventListener {&lt;br /&gt;
 &lt;br /&gt;
	private float rotateT = 0.0f;&lt;br /&gt;
 &lt;br /&gt;
	@Override&lt;br /&gt;
	public void display(GLAutoDrawable gLDrawable) {&lt;br /&gt;
		final GL2 gl = gLDrawable.getGL().getGL2();&lt;br /&gt;
		gl.glClear(GL.GL_COLOR_BUFFER_BIT);&lt;br /&gt;
		gl.glClear(GL.GL_DEPTH_BUFFER_BIT);&lt;br /&gt;
		gl.glLoadIdentity();&lt;br /&gt;
		gl.glTranslatef(0.0f, 0.0f, -5.0f);&lt;br /&gt;
 &lt;br /&gt;
		// rotate about the three axes&lt;br /&gt;
		gl.glRotatef(rotateT, 1.0f, 0.0f, 0.0f);&lt;br /&gt;
		gl.glRotatef(rotateT, 0.0f, 1.0f, 0.0f);&lt;br /&gt;
		gl.glRotatef(rotateT, 0.0f, 0.0f, 1.0f);&lt;br /&gt;
 &lt;br /&gt;
		// Draw A Quad&lt;br /&gt;
		gl.glBegin(GL2.GL_QUADS);       &lt;br /&gt;
		gl.glColor3f(0.0f, 1.0f, 1.0f);   // set the color of the quad&lt;br /&gt;
		gl.glVertex3f(-1.0f, 1.0f, 0.0f);   // Top Left&lt;br /&gt;
		gl.glVertex3f( 1.0f, 1.0f, 0.0f);   // Top Right&lt;br /&gt;
		gl.glVertex3f( 1.0f,-1.0f, 0.0f);   // Bottom Right&lt;br /&gt;
		gl.glVertex3f(-1.0f,-1.0f, 0.0f);   // Bottom Left&lt;br /&gt;
		// Done Drawing The Quad&lt;br /&gt;
		gl.glEnd();                                                     &lt;br /&gt;
 &lt;br /&gt;
		// increasing rotation for the next iteration                   &lt;br /&gt;
		rotateT += 0.2f; &lt;br /&gt;
	}&lt;br /&gt;
 &lt;br /&gt;
	@Override&lt;br /&gt;
	public void init(GLAutoDrawable glDrawable) {&lt;br /&gt;
		GL2 gl = glDrawable.getGL().getGL2();&lt;br /&gt;
		gl.glShadeModel(GLLightingFunc.GL_SMOOTH);&lt;br /&gt;
		gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);&lt;br /&gt;
		gl.glClearDepth(1.0f);&lt;br /&gt;
		gl.glEnable(GL.GL_DEPTH_TEST);&lt;br /&gt;
		gl.glDepthFunc(GL.GL_LEQUAL);&lt;br /&gt;
		gl.glHint(GL2ES1.GL_PERSPECTIVE_CORRECTION_HINT, GL.GL_NICEST);&lt;br /&gt;
	}&lt;br /&gt;
 &lt;br /&gt;
	@Override&lt;br /&gt;
	public void reshape(GLAutoDrawable gLDrawable, int x, int y, int width, int height) {&lt;br /&gt;
		GL2 gl = gLDrawable.getGL().getGL2();&lt;br /&gt;
		final float aspect = (float) width / (float) height;&lt;br /&gt;
		gl.glMatrixMode(GLMatrixFunc.GL_PROJECTION);&lt;br /&gt;
		gl.glLoadIdentity();&lt;br /&gt;
		final float fh = 0.5f;&lt;br /&gt;
		final float fw = fh * aspect;&lt;br /&gt;
		gl.glFrustumf(-fw, fw, -fh, fh, 1.0f, 1000.0f);&lt;br /&gt;
		gl.glMatrixMode(GLMatrixFunc.GL_MODELVIEW);&lt;br /&gt;
		gl.glLoadIdentity();&lt;br /&gt;
	}&lt;br /&gt;
 &lt;br /&gt;
	@Override&lt;br /&gt;
	public void dispose(GLAutoDrawable gLDrawable) {&lt;br /&gt;
	}&lt;br /&gt;
 &lt;br /&gt;
	public static void main(String[] args) {&lt;br /&gt;
		final GLCanvas canvas = new GLCanvas();&lt;br /&gt;
		final Frame frame = new Frame(&amp;quot;Jogl Quad drawing&amp;quot;);&lt;br /&gt;
		final Animator animator = new Animator(canvas);&lt;br /&gt;
		canvas.addGLEventListener(new JOGLQuad());&lt;br /&gt;
		frame.add(canvas);&lt;br /&gt;
		frame.setSize(640, 480);&lt;br /&gt;
		frame.setResizable(false);&lt;br /&gt;
		frame.addWindowListener(new WindowAdapter() {&lt;br /&gt;
			public void windowClosing(WindowEvent e) {&lt;br /&gt;
				animator.stop();&lt;br /&gt;
				frame.dispose();&lt;br /&gt;
				System.exit(0);&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
		frame.setVisible(true);&lt;br /&gt;
		animator.start();&lt;br /&gt;
		canvas.requestFocus();&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can compile the source code above with Java &amp;gt;= 9 by entering (the JogAmp fat JAR jogamp-fat.jar is required):&lt;br /&gt;
&amp;lt;pre&amp;gt;javac -cp jogamp-fat.jar JOGLQuad.java&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can run this example by entering (under other operating systems except Windows):&lt;br /&gt;
&amp;lt;pre&amp;gt;java --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.desktop/sun.java2d=ALL-UNNAMED --add-opens java.desktop/sun.awt=ALL-UNNAMED -cp jogamp-fat.jar:. JOGLQuad&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can run this example by entering (under Windows):&lt;br /&gt;
&amp;lt;pre&amp;gt;java --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.desktop/sun.java2d=ALL-UNNAMED --add-opens java.desktop/sun.awt=ALL-UNNAMED  --add-opens java.desktop/sun.awt.windows=ALL-UNNAMED -cp jogamp-fat.jar;. JOGLQuad&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gouessej</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Rudimentary_standalone_example_using_the_fixed_pipeline_by_Julien_Gouesse&amp;diff=2203</id>
		<title>Rudimentary standalone example using the fixed pipeline by Julien Gouesse</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Rudimentary_standalone_example_using_the_fixed_pipeline_by_Julien_Gouesse&amp;diff=2203"/>
		<updated>2024-03-04T12:52:54Z</updated>

		<summary type="html">&lt;p&gt;Gouessej: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This program displays a simple 3D rendering of a polygon using JOGL. Please note though that this code is a demonstration of the use of JOGL and as such makes use of immediate mode drawing commands; this serves to show how the conventional C style API is used through JOGL, but it is strongly recommended to make use of modern OpenGL techniques.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;import java.awt.*;&lt;br /&gt;
import java.awt.event.*;&lt;br /&gt;
import com.jogamp.opengl.*;&lt;br /&gt;
import com.jogamp.opengl.awt.GLCanvas;&lt;br /&gt;
import com.jogamp.opengl.fixedfunc.*;&lt;br /&gt;
import com.jogamp.opengl.util.Animator;&lt;br /&gt;
 &lt;br /&gt;
/**&lt;br /&gt;
 * Self-contained example (within a single class only to keep it simple) &lt;br /&gt;
 * displaying a rotating quad&lt;br /&gt;
 */&lt;br /&gt;
public class JOGLQuad implements GLEventListener {&lt;br /&gt;
 &lt;br /&gt;
	private float rotateT = 0.0f;&lt;br /&gt;
 &lt;br /&gt;
	@Override&lt;br /&gt;
	public void display(GLAutoDrawable gLDrawable) {&lt;br /&gt;
		final GL2 gl = gLDrawable.getGL().getGL2();&lt;br /&gt;
		gl.glClear(GL.GL_COLOR_BUFFER_BIT);&lt;br /&gt;
		gl.glClear(GL.GL_DEPTH_BUFFER_BIT);&lt;br /&gt;
		gl.glLoadIdentity();&lt;br /&gt;
		gl.glTranslatef(0.0f, 0.0f, -5.0f);&lt;br /&gt;
 &lt;br /&gt;
		// rotate about the three axes&lt;br /&gt;
		gl.glRotatef(rotateT, 1.0f, 0.0f, 0.0f);&lt;br /&gt;
		gl.glRotatef(rotateT, 0.0f, 1.0f, 0.0f);&lt;br /&gt;
		gl.glRotatef(rotateT, 0.0f, 0.0f, 1.0f);&lt;br /&gt;
 &lt;br /&gt;
		// Draw A Quad&lt;br /&gt;
		gl.glBegin(GL2.GL_QUADS);       &lt;br /&gt;
		gl.glColor3f(0.0f, 1.0f, 1.0f);   // set the color of the quad&lt;br /&gt;
		gl.glVertex3f(-1.0f, 1.0f, 0.0f);   // Top Left&lt;br /&gt;
		gl.glVertex3f( 1.0f, 1.0f, 0.0f);   // Top Right&lt;br /&gt;
		gl.glVertex3f( 1.0f,-1.0f, 0.0f);   // Bottom Right&lt;br /&gt;
		gl.glVertex3f(-1.0f,-1.0f, 0.0f);   // Bottom Left&lt;br /&gt;
		// Done Drawing The Quad&lt;br /&gt;
		gl.glEnd();                                                     &lt;br /&gt;
 &lt;br /&gt;
		// increasing rotation for the next iteration                   &lt;br /&gt;
		rotateT += 0.2f; &lt;br /&gt;
	}&lt;br /&gt;
 &lt;br /&gt;
	@Override&lt;br /&gt;
	public void init(GLAutoDrawable glDrawable) {&lt;br /&gt;
		GL2 gl = glDrawable.getGL().getGL2();&lt;br /&gt;
		gl.glShadeModel(GLLightingFunc.GL_SMOOTH);&lt;br /&gt;
		gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);&lt;br /&gt;
		gl.glClearDepth(1.0f);&lt;br /&gt;
		gl.glEnable(GL.GL_DEPTH_TEST);&lt;br /&gt;
		gl.glDepthFunc(GL.GL_LEQUAL);&lt;br /&gt;
		gl.glHint(GL2ES1.GL_PERSPECTIVE_CORRECTION_HINT, GL.GL_NICEST);&lt;br /&gt;
	}&lt;br /&gt;
 &lt;br /&gt;
	@Override&lt;br /&gt;
	public void reshape(GLAutoDrawable gLDrawable, int x, int y, int width, int height) {&lt;br /&gt;
		GL2 gl = gLDrawable.getGL().getGL2();&lt;br /&gt;
		final float aspect = (float) width / (float) height;&lt;br /&gt;
		gl.glMatrixMode(GLMatrixFunc.GL_PROJECTION);&lt;br /&gt;
		gl.glLoadIdentity();&lt;br /&gt;
		final float fh = 0.5f;&lt;br /&gt;
		final float fw = fh * aspect;&lt;br /&gt;
		gl.glFrustumf(-fw, fw, -fh, fh, 1.0f, 1000.0f);&lt;br /&gt;
		gl.glMatrixMode(GLMatrixFunc.GL_MODELVIEW);&lt;br /&gt;
		gl.glLoadIdentity();&lt;br /&gt;
	}&lt;br /&gt;
 &lt;br /&gt;
	@Override&lt;br /&gt;
	public void dispose(GLAutoDrawable gLDrawable) {&lt;br /&gt;
	}&lt;br /&gt;
 &lt;br /&gt;
	public static void main(String[] args) {&lt;br /&gt;
		final GLCanvas canvas = new GLCanvas();&lt;br /&gt;
		final Frame frame = new Frame(&amp;quot;Jogl Quad drawing&amp;quot;);&lt;br /&gt;
		final Animator animator = new Animator(canvas);&lt;br /&gt;
		canvas.addGLEventListener(new JOGLQuad());&lt;br /&gt;
		frame.add(canvas);&lt;br /&gt;
		frame.setSize(640, 480);&lt;br /&gt;
		frame.setResizable(false);&lt;br /&gt;
		frame.addWindowListener(new WindowAdapter() {&lt;br /&gt;
			public void windowClosing(WindowEvent e) {&lt;br /&gt;
				animator.stop();&lt;br /&gt;
				frame.dispose();&lt;br /&gt;
				System.exit(0);&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
		frame.setVisible(true);&lt;br /&gt;
		animator.start();&lt;br /&gt;
		canvas.requestFocus();&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can compile the source code above with Java &amp;gt;= 9 by entering (the JogAmp fat JAR jogamp-fat.jar is required):&lt;br /&gt;
&amp;lt;pre&amp;gt;javac -cp jogamp-fat.jar JOGLQuad.java&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can run this example by entering (under other operating systems except Windows):&lt;br /&gt;
&amp;lt;pre&amp;gt;java --add-exports java.base/java.lang=ALL-UNNAMED --add-exports java.desktop/sun.java2d=ALL-UNNAMED --add-opens java.desktop/sun.awt=ALL-UNNAMED -cp jogamp-fat.jar:. JOGLQuad&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can run this example by entering (under Windows):&lt;br /&gt;
&amp;lt;pre&amp;gt;java --add-exports java.base/java.lang=ALL-UNNAMED --add-exports java.desktop/sun.java2d=ALL-UNNAMED --add-opens java.desktop/sun.awt=ALL-UNNAMED  --add-opens java.desktop/sun.awt.windows=ALL-UNNAMED -cp jogamp-fat.jar;. JOGLQuad&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gouessej</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Rudimentary_standalone_example_using_the_fixed_pipeline_by_Julien_Gouesse&amp;diff=2202</id>
		<title>Rudimentary standalone example using the fixed pipeline by Julien Gouesse</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Rudimentary_standalone_example_using_the_fixed_pipeline_by_Julien_Gouesse&amp;diff=2202"/>
		<updated>2024-03-04T12:18:30Z</updated>

		<summary type="html">&lt;p&gt;Gouessej: Adds instructions to compile and run the example&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This program displays a simple 3D rendering of a polygon using JOGL. Please note though that this code is a demonstration of the use of JOGL and as such makes use of immediate mode drawing commands; this serves to show how the conventional C style API is used through JOGL, but it is strongly recommended to make use of modern OpenGL techniques.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;import java.awt.*;&lt;br /&gt;
import java.awt.event.*;&lt;br /&gt;
import com.jogamp.opengl.*;&lt;br /&gt;
import com.jogamp.opengl.awt.GLCanvas;&lt;br /&gt;
import com.jogamp.opengl.fixedfunc.*;&lt;br /&gt;
import com.jogamp.opengl.util.Animator;&lt;br /&gt;
 &lt;br /&gt;
/**&lt;br /&gt;
 * Self-contained example (within a single class only to keep it simple) &lt;br /&gt;
 * displaying a rotating quad&lt;br /&gt;
 */&lt;br /&gt;
public class JOGLQuad implements GLEventListener {&lt;br /&gt;
 &lt;br /&gt;
	private float rotateT = 0.0f;&lt;br /&gt;
 &lt;br /&gt;
	@Override&lt;br /&gt;
	public void display(GLAutoDrawable gLDrawable) {&lt;br /&gt;
		final GL2 gl = gLDrawable.getGL().getGL2();&lt;br /&gt;
		gl.glClear(GL.GL_COLOR_BUFFER_BIT);&lt;br /&gt;
		gl.glClear(GL.GL_DEPTH_BUFFER_BIT);&lt;br /&gt;
		gl.glLoadIdentity();&lt;br /&gt;
		gl.glTranslatef(0.0f, 0.0f, -5.0f);&lt;br /&gt;
 &lt;br /&gt;
		// rotate about the three axes&lt;br /&gt;
		gl.glRotatef(rotateT, 1.0f, 0.0f, 0.0f);&lt;br /&gt;
		gl.glRotatef(rotateT, 0.0f, 1.0f, 0.0f);&lt;br /&gt;
		gl.glRotatef(rotateT, 0.0f, 0.0f, 1.0f);&lt;br /&gt;
 &lt;br /&gt;
		// Draw A Quad&lt;br /&gt;
		gl.glBegin(GL2.GL_QUADS);       &lt;br /&gt;
		gl.glColor3f(0.0f, 1.0f, 1.0f);   // set the color of the quad&lt;br /&gt;
		gl.glVertex3f(-1.0f, 1.0f, 0.0f);   // Top Left&lt;br /&gt;
		gl.glVertex3f( 1.0f, 1.0f, 0.0f);   // Top Right&lt;br /&gt;
		gl.glVertex3f( 1.0f,-1.0f, 0.0f);   // Bottom Right&lt;br /&gt;
		gl.glVertex3f(-1.0f,-1.0f, 0.0f);   // Bottom Left&lt;br /&gt;
		// Done Drawing The Quad&lt;br /&gt;
		gl.glEnd();                                                     &lt;br /&gt;
 &lt;br /&gt;
		// increasing rotation for the next iteration                   &lt;br /&gt;
		rotateT += 0.2f; &lt;br /&gt;
	}&lt;br /&gt;
 &lt;br /&gt;
	@Override&lt;br /&gt;
	public void init(GLAutoDrawable glDrawable) {&lt;br /&gt;
		GL2 gl = glDrawable.getGL().getGL2();&lt;br /&gt;
		gl.glShadeModel(GLLightingFunc.GL_SMOOTH);&lt;br /&gt;
		gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);&lt;br /&gt;
		gl.glClearDepth(1.0f);&lt;br /&gt;
		gl.glEnable(GL.GL_DEPTH_TEST);&lt;br /&gt;
		gl.glDepthFunc(GL.GL_LEQUAL);&lt;br /&gt;
		gl.glHint(GL2ES1.GL_PERSPECTIVE_CORRECTION_HINT, GL.GL_NICEST);&lt;br /&gt;
	}&lt;br /&gt;
 &lt;br /&gt;
	@Override&lt;br /&gt;
	public void reshape(GLAutoDrawable gLDrawable, int x, int y, int width, int height) {&lt;br /&gt;
		GL2 gl = gLDrawable.getGL().getGL2();&lt;br /&gt;
		final float aspect = (float) width / (float) height;&lt;br /&gt;
		gl.glMatrixMode(GLMatrixFunc.GL_PROJECTION);&lt;br /&gt;
		gl.glLoadIdentity();&lt;br /&gt;
		final float fh = 0.5f;&lt;br /&gt;
		final float fw = fh * aspect;&lt;br /&gt;
		gl.glFrustumf(-fw, fw, -fh, fh, 1.0f, 1000.0f);&lt;br /&gt;
		gl.glMatrixMode(GLMatrixFunc.GL_MODELVIEW);&lt;br /&gt;
		gl.glLoadIdentity();&lt;br /&gt;
	}&lt;br /&gt;
 &lt;br /&gt;
	@Override&lt;br /&gt;
	public void dispose(GLAutoDrawable gLDrawable) {&lt;br /&gt;
	}&lt;br /&gt;
 &lt;br /&gt;
	public static void main(String[] args) {&lt;br /&gt;
		final GLCanvas canvas = new GLCanvas();&lt;br /&gt;
		final Frame frame = new Frame(&amp;quot;Jogl Quad drawing&amp;quot;);&lt;br /&gt;
		final Animator animator = new Animator(canvas);&lt;br /&gt;
		canvas.addGLEventListener(new JOGLQuad());&lt;br /&gt;
		frame.add(canvas);&lt;br /&gt;
		frame.setSize(640, 480);&lt;br /&gt;
		frame.setResizable(false);&lt;br /&gt;
		frame.addWindowListener(new WindowAdapter() {&lt;br /&gt;
			public void windowClosing(WindowEvent e) {&lt;br /&gt;
				animator.stop();&lt;br /&gt;
				frame.dispose();&lt;br /&gt;
				System.exit(0);&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
		frame.setVisible(true);&lt;br /&gt;
		animator.start();&lt;br /&gt;
		canvas.requestFocus();&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can compile the source code above with Java &amp;gt;= 9 by entering (the JogAmp fat JAR jogamp-fat.jar is required):&lt;br /&gt;
&amp;lt;pre&amp;gt;javac -cp jogamp-fat.jar JOGLQuad.java&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can run this example by entering (under other operating systems except Windows):&lt;br /&gt;
&amp;lt;pre&amp;gt;java --add-exports java.base/java.lang=ALL-UNNAMED --add-exports java.desktop/sun.java2d=ALL-UNNAMED --add-opens java.desktop/sun.awt=ALL-UNNAMED -cp jogamp-fat.jar:. JOGLQuad&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can run this example by entering (under Windows):&lt;br /&gt;
&amp;lt;pre&amp;gt;java --add-exports java.base/java.lang=ALL-UNNAMED --add-exports java.desktop/sun.java2d=ALL-UNNAMED --add-opens java.desktop/sun.awt=ALL-UNNAMED -cp jogamp-fat.jar;. JOGLQuad&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gouessej</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=SW_Tracking_Report_Feature_Objectives_Overview&amp;diff=2201</id>
		<title>SW Tracking Report Feature Objectives Overview</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=SW_Tracking_Report_Feature_Objectives_Overview&amp;diff=2201"/>
		<updated>2024-02-14T09:04:20Z</updated>

		<summary type="html">&lt;p&gt;Gouessej: /* Graph UI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This list exposes building blocks &lt;br /&gt;
for potential use and business case scenarios&lt;br /&gt;
using Java &amp;amp; JogAmp on Desktop and Embedded Devices.&lt;br /&gt;
&lt;br /&gt;
Notably [[#Graph|Graph &amp;amp; Graph UI]] as well as [[#NEWT_+_Wayland|Wayland]] &amp;amp; [[#Vulkan|Vulkan]] support could be of interest here?&lt;br /&gt;
&lt;br /&gt;
Also see [[Completed Features Objectives]] ...&lt;br /&gt;
&lt;br /&gt;
= Graph =&lt;br /&gt;
[https://jausoft.com/blog/tag/graph_type_rendering/ Graph/GraphUI Progress Blog Entries]&lt;br /&gt;
&lt;br /&gt;
== Desired Work Items ==&lt;br /&gt;
&lt;br /&gt;
This is an ad-hoc list of desired features and fixes,&lt;br /&gt;
which shall result in proper bug-reports soon.&lt;br /&gt;
&lt;br /&gt;
After having reached [https://jausoft.com/blog/2024/01/21/graphui-frustum-culling-clipping-modelview-space/ UI usability with widgets and clipping],&lt;br /&gt;
the following items are becoming more interesting&lt;br /&gt;
&lt;br /&gt;
* Fix general issues with current implementation and API, if any&lt;br /&gt;
* Fix Graph rendering bugs (Tessellation)&lt;br /&gt;
** [https://jausoft.com/blog/2024/02/13/fixing-jogamps-graph-delaunay-tessellation-of-complex-non-convex-shapes/ First round done]&lt;br /&gt;
* Use of super-sized triangles to render Graph lines &amp;amp; curves to allow&lt;br /&gt;
** Using a one-pass smooth AA Graph renderer to save resources otherwise used in our pass-2 FBO supersampling renderer&lt;br /&gt;
** Generate outlines, i.e. outlined fonts&lt;br /&gt;
** Generate special effects like glowing/pumping outlines indicating selection etc&lt;br /&gt;
* Allow passing or better attaching per-vertex color to Graph Outline (API)&lt;br /&gt;
* &amp;lt;s&amp;gt;Add subtitles in MediaPlayer GraphUI widget&amp;lt;/s&amp;gt; &#039;&#039;([https://jausoft.com/blog/2024/02/07/graphui-mediaplayer-feature-complete/ done])&#039;&#039;&lt;br /&gt;
* Add video encoding in our FFmpeg binding, i.e. an FFMPEGMediaRecorder (Encoding + Multiplexing)&lt;br /&gt;
&lt;br /&gt;
Further more, if so desired, a C++ implementation of our Graph + GraphUI framework &lt;br /&gt;
may also be of interest.&lt;br /&gt;
&lt;br /&gt;
In case any company or organization is interested and likes to support &lt;br /&gt;
this work and may also like to receive support in adopting this framework,&lt;br /&gt;
please contact [[Maintainer_and_Contacts#Commercial_Support|Göthel Software e.K.]]&lt;br /&gt;
&lt;br /&gt;
== Graph UI ==&lt;br /&gt;
&lt;br /&gt;
[https://jausoft.com/blog/2023/02/22/reimagine-java-on-desktop-bare-metal-devices/ &#039;&#039;Graph UI&#039;&#039; will enable an immersive UI within the 3D scene] on the desktop, mobile and on bare-metal embedded systems without a windowing system.&lt;br /&gt;
&lt;br /&gt;
Graph UI utilizes [https://jausoft.com/blog/2011/10/05/jogljogamp-red-square-moscow-nurbs-graphicon2011/ Resolution Independent NURBS Curves Rendering using Programmable Graphics Pipeline], i.e. rendering curves directly on the GPU, resolution independent [ [https://jogamp.org/doc/gpunurbs2011/p70-santina.pdf paper], [https://jogamp.org/doc/gpunurbs2011/graphicon2011-slides.pdf slides] ].&lt;br /&gt;
&lt;br /&gt;
This method allows us to have an ultimate fast font and UI rendering engine, suitable for all devices and applications. No CPU based curve nor font pre-rendering (matching a target resolution) is required.&lt;br /&gt;
&lt;br /&gt;
Think of an integrated QT or OpenJFX in your 2D/3D application&lt;br /&gt;
working on desktop and embedded devices even w/o any windowing system on top &lt;br /&gt;
of a plain console [{{SERVER}}/bugzilla/show_bug.cgi?id=1156  DRM/GBM as support by JOGL(EGL) and NEWT]&lt;br /&gt;
as demonstrated [https://ict.zafena.se/improved-graphical-information-technology/ by Xerxes on a Raspberry Pi4].&lt;br /&gt;
&lt;br /&gt;
[https://jausoft.com/blog/2023/02/22/reimagine-java-on-desktop-bare-metal-devices/ Reimagine Java on Desktop &amp;amp; Bare-Metal Devices] &lt;br /&gt;
demonstrates the updated Graph Curve Rendering and UI, while [https://jausoft.com/blog/2024/01/21/graphui-frustum-culling-clipping-modelview-space/ this update shows clipping and widgets]. [https://jausoft.com/blog/tag/graph_type_rendering/ Further updates will be posted here...].&lt;br /&gt;
&lt;br /&gt;
Notably the &#039;&#039;Graph Curve Rendering&#039;&#039; is almost feature complete, as well as our own user input including gesture detection within NEWT.&lt;br /&gt;
&lt;br /&gt;
;Parent Main Node&lt;br /&gt;
: [{{SERVER}}/bugzilla/showdependencytree.cgi?id=803&amp;amp;hide_resolved=0 Dependency Tree]&lt;br /&gt;
: [{{SERVER}}/bugzilla/buglist.cgi?bug_status=UNCONFIRMED&amp;amp;bug_status=CONFIRMED&amp;amp;bug_status=IN_PROGRESS&amp;amp;bug_status=RESOLVED&amp;amp;bug_status=VERIFIED&amp;amp;columnlist=product%2Ccomponent%2Cassigned_to%2Cbug_status%2Cresolution%2Cversion%2Cshort_desc%2Cchangeddate&amp;amp;component=core&amp;amp;component=Plugin&amp;amp;list_id=2265&amp;amp;product=GraphUI&amp;amp;query_format=advanced&amp;amp;resolution=---&amp;amp;resolution=FIXED&amp;amp;resolution=INVALID&amp;amp;resolution=WONTFIX&amp;amp;resolution=DUPLICATE&amp;amp;resolution=WORKSFORME&amp;amp;resolution=MOVED All GraphUI]&lt;br /&gt;
&lt;br /&gt;
;Open Items &#039;&#039;graphui&#039;&#039;&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;status&amp;quot;:[&amp;quot;IN_PROGRESS&amp;quot;,&amp;quot;CONFIRMED&amp;quot;, &amp;quot;UNCONFIRMED&amp;quot;],&lt;br /&gt;
        &amp;quot;product&amp;quot;:&amp;quot;graphui&amp;quot;,&lt;br /&gt;
        &amp;quot;include_fields&amp;quot;:&amp;quot;id,version,product,component,priority,severity,status,summary&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Completed Items &#039;&#039;graphui&#039;&#039;&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;status&amp;quot;:[&amp;quot;RESOLVED&amp;quot;,&amp;quot;VERIFIED&amp;quot;],&lt;br /&gt;
        &amp;quot;product&amp;quot;:&amp;quot;graphui&amp;quot;,&lt;br /&gt;
        &amp;quot;include_fields&amp;quot;:&amp;quot;id,version,product,component,status,resolution,summary&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Jogl / Graph ==&lt;br /&gt;
&lt;br /&gt;
[{{SERVER}}/bugzilla/showdependencytree.cgi?id=1064&amp;amp;hide_resolved=0 Dependency Tree Graph Font Issues]&lt;br /&gt;
&lt;br /&gt;
[{{SERVER}}/bugzilla/buglist.cgi?bug_status=UNCONFIRMED&amp;amp;bug_status=CONFIRMED&amp;amp;bug_status=IN_PROGRESS&amp;amp;bug_status=RESOLVED&amp;amp;bug_status=VERIFIED&amp;amp;columnlist=product%2Ccomponent%2Cassigned_to%2Cbug_status%2Cresolution%2Cversion%2Cshort_desc%2Cchangeddate&amp;amp;component=graph&amp;amp;list_id=2264&amp;amp;product=Jogl&amp;amp;query_format=advanced&amp;amp;resolution=---&amp;amp;resolution=FIXED&amp;amp;resolution=INVALID&amp;amp;resolution=WONTFIX&amp;amp;resolution=DUPLICATE&amp;amp;resolution=WORKSFORME&amp;amp;resolution=MOVED All Jogl Graph]&lt;br /&gt;
&lt;br /&gt;
;Open Items &#039;&#039;Jogl / graph&#039;&#039;&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;status&amp;quot;:[&amp;quot;IN_PROGRESS&amp;quot;,&amp;quot;CONFIRMED&amp;quot;, &amp;quot;UNCONFIRMED&amp;quot;],&lt;br /&gt;
        &amp;quot;product&amp;quot;:&amp;quot;jogl&amp;quot;,&lt;br /&gt;
        &amp;quot;component&amp;quot;:&amp;quot;graph&amp;quot;,&lt;br /&gt;
        &amp;quot;include_fields&amp;quot;:&amp;quot;id,version,product,component,priority,severity,status,summary&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Completed Items &#039;&#039;Jogl / graph&#039;&#039;&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;status&amp;quot;:[&amp;quot;RESOLVED&amp;quot;,&amp;quot;VERIFIED&amp;quot;],&lt;br /&gt;
        &amp;quot;product&amp;quot;:&amp;quot;jogl&amp;quot;,&lt;br /&gt;
        &amp;quot;component&amp;quot;:&amp;quot;graph&amp;quot;,&lt;br /&gt;
        &amp;quot;include_fields&amp;quot;:&amp;quot;id,version,product,component,status,resolution,summary&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= OpenJFX =&lt;br /&gt;
&lt;br /&gt;
[https://jogamp.org/bugzilla//show_bug.cgi?id=607#c20 Bug report 607] describes different ways to either &lt;br /&gt;
* enhance external rendering via JOGL into an OpenJFX UI elements, or&lt;br /&gt;
* to replace OpenJFX&#039;s Glass w/ NEWT and Prism&#039;s OpenGL coding with JOGL&lt;br /&gt;
&lt;br /&gt;
= NEWT =&lt;br /&gt;
&lt;br /&gt;
* [{{SERVER}}/bugzilla/showdependencytree.cgi?id=807&amp;amp;hide_resolved=0 Dependency Tree NEWT Input Devices]&lt;br /&gt;
* [{{SERVER}}/bugzilla/showdependencytree.cgi?id=814&amp;amp;hide_resolved=0 Dependency Tree NEWT Pointer Event]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;product&amp;quot;:[&amp;quot;newt&amp;quot;,&amp;quot;jinput&amp;quot;],&lt;br /&gt;
        &amp;quot;version&amp;quot;:[&amp;quot;2.5.0&amp;quot;,&amp;quot;3.0.0&amp;quot;,&amp;quot;tbd&amp;quot;],&lt;br /&gt;
        &amp;quot;cf_type&amp;quot;:&amp;quot;FEATURE&amp;quot;,&lt;br /&gt;
        &amp;quot;include_fields&amp;quot;:&amp;quot;id,version,product,component,priority,severity,status,summary&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= NEWT + Wayland =&lt;br /&gt;
Currently NEWT supports the X11/Xorg windowing server on Unix alike platforms.&lt;br /&gt;
&lt;br /&gt;
It might be desired to add direct support to Wayland, as we already added support for &lt;br /&gt;
[https://jogamp.org/bugzilla/show_bug.cgi?id=1156 bare metal devices w/o a windowing system via the Linux DRM/GBM console mode] &lt;br /&gt;
throughout JOGL + NEWT.&lt;br /&gt;
&lt;br /&gt;
= Vulkan  =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;component&amp;quot;:&amp;quot;vulkan&amp;quot;,&lt;br /&gt;
        &amp;quot;cf_type&amp;quot;:&amp;quot;FEATURE&amp;quot;,&lt;br /&gt;
        &amp;quot;include_fields&amp;quot;:&amp;quot;id,version,product,component,priority,severity,status,summary&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Video Encoding/Decoding &amp;amp; Player =&lt;br /&gt;
&lt;br /&gt;
Across our releases, we supported video encoding and decoding (with a player)&lt;br /&gt;
based on either FFmpeg or Android&#039;s library as [https://youtu.be/4gWStKCioi8?t=132 shown in this clip at 2:12 min mark].&lt;br /&gt;
&lt;br /&gt;
Goal would be to &lt;br /&gt;
* Update general ffmpeg video decoding support&lt;br /&gt;
* Enhance ffmpeg video encoding support&lt;br /&gt;
* Potentially add better control about video-frame to framebuffer control for editing software&lt;br /&gt;
&lt;br /&gt;
See [https://jogamp.org/bugzilla//buglist.cgi?bug_status=__open__&amp;amp;component=video&amp;amp;list_id=3053&amp;amp;product=Jogl related buglist]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;component&amp;quot;:&amp;quot;video&amp;quot;,&lt;br /&gt;
        &amp;quot;include_fields&amp;quot;:&amp;quot;id,version,product,component,priority,severity,status,summary&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= iOS Enhancements =&lt;br /&gt;
&lt;br /&gt;
Early iOS support has been demonstrated in 2019&lt;br /&gt;
* [https://jausoft.com/blog/2019/06/17/jogamp-ios-arm64-bring-up/ iOS Arm64 bring-up]&lt;br /&gt;
* [https://jausoft.com/blog/2019/06/23/jogamp-ios-arm64-port-first-visuals/ iOS Arm64 Port: First Visuals]&lt;br /&gt;
* [https://jausoft.com/blog/2019/07/08/jogamp-ios-arm64-port-newt/ iOS Arm64 Port: NEWT]&lt;br /&gt;
&lt;br /&gt;
Enhancing this port would allow to use JogAmp in a similar fashion as on Android,&lt;br /&gt;
but using an OpenJDK iOS build.&lt;br /&gt;
&lt;br /&gt;
= [[SCC Overview|Source Certification Contract (SCC)]] =&lt;br /&gt;
&lt;br /&gt;
[{{SERVER}}/bugzilla/showdependencytree.cgi?id=1368&amp;amp;hide_resolved=0 Dependency Tree]&lt;br /&gt;
&lt;br /&gt;
[{{SERVER}}/bugzilla/show_bug.cgi?id=1368 Root Parent Entry]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;id&amp;quot;:[&amp;quot;1368&amp;quot;, &amp;quot;1369&amp;quot;],&lt;br /&gt;
        &amp;quot;include_fields&amp;quot;:&amp;quot;id,version,product,component,priority,severity,status,summary&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Misc =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- bugzilla&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;product&amp;quot;!=[&amp;quot;graphui&amp;quot;,&amp;quot;newt&amp;quot;],&lt;br /&gt;
        &amp;quot;component&amp;quot;!=[&amp;quot;graph&amp;quot;,&amp;quot;vulkan&amp;quot;],&lt;br /&gt;
        &amp;quot;version&amp;quot;:[&amp;quot;2.5.0&amp;quot;,&amp;quot;3.0.0&amp;quot;,&amp;quot;tbd&amp;quot;],&lt;br /&gt;
        &amp;quot;cf_type&amp;quot;:&amp;quot;FEATURE&amp;quot;,&lt;br /&gt;
        &amp;quot;include_fields&amp;quot;:&amp;quot;id,version,product,component,priority,severity,status,summary&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/bugzilla--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;version&amp;quot;:[&amp;quot;2.5.0&amp;quot;,&amp;quot;3.0.0&amp;quot;,&amp;quot;tbd&amp;quot;],&lt;br /&gt;
        &amp;quot;cf_type&amp;quot;:&amp;quot;FEATURE&amp;quot;,&lt;br /&gt;
        &amp;quot;include_fields&amp;quot;:&amp;quot;id,version,product,component,priority,severity,status,summary&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gouessej</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Maven&amp;diff=2157</id>
		<title>Maven</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Maven&amp;diff=2157"/>
		<updated>2023-06-03T11:25:26Z</updated>

		<summary type="html">&lt;p&gt;Gouessej: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
JogAmp now contains support for Maven. From &amp;lt;tt&amp;gt;2.0-rc11&amp;lt;/tt&amp;gt; to &amp;lt;tt&amp;gt;2.3.2&amp;lt;/tt&amp;gt;, packages are pushed to &lt;br /&gt;
[http://search.maven.org/#search|ga|1|jogamp Maven Central]. Since &amp;lt;tt&amp;gt;2.4.0&amp;lt;/tt&amp;gt;, they are pushed only to [https://jogamp.org/deployment/maven/ the Jogamp Test Repository].&lt;br /&gt;
&lt;br /&gt;
= Add dependencies on the correct packages =&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t know which packages you want, you almost certainly want to use the&lt;br /&gt;
&amp;lt;tt&amp;gt;jogl-all-main&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;gluegen-rt-main&amp;lt;/tt&amp;gt; packages, as these automatically&lt;br /&gt;
set up the correct dependencies on the native jar files for all platforms.&lt;br /&gt;
&lt;br /&gt;
N.B: Please note that the version 2.3.2 was released in 2015, is obsolete, is the last version available in Maven Central and is only mentioned as an example but the later versions are only available in the JogAmp test repository (not in Maven Central).&lt;br /&gt;
&lt;br /&gt;
As an example, if your project uses JOGL &amp;lt;tt&amp;gt;2.3.2&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;dependencies&amp;gt;&lt;br /&gt;
    &amp;lt;dependency&amp;gt;&lt;br /&gt;
      &amp;lt;groupId&amp;gt;org.jogamp.gluegen&amp;lt;/groupId&amp;gt;&lt;br /&gt;
      &amp;lt;artifactId&amp;gt;gluegen-rt-main&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
      &amp;lt;version&amp;gt;2.3.2&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;/dependency&amp;gt;&lt;br /&gt;
    &amp;lt;dependency&amp;gt;&lt;br /&gt;
      &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
      &amp;lt;artifactId&amp;gt;jogl-all-main&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
      &amp;lt;version&amp;gt;2.3.2&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;/dependencies&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maven will pull all of the dependencies the next time you attempt to build the project.&lt;br /&gt;
&lt;br /&gt;
Additionally, for &amp;lt;tt&amp;gt;joal&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jocl&amp;lt;/tt&amp;gt; support:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;dependencies&amp;gt;&lt;br /&gt;
    &amp;lt;dependency&amp;gt;&lt;br /&gt;
      &amp;lt;groupId&amp;gt;org.jogamp.jocl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
      &amp;lt;artifactId&amp;gt;jocl-main&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
      &amp;lt;version&amp;gt;2.3.2&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;/dependency&amp;gt;&lt;br /&gt;
    &amp;lt;dependency&amp;gt;&lt;br /&gt;
      &amp;lt;groupId&amp;gt;org.jogamp.joal&amp;lt;/groupId&amp;gt;&lt;br /&gt;
      &amp;lt;artifactId&amp;gt;joal-main&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
      &amp;lt;version&amp;gt;2.3.2&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;/dependencies&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An example project is available in the &amp;lt;tt&amp;gt;maven&amp;lt;/tt&amp;gt; subdirectory of the &amp;lt;tt&amp;gt;jogl-demos&amp;lt;/tt&amp;gt; project&lt;br /&gt;
[https://jogamp.org/git/?p=jogl-demos.git;a=tree;f=maven].&lt;br /&gt;
&lt;br /&gt;
= Package details =&lt;br /&gt;
&lt;br /&gt;
For each JogAmp project, there are essentially two packages published: One contains the main compiled&lt;br /&gt;
jar files and any associated native library jar files, and the other simply contains &amp;lt;i&amp;gt;dependencies&amp;lt;/i&amp;gt;&lt;br /&gt;
on those files. Using &amp;lt;tt&amp;gt;jogl-all&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jogl-all-main&amp;lt;/tt&amp;gt; as the example, the &amp;lt;tt&amp;gt;jogl-all&amp;lt;/tt&amp;gt;&lt;br /&gt;
package in the jogamp.org test repository:&lt;br /&gt;
&lt;br /&gt;
https://jogamp.org/deployment/maven/org/jogamp/jogl/jogl-all/2.3.2/&lt;br /&gt;
&lt;br /&gt;
Note that there are many native jar files attached to the main package. However, if you were to use&lt;br /&gt;
the following dependency in your own project:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl-all&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.2&amp;lt;/version&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maven would download &amp;lt;tt&amp;gt;jogl-all-2.3.2.jar&amp;lt;/tt&amp;gt; but would completely ignore all of the other&lt;br /&gt;
native jar files. Why? The reason for this is that the native jar files are uploaded as extra artifacts&lt;br /&gt;
to the &amp;lt;tt&amp;gt;jogl-all&amp;lt;/tt&amp;gt; package and are, in a manner of speaking, not really considered to be part of&lt;br /&gt;
the package where dependencies are concerned. The POM for the &amp;lt;tt&amp;gt;jogl-all-main&amp;lt;/tt&amp;gt; package adds&lt;br /&gt;
explicit dependencies on all of the extra artifacts in the &amp;lt;tt&amp;gt;jogl-all&amp;lt;/tt&amp;gt; package:&lt;br /&gt;
&lt;br /&gt;
https://jogamp.org/deployment/maven/org/jogamp/jogl/jogl-all-main/2.3.2/jogl-all-main-2.3.2.pom&lt;br /&gt;
&lt;br /&gt;
So, when you add a dependency on &amp;lt;tt&amp;gt;jogl-all-main&amp;lt;/tt&amp;gt; in your own project, the native jar files of&lt;br /&gt;
&amp;lt;tt&amp;gt;jogl-all&amp;lt;/tt&amp;gt; are brought in as transitive dependencies and everything works as expected.&lt;br /&gt;
&lt;br /&gt;
= Available packages =&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|Group ID&lt;br /&gt;
|Artifact ID&lt;br /&gt;
|Since&lt;br /&gt;
|Description&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.gluegen&lt;br /&gt;
|gluegen-rt-android&lt;br /&gt;
|2.0.2-rc12&lt;br /&gt;
|GlueGen runtime code and native libraries (Android)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.gluegen&lt;br /&gt;
|gluegen-rt-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for the GlueGen runtime&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.gluegen&lt;br /&gt;
|gluegen-rt&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|GlueGen runtime code and native libraries&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.gluegen&lt;br /&gt;
|gluegen&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|GlueGen non-runtime code and native libraries (and atomic jars)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.joal&lt;br /&gt;
|joal-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOAL&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.joal&lt;br /&gt;
|joal&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|JOAL code and native libraries&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.joal&lt;br /&gt;
|joal-android&lt;br /&gt;
|2.2.0&lt;br /&gt;
|JOAL Android runtime&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jocl&lt;br /&gt;
|jocl-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOCL&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jocl&lt;br /&gt;
|jocl-android&lt;br /&gt;
|2.2.0&lt;br /&gt;
|JOCL Android runtime&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jocl&lt;br /&gt;
|jocl&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|JOCL code and native libraries&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-all-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOGL&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-all&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|JOGL code and native libraries&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-android&lt;br /&gt;
|2.0.2-rc12&lt;br /&gt;
|JOGL code and native libraries (Android)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-android-main&lt;br /&gt;
|2.2.0&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOGL (Android)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-mobile-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOGL (mobile)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-mobile&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|JOGL mobile code and native libraries (without AWT)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-noawt-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOGL (without AWT)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-noawt&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|JOGL code and native libraries (without AWT)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl&lt;br /&gt;
|2.0.2&lt;br /&gt;
|JOGL atomic jar files&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|nativewindow&lt;br /&gt;
|2.0.2&lt;br /&gt;
|Native window drivers for NEWT (atomic jars)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|nativewindow-main&lt;br /&gt;
|2.2.0&lt;br /&gt;
|Native window drivers for NEWT (atomic frontend)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|newt&lt;br /&gt;
|2.0.2&lt;br /&gt;
|NEWT code and native libraries (atomic jars)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|newt-main&lt;br /&gt;
|2.2.0&lt;br /&gt;
|NEWT code and native libraries (atomic frontend)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|occulusvr&lt;br /&gt;
|2.2.0&lt;br /&gt;
|JOGL code and native libraries (Oculus VR atomic jar files)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Atomic jar files (optional) =&lt;br /&gt;
&lt;br /&gt;
The so-called &amp;lt;i&amp;gt;atomic&amp;lt;/i&amp;gt; jar files are provided as attachments to the &amp;lt;tt&amp;gt;jogl&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;newt&amp;lt;/tt&amp;gt;,&lt;br /&gt;
&amp;lt;tt&amp;gt;nativewindow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;gluegen&amp;lt;/tt&amp;gt; packages. As an example, to depend only on the Linux AMD64&lt;br /&gt;
native jar files, on X11, using only the core of &amp;lt;tt&amp;gt;jogl&amp;lt;/tt&amp;gt; and the native window toolkit in your&lt;br /&gt;
own projects, use the following dependencies:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.gluegen-rt&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.2&amp;lt;/version&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.gluegen-rt&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.2&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;natives-linux-amd64&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.2&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;core&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.2&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;natives-linux-amd64&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.2&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;os-x11&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.2&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;os-x11&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;newt&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.2&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;driver-x11&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;newt&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.2&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;core&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;newt&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.2&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;natives-linux-amd64&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;nativewindow&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.2&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;core&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;nativewindow&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.2&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;natives-linux-amd64&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;nativewindow&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.2&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;driver-x11&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the choice of which atomic jars are required is really outside of the scope of this&lt;br /&gt;
documentation. It&#039;s recommended that you browse the packages in question to see which jar&lt;br /&gt;
files are available. It&#039;s &amp;lt;i&amp;gt;not&amp;lt;/i&amp;gt; recommended to depend on platform-specific jar files&lt;br /&gt;
in the manner shown above unless there&#039;s an extremely good reason to do so; to do otherwise&lt;br /&gt;
harms portability for no good reason!&lt;br /&gt;
&lt;br /&gt;
= The jogamp.org test repository =&lt;br /&gt;
&lt;br /&gt;
Bleeding edge, experimental packages will continue to be made available from the&lt;br /&gt;
[https://jogamp.org/deployment/maven Jogamp Test Repository]. Most users won&#039;t need this, but&lt;br /&gt;
it can be used by adding a new profile in your &amp;lt;tt&amp;gt;~/.m2/settings.xml&amp;lt;/tt&amp;gt; file that specifies&lt;br /&gt;
the repository:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
  &amp;lt;settings&lt;br /&gt;
    xmlns=&amp;quot;http://maven.apache.org/SETTINGS/1.0.0&amp;quot; &lt;br /&gt;
    xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; &lt;br /&gt;
    xsi:schemaLocation=&amp;quot;http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;profiles&amp;gt;&lt;br /&gt;
      &amp;lt;profile&amp;gt;&lt;br /&gt;
        &amp;lt;id&amp;gt;jogamp&amp;lt;/id&amp;gt;&lt;br /&gt;
        &amp;lt;repositories&amp;gt;&lt;br /&gt;
          &amp;lt;repository&amp;gt;&lt;br /&gt;
            &amp;lt;id&amp;gt;jogamp-remote&amp;lt;/id&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;jogamp test mirror&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;url&amp;gt;https://www.jogamp.org/deployment/maven/&amp;lt;/url&amp;gt;&lt;br /&gt;
            &amp;lt;layout&amp;gt;default&amp;lt;/layout&amp;gt;&lt;br /&gt;
          &amp;lt;/repository&amp;gt;&lt;br /&gt;
        &amp;lt;/repositories&amp;gt;&lt;br /&gt;
      &amp;lt;/profile&amp;gt;&lt;br /&gt;
    &amp;lt;/profiles&amp;gt;&lt;br /&gt;
    &amp;lt;activeProfiles&amp;gt;&lt;br /&gt;
      &amp;lt;activeProfile&amp;gt;jogamp&amp;lt;/activeProfile&amp;gt;&lt;br /&gt;
    &amp;lt;/activeProfiles&amp;gt;&lt;br /&gt;
  &amp;lt;/settings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This repository can be added into the POM file like in this [https://jogamp.org/cgit/jogl-demos.git/tree/maven/trivial-test/pom.xml very simple example].&lt;br /&gt;
&lt;br /&gt;
Maven will then check this repository for packages in addition to Maven Central when resolving dependencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Please note that some packages on the Jogamp test repository are subject to unannounced changes at any moment and may break existing code at any time! Do not use for production code!&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since &amp;lt;tt&amp;gt;2.4.0&amp;lt;/tt&amp;gt;, the releases and the release candidates are pushed only to this repository.&lt;br /&gt;
&lt;br /&gt;
= Android =&lt;br /&gt;
&lt;br /&gt;
There is a [[Maven_And_Android|separate page]] documenting one method of producing packages that work on both Android and ordinary&lt;br /&gt;
desktop Java.&lt;br /&gt;
&lt;br /&gt;
= Producing a fat jar =&lt;br /&gt;
&lt;br /&gt;
See [[JogAmp_JAR_File_Handling#Maven_Assembly_Plugin|JAR File Handling]].&lt;/div&gt;</summary>
		<author><name>Gouessej</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Maven&amp;diff=2156</id>
		<title>Maven</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Maven&amp;diff=2156"/>
		<updated>2023-06-03T11:20:33Z</updated>

		<summary type="html">&lt;p&gt;Gouessej: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
JogAmp now contains support for Maven. From &amp;lt;tt&amp;gt;2.0-rc11&amp;lt;/tt&amp;gt; to &amp;lt;tt&amp;gt;2.3.2&amp;lt;/tt&amp;gt;, packages are pushed to &lt;br /&gt;
[http://search.maven.org/#search|ga|1|jogamp Maven Central]. Since &amp;lt;tt&amp;gt;2.4.0&amp;lt;/tt&amp;gt;, they are pushed only to [https://jogamp.org/deployment/maven/ the Jogamp Test Repository].&lt;br /&gt;
&lt;br /&gt;
= Add dependencies on the correct packages =&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t know which packages you want, you almost certainly want to use the&lt;br /&gt;
&amp;lt;tt&amp;gt;jogl-all-main&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;gluegen-rt-main&amp;lt;/tt&amp;gt; packages, as these automatically&lt;br /&gt;
set up the correct dependencies on the native jar files for all platforms.&lt;br /&gt;
&lt;br /&gt;
As an example, if your project uses JOGL &amp;lt;tt&amp;gt;2.3.2&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;dependencies&amp;gt;&lt;br /&gt;
    &amp;lt;dependency&amp;gt;&lt;br /&gt;
      &amp;lt;groupId&amp;gt;org.jogamp.gluegen&amp;lt;/groupId&amp;gt;&lt;br /&gt;
      &amp;lt;artifactId&amp;gt;gluegen-rt-main&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
      &amp;lt;version&amp;gt;2.3.2&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;/dependency&amp;gt;&lt;br /&gt;
    &amp;lt;dependency&amp;gt;&lt;br /&gt;
      &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
      &amp;lt;artifactId&amp;gt;jogl-all-main&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
      &amp;lt;version&amp;gt;2.3.2&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;/dependencies&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maven will pull all of the dependencies the next time you attempt to build the project.&lt;br /&gt;
&lt;br /&gt;
Additionally, for &amp;lt;tt&amp;gt;joal&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jocl&amp;lt;/tt&amp;gt; support:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;dependencies&amp;gt;&lt;br /&gt;
    &amp;lt;dependency&amp;gt;&lt;br /&gt;
      &amp;lt;groupId&amp;gt;org.jogamp.jocl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
      &amp;lt;artifactId&amp;gt;jocl-main&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
      &amp;lt;version&amp;gt;2.3.2&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;/dependency&amp;gt;&lt;br /&gt;
    &amp;lt;dependency&amp;gt;&lt;br /&gt;
      &amp;lt;groupId&amp;gt;org.jogamp.joal&amp;lt;/groupId&amp;gt;&lt;br /&gt;
      &amp;lt;artifactId&amp;gt;joal-main&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
      &amp;lt;version&amp;gt;2.3.2&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;/dependencies&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An example project is available in the &amp;lt;tt&amp;gt;maven&amp;lt;/tt&amp;gt; subdirectory of the &amp;lt;tt&amp;gt;jogl-demos&amp;lt;/tt&amp;gt; project&lt;br /&gt;
[https://jogamp.org/git/?p=jogl-demos.git;a=tree;f=maven].&lt;br /&gt;
N.B: Please note that the version 2.3.2 was released in 2015 and is the latest version available in Maven Central but it is not the latest version available. Please look at the JogAmp test repository to find other versions.&lt;br /&gt;
&lt;br /&gt;
= Package details =&lt;br /&gt;
&lt;br /&gt;
For each JogAmp project, there are essentially two packages published: One contains the main compiled&lt;br /&gt;
jar files and any associated native library jar files, and the other simply contains &amp;lt;i&amp;gt;dependencies&amp;lt;/i&amp;gt;&lt;br /&gt;
on those files. Using &amp;lt;tt&amp;gt;jogl-all&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jogl-all-main&amp;lt;/tt&amp;gt; as the example, the &amp;lt;tt&amp;gt;jogl-all&amp;lt;/tt&amp;gt;&lt;br /&gt;
package in the jogamp.org test repository:&lt;br /&gt;
&lt;br /&gt;
https://jogamp.org/deployment/maven/org/jogamp/jogl/jogl-all/2.3.2/&lt;br /&gt;
&lt;br /&gt;
Note that there are many native jar files attached to the main package. However, if you were to use&lt;br /&gt;
the following dependency in your own project:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl-all&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.2&amp;lt;/version&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maven would download &amp;lt;tt&amp;gt;jogl-all-2.3.2.jar&amp;lt;/tt&amp;gt; but would completely ignore all of the other&lt;br /&gt;
native jar files. Why? The reason for this is that the native jar files are uploaded as extra artifacts&lt;br /&gt;
to the &amp;lt;tt&amp;gt;jogl-all&amp;lt;/tt&amp;gt; package and are, in a manner of speaking, not really considered to be part of&lt;br /&gt;
the package where dependencies are concerned. The POM for the &amp;lt;tt&amp;gt;jogl-all-main&amp;lt;/tt&amp;gt; package adds&lt;br /&gt;
explicit dependencies on all of the extra artifacts in the &amp;lt;tt&amp;gt;jogl-all&amp;lt;/tt&amp;gt; package:&lt;br /&gt;
&lt;br /&gt;
https://jogamp.org/deployment/maven/org/jogamp/jogl/jogl-all-main/2.3.2/jogl-all-main-2.3.2.pom&lt;br /&gt;
&lt;br /&gt;
So, when you add a dependency on &amp;lt;tt&amp;gt;jogl-all-main&amp;lt;/tt&amp;gt; in your own project, the native jar files of&lt;br /&gt;
&amp;lt;tt&amp;gt;jogl-all&amp;lt;/tt&amp;gt; are brought in as transitive dependencies and everything works as expected.&lt;br /&gt;
&lt;br /&gt;
= Available packages =&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|Group ID&lt;br /&gt;
|Artifact ID&lt;br /&gt;
|Since&lt;br /&gt;
|Description&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.gluegen&lt;br /&gt;
|gluegen-rt-android&lt;br /&gt;
|2.0.2-rc12&lt;br /&gt;
|GlueGen runtime code and native libraries (Android)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.gluegen&lt;br /&gt;
|gluegen-rt-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for the GlueGen runtime&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.gluegen&lt;br /&gt;
|gluegen-rt&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|GlueGen runtime code and native libraries&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.gluegen&lt;br /&gt;
|gluegen&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|GlueGen non-runtime code and native libraries (and atomic jars)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.joal&lt;br /&gt;
|joal-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOAL&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.joal&lt;br /&gt;
|joal&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|JOAL code and native libraries&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.joal&lt;br /&gt;
|joal-android&lt;br /&gt;
|2.2.0&lt;br /&gt;
|JOAL Android runtime&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jocl&lt;br /&gt;
|jocl-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOCL&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jocl&lt;br /&gt;
|jocl-android&lt;br /&gt;
|2.2.0&lt;br /&gt;
|JOCL Android runtime&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jocl&lt;br /&gt;
|jocl&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|JOCL code and native libraries&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-all-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOGL&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-all&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|JOGL code and native libraries&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-android&lt;br /&gt;
|2.0.2-rc12&lt;br /&gt;
|JOGL code and native libraries (Android)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-android-main&lt;br /&gt;
|2.2.0&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOGL (Android)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-mobile-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOGL (mobile)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-mobile&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|JOGL mobile code and native libraries (without AWT)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-noawt-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOGL (without AWT)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-noawt&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|JOGL code and native libraries (without AWT)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl&lt;br /&gt;
|2.0.2&lt;br /&gt;
|JOGL atomic jar files&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|nativewindow&lt;br /&gt;
|2.0.2&lt;br /&gt;
|Native window drivers for NEWT (atomic jars)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|nativewindow-main&lt;br /&gt;
|2.2.0&lt;br /&gt;
|Native window drivers for NEWT (atomic frontend)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|newt&lt;br /&gt;
|2.0.2&lt;br /&gt;
|NEWT code and native libraries (atomic jars)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|newt-main&lt;br /&gt;
|2.2.0&lt;br /&gt;
|NEWT code and native libraries (atomic frontend)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|occulusvr&lt;br /&gt;
|2.2.0&lt;br /&gt;
|JOGL code and native libraries (Oculus VR atomic jar files)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Atomic jar files (optional) =&lt;br /&gt;
&lt;br /&gt;
The so-called &amp;lt;i&amp;gt;atomic&amp;lt;/i&amp;gt; jar files are provided as attachments to the &amp;lt;tt&amp;gt;jogl&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;newt&amp;lt;/tt&amp;gt;,&lt;br /&gt;
&amp;lt;tt&amp;gt;nativewindow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;gluegen&amp;lt;/tt&amp;gt; packages. As an example, to depend only on the Linux AMD64&lt;br /&gt;
native jar files, on X11, using only the core of &amp;lt;tt&amp;gt;jogl&amp;lt;/tt&amp;gt; and the native window toolkit in your&lt;br /&gt;
own projects, use the following dependencies:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.gluegen-rt&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.2&amp;lt;/version&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.gluegen-rt&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.2&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;natives-linux-amd64&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.2&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;core&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.2&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;natives-linux-amd64&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.2&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;os-x11&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.2&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;os-x11&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;newt&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.2&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;driver-x11&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;newt&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.2&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;core&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;newt&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.2&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;natives-linux-amd64&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;nativewindow&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.2&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;core&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;nativewindow&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.2&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;natives-linux-amd64&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;nativewindow&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.2&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;driver-x11&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the choice of which atomic jars are required is really outside of the scope of this&lt;br /&gt;
documentation. It&#039;s recommended that you browse the packages in question to see which jar&lt;br /&gt;
files are available. It&#039;s &amp;lt;i&amp;gt;not&amp;lt;/i&amp;gt; recommended to depend on platform-specific jar files&lt;br /&gt;
in the manner shown above unless there&#039;s an extremely good reason to do so; to do otherwise&lt;br /&gt;
harms portability for no good reason!&lt;br /&gt;
&lt;br /&gt;
= The jogamp.org test repository =&lt;br /&gt;
&lt;br /&gt;
Bleeding edge, experimental packages will continue to be made available from the&lt;br /&gt;
[https://jogamp.org/deployment/maven Jogamp Test Repository]. Most users won&#039;t need this, but&lt;br /&gt;
it can be used by adding a new profile in your &amp;lt;tt&amp;gt;~/.m2/settings.xml&amp;lt;/tt&amp;gt; file that specifies&lt;br /&gt;
the repository:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
  &amp;lt;settings&lt;br /&gt;
    xmlns=&amp;quot;http://maven.apache.org/SETTINGS/1.0.0&amp;quot; &lt;br /&gt;
    xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; &lt;br /&gt;
    xsi:schemaLocation=&amp;quot;http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;profiles&amp;gt;&lt;br /&gt;
      &amp;lt;profile&amp;gt;&lt;br /&gt;
        &amp;lt;id&amp;gt;jogamp&amp;lt;/id&amp;gt;&lt;br /&gt;
        &amp;lt;repositories&amp;gt;&lt;br /&gt;
          &amp;lt;repository&amp;gt;&lt;br /&gt;
            &amp;lt;id&amp;gt;jogamp-remote&amp;lt;/id&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;jogamp test mirror&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;url&amp;gt;https://www.jogamp.org/deployment/maven/&amp;lt;/url&amp;gt;&lt;br /&gt;
            &amp;lt;layout&amp;gt;default&amp;lt;/layout&amp;gt;&lt;br /&gt;
          &amp;lt;/repository&amp;gt;&lt;br /&gt;
        &amp;lt;/repositories&amp;gt;&lt;br /&gt;
      &amp;lt;/profile&amp;gt;&lt;br /&gt;
    &amp;lt;/profiles&amp;gt;&lt;br /&gt;
    &amp;lt;activeProfiles&amp;gt;&lt;br /&gt;
      &amp;lt;activeProfile&amp;gt;jogamp&amp;lt;/activeProfile&amp;gt;&lt;br /&gt;
    &amp;lt;/activeProfiles&amp;gt;&lt;br /&gt;
  &amp;lt;/settings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This repository can be added into the POM file like in this [https://jogamp.org/cgit/jogl-demos.git/tree/maven/trivial-test/pom.xml very simple example].&lt;br /&gt;
&lt;br /&gt;
Maven will then check this repository for packages in addition to Maven Central when resolving dependencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Please note that some packages on the Jogamp test repository are subject to unannounced changes at any moment and may break existing code at any time! Do not use for production code!&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since &amp;lt;tt&amp;gt;2.4.0&amp;lt;/tt&amp;gt;, the releases and the release candidates are pushed only to this repository.&lt;br /&gt;
&lt;br /&gt;
= Android =&lt;br /&gt;
&lt;br /&gt;
There is a [[Maven_And_Android|separate page]] documenting one method of producing packages that work on both Android and ordinary&lt;br /&gt;
desktop Java.&lt;br /&gt;
&lt;br /&gt;
= Producing a fat jar =&lt;br /&gt;
&lt;br /&gt;
See [[JogAmp_JAR_File_Handling#Maven_Assembly_Plugin|JAR File Handling]].&lt;/div&gt;</summary>
		<author><name>Gouessej</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Maven&amp;diff=2155</id>
		<title>Maven</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Maven&amp;diff=2155"/>
		<updated>2023-06-03T11:16:51Z</updated>

		<summary type="html">&lt;p&gt;Gouessej: /* Add dependencies on the correct packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
JogAmp now contains support for Maven. From &amp;lt;tt&amp;gt;2.0-rc11&amp;lt;/tt&amp;gt; to &amp;lt;tt&amp;gt;2.3.2&amp;lt;/tt&amp;gt;, packages are pushed to &lt;br /&gt;
[http://search.maven.org/#search|ga|1|jogamp Maven Central]. Since &amp;lt;tt&amp;gt;2.4.0&amp;lt;/tt&amp;gt;, they are pushed only to [https://jogamp.org/deployment/maven/ the Jogamp Test Repository].&lt;br /&gt;
&lt;br /&gt;
= Add dependencies on the correct packages =&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t know which packages you want, you almost certainly want to use the&lt;br /&gt;
&amp;lt;tt&amp;gt;jogl-all-main&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;gluegen-rt-main&amp;lt;/tt&amp;gt; packages, as these automatically&lt;br /&gt;
set up the correct dependencies on the native jar files for all platforms.&lt;br /&gt;
&lt;br /&gt;
As an example, if your project uses JOGL &amp;lt;tt&amp;gt;2.3.2&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;dependencies&amp;gt;&lt;br /&gt;
    &amp;lt;dependency&amp;gt;&lt;br /&gt;
      &amp;lt;groupId&amp;gt;org.jogamp.gluegen&amp;lt;/groupId&amp;gt;&lt;br /&gt;
      &amp;lt;artifactId&amp;gt;gluegen-rt-main&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
      &amp;lt;version&amp;gt;2.3.2&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;/dependency&amp;gt;&lt;br /&gt;
    &amp;lt;dependency&amp;gt;&lt;br /&gt;
      &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
      &amp;lt;artifactId&amp;gt;jogl-all-main&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
      &amp;lt;version&amp;gt;2.3.2&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;/dependencies&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maven will pull all of the dependencies the next time you attempt to build the project.&lt;br /&gt;
&lt;br /&gt;
Additionally, for &amp;lt;tt&amp;gt;joal&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jocl&amp;lt;/tt&amp;gt; support:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;dependencies&amp;gt;&lt;br /&gt;
    &amp;lt;dependency&amp;gt;&lt;br /&gt;
      &amp;lt;groupId&amp;gt;org.jogamp.jocl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
      &amp;lt;artifactId&amp;gt;jocl-main&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
      &amp;lt;version&amp;gt;2.3.2&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;/dependency&amp;gt;&lt;br /&gt;
    &amp;lt;dependency&amp;gt;&lt;br /&gt;
      &amp;lt;groupId&amp;gt;org.jogamp.joal&amp;lt;/groupId&amp;gt;&lt;br /&gt;
      &amp;lt;artifactId&amp;gt;joal-main&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
      &amp;lt;version&amp;gt;2.3.2&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;/dependencies&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An example project is available in the &amp;lt;tt&amp;gt;maven&amp;lt;/tt&amp;gt; subdirectory of the &amp;lt;tt&amp;gt;jogl-demos&amp;lt;/tt&amp;gt; project&lt;br /&gt;
[https://jogamp.org/git/?p=jogl-demos.git;a=tree;f=maven].&lt;br /&gt;
N.B: Please note that the version 2.3.2 was released in 2015 and is the latest version available in Maven Central but it is not the latest version available. Please look at the JogAmp test repository to find other versions.&lt;br /&gt;
&lt;br /&gt;
= Package details =&lt;br /&gt;
&lt;br /&gt;
For each JogAmp project, there are essentially two packages published: One contains the main compiled&lt;br /&gt;
jar files and any associated native library jar files, and the other simply contains &amp;lt;i&amp;gt;dependencies&amp;lt;/i&amp;gt;&lt;br /&gt;
on those files. Using &amp;lt;tt&amp;gt;jogl-all&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jogl-all-main&amp;lt;/tt&amp;gt; as the example, the &amp;lt;tt&amp;gt;jogl-all&amp;lt;/tt&amp;gt;&lt;br /&gt;
package in the jogamp.org test repository:&lt;br /&gt;
&lt;br /&gt;
http://jogamp.org/deployment/maven/org/jogamp/jogl/jogl-all/2.3.1/&lt;br /&gt;
&lt;br /&gt;
Note that there are many native jar files attached to the main package. However, if you were to use&lt;br /&gt;
the following dependency in your own project:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl-all&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maven would download &amp;lt;tt&amp;gt;jogl-all-2.3.1.jar&amp;lt;/tt&amp;gt; but would completely ignore all of the other&lt;br /&gt;
native jar files. Why? The reason for this is that the native jar files are uploaded as extra artifacts&lt;br /&gt;
to the &amp;lt;tt&amp;gt;jogl-all&amp;lt;/tt&amp;gt; package and are, in a manner of speaking, not really considered to be part of&lt;br /&gt;
the package where dependencies are concerned. The POM for the &amp;lt;tt&amp;gt;jogl-all-main&amp;lt;/tt&amp;gt; package adds&lt;br /&gt;
explicit dependencies on all of the extra artifacts in the &amp;lt;tt&amp;gt;jogl-all&amp;lt;/tt&amp;gt; package:&lt;br /&gt;
&lt;br /&gt;
http://jogamp.org/deployment/maven/org/jogamp/jogl/jogl-all-main/2.3.1/jogl-all-main-2.3.1.pom&lt;br /&gt;
&lt;br /&gt;
So, when you add a dependency on &amp;lt;tt&amp;gt;jogl-all-main&amp;lt;/tt&amp;gt; in your own project, the native jar files of&lt;br /&gt;
&amp;lt;tt&amp;gt;jogl-all&amp;lt;/tt&amp;gt; are brought in as transitive dependencies and everything works as expected.&lt;br /&gt;
&lt;br /&gt;
= Available packages =&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|Group ID&lt;br /&gt;
|Artifact ID&lt;br /&gt;
|Since&lt;br /&gt;
|Description&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.gluegen&lt;br /&gt;
|gluegen-rt-android&lt;br /&gt;
|2.0.2-rc12&lt;br /&gt;
|GlueGen runtime code and native libraries (Android)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.gluegen&lt;br /&gt;
|gluegen-rt-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for the GlueGen runtime&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.gluegen&lt;br /&gt;
|gluegen-rt&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|GlueGen runtime code and native libraries&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.gluegen&lt;br /&gt;
|gluegen&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|GlueGen non-runtime code and native libraries (and atomic jars)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.joal&lt;br /&gt;
|joal-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOAL&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.joal&lt;br /&gt;
|joal&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|JOAL code and native libraries&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.joal&lt;br /&gt;
|joal-android&lt;br /&gt;
|2.2.0&lt;br /&gt;
|JOAL Android runtime&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jocl&lt;br /&gt;
|jocl-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOCL&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jocl&lt;br /&gt;
|jocl-android&lt;br /&gt;
|2.2.0&lt;br /&gt;
|JOCL Android runtime&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jocl&lt;br /&gt;
|jocl&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|JOCL code and native libraries&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-all-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOGL&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-all&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|JOGL code and native libraries&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-android&lt;br /&gt;
|2.0.2-rc12&lt;br /&gt;
|JOGL code and native libraries (Android)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-android-main&lt;br /&gt;
|2.2.0&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOGL (Android)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-mobile-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOGL (mobile)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-mobile&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|JOGL mobile code and native libraries (without AWT)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-noawt-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOGL (without AWT)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-noawt&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|JOGL code and native libraries (without AWT)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl&lt;br /&gt;
|2.0.2&lt;br /&gt;
|JOGL atomic jar files&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|nativewindow&lt;br /&gt;
|2.0.2&lt;br /&gt;
|Native window drivers for NEWT (atomic jars)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|nativewindow-main&lt;br /&gt;
|2.2.0&lt;br /&gt;
|Native window drivers for NEWT (atomic frontend)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|newt&lt;br /&gt;
|2.0.2&lt;br /&gt;
|NEWT code and native libraries (atomic jars)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|newt-main&lt;br /&gt;
|2.2.0&lt;br /&gt;
|NEWT code and native libraries (atomic frontend)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|occulusvr&lt;br /&gt;
|2.2.0&lt;br /&gt;
|JOGL code and native libraries (Oculus VR atomic jar files)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Atomic jar files (optional) =&lt;br /&gt;
&lt;br /&gt;
The so-called &amp;lt;i&amp;gt;atomic&amp;lt;/i&amp;gt; jar files are provided as attachments to the &amp;lt;tt&amp;gt;jogl&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;newt&amp;lt;/tt&amp;gt;,&lt;br /&gt;
&amp;lt;tt&amp;gt;nativewindow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;gluegen&amp;lt;/tt&amp;gt; packages. As an example, to depend only on the Linux AMD64&lt;br /&gt;
native jar files, on X11, using only the core of &amp;lt;tt&amp;gt;jogl&amp;lt;/tt&amp;gt; and the native window toolkit in your&lt;br /&gt;
own projects, use the following dependencies:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.gluegen-rt&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.gluegen-rt&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;natives-linux-amd64&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;core&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;natives-linux-amd64&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;os-x11&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;os-x11&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;newt&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;driver-x11&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;newt&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;core&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;newt&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;natives-linux-amd64&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;nativewindow&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;core&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;nativewindow&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;natives-linux-amd64&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;nativewindow&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;driver-x11&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the choice of which atomic jars are required is really outside of the scope of this&lt;br /&gt;
documentation. It&#039;s recommended that you browse the packages in question to see which jar&lt;br /&gt;
files are available. It&#039;s &amp;lt;i&amp;gt;not&amp;lt;/i&amp;gt; recommended to depend on platform-specific jar files&lt;br /&gt;
in the manner shown above unless there&#039;s an extremely good reason to do so; to do otherwise&lt;br /&gt;
harms portability for no good reason!&lt;br /&gt;
&lt;br /&gt;
= The jogamp.org test repository =&lt;br /&gt;
&lt;br /&gt;
Bleeding edge, experimental packages will continue to be made available from the&lt;br /&gt;
[https://jogamp.org/deployment/maven Jogamp Test Repository]. Most users won&#039;t need this, but&lt;br /&gt;
it can be used by adding a new profile in your &amp;lt;tt&amp;gt;~/.m2/settings.xml&amp;lt;/tt&amp;gt; file that specifies&lt;br /&gt;
the repository:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
  &amp;lt;settings&lt;br /&gt;
    xmlns=&amp;quot;http://maven.apache.org/SETTINGS/1.0.0&amp;quot; &lt;br /&gt;
    xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; &lt;br /&gt;
    xsi:schemaLocation=&amp;quot;http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;profiles&amp;gt;&lt;br /&gt;
      &amp;lt;profile&amp;gt;&lt;br /&gt;
        &amp;lt;id&amp;gt;jogamp&amp;lt;/id&amp;gt;&lt;br /&gt;
        &amp;lt;repositories&amp;gt;&lt;br /&gt;
          &amp;lt;repository&amp;gt;&lt;br /&gt;
            &amp;lt;id&amp;gt;jogamp-remote&amp;lt;/id&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;jogamp test mirror&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;url&amp;gt;https://www.jogamp.org/deployment/maven/&amp;lt;/url&amp;gt;&lt;br /&gt;
            &amp;lt;layout&amp;gt;default&amp;lt;/layout&amp;gt;&lt;br /&gt;
          &amp;lt;/repository&amp;gt;&lt;br /&gt;
        &amp;lt;/repositories&amp;gt;&lt;br /&gt;
      &amp;lt;/profile&amp;gt;&lt;br /&gt;
    &amp;lt;/profiles&amp;gt;&lt;br /&gt;
    &amp;lt;activeProfiles&amp;gt;&lt;br /&gt;
      &amp;lt;activeProfile&amp;gt;jogamp&amp;lt;/activeProfile&amp;gt;&lt;br /&gt;
    &amp;lt;/activeProfiles&amp;gt;&lt;br /&gt;
  &amp;lt;/settings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This repository can be added into the POM file like in this [https://jogamp.org/cgit/jogl-demos.git/tree/maven/trivial-test/pom.xml very simple example].&lt;br /&gt;
&lt;br /&gt;
Maven will then check this repository for packages in addition to Maven Central when resolving dependencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Please note that some packages on the Jogamp test repository are subject to unannounced changes at any moment and may break existing code at any time! Do not use for production code!&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since &amp;lt;tt&amp;gt;2.4.0&amp;lt;/tt&amp;gt;, the releases and the release candidates are pushed only to this repository.&lt;br /&gt;
&lt;br /&gt;
= Android =&lt;br /&gt;
&lt;br /&gt;
There is a [[Maven_And_Android|separate page]] documenting one method of producing packages that work on both Android and ordinary&lt;br /&gt;
desktop Java.&lt;br /&gt;
&lt;br /&gt;
= Producing a fat jar =&lt;br /&gt;
&lt;br /&gt;
See [[JogAmp_JAR_File_Handling#Maven_Assembly_Plugin|JAR File Handling]].&lt;/div&gt;</summary>
		<author><name>Gouessej</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Maven&amp;diff=2154</id>
		<title>Maven</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Maven&amp;diff=2154"/>
		<updated>2023-06-03T11:16:02Z</updated>

		<summary type="html">&lt;p&gt;Gouessej: /* Add dependencies on the correct packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
JogAmp now contains support for Maven. From &amp;lt;tt&amp;gt;2.0-rc11&amp;lt;/tt&amp;gt; to &amp;lt;tt&amp;gt;2.3.2&amp;lt;/tt&amp;gt;, packages are pushed to &lt;br /&gt;
[http://search.maven.org/#search|ga|1|jogamp Maven Central]. Since &amp;lt;tt&amp;gt;2.4.0&amp;lt;/tt&amp;gt;, they are pushed only to [https://jogamp.org/deployment/maven/ the Jogamp Test Repository].&lt;br /&gt;
&lt;br /&gt;
= Add dependencies on the correct packages =&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t know which packages you want, you almost certainly want to use the&lt;br /&gt;
&amp;lt;tt&amp;gt;jogl-all-main&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;gluegen-rt-main&amp;lt;/tt&amp;gt; packages, as these automatically&lt;br /&gt;
set up the correct dependencies on the native jar files for all platforms.&lt;br /&gt;
&lt;br /&gt;
As an example, if your project uses JOGL &amp;lt;tt&amp;gt;2.3.2&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;dependencies&amp;gt;&lt;br /&gt;
    &amp;lt;dependency&amp;gt;&lt;br /&gt;
      &amp;lt;groupId&amp;gt;org.jogamp.gluegen&amp;lt;/groupId&amp;gt;&lt;br /&gt;
      &amp;lt;artifactId&amp;gt;gluegen-rt-main&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
      &amp;lt;version&amp;gt;2.3.2&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;/dependency&amp;gt;&lt;br /&gt;
    &amp;lt;dependency&amp;gt;&lt;br /&gt;
      &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
      &amp;lt;artifactId&amp;gt;jogl-all-main&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
      &amp;lt;version&amp;gt;2.3.2&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;/dependencies&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maven will pull all of the dependencies the next time you attempt to build the project.&lt;br /&gt;
&lt;br /&gt;
Additionally, for &amp;lt;tt&amp;gt;joal&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jocl&amp;lt;/tt&amp;gt; support:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;dependencies&amp;gt;&lt;br /&gt;
    &amp;lt;dependency&amp;gt;&lt;br /&gt;
      &amp;lt;groupId&amp;gt;org.jogamp.jocl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
      &amp;lt;artifactId&amp;gt;jocl-main&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
      &amp;lt;version&amp;gt;2.3.2&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;/dependency&amp;gt;&lt;br /&gt;
    &amp;lt;dependency&amp;gt;&lt;br /&gt;
      &amp;lt;groupId&amp;gt;org.jogamp.joal&amp;lt;/groupId&amp;gt;&lt;br /&gt;
      &amp;lt;artifactId&amp;gt;joal-main&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
      &amp;lt;version&amp;gt;2.3.2&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;/dependencies&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An example project is available in the &amp;lt;tt&amp;gt;maven&amp;lt;/tt&amp;gt; subdirectory of the &amp;lt;tt&amp;gt;jogl-demos&amp;lt;/tt&amp;gt; project&lt;br /&gt;
[http://jogamp.org/git/?p=jogl-demos.git;a=tree;f=maven].&lt;br /&gt;
N.B: Please note that the version 2.3.2 was released in 2015 and is the latest version available in Maven Central but it is not the latest version available. Please look at the JogAmp test repository to find other versions.&lt;br /&gt;
&lt;br /&gt;
= Package details =&lt;br /&gt;
&lt;br /&gt;
For each JogAmp project, there are essentially two packages published: One contains the main compiled&lt;br /&gt;
jar files and any associated native library jar files, and the other simply contains &amp;lt;i&amp;gt;dependencies&amp;lt;/i&amp;gt;&lt;br /&gt;
on those files. Using &amp;lt;tt&amp;gt;jogl-all&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jogl-all-main&amp;lt;/tt&amp;gt; as the example, the &amp;lt;tt&amp;gt;jogl-all&amp;lt;/tt&amp;gt;&lt;br /&gt;
package in the jogamp.org test repository:&lt;br /&gt;
&lt;br /&gt;
http://jogamp.org/deployment/maven/org/jogamp/jogl/jogl-all/2.3.1/&lt;br /&gt;
&lt;br /&gt;
Note that there are many native jar files attached to the main package. However, if you were to use&lt;br /&gt;
the following dependency in your own project:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl-all&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maven would download &amp;lt;tt&amp;gt;jogl-all-2.3.1.jar&amp;lt;/tt&amp;gt; but would completely ignore all of the other&lt;br /&gt;
native jar files. Why? The reason for this is that the native jar files are uploaded as extra artifacts&lt;br /&gt;
to the &amp;lt;tt&amp;gt;jogl-all&amp;lt;/tt&amp;gt; package and are, in a manner of speaking, not really considered to be part of&lt;br /&gt;
the package where dependencies are concerned. The POM for the &amp;lt;tt&amp;gt;jogl-all-main&amp;lt;/tt&amp;gt; package adds&lt;br /&gt;
explicit dependencies on all of the extra artifacts in the &amp;lt;tt&amp;gt;jogl-all&amp;lt;/tt&amp;gt; package:&lt;br /&gt;
&lt;br /&gt;
http://jogamp.org/deployment/maven/org/jogamp/jogl/jogl-all-main/2.3.1/jogl-all-main-2.3.1.pom&lt;br /&gt;
&lt;br /&gt;
So, when you add a dependency on &amp;lt;tt&amp;gt;jogl-all-main&amp;lt;/tt&amp;gt; in your own project, the native jar files of&lt;br /&gt;
&amp;lt;tt&amp;gt;jogl-all&amp;lt;/tt&amp;gt; are brought in as transitive dependencies and everything works as expected.&lt;br /&gt;
&lt;br /&gt;
= Available packages =&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|Group ID&lt;br /&gt;
|Artifact ID&lt;br /&gt;
|Since&lt;br /&gt;
|Description&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.gluegen&lt;br /&gt;
|gluegen-rt-android&lt;br /&gt;
|2.0.2-rc12&lt;br /&gt;
|GlueGen runtime code and native libraries (Android)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.gluegen&lt;br /&gt;
|gluegen-rt-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for the GlueGen runtime&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.gluegen&lt;br /&gt;
|gluegen-rt&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|GlueGen runtime code and native libraries&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.gluegen&lt;br /&gt;
|gluegen&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|GlueGen non-runtime code and native libraries (and atomic jars)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.joal&lt;br /&gt;
|joal-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOAL&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.joal&lt;br /&gt;
|joal&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|JOAL code and native libraries&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.joal&lt;br /&gt;
|joal-android&lt;br /&gt;
|2.2.0&lt;br /&gt;
|JOAL Android runtime&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jocl&lt;br /&gt;
|jocl-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOCL&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jocl&lt;br /&gt;
|jocl-android&lt;br /&gt;
|2.2.0&lt;br /&gt;
|JOCL Android runtime&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jocl&lt;br /&gt;
|jocl&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|JOCL code and native libraries&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-all-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOGL&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-all&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|JOGL code and native libraries&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-android&lt;br /&gt;
|2.0.2-rc12&lt;br /&gt;
|JOGL code and native libraries (Android)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-android-main&lt;br /&gt;
|2.2.0&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOGL (Android)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-mobile-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOGL (mobile)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-mobile&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|JOGL mobile code and native libraries (without AWT)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-noawt-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOGL (without AWT)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-noawt&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|JOGL code and native libraries (without AWT)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl&lt;br /&gt;
|2.0.2&lt;br /&gt;
|JOGL atomic jar files&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|nativewindow&lt;br /&gt;
|2.0.2&lt;br /&gt;
|Native window drivers for NEWT (atomic jars)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|nativewindow-main&lt;br /&gt;
|2.2.0&lt;br /&gt;
|Native window drivers for NEWT (atomic frontend)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|newt&lt;br /&gt;
|2.0.2&lt;br /&gt;
|NEWT code and native libraries (atomic jars)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|newt-main&lt;br /&gt;
|2.2.0&lt;br /&gt;
|NEWT code and native libraries (atomic frontend)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|occulusvr&lt;br /&gt;
|2.2.0&lt;br /&gt;
|JOGL code and native libraries (Oculus VR atomic jar files)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Atomic jar files (optional) =&lt;br /&gt;
&lt;br /&gt;
The so-called &amp;lt;i&amp;gt;atomic&amp;lt;/i&amp;gt; jar files are provided as attachments to the &amp;lt;tt&amp;gt;jogl&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;newt&amp;lt;/tt&amp;gt;,&lt;br /&gt;
&amp;lt;tt&amp;gt;nativewindow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;gluegen&amp;lt;/tt&amp;gt; packages. As an example, to depend only on the Linux AMD64&lt;br /&gt;
native jar files, on X11, using only the core of &amp;lt;tt&amp;gt;jogl&amp;lt;/tt&amp;gt; and the native window toolkit in your&lt;br /&gt;
own projects, use the following dependencies:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.gluegen-rt&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.gluegen-rt&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;natives-linux-amd64&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;core&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;natives-linux-amd64&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;os-x11&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;os-x11&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;newt&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;driver-x11&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;newt&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;core&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;newt&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;natives-linux-amd64&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;nativewindow&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;core&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;nativewindow&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;natives-linux-amd64&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;nativewindow&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;driver-x11&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the choice of which atomic jars are required is really outside of the scope of this&lt;br /&gt;
documentation. It&#039;s recommended that you browse the packages in question to see which jar&lt;br /&gt;
files are available. It&#039;s &amp;lt;i&amp;gt;not&amp;lt;/i&amp;gt; recommended to depend on platform-specific jar files&lt;br /&gt;
in the manner shown above unless there&#039;s an extremely good reason to do so; to do otherwise&lt;br /&gt;
harms portability for no good reason!&lt;br /&gt;
&lt;br /&gt;
= The jogamp.org test repository =&lt;br /&gt;
&lt;br /&gt;
Bleeding edge, experimental packages will continue to be made available from the&lt;br /&gt;
[https://jogamp.org/deployment/maven Jogamp Test Repository]. Most users won&#039;t need this, but&lt;br /&gt;
it can be used by adding a new profile in your &amp;lt;tt&amp;gt;~/.m2/settings.xml&amp;lt;/tt&amp;gt; file that specifies&lt;br /&gt;
the repository:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
  &amp;lt;settings&lt;br /&gt;
    xmlns=&amp;quot;http://maven.apache.org/SETTINGS/1.0.0&amp;quot; &lt;br /&gt;
    xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; &lt;br /&gt;
    xsi:schemaLocation=&amp;quot;http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;profiles&amp;gt;&lt;br /&gt;
      &amp;lt;profile&amp;gt;&lt;br /&gt;
        &amp;lt;id&amp;gt;jogamp&amp;lt;/id&amp;gt;&lt;br /&gt;
        &amp;lt;repositories&amp;gt;&lt;br /&gt;
          &amp;lt;repository&amp;gt;&lt;br /&gt;
            &amp;lt;id&amp;gt;jogamp-remote&amp;lt;/id&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;jogamp test mirror&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;url&amp;gt;https://www.jogamp.org/deployment/maven/&amp;lt;/url&amp;gt;&lt;br /&gt;
            &amp;lt;layout&amp;gt;default&amp;lt;/layout&amp;gt;&lt;br /&gt;
          &amp;lt;/repository&amp;gt;&lt;br /&gt;
        &amp;lt;/repositories&amp;gt;&lt;br /&gt;
      &amp;lt;/profile&amp;gt;&lt;br /&gt;
    &amp;lt;/profiles&amp;gt;&lt;br /&gt;
    &amp;lt;activeProfiles&amp;gt;&lt;br /&gt;
      &amp;lt;activeProfile&amp;gt;jogamp&amp;lt;/activeProfile&amp;gt;&lt;br /&gt;
    &amp;lt;/activeProfiles&amp;gt;&lt;br /&gt;
  &amp;lt;/settings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This repository can be added into the POM file like in this [https://jogamp.org/cgit/jogl-demos.git/tree/maven/trivial-test/pom.xml very simple example].&lt;br /&gt;
&lt;br /&gt;
Maven will then check this repository for packages in addition to Maven Central when resolving dependencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Please note that some packages on the Jogamp test repository are subject to unannounced changes at any moment and may break existing code at any time! Do not use for production code!&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since &amp;lt;tt&amp;gt;2.4.0&amp;lt;/tt&amp;gt;, the releases and the release candidates are pushed only to this repository.&lt;br /&gt;
&lt;br /&gt;
= Android =&lt;br /&gt;
&lt;br /&gt;
There is a [[Maven_And_Android|separate page]] documenting one method of producing packages that work on both Android and ordinary&lt;br /&gt;
desktop Java.&lt;br /&gt;
&lt;br /&gt;
= Producing a fat jar =&lt;br /&gt;
&lt;br /&gt;
See [[JogAmp_JAR_File_Handling#Maven_Assembly_Plugin|JAR File Handling]].&lt;/div&gt;</summary>
		<author><name>Gouessej</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Maven&amp;diff=2153</id>
		<title>Maven</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Maven&amp;diff=2153"/>
		<updated>2023-06-03T11:14:49Z</updated>

		<summary type="html">&lt;p&gt;Gouessej: /* Add dependencies on the correct packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
JogAmp now contains support for Maven. From &amp;lt;tt&amp;gt;2.0-rc11&amp;lt;/tt&amp;gt; to &amp;lt;tt&amp;gt;2.3.2&amp;lt;/tt&amp;gt;, packages are pushed to &lt;br /&gt;
[http://search.maven.org/#search|ga|1|jogamp Maven Central]. Since &amp;lt;tt&amp;gt;2.4.0&amp;lt;/tt&amp;gt;, they are pushed only to [https://jogamp.org/deployment/maven/ the Jogamp Test Repository].&lt;br /&gt;
&lt;br /&gt;
= Add dependencies on the correct packages =&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t know which packages you want, you almost certainly want to use the&lt;br /&gt;
&amp;lt;tt&amp;gt;jogl-all-main&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;gluegen-rt-main&amp;lt;/tt&amp;gt; packages, as these automatically&lt;br /&gt;
set up the correct dependencies on the native jar files for all platforms.&lt;br /&gt;
&lt;br /&gt;
As an example, if your project uses JOGL &amp;lt;tt&amp;gt;2.3.2&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;dependencies&amp;gt;&lt;br /&gt;
    &amp;lt;dependency&amp;gt;&lt;br /&gt;
      &amp;lt;groupId&amp;gt;org.jogamp.gluegen&amp;lt;/groupId&amp;gt;&lt;br /&gt;
      &amp;lt;artifactId&amp;gt;gluegen-rt-main&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
      &amp;lt;version&amp;gt;2.3.2&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;/dependency&amp;gt;&lt;br /&gt;
    &amp;lt;dependency&amp;gt;&lt;br /&gt;
      &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
      &amp;lt;artifactId&amp;gt;jogl-all-main&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
      &amp;lt;version&amp;gt;2.3.2&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;/dependencies&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maven will pull all of the dependencies the next time you attempt to build the project.&lt;br /&gt;
N.B: Please note that the version 2.3.2 was released in 2015 and is the latest version available in Maven Central but it is not the latest version available. Please look at the JogAmp test repository to find other versions.&lt;br /&gt;
&lt;br /&gt;
Additionally, for &amp;lt;tt&amp;gt;joal&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jocl&amp;lt;/tt&amp;gt; support:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;dependencies&amp;gt;&lt;br /&gt;
    &amp;lt;dependency&amp;gt;&lt;br /&gt;
      &amp;lt;groupId&amp;gt;org.jogamp.jocl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
      &amp;lt;artifactId&amp;gt;jocl-main&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
      &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;/dependency&amp;gt;&lt;br /&gt;
    &amp;lt;dependency&amp;gt;&lt;br /&gt;
      &amp;lt;groupId&amp;gt;org.jogamp.joal&amp;lt;/groupId&amp;gt;&lt;br /&gt;
      &amp;lt;artifactId&amp;gt;joal-main&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
      &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;/dependencies&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An example project is available in the &amp;lt;tt&amp;gt;maven&amp;lt;/tt&amp;gt; subdirectory of the &amp;lt;tt&amp;gt;jogl-demos&amp;lt;/tt&amp;gt; project&lt;br /&gt;
[http://jogamp.org/git/?p=jogl-demos.git;a=tree;f=maven].&lt;br /&gt;
&lt;br /&gt;
= Package details =&lt;br /&gt;
&lt;br /&gt;
For each JogAmp project, there are essentially two packages published: One contains the main compiled&lt;br /&gt;
jar files and any associated native library jar files, and the other simply contains &amp;lt;i&amp;gt;dependencies&amp;lt;/i&amp;gt;&lt;br /&gt;
on those files. Using &amp;lt;tt&amp;gt;jogl-all&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jogl-all-main&amp;lt;/tt&amp;gt; as the example, the &amp;lt;tt&amp;gt;jogl-all&amp;lt;/tt&amp;gt;&lt;br /&gt;
package in the jogamp.org test repository:&lt;br /&gt;
&lt;br /&gt;
http://jogamp.org/deployment/maven/org/jogamp/jogl/jogl-all/2.3.1/&lt;br /&gt;
&lt;br /&gt;
Note that there are many native jar files attached to the main package. However, if you were to use&lt;br /&gt;
the following dependency in your own project:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl-all&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maven would download &amp;lt;tt&amp;gt;jogl-all-2.3.1.jar&amp;lt;/tt&amp;gt; but would completely ignore all of the other&lt;br /&gt;
native jar files. Why? The reason for this is that the native jar files are uploaded as extra artifacts&lt;br /&gt;
to the &amp;lt;tt&amp;gt;jogl-all&amp;lt;/tt&amp;gt; package and are, in a manner of speaking, not really considered to be part of&lt;br /&gt;
the package where dependencies are concerned. The POM for the &amp;lt;tt&amp;gt;jogl-all-main&amp;lt;/tt&amp;gt; package adds&lt;br /&gt;
explicit dependencies on all of the extra artifacts in the &amp;lt;tt&amp;gt;jogl-all&amp;lt;/tt&amp;gt; package:&lt;br /&gt;
&lt;br /&gt;
http://jogamp.org/deployment/maven/org/jogamp/jogl/jogl-all-main/2.3.1/jogl-all-main-2.3.1.pom&lt;br /&gt;
&lt;br /&gt;
So, when you add a dependency on &amp;lt;tt&amp;gt;jogl-all-main&amp;lt;/tt&amp;gt; in your own project, the native jar files of&lt;br /&gt;
&amp;lt;tt&amp;gt;jogl-all&amp;lt;/tt&amp;gt; are brought in as transitive dependencies and everything works as expected.&lt;br /&gt;
&lt;br /&gt;
= Available packages =&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|Group ID&lt;br /&gt;
|Artifact ID&lt;br /&gt;
|Since&lt;br /&gt;
|Description&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.gluegen&lt;br /&gt;
|gluegen-rt-android&lt;br /&gt;
|2.0.2-rc12&lt;br /&gt;
|GlueGen runtime code and native libraries (Android)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.gluegen&lt;br /&gt;
|gluegen-rt-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for the GlueGen runtime&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.gluegen&lt;br /&gt;
|gluegen-rt&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|GlueGen runtime code and native libraries&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.gluegen&lt;br /&gt;
|gluegen&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|GlueGen non-runtime code and native libraries (and atomic jars)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.joal&lt;br /&gt;
|joal-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOAL&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.joal&lt;br /&gt;
|joal&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|JOAL code and native libraries&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.joal&lt;br /&gt;
|joal-android&lt;br /&gt;
|2.2.0&lt;br /&gt;
|JOAL Android runtime&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jocl&lt;br /&gt;
|jocl-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOCL&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jocl&lt;br /&gt;
|jocl-android&lt;br /&gt;
|2.2.0&lt;br /&gt;
|JOCL Android runtime&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jocl&lt;br /&gt;
|jocl&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|JOCL code and native libraries&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-all-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOGL&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-all&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|JOGL code and native libraries&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-android&lt;br /&gt;
|2.0.2-rc12&lt;br /&gt;
|JOGL code and native libraries (Android)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-android-main&lt;br /&gt;
|2.2.0&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOGL (Android)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-mobile-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOGL (mobile)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-mobile&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|JOGL mobile code and native libraries (without AWT)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-noawt-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOGL (without AWT)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-noawt&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|JOGL code and native libraries (without AWT)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl&lt;br /&gt;
|2.0.2&lt;br /&gt;
|JOGL atomic jar files&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|nativewindow&lt;br /&gt;
|2.0.2&lt;br /&gt;
|Native window drivers for NEWT (atomic jars)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|nativewindow-main&lt;br /&gt;
|2.2.0&lt;br /&gt;
|Native window drivers for NEWT (atomic frontend)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|newt&lt;br /&gt;
|2.0.2&lt;br /&gt;
|NEWT code and native libraries (atomic jars)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|newt-main&lt;br /&gt;
|2.2.0&lt;br /&gt;
|NEWT code and native libraries (atomic frontend)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|occulusvr&lt;br /&gt;
|2.2.0&lt;br /&gt;
|JOGL code and native libraries (Oculus VR atomic jar files)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Atomic jar files (optional) =&lt;br /&gt;
&lt;br /&gt;
The so-called &amp;lt;i&amp;gt;atomic&amp;lt;/i&amp;gt; jar files are provided as attachments to the &amp;lt;tt&amp;gt;jogl&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;newt&amp;lt;/tt&amp;gt;,&lt;br /&gt;
&amp;lt;tt&amp;gt;nativewindow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;gluegen&amp;lt;/tt&amp;gt; packages. As an example, to depend only on the Linux AMD64&lt;br /&gt;
native jar files, on X11, using only the core of &amp;lt;tt&amp;gt;jogl&amp;lt;/tt&amp;gt; and the native window toolkit in your&lt;br /&gt;
own projects, use the following dependencies:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.gluegen-rt&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.gluegen-rt&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;natives-linux-amd64&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;core&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;natives-linux-amd64&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;os-x11&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;os-x11&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;newt&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;driver-x11&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;newt&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;core&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;newt&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;natives-linux-amd64&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;nativewindow&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;core&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;nativewindow&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;natives-linux-amd64&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;nativewindow&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;driver-x11&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the choice of which atomic jars are required is really outside of the scope of this&lt;br /&gt;
documentation. It&#039;s recommended that you browse the packages in question to see which jar&lt;br /&gt;
files are available. It&#039;s &amp;lt;i&amp;gt;not&amp;lt;/i&amp;gt; recommended to depend on platform-specific jar files&lt;br /&gt;
in the manner shown above unless there&#039;s an extremely good reason to do so; to do otherwise&lt;br /&gt;
harms portability for no good reason!&lt;br /&gt;
&lt;br /&gt;
= The jogamp.org test repository =&lt;br /&gt;
&lt;br /&gt;
Bleeding edge, experimental packages will continue to be made available from the&lt;br /&gt;
[https://jogamp.org/deployment/maven Jogamp Test Repository]. Most users won&#039;t need this, but&lt;br /&gt;
it can be used by adding a new profile in your &amp;lt;tt&amp;gt;~/.m2/settings.xml&amp;lt;/tt&amp;gt; file that specifies&lt;br /&gt;
the repository:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
  &amp;lt;settings&lt;br /&gt;
    xmlns=&amp;quot;http://maven.apache.org/SETTINGS/1.0.0&amp;quot; &lt;br /&gt;
    xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; &lt;br /&gt;
    xsi:schemaLocation=&amp;quot;http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;profiles&amp;gt;&lt;br /&gt;
      &amp;lt;profile&amp;gt;&lt;br /&gt;
        &amp;lt;id&amp;gt;jogamp&amp;lt;/id&amp;gt;&lt;br /&gt;
        &amp;lt;repositories&amp;gt;&lt;br /&gt;
          &amp;lt;repository&amp;gt;&lt;br /&gt;
            &amp;lt;id&amp;gt;jogamp-remote&amp;lt;/id&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;jogamp test mirror&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;url&amp;gt;https://www.jogamp.org/deployment/maven/&amp;lt;/url&amp;gt;&lt;br /&gt;
            &amp;lt;layout&amp;gt;default&amp;lt;/layout&amp;gt;&lt;br /&gt;
          &amp;lt;/repository&amp;gt;&lt;br /&gt;
        &amp;lt;/repositories&amp;gt;&lt;br /&gt;
      &amp;lt;/profile&amp;gt;&lt;br /&gt;
    &amp;lt;/profiles&amp;gt;&lt;br /&gt;
    &amp;lt;activeProfiles&amp;gt;&lt;br /&gt;
      &amp;lt;activeProfile&amp;gt;jogamp&amp;lt;/activeProfile&amp;gt;&lt;br /&gt;
    &amp;lt;/activeProfiles&amp;gt;&lt;br /&gt;
  &amp;lt;/settings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This repository can be added into the POM file like in this [https://jogamp.org/cgit/jogl-demos.git/tree/maven/trivial-test/pom.xml very simple example].&lt;br /&gt;
&lt;br /&gt;
Maven will then check this repository for packages in addition to Maven Central when resolving dependencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Please note that some packages on the Jogamp test repository are subject to unannounced changes at any moment and may break existing code at any time! Do not use for production code!&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since &amp;lt;tt&amp;gt;2.4.0&amp;lt;/tt&amp;gt;, the releases and the release candidates are pushed only to this repository.&lt;br /&gt;
&lt;br /&gt;
= Android =&lt;br /&gt;
&lt;br /&gt;
There is a [[Maven_And_Android|separate page]] documenting one method of producing packages that work on both Android and ordinary&lt;br /&gt;
desktop Java.&lt;br /&gt;
&lt;br /&gt;
= Producing a fat jar =&lt;br /&gt;
&lt;br /&gt;
See [[JogAmp_JAR_File_Handling#Maven_Assembly_Plugin|JAR File Handling]].&lt;/div&gt;</summary>
		<author><name>Gouessej</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Setting_up_a_JogAmp_project_in_your_favorite_IDE&amp;diff=2152</id>
		<title>Setting up a JogAmp project in your favorite IDE</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Setting_up_a_JogAmp_project_in_your_favorite_IDE&amp;diff=2152"/>
		<updated>2023-05-21T10:14:04Z</updated>

		<summary type="html">&lt;p&gt;Gouessej: Gradle&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
These instructions assume that you&#039;ve created a project in your favorite IDE, and now you want your project to be able to use a JogAmp library like JOGL, JOCL, JOAL, or GlueGen. We use JOGL as an example below, but these instructions work equally well for any other JogAmp library.&lt;br /&gt;
&lt;br /&gt;
= Download a JogAmp library =&lt;br /&gt;
&lt;br /&gt;
If you haven&#039;t done so already, download and extract the JogAmp library you want to use. For example, to download and extract JOGL, see the instructions at [[Downloading and installing JOGL]].&lt;br /&gt;
&lt;br /&gt;
To use a JogAmp library you&#039;ll do three things:&lt;br /&gt;
&lt;br /&gt;
* Add its JAR files to the Java classpath&lt;br /&gt;
* Add its native libraries in one of two ways:&lt;br /&gt;
** Either place its native JAR files in the same directory as the library JAR files&lt;br /&gt;
** Or add its native library files(the &amp;lt;tt&amp;gt;.dll&amp;lt;/tt&amp;gt;,&amp;lt;tt&amp;gt;.so&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;.jnilib&amp;lt;/tt&amp;gt; files) to the Java library path&lt;br /&gt;
* Optional: Associate the *-java-src.zip files with the corresponding JAR files.&lt;br /&gt;
&lt;br /&gt;
Each IDE has a slightly different way to do these things, as we show below. Using the native JAR files is usually slightly easier than using the native library files directly, and native JARs make it possible for all platforms&#039; libraries to coexist in one project, so this is the recommended method.&lt;br /&gt;
&lt;br /&gt;
Please note that all JogAmp libraries depend on the GlueGen runtime libraries. These are included in every JogAmp library for convenience, but are only required once in the classpath and library path of your project.&lt;br /&gt;
&lt;br /&gt;
See  [[JogAmp JAR File Handling|JogAmp JAR File Handling]], for details on native JAR files and custom JAR bundling.&lt;br /&gt;
&lt;br /&gt;
= Eclipse IDE project =&lt;br /&gt;
&lt;br /&gt;
Probably the simplest way to use JOGL in an Eclipse project is to create another Eclipse project to contain the JOGL JARs, then make your project depend on this new JOGL project. In the example below, I include only the 64-bit Windows native JARs, but you can put native JARs for as many platforms as you wish together into the JOGL Eclipse project.&lt;br /&gt;
&lt;br /&gt;
=== Create a JOGL project ===&lt;br /&gt;
&lt;br /&gt;
* Put all the JOGL code JARs, native JARs for all platforms you wish to support, and source ZIP files in a directory called &amp;quot;JOGL&amp;quot; in your workspace directory.&lt;br /&gt;
* Click &amp;quot;File &amp;gt; New &amp;gt; Java Project&amp;quot;. Type &amp;quot;JOGL&amp;quot; as the project name and click &amp;quot;Next&amp;quot;.&lt;br /&gt;
[[File:Eclipse_project_setup_01_create_project.png|300px|thumb|none|Create JOGL project]]&lt;br /&gt;
* Remove the native JARs from the project, leaving only gluegen-rt.jar and jogl-all.jar.&lt;br /&gt;
[[File:Eclipse_project_setup_02_remove_native_JARs.png|300px|thumb|none|Remove native JARs]]&lt;br /&gt;
           NOTE: The gluegen-rt-natives-*-*.jar and jogl-all-natives-*-*.jar are not&lt;br /&gt;
           required in the classpath by JOGL, but are required by Eclipse to export&lt;br /&gt;
           your project as a runnable JAR file.&lt;br /&gt;
* Expand the jogl-all and gluegen-rt JARs. For each of them, double-click &amp;quot;Source attachment&amp;quot;, click &amp;quot;Workspace...&amp;quot;, navigate to the corresponding &amp;lt;tt&amp;gt;*-java-src.zip&amp;lt;/tt&amp;gt; file in the project, select it, click &amp;quot;OK&amp;quot;, and click &amp;quot;OK&amp;quot; again to dismiss the &amp;quot;Source Attachment Configuration&amp;quot; dialog. The JARs should look like this when you&#039;re done:&lt;br /&gt;
[[File:Eclipse_project_setup_03_JARs_with_source_attached.png|300px|thumb|none|Attach source to JARs]]&lt;br /&gt;
* Click the &amp;quot;Order and Export&amp;quot; tab. Check both JOGL JARs, then click &amp;quot;Finish&amp;quot;.&lt;br /&gt;
[[File:Eclipse_project_setup_04_order_and_export.png|300px|thumb|none|Exporting JOGL JARs]]&lt;br /&gt;
&lt;br /&gt;
=== Add dependency on the JOGL project ===&lt;br /&gt;
&lt;br /&gt;
* Right-click your project and click &amp;quot;Properties&amp;quot;.&lt;br /&gt;
* Select the &amp;quot;Java Build Path&amp;quot; on the left, then click the &amp;quot;Projects&amp;quot; tab on the right.&lt;br /&gt;
* Click the &amp;quot;Add...&amp;quot; button, check &amp;quot;JOGL&amp;quot;, and click &amp;quot;OK&amp;quot;.&lt;br /&gt;
* Your dependent project should look like this. Click &amp;quot;OK&amp;quot; to dismiss the &amp;quot;Properties&amp;quot; dialog.&lt;br /&gt;
[[File:Eclipse_project_setup_05_project_dependency.png|300px|thumb|none|JOGL project dependency]]&lt;br /&gt;
&lt;br /&gt;
That&#039;s it! Your project can now use the library.&lt;br /&gt;
&lt;br /&gt;
= Eclipse IDE user library =&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want to put JOGL in a separate Eclipse project, you can put it in a user library instead. The drawback to this is that the user library is defined in your .metadata directory and contains absolute paths, so it&#039;s hard to share with others. But for a non-shared project this works fine.&lt;br /&gt;
&lt;br /&gt;
=== Create a user library ===&lt;br /&gt;
&lt;br /&gt;
* Click &amp;quot;Window &amp;gt; Preferences&amp;quot;, then select &amp;quot;Java &amp;gt; Build Path &amp;gt; User Libraries&amp;quot; on the left.&lt;br /&gt;
* Click the &amp;quot;New...&amp;quot; button, type &amp;quot;JOGL&amp;quot; for the library name, and click &amp;quot;OK&amp;quot;.&lt;br /&gt;
[[File:Eclipse_setup_01_create_user_library.png|300px|thumb|none|Create user library]]&lt;br /&gt;
* Click the &amp;quot;Add JARs...&amp;quot; button, navigate to the directory where you&#039;ve stored the JARs, select all the non-native JARs, then click &amp;quot;Open&amp;quot;.&lt;br /&gt;
* If you&#039;re using native JAR files:&lt;br /&gt;
** Make sure the &amp;lt;tt&amp;gt;gluegen-rt-natives-*-*.jar&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jogl-all-natives-*-*.jar&amp;lt;/tt&amp;gt; files for each platform you want to run on are in the same directory as the other JAR files. The native JAR files don&#039;t need to be added to the classpath.&lt;br /&gt;
* Expand each non-native JAR in the list&lt;br /&gt;
** Double-click &amp;quot;Source attachment&amp;quot;, type the module&#039;s source zip name, (e.g. &amp;lt;tt&amp;gt;jogl-java-src.zip&amp;lt;/tt&amp;gt; for the JAR file &amp;lt;tt&amp;gt;jogl-all.jar&amp;lt;/tt&amp;gt;), and click &amp;quot;OK&amp;quot;.&lt;br /&gt;
** If you&#039;re using native library files:&lt;br /&gt;
*** Double-click &amp;quot;Native library location&amp;quot;, type the directory where native library files are stored, and click &amp;quot;OK&amp;quot;.&lt;br /&gt;
[[File:Eclipse_setup_02_set_native_library_locations.png|300px|thumb|none|Set native library locations]]&lt;br /&gt;
* Click &amp;quot;OK&amp;quot; to exit Preferences dialog.&lt;br /&gt;
&lt;br /&gt;
=== Add the user library to your project&#039;s dependencies ===&lt;br /&gt;
&lt;br /&gt;
* Right-click your project in the Package Explorer and click &amp;quot;Properties&amp;quot;.&lt;br /&gt;
* Select &amp;quot;Java Build Path&amp;quot; and click the &amp;quot;Libraries&amp;quot; tab.&lt;br /&gt;
[[File:Eclipse_setup_03_add_library_to_project.png|300px|thumb|none|Add library to project]]&lt;br /&gt;
* Click &amp;quot;Add Library...&amp;quot;, select &amp;quot;User Library&amp;quot;, click &amp;quot;Next&amp;quot;, check &amp;quot;JOGL&amp;quot;, and click &amp;quot;Finish&amp;quot;.&lt;br /&gt;
[[File:Eclipse_setup_04_add_JOGL_library_to_project.png|300px|thumb|none|Add JOGL library to project]]&lt;br /&gt;
* Click &amp;quot;OK&amp;quot; to dismiss the Properties dialog.&lt;br /&gt;
&lt;br /&gt;
That&#039;s it! You can now use the library in your project.&lt;br /&gt;
&lt;br /&gt;
= IntelliJ IDEA =&lt;br /&gt;
=== Add a library dependency to your project ===&lt;br /&gt;
&lt;br /&gt;
* Click &amp;quot;File &amp;gt; Project Structure&amp;quot;.&lt;br /&gt;
* Select &amp;quot;Modules&amp;quot; on the left, then click the &amp;quot;Dependencies&amp;quot; tab on the right.&lt;br /&gt;
* Click the &amp;quot;+&amp;quot; button on the right, then select &amp;quot;Library... &amp;gt; Java&amp;quot;.&lt;br /&gt;
[[File:IntelliJ_setup_01_add_library.png|300px|thumb|none|Add library]]&lt;br /&gt;
* Navigate to the directory where you extracted the JARs, select it, and click &amp;quot;OK&amp;quot;.&lt;br /&gt;
[[File:IntelliJ_setup_02_find_library.png|300px|thumb|none|Find library]]&lt;br /&gt;
* Click &amp;quot;OK&amp;quot; to dismiss the Configure Library dialog.&lt;br /&gt;
[[File:IntelliJ_setup_03_configure_library.png|300px|thumb|none|Configure library]]&lt;br /&gt;
* Click &amp;quot;OK&amp;quot; to dismiss the Project Structure dialog. The external libraries in your project should now look like this if you&#039;re using native JAR files:&lt;br /&gt;
[[File:IntelliJ_setup_04_external_library_native_JARs.png|300px|thumb|none|Native JARs]]&lt;br /&gt;
or like this if you&#039;re using native library files:&lt;br /&gt;
[[File:IntelliJ_setup_04_external_library.png|300px|thumb|none|Native library files]]&lt;br /&gt;
&lt;br /&gt;
* If you&#039;re using native JAR files:&lt;br /&gt;
** Make sure the &amp;lt;tt&amp;gt;gluegen-rt-natives-*-*.jar&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jogl-all-natives-*-*.jar&amp;lt;/tt&amp;gt; files for each platform you want to run on are in the same directory as the other JAR files.&lt;br /&gt;
* Otherwise, if you&#039;re using native library files:&lt;br /&gt;
** Click &amp;quot;Run &amp;gt; Edit Configurations&amp;quot;.&lt;br /&gt;
** Type &amp;lt;tt&amp;gt;-Djava.library.path=your/path/to/native/library/files&amp;lt;/tt&amp;gt; in the &amp;quot;VM Parameters&amp;quot; box. Note that paths with spaces must be double-quoted on Windows.&lt;br /&gt;
[[File:IntelliJ_setup_05_run_configuration.png|300px|thumb|none|Edit run configuration]]&lt;br /&gt;
** Click &amp;quot;OK&amp;quot; to dismiss the Run/Debug Configurations dialog.&lt;br /&gt;
&lt;br /&gt;
That&#039;s it! You can now use the library in your project.&lt;br /&gt;
&lt;br /&gt;
= NetBeans IDE = &lt;br /&gt;
=== Create a library and add it to your project ===&lt;br /&gt;
&lt;br /&gt;
* Right-click your project and click &amp;quot;Properties&amp;quot;.&lt;br /&gt;
* Select &amp;quot;Libraries&amp;quot; on the left and click &amp;quot;Add Library...&amp;quot;.&lt;br /&gt;
* Click the &amp;quot;Create&amp;quot; button, then type &amp;quot;JOGL&amp;quot; for the library name and click &amp;quot;OK&amp;quot;.[[File:NetBeans_setup_01_create_library.png|300px|thumb|none|Create library]]&lt;br /&gt;
* Click &amp;quot;Add JAR/Folder...&amp;quot;, then navigate to the directory you extracted the JAR files, select them and click &amp;quot;Add JAR/Folder&amp;quot;.&lt;br /&gt;
* Click &amp;quot;OK&amp;quot; to dismiss the Customize Library dialog.&lt;br /&gt;
* Click &amp;quot;Add Library&amp;quot; to dismiss the Add Library dialog.[[File:NetBeans_setup_02_add_library.png|300px|thumb|none|Add library]]&lt;br /&gt;
* Click &amp;quot;OK&amp;quot; to dismiss the Project Properties dialog. The libraries in your project should look like this.[[File:NetBeans_setup_03_libraries_in_project.png|300px|thumb|none|Libraries in project]]&lt;br /&gt;
&lt;br /&gt;
* If you&#039;re using native JAR files:&lt;br /&gt;
** Make sure the &amp;lt;tt&amp;gt;gluegen-rt-natives-*-*.jar&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jogl-all-natives-*-*.jar&amp;lt;/tt&amp;gt; files for each platform you want to run on are in the same directory as the other JAR files. The native JAR files don&#039;t need to be added to the classpath.&lt;br /&gt;
* Otherwise, if you&#039;re using native library files:&lt;br /&gt;
** Click &amp;quot;Run &amp;gt; Set Project Configuration &amp;gt; Customize...&amp;quot;. Select &amp;quot;Run&amp;quot; on the left if it isn&#039;t selected already.&lt;br /&gt;
** Type &amp;lt;tt&amp;gt;-Djava.library.path=your/path/to/native/library/files&amp;lt;/tt&amp;gt; in the &amp;quot;VM Options&amp;quot; box.&lt;br /&gt;
** NOTE: If the library path has spaces in it, you must put quotes around it (at least on Windows) or you may get an odd NoClassDefFoundError when you try to run.[[File:NetBeans_setup_04_native_library_path.png|300px|thumb|none|Native library path]]&lt;br /&gt;
** Click &amp;quot;OK&amp;quot; to dismiss the Project Properties dialog.&lt;br /&gt;
&lt;br /&gt;
That&#039;s it! You can now use the library in your project.&lt;br /&gt;
&lt;br /&gt;
= Maven =&lt;br /&gt;
&lt;br /&gt;
From &amp;lt;tt&amp;gt;2.0-rc11&amp;lt;/tt&amp;gt; to &amp;lt;tt&amp;gt;2.3.2&amp;lt;/tt&amp;gt;, packages for all the JogAmp projects have been pushed to&lt;br /&gt;
[http://search.maven.org/#search|ga|1|jogamp Maven Central]. Since &amp;lt;tt&amp;gt;2.4.0&amp;lt;/tt&amp;gt;, they have been pushed only to [https://jogamp.org/deployment/maven/ the JogAmp test repository]. Please see the&lt;br /&gt;
[[Maven]] page for details on how to use them in your projects.&lt;br /&gt;
&lt;br /&gt;
= Gradle =&lt;br /&gt;
&lt;br /&gt;
From &amp;lt;tt&amp;gt;2.0-rc11&amp;lt;/tt&amp;gt; to &amp;lt;tt&amp;gt;2.3.2&amp;lt;/tt&amp;gt;, packages for all the JogAmp projects have been pushed to&lt;br /&gt;
[http://search.maven.org/#search|ga|1|jogamp Maven Central]. Since &amp;lt;tt&amp;gt;2.4.0&amp;lt;/tt&amp;gt;, they have been pushed only to [https://jogamp.org/deployment/maven/ the JogAmp test repository]. Please add the following code into build.gradle to use the version &amp;lt;tt&amp;gt;2.4.0&amp;lt;/tt&amp;gt; from the Jogamp test repository:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
repositories {&lt;br /&gt;
    maven { url &amp;quot;https://jogamp.org/deployment/maven&amp;quot; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
dependencies {&lt;br /&gt;
  implementation &#039;org.jogamp.gluegen:gluegen-rt-main:2.4.0&#039;&lt;br /&gt;
  implementation &#039;org.jogamp.jogl:jogl-all-main:2.4.0&#039;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= vi and other text editors =&lt;br /&gt;
=== Create your project with the editor of your choice ===&lt;br /&gt;
* For example, to open vi, simply type &amp;lt;tt&amp;gt;vi&amp;lt;/tt&amp;gt; and press &amp;lt;return&amp;gt;.&lt;br /&gt;
* Type all your code, then save it.&lt;br /&gt;
&lt;br /&gt;
=== Compile and run your project from the command line ===&lt;br /&gt;
* We assume your JOGL JAR files are in a directory called &amp;lt;tt&amp;gt;jar&amp;lt;/tt&amp;gt;. If you&#039;re using native JARs, we assume they&#039;re also in the &amp;lt;tt&amp;gt;jar&amp;lt;/tt&amp;gt; directory. If you&#039;re using native library files, we assume they&#039;re in a directory called &amp;lt;tt&amp;gt;lib&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* First compile your program. We assume all your code is in a single file called &amp;lt;tt&amp;gt;name/someone/MyProject.java&amp;lt;/tt&amp;gt;.&lt;br /&gt;
** Windows: Type &amp;lt;tt&amp;gt;javac -classpath &amp;quot;jar\gluegen-rt.jar;jar\jogl-all.jar&amp;quot; name\someone\MyProject.java&amp;lt;/tt&amp;gt;&lt;br /&gt;
** Linux/MacOS X: Type &amp;lt;tt&amp;gt;javac -classpath &amp;quot;jar/gluegen-rt.jar:jar/jogl-all.jar&amp;quot; name/someone/MyProject.java&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Then run your project. We assume your main class is &amp;lt;tt&amp;gt;name.someone.MyProject&amp;lt;/tt&amp;gt;. If you&#039;re using native JARs:&lt;br /&gt;
** Windows: Type &amp;lt;tt&amp;gt;java -classpath &amp;quot;jar\gluegen-rt.jar;jar\jogl-all.jar;.&amp;quot; name.someone.MyProject&amp;lt;/tt&amp;gt;&lt;br /&gt;
** Linux/MacOS X: Type &amp;lt;tt&amp;gt;java -classpath &amp;quot;jar/gluegen-rt.jar:jar/jogl-all.jar:.&amp;quot; name.someone.MyProject&amp;lt;/tt&amp;gt;&lt;br /&gt;
* If you&#039;re using native library files:&lt;br /&gt;
** Windows: Type &amp;lt;tt&amp;gt;java -classpath &amp;quot;jar\gluegen-rt.jar;jar\jogl-all.jar;.&amp;quot; -Djava.library.path=lib -Djogamp.gluegen.UseTempJarCache=false name.someone.MyProject&amp;lt;/tt&amp;gt;&lt;br /&gt;
** Linux/MacOS X: Type &amp;lt;tt&amp;gt;java -classpath &amp;quot;jar/gluegen-rt.jar:jar/jogl-all.jar:.&amp;quot; -Djava.library.path=lib -Djogamp.gluegen.UseTempJarCache=false name.someone.MyProject&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That&#039;s it! You can now use the library in your project.&lt;/div&gt;</summary>
		<author><name>Gouessej</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Maven&amp;diff=2151</id>
		<title>Maven</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Maven&amp;diff=2151"/>
		<updated>2023-05-21T09:57:07Z</updated>

		<summary type="html">&lt;p&gt;Gouessej: /* The jogamp.org test repository */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
JogAmp now contains support for Maven. From &amp;lt;tt&amp;gt;2.0-rc11&amp;lt;/tt&amp;gt; to &amp;lt;tt&amp;gt;2.3.2&amp;lt;/tt&amp;gt;, packages are pushed to &lt;br /&gt;
[http://search.maven.org/#search|ga|1|jogamp Maven Central]. Since &amp;lt;tt&amp;gt;2.4.0&amp;lt;/tt&amp;gt;, they are pushed only to [https://jogamp.org/deployment/maven/ the Jogamp Test Repository].&lt;br /&gt;
&lt;br /&gt;
= Add dependencies on the correct packages =&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t know which packages you want, you almost certainly want to use the&lt;br /&gt;
&amp;lt;tt&amp;gt;jogl-all-main&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;gluegen-rt-main&amp;lt;/tt&amp;gt; packages, as these automatically&lt;br /&gt;
set up the correct dependencies on the native jar files for all platforms.&lt;br /&gt;
&lt;br /&gt;
As an example, if your project uses JOGL &amp;lt;tt&amp;gt;2.3.1&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;dependencies&amp;gt;&lt;br /&gt;
    &amp;lt;dependency&amp;gt;&lt;br /&gt;
      &amp;lt;groupId&amp;gt;org.jogamp.gluegen&amp;lt;/groupId&amp;gt;&lt;br /&gt;
      &amp;lt;artifactId&amp;gt;gluegen-rt-main&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
      &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;/dependency&amp;gt;&lt;br /&gt;
    &amp;lt;dependency&amp;gt;&lt;br /&gt;
      &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
      &amp;lt;artifactId&amp;gt;jogl-all-main&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
      &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;/dependencies&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maven will pull all of the dependencies the next time you attempt to build the project.&lt;br /&gt;
&lt;br /&gt;
Additionally, for &amp;lt;tt&amp;gt;joal&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jocl&amp;lt;/tt&amp;gt; support:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;dependencies&amp;gt;&lt;br /&gt;
    &amp;lt;dependency&amp;gt;&lt;br /&gt;
      &amp;lt;groupId&amp;gt;org.jogamp.jocl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
      &amp;lt;artifactId&amp;gt;jocl-main&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
      &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;/dependency&amp;gt;&lt;br /&gt;
    &amp;lt;dependency&amp;gt;&lt;br /&gt;
      &amp;lt;groupId&amp;gt;org.jogamp.joal&amp;lt;/groupId&amp;gt;&lt;br /&gt;
      &amp;lt;artifactId&amp;gt;joal-main&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
      &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;/dependencies&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An example project is available in the &amp;lt;tt&amp;gt;maven&amp;lt;/tt&amp;gt; subdirectory of the &amp;lt;tt&amp;gt;jogl-demos&amp;lt;/tt&amp;gt; project&lt;br /&gt;
[http://jogamp.org/git/?p=jogl-demos.git;a=tree;f=maven].&lt;br /&gt;
&lt;br /&gt;
= Package details =&lt;br /&gt;
&lt;br /&gt;
For each JogAmp project, there are essentially two packages published: One contains the main compiled&lt;br /&gt;
jar files and any associated native library jar files, and the other simply contains &amp;lt;i&amp;gt;dependencies&amp;lt;/i&amp;gt;&lt;br /&gt;
on those files. Using &amp;lt;tt&amp;gt;jogl-all&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jogl-all-main&amp;lt;/tt&amp;gt; as the example, the &amp;lt;tt&amp;gt;jogl-all&amp;lt;/tt&amp;gt;&lt;br /&gt;
package in the jogamp.org test repository:&lt;br /&gt;
&lt;br /&gt;
http://jogamp.org/deployment/maven/org/jogamp/jogl/jogl-all/2.3.1/&lt;br /&gt;
&lt;br /&gt;
Note that there are many native jar files attached to the main package. However, if you were to use&lt;br /&gt;
the following dependency in your own project:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl-all&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maven would download &amp;lt;tt&amp;gt;jogl-all-2.3.1.jar&amp;lt;/tt&amp;gt; but would completely ignore all of the other&lt;br /&gt;
native jar files. Why? The reason for this is that the native jar files are uploaded as extra artifacts&lt;br /&gt;
to the &amp;lt;tt&amp;gt;jogl-all&amp;lt;/tt&amp;gt; package and are, in a manner of speaking, not really considered to be part of&lt;br /&gt;
the package where dependencies are concerned. The POM for the &amp;lt;tt&amp;gt;jogl-all-main&amp;lt;/tt&amp;gt; package adds&lt;br /&gt;
explicit dependencies on all of the extra artifacts in the &amp;lt;tt&amp;gt;jogl-all&amp;lt;/tt&amp;gt; package:&lt;br /&gt;
&lt;br /&gt;
http://jogamp.org/deployment/maven/org/jogamp/jogl/jogl-all-main/2.3.1/jogl-all-main-2.3.1.pom&lt;br /&gt;
&lt;br /&gt;
So, when you add a dependency on &amp;lt;tt&amp;gt;jogl-all-main&amp;lt;/tt&amp;gt; in your own project, the native jar files of&lt;br /&gt;
&amp;lt;tt&amp;gt;jogl-all&amp;lt;/tt&amp;gt; are brought in as transitive dependencies and everything works as expected.&lt;br /&gt;
&lt;br /&gt;
= Available packages =&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|Group ID&lt;br /&gt;
|Artifact ID&lt;br /&gt;
|Since&lt;br /&gt;
|Description&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.gluegen&lt;br /&gt;
|gluegen-rt-android&lt;br /&gt;
|2.0.2-rc12&lt;br /&gt;
|GlueGen runtime code and native libraries (Android)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.gluegen&lt;br /&gt;
|gluegen-rt-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for the GlueGen runtime&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.gluegen&lt;br /&gt;
|gluegen-rt&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|GlueGen runtime code and native libraries&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.gluegen&lt;br /&gt;
|gluegen&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|GlueGen non-runtime code and native libraries (and atomic jars)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.joal&lt;br /&gt;
|joal-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOAL&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.joal&lt;br /&gt;
|joal&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|JOAL code and native libraries&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.joal&lt;br /&gt;
|joal-android&lt;br /&gt;
|2.2.0&lt;br /&gt;
|JOAL Android runtime&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jocl&lt;br /&gt;
|jocl-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOCL&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jocl&lt;br /&gt;
|jocl-android&lt;br /&gt;
|2.2.0&lt;br /&gt;
|JOCL Android runtime&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jocl&lt;br /&gt;
|jocl&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|JOCL code and native libraries&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-all-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOGL&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-all&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|JOGL code and native libraries&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-android&lt;br /&gt;
|2.0.2-rc12&lt;br /&gt;
|JOGL code and native libraries (Android)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-android-main&lt;br /&gt;
|2.2.0&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOGL (Android)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-mobile-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOGL (mobile)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-mobile&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|JOGL mobile code and native libraries (without AWT)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-noawt-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOGL (without AWT)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-noawt&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|JOGL code and native libraries (without AWT)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl&lt;br /&gt;
|2.0.2&lt;br /&gt;
|JOGL atomic jar files&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|nativewindow&lt;br /&gt;
|2.0.2&lt;br /&gt;
|Native window drivers for NEWT (atomic jars)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|nativewindow-main&lt;br /&gt;
|2.2.0&lt;br /&gt;
|Native window drivers for NEWT (atomic frontend)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|newt&lt;br /&gt;
|2.0.2&lt;br /&gt;
|NEWT code and native libraries (atomic jars)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|newt-main&lt;br /&gt;
|2.2.0&lt;br /&gt;
|NEWT code and native libraries (atomic frontend)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|occulusvr&lt;br /&gt;
|2.2.0&lt;br /&gt;
|JOGL code and native libraries (Oculus VR atomic jar files)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Atomic jar files (optional) =&lt;br /&gt;
&lt;br /&gt;
The so-called &amp;lt;i&amp;gt;atomic&amp;lt;/i&amp;gt; jar files are provided as attachments to the &amp;lt;tt&amp;gt;jogl&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;newt&amp;lt;/tt&amp;gt;,&lt;br /&gt;
&amp;lt;tt&amp;gt;nativewindow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;gluegen&amp;lt;/tt&amp;gt; packages. As an example, to depend only on the Linux AMD64&lt;br /&gt;
native jar files, on X11, using only the core of &amp;lt;tt&amp;gt;jogl&amp;lt;/tt&amp;gt; and the native window toolkit in your&lt;br /&gt;
own projects, use the following dependencies:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.gluegen-rt&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.gluegen-rt&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;natives-linux-amd64&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;core&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;natives-linux-amd64&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;os-x11&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;os-x11&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;newt&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;driver-x11&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;newt&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;core&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;newt&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;natives-linux-amd64&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;nativewindow&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;core&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;nativewindow&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;natives-linux-amd64&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;nativewindow&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;driver-x11&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the choice of which atomic jars are required is really outside of the scope of this&lt;br /&gt;
documentation. It&#039;s recommended that you browse the packages in question to see which jar&lt;br /&gt;
files are available. It&#039;s &amp;lt;i&amp;gt;not&amp;lt;/i&amp;gt; recommended to depend on platform-specific jar files&lt;br /&gt;
in the manner shown above unless there&#039;s an extremely good reason to do so; to do otherwise&lt;br /&gt;
harms portability for no good reason!&lt;br /&gt;
&lt;br /&gt;
= The jogamp.org test repository =&lt;br /&gt;
&lt;br /&gt;
Bleeding edge, experimental packages will continue to be made available from the&lt;br /&gt;
[https://jogamp.org/deployment/maven Jogamp Test Repository]. Most users won&#039;t need this, but&lt;br /&gt;
it can be used by adding a new profile in your &amp;lt;tt&amp;gt;~/.m2/settings.xml&amp;lt;/tt&amp;gt; file that specifies&lt;br /&gt;
the repository:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
  &amp;lt;settings&lt;br /&gt;
    xmlns=&amp;quot;http://maven.apache.org/SETTINGS/1.0.0&amp;quot; &lt;br /&gt;
    xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; &lt;br /&gt;
    xsi:schemaLocation=&amp;quot;http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;profiles&amp;gt;&lt;br /&gt;
      &amp;lt;profile&amp;gt;&lt;br /&gt;
        &amp;lt;id&amp;gt;jogamp&amp;lt;/id&amp;gt;&lt;br /&gt;
        &amp;lt;repositories&amp;gt;&lt;br /&gt;
          &amp;lt;repository&amp;gt;&lt;br /&gt;
            &amp;lt;id&amp;gt;jogamp-remote&amp;lt;/id&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;jogamp test mirror&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;url&amp;gt;https://www.jogamp.org/deployment/maven/&amp;lt;/url&amp;gt;&lt;br /&gt;
            &amp;lt;layout&amp;gt;default&amp;lt;/layout&amp;gt;&lt;br /&gt;
          &amp;lt;/repository&amp;gt;&lt;br /&gt;
        &amp;lt;/repositories&amp;gt;&lt;br /&gt;
      &amp;lt;/profile&amp;gt;&lt;br /&gt;
    &amp;lt;/profiles&amp;gt;&lt;br /&gt;
    &amp;lt;activeProfiles&amp;gt;&lt;br /&gt;
      &amp;lt;activeProfile&amp;gt;jogamp&amp;lt;/activeProfile&amp;gt;&lt;br /&gt;
    &amp;lt;/activeProfiles&amp;gt;&lt;br /&gt;
  &amp;lt;/settings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This repository can be added into the POM file like in this [https://jogamp.org/cgit/jogl-demos.git/tree/maven/trivial-test/pom.xml very simple example].&lt;br /&gt;
&lt;br /&gt;
Maven will then check this repository for packages in addition to Maven Central when resolving dependencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Please note that some packages on the Jogamp test repository are subject to unannounced changes at any moment and may break existing code at any time! Do not use for production code!&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since &amp;lt;tt&amp;gt;2.4.0&amp;lt;/tt&amp;gt;, the releases and the release candidates are pushed only to this repository.&lt;br /&gt;
&lt;br /&gt;
= Android =&lt;br /&gt;
&lt;br /&gt;
There is a [[Maven_And_Android|separate page]] documenting one method of producing packages that work on both Android and ordinary&lt;br /&gt;
desktop Java.&lt;br /&gt;
&lt;br /&gt;
= Producing a fat jar =&lt;br /&gt;
&lt;br /&gt;
See [[JogAmp_JAR_File_Handling#Maven_Assembly_Plugin|JAR File Handling]].&lt;/div&gt;</summary>
		<author><name>Gouessej</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Maven&amp;diff=2150</id>
		<title>Maven</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Maven&amp;diff=2150"/>
		<updated>2023-05-21T09:56:19Z</updated>

		<summary type="html">&lt;p&gt;Gouessej: /* The jogamp.org test repository (optional) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
JogAmp now contains support for Maven. From &amp;lt;tt&amp;gt;2.0-rc11&amp;lt;/tt&amp;gt; to &amp;lt;tt&amp;gt;2.3.2&amp;lt;/tt&amp;gt;, packages are pushed to &lt;br /&gt;
[http://search.maven.org/#search|ga|1|jogamp Maven Central]. Since &amp;lt;tt&amp;gt;2.4.0&amp;lt;/tt&amp;gt;, they are pushed only to [https://jogamp.org/deployment/maven/ the Jogamp Test Repository].&lt;br /&gt;
&lt;br /&gt;
= Add dependencies on the correct packages =&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t know which packages you want, you almost certainly want to use the&lt;br /&gt;
&amp;lt;tt&amp;gt;jogl-all-main&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;gluegen-rt-main&amp;lt;/tt&amp;gt; packages, as these automatically&lt;br /&gt;
set up the correct dependencies on the native jar files for all platforms.&lt;br /&gt;
&lt;br /&gt;
As an example, if your project uses JOGL &amp;lt;tt&amp;gt;2.3.1&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;dependencies&amp;gt;&lt;br /&gt;
    &amp;lt;dependency&amp;gt;&lt;br /&gt;
      &amp;lt;groupId&amp;gt;org.jogamp.gluegen&amp;lt;/groupId&amp;gt;&lt;br /&gt;
      &amp;lt;artifactId&amp;gt;gluegen-rt-main&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
      &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;/dependency&amp;gt;&lt;br /&gt;
    &amp;lt;dependency&amp;gt;&lt;br /&gt;
      &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
      &amp;lt;artifactId&amp;gt;jogl-all-main&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
      &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;/dependencies&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maven will pull all of the dependencies the next time you attempt to build the project.&lt;br /&gt;
&lt;br /&gt;
Additionally, for &amp;lt;tt&amp;gt;joal&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jocl&amp;lt;/tt&amp;gt; support:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;dependencies&amp;gt;&lt;br /&gt;
    &amp;lt;dependency&amp;gt;&lt;br /&gt;
      &amp;lt;groupId&amp;gt;org.jogamp.jocl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
      &amp;lt;artifactId&amp;gt;jocl-main&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
      &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;/dependency&amp;gt;&lt;br /&gt;
    &amp;lt;dependency&amp;gt;&lt;br /&gt;
      &amp;lt;groupId&amp;gt;org.jogamp.joal&amp;lt;/groupId&amp;gt;&lt;br /&gt;
      &amp;lt;artifactId&amp;gt;joal-main&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
      &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;/dependencies&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An example project is available in the &amp;lt;tt&amp;gt;maven&amp;lt;/tt&amp;gt; subdirectory of the &amp;lt;tt&amp;gt;jogl-demos&amp;lt;/tt&amp;gt; project&lt;br /&gt;
[http://jogamp.org/git/?p=jogl-demos.git;a=tree;f=maven].&lt;br /&gt;
&lt;br /&gt;
= Package details =&lt;br /&gt;
&lt;br /&gt;
For each JogAmp project, there are essentially two packages published: One contains the main compiled&lt;br /&gt;
jar files and any associated native library jar files, and the other simply contains &amp;lt;i&amp;gt;dependencies&amp;lt;/i&amp;gt;&lt;br /&gt;
on those files. Using &amp;lt;tt&amp;gt;jogl-all&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jogl-all-main&amp;lt;/tt&amp;gt; as the example, the &amp;lt;tt&amp;gt;jogl-all&amp;lt;/tt&amp;gt;&lt;br /&gt;
package in the jogamp.org test repository:&lt;br /&gt;
&lt;br /&gt;
http://jogamp.org/deployment/maven/org/jogamp/jogl/jogl-all/2.3.1/&lt;br /&gt;
&lt;br /&gt;
Note that there are many native jar files attached to the main package. However, if you were to use&lt;br /&gt;
the following dependency in your own project:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl-all&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maven would download &amp;lt;tt&amp;gt;jogl-all-2.3.1.jar&amp;lt;/tt&amp;gt; but would completely ignore all of the other&lt;br /&gt;
native jar files. Why? The reason for this is that the native jar files are uploaded as extra artifacts&lt;br /&gt;
to the &amp;lt;tt&amp;gt;jogl-all&amp;lt;/tt&amp;gt; package and are, in a manner of speaking, not really considered to be part of&lt;br /&gt;
the package where dependencies are concerned. The POM for the &amp;lt;tt&amp;gt;jogl-all-main&amp;lt;/tt&amp;gt; package adds&lt;br /&gt;
explicit dependencies on all of the extra artifacts in the &amp;lt;tt&amp;gt;jogl-all&amp;lt;/tt&amp;gt; package:&lt;br /&gt;
&lt;br /&gt;
http://jogamp.org/deployment/maven/org/jogamp/jogl/jogl-all-main/2.3.1/jogl-all-main-2.3.1.pom&lt;br /&gt;
&lt;br /&gt;
So, when you add a dependency on &amp;lt;tt&amp;gt;jogl-all-main&amp;lt;/tt&amp;gt; in your own project, the native jar files of&lt;br /&gt;
&amp;lt;tt&amp;gt;jogl-all&amp;lt;/tt&amp;gt; are brought in as transitive dependencies and everything works as expected.&lt;br /&gt;
&lt;br /&gt;
= Available packages =&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|Group ID&lt;br /&gt;
|Artifact ID&lt;br /&gt;
|Since&lt;br /&gt;
|Description&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.gluegen&lt;br /&gt;
|gluegen-rt-android&lt;br /&gt;
|2.0.2-rc12&lt;br /&gt;
|GlueGen runtime code and native libraries (Android)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.gluegen&lt;br /&gt;
|gluegen-rt-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for the GlueGen runtime&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.gluegen&lt;br /&gt;
|gluegen-rt&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|GlueGen runtime code and native libraries&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.gluegen&lt;br /&gt;
|gluegen&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|GlueGen non-runtime code and native libraries (and atomic jars)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.joal&lt;br /&gt;
|joal-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOAL&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.joal&lt;br /&gt;
|joal&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|JOAL code and native libraries&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.joal&lt;br /&gt;
|joal-android&lt;br /&gt;
|2.2.0&lt;br /&gt;
|JOAL Android runtime&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jocl&lt;br /&gt;
|jocl-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOCL&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jocl&lt;br /&gt;
|jocl-android&lt;br /&gt;
|2.2.0&lt;br /&gt;
|JOCL Android runtime&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jocl&lt;br /&gt;
|jocl&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|JOCL code and native libraries&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-all-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOGL&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-all&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|JOGL code and native libraries&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-android&lt;br /&gt;
|2.0.2-rc12&lt;br /&gt;
|JOGL code and native libraries (Android)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-android-main&lt;br /&gt;
|2.2.0&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOGL (Android)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-mobile-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOGL (mobile)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-mobile&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|JOGL mobile code and native libraries (without AWT)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-noawt-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOGL (without AWT)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-noawt&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|JOGL code and native libraries (without AWT)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl&lt;br /&gt;
|2.0.2&lt;br /&gt;
|JOGL atomic jar files&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|nativewindow&lt;br /&gt;
|2.0.2&lt;br /&gt;
|Native window drivers for NEWT (atomic jars)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|nativewindow-main&lt;br /&gt;
|2.2.0&lt;br /&gt;
|Native window drivers for NEWT (atomic frontend)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|newt&lt;br /&gt;
|2.0.2&lt;br /&gt;
|NEWT code and native libraries (atomic jars)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|newt-main&lt;br /&gt;
|2.2.0&lt;br /&gt;
|NEWT code and native libraries (atomic frontend)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|occulusvr&lt;br /&gt;
|2.2.0&lt;br /&gt;
|JOGL code and native libraries (Oculus VR atomic jar files)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Atomic jar files (optional) =&lt;br /&gt;
&lt;br /&gt;
The so-called &amp;lt;i&amp;gt;atomic&amp;lt;/i&amp;gt; jar files are provided as attachments to the &amp;lt;tt&amp;gt;jogl&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;newt&amp;lt;/tt&amp;gt;,&lt;br /&gt;
&amp;lt;tt&amp;gt;nativewindow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;gluegen&amp;lt;/tt&amp;gt; packages. As an example, to depend only on the Linux AMD64&lt;br /&gt;
native jar files, on X11, using only the core of &amp;lt;tt&amp;gt;jogl&amp;lt;/tt&amp;gt; and the native window toolkit in your&lt;br /&gt;
own projects, use the following dependencies:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.gluegen-rt&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.gluegen-rt&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;natives-linux-amd64&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;core&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;natives-linux-amd64&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;os-x11&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;os-x11&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;newt&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;driver-x11&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;newt&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;core&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;newt&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;natives-linux-amd64&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;nativewindow&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;core&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;nativewindow&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;natives-linux-amd64&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;nativewindow&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;driver-x11&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the choice of which atomic jars are required is really outside of the scope of this&lt;br /&gt;
documentation. It&#039;s recommended that you browse the packages in question to see which jar&lt;br /&gt;
files are available. It&#039;s &amp;lt;i&amp;gt;not&amp;lt;/i&amp;gt; recommended to depend on platform-specific jar files&lt;br /&gt;
in the manner shown above unless there&#039;s an extremely good reason to do so; to do otherwise&lt;br /&gt;
harms portability for no good reason!&lt;br /&gt;
&lt;br /&gt;
= The jogamp.org test repository =&lt;br /&gt;
&lt;br /&gt;
Bleeding edge, experimental packages will continue to be made available from the&lt;br /&gt;
[https://jogamp.org/deployment/maven Jogamp Test Repository]. Most users won&#039;t need this, but&lt;br /&gt;
it can be used by adding a new profile in your &amp;lt;tt&amp;gt;~/.m2/settings.xml&amp;lt;/tt&amp;gt; file that specifies&lt;br /&gt;
the repository:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
  &amp;lt;settings&lt;br /&gt;
    xmlns=&amp;quot;http://maven.apache.org/SETTINGS/1.0.0&amp;quot; &lt;br /&gt;
    xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; &lt;br /&gt;
    xsi:schemaLocation=&amp;quot;http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;profiles&amp;gt;&lt;br /&gt;
      &amp;lt;profile&amp;gt;&lt;br /&gt;
        &amp;lt;id&amp;gt;jogamp&amp;lt;/id&amp;gt;&lt;br /&gt;
        &amp;lt;repositories&amp;gt;&lt;br /&gt;
          &amp;lt;repository&amp;gt;&lt;br /&gt;
            &amp;lt;id&amp;gt;jogamp-remote&amp;lt;/id&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;jogamp test mirror&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;url&amp;gt;https://www.jogamp.org/deployment/maven/&amp;lt;/url&amp;gt;&lt;br /&gt;
            &amp;lt;layout&amp;gt;default&amp;lt;/layout&amp;gt;&lt;br /&gt;
          &amp;lt;/repository&amp;gt;&lt;br /&gt;
        &amp;lt;/repositories&amp;gt;&lt;br /&gt;
      &amp;lt;/profile&amp;gt;&lt;br /&gt;
    &amp;lt;/profiles&amp;gt;&lt;br /&gt;
    &amp;lt;activeProfiles&amp;gt;&lt;br /&gt;
      &amp;lt;activeProfile&amp;gt;jogamp&amp;lt;/activeProfile&amp;gt;&lt;br /&gt;
    &amp;lt;/activeProfiles&amp;gt;&lt;br /&gt;
  &amp;lt;/settings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This repository can be added into the POM file too like in this [https://jogamp.org/cgit/jogl-demos.git/tree/maven/trivial-test/pom.xml very simple example].&lt;br /&gt;
&lt;br /&gt;
Maven will then check this repository for packages in addition to Maven Central when resolving dependencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Please note that some packages on the Jogamp test repository are subject to unannounced changes at any moment and may break existing code at any time! Do not use for production code!&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since &amp;lt;tt&amp;gt;2.4.0&amp;lt;/tt&amp;gt;, the releases and the release candidates are pushed only to this repository.&lt;br /&gt;
&lt;br /&gt;
= Android =&lt;br /&gt;
&lt;br /&gt;
There is a [[Maven_And_Android|separate page]] documenting one method of producing packages that work on both Android and ordinary&lt;br /&gt;
desktop Java.&lt;br /&gt;
&lt;br /&gt;
= Producing a fat jar =&lt;br /&gt;
&lt;br /&gt;
See [[JogAmp_JAR_File_Handling#Maven_Assembly_Plugin|JAR File Handling]].&lt;/div&gt;</summary>
		<author><name>Gouessej</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Maven&amp;diff=2149</id>
		<title>Maven</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Maven&amp;diff=2149"/>
		<updated>2023-05-21T09:45:00Z</updated>

		<summary type="html">&lt;p&gt;Gouessej: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
JogAmp now contains support for Maven. From &amp;lt;tt&amp;gt;2.0-rc11&amp;lt;/tt&amp;gt; to &amp;lt;tt&amp;gt;2.3.2&amp;lt;/tt&amp;gt;, packages are pushed to &lt;br /&gt;
[http://search.maven.org/#search|ga|1|jogamp Maven Central]. Since &amp;lt;tt&amp;gt;2.4.0&amp;lt;/tt&amp;gt;, they are pushed only to [https://jogamp.org/deployment/maven/ the Jogamp Test Repository].&lt;br /&gt;
&lt;br /&gt;
= Add dependencies on the correct packages =&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t know which packages you want, you almost certainly want to use the&lt;br /&gt;
&amp;lt;tt&amp;gt;jogl-all-main&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;gluegen-rt-main&amp;lt;/tt&amp;gt; packages, as these automatically&lt;br /&gt;
set up the correct dependencies on the native jar files for all platforms.&lt;br /&gt;
&lt;br /&gt;
As an example, if your project uses JOGL &amp;lt;tt&amp;gt;2.3.1&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;dependencies&amp;gt;&lt;br /&gt;
    &amp;lt;dependency&amp;gt;&lt;br /&gt;
      &amp;lt;groupId&amp;gt;org.jogamp.gluegen&amp;lt;/groupId&amp;gt;&lt;br /&gt;
      &amp;lt;artifactId&amp;gt;gluegen-rt-main&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
      &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;/dependency&amp;gt;&lt;br /&gt;
    &amp;lt;dependency&amp;gt;&lt;br /&gt;
      &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
      &amp;lt;artifactId&amp;gt;jogl-all-main&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
      &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;/dependencies&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maven will pull all of the dependencies the next time you attempt to build the project.&lt;br /&gt;
&lt;br /&gt;
Additionally, for &amp;lt;tt&amp;gt;joal&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jocl&amp;lt;/tt&amp;gt; support:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;dependencies&amp;gt;&lt;br /&gt;
    &amp;lt;dependency&amp;gt;&lt;br /&gt;
      &amp;lt;groupId&amp;gt;org.jogamp.jocl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
      &amp;lt;artifactId&amp;gt;jocl-main&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
      &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;/dependency&amp;gt;&lt;br /&gt;
    &amp;lt;dependency&amp;gt;&lt;br /&gt;
      &amp;lt;groupId&amp;gt;org.jogamp.joal&amp;lt;/groupId&amp;gt;&lt;br /&gt;
      &amp;lt;artifactId&amp;gt;joal-main&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
      &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;/dependencies&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An example project is available in the &amp;lt;tt&amp;gt;maven&amp;lt;/tt&amp;gt; subdirectory of the &amp;lt;tt&amp;gt;jogl-demos&amp;lt;/tt&amp;gt; project&lt;br /&gt;
[http://jogamp.org/git/?p=jogl-demos.git;a=tree;f=maven].&lt;br /&gt;
&lt;br /&gt;
= Package details =&lt;br /&gt;
&lt;br /&gt;
For each JogAmp project, there are essentially two packages published: One contains the main compiled&lt;br /&gt;
jar files and any associated native library jar files, and the other simply contains &amp;lt;i&amp;gt;dependencies&amp;lt;/i&amp;gt;&lt;br /&gt;
on those files. Using &amp;lt;tt&amp;gt;jogl-all&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jogl-all-main&amp;lt;/tt&amp;gt; as the example, the &amp;lt;tt&amp;gt;jogl-all&amp;lt;/tt&amp;gt;&lt;br /&gt;
package in the jogamp.org test repository:&lt;br /&gt;
&lt;br /&gt;
http://jogamp.org/deployment/maven/org/jogamp/jogl/jogl-all/2.3.1/&lt;br /&gt;
&lt;br /&gt;
Note that there are many native jar files attached to the main package. However, if you were to use&lt;br /&gt;
the following dependency in your own project:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl-all&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maven would download &amp;lt;tt&amp;gt;jogl-all-2.3.1.jar&amp;lt;/tt&amp;gt; but would completely ignore all of the other&lt;br /&gt;
native jar files. Why? The reason for this is that the native jar files are uploaded as extra artifacts&lt;br /&gt;
to the &amp;lt;tt&amp;gt;jogl-all&amp;lt;/tt&amp;gt; package and are, in a manner of speaking, not really considered to be part of&lt;br /&gt;
the package where dependencies are concerned. The POM for the &amp;lt;tt&amp;gt;jogl-all-main&amp;lt;/tt&amp;gt; package adds&lt;br /&gt;
explicit dependencies on all of the extra artifacts in the &amp;lt;tt&amp;gt;jogl-all&amp;lt;/tt&amp;gt; package:&lt;br /&gt;
&lt;br /&gt;
http://jogamp.org/deployment/maven/org/jogamp/jogl/jogl-all-main/2.3.1/jogl-all-main-2.3.1.pom&lt;br /&gt;
&lt;br /&gt;
So, when you add a dependency on &amp;lt;tt&amp;gt;jogl-all-main&amp;lt;/tt&amp;gt; in your own project, the native jar files of&lt;br /&gt;
&amp;lt;tt&amp;gt;jogl-all&amp;lt;/tt&amp;gt; are brought in as transitive dependencies and everything works as expected.&lt;br /&gt;
&lt;br /&gt;
= Available packages =&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|Group ID&lt;br /&gt;
|Artifact ID&lt;br /&gt;
|Since&lt;br /&gt;
|Description&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.gluegen&lt;br /&gt;
|gluegen-rt-android&lt;br /&gt;
|2.0.2-rc12&lt;br /&gt;
|GlueGen runtime code and native libraries (Android)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.gluegen&lt;br /&gt;
|gluegen-rt-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for the GlueGen runtime&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.gluegen&lt;br /&gt;
|gluegen-rt&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|GlueGen runtime code and native libraries&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.gluegen&lt;br /&gt;
|gluegen&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|GlueGen non-runtime code and native libraries (and atomic jars)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.joal&lt;br /&gt;
|joal-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOAL&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.joal&lt;br /&gt;
|joal&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|JOAL code and native libraries&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.joal&lt;br /&gt;
|joal-android&lt;br /&gt;
|2.2.0&lt;br /&gt;
|JOAL Android runtime&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jocl&lt;br /&gt;
|jocl-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOCL&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jocl&lt;br /&gt;
|jocl-android&lt;br /&gt;
|2.2.0&lt;br /&gt;
|JOCL Android runtime&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jocl&lt;br /&gt;
|jocl&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|JOCL code and native libraries&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-all-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOGL&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-all&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|JOGL code and native libraries&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-android&lt;br /&gt;
|2.0.2-rc12&lt;br /&gt;
|JOGL code and native libraries (Android)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-android-main&lt;br /&gt;
|2.2.0&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOGL (Android)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-mobile-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOGL (mobile)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-mobile&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|JOGL mobile code and native libraries (without AWT)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-noawt-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOGL (without AWT)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-noawt&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|JOGL code and native libraries (without AWT)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl&lt;br /&gt;
|2.0.2&lt;br /&gt;
|JOGL atomic jar files&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|nativewindow&lt;br /&gt;
|2.0.2&lt;br /&gt;
|Native window drivers for NEWT (atomic jars)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|nativewindow-main&lt;br /&gt;
|2.2.0&lt;br /&gt;
|Native window drivers for NEWT (atomic frontend)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|newt&lt;br /&gt;
|2.0.2&lt;br /&gt;
|NEWT code and native libraries (atomic jars)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|newt-main&lt;br /&gt;
|2.2.0&lt;br /&gt;
|NEWT code and native libraries (atomic frontend)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|occulusvr&lt;br /&gt;
|2.2.0&lt;br /&gt;
|JOGL code and native libraries (Oculus VR atomic jar files)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Atomic jar files (optional) =&lt;br /&gt;
&lt;br /&gt;
The so-called &amp;lt;i&amp;gt;atomic&amp;lt;/i&amp;gt; jar files are provided as attachments to the &amp;lt;tt&amp;gt;jogl&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;newt&amp;lt;/tt&amp;gt;,&lt;br /&gt;
&amp;lt;tt&amp;gt;nativewindow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;gluegen&amp;lt;/tt&amp;gt; packages. As an example, to depend only on the Linux AMD64&lt;br /&gt;
native jar files, on X11, using only the core of &amp;lt;tt&amp;gt;jogl&amp;lt;/tt&amp;gt; and the native window toolkit in your&lt;br /&gt;
own projects, use the following dependencies:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.gluegen-rt&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.gluegen-rt&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;natives-linux-amd64&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;core&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;natives-linux-amd64&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;os-x11&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;os-x11&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;newt&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;driver-x11&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;newt&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;core&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;newt&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;natives-linux-amd64&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;nativewindow&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;core&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;nativewindow&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;natives-linux-amd64&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;nativewindow&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;driver-x11&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the choice of which atomic jars are required is really outside of the scope of this&lt;br /&gt;
documentation. It&#039;s recommended that you browse the packages in question to see which jar&lt;br /&gt;
files are available. It&#039;s &amp;lt;i&amp;gt;not&amp;lt;/i&amp;gt; recommended to depend on platform-specific jar files&lt;br /&gt;
in the manner shown above unless there&#039;s an extremely good reason to do so; to do otherwise&lt;br /&gt;
harms portability for no good reason!&lt;br /&gt;
&lt;br /&gt;
= The jogamp.org test repository (optional) =&lt;br /&gt;
&lt;br /&gt;
Bleeding edge, experimental packages will continue to be made available from the&lt;br /&gt;
[https://jogamp.org/deployment/maven Jogamp Test Repository]. Most users won&#039;t need this, but&lt;br /&gt;
it can be used by adding a new profile in your &amp;lt;tt&amp;gt;~/.m2/settings.xml&amp;lt;/tt&amp;gt; file that specifies&lt;br /&gt;
the repository:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
  &amp;lt;settings&lt;br /&gt;
    xmlns=&amp;quot;http://maven.apache.org/SETTINGS/1.0.0&amp;quot; &lt;br /&gt;
    xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; &lt;br /&gt;
    xsi:schemaLocation=&amp;quot;http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;profiles&amp;gt;&lt;br /&gt;
      &amp;lt;profile&amp;gt;&lt;br /&gt;
        &amp;lt;id&amp;gt;jogamp&amp;lt;/id&amp;gt;&lt;br /&gt;
        &amp;lt;repositories&amp;gt;&lt;br /&gt;
          &amp;lt;repository&amp;gt;&lt;br /&gt;
            &amp;lt;id&amp;gt;jogamp-remote&amp;lt;/id&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;jogamp test mirror&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;url&amp;gt;https://www.jogamp.org/deployment/maven/&amp;lt;/url&amp;gt;&lt;br /&gt;
            &amp;lt;layout&amp;gt;default&amp;lt;/layout&amp;gt;&lt;br /&gt;
          &amp;lt;/repository&amp;gt;&lt;br /&gt;
        &amp;lt;/repositories&amp;gt;&lt;br /&gt;
      &amp;lt;/profile&amp;gt;&lt;br /&gt;
    &amp;lt;/profiles&amp;gt;&lt;br /&gt;
    &amp;lt;activeProfiles&amp;gt;&lt;br /&gt;
      &amp;lt;activeProfile&amp;gt;jogamp&amp;lt;/activeProfile&amp;gt;&lt;br /&gt;
    &amp;lt;/activeProfiles&amp;gt;&lt;br /&gt;
  &amp;lt;/settings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maven will then check this repository for packages in addition to Maven Central when resolving dependencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Please note that packages on the jogamp test repository are subject to unannounced changes at any moment and may break existing code at any time! Do not use for production code!&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Android =&lt;br /&gt;
&lt;br /&gt;
There is a [[Maven_And_Android|separate page]] documenting one method of producing packages that work on both Android and ordinary&lt;br /&gt;
desktop Java.&lt;br /&gt;
&lt;br /&gt;
= Producing a fat jar =&lt;br /&gt;
&lt;br /&gt;
See [[JogAmp_JAR_File_Handling#Maven_Assembly_Plugin|JAR File Handling]].&lt;/div&gt;</summary>
		<author><name>Gouessej</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Setting_up_a_JogAmp_project_in_your_favorite_IDE&amp;diff=2148</id>
		<title>Setting up a JogAmp project in your favorite IDE</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Setting_up_a_JogAmp_project_in_your_favorite_IDE&amp;diff=2148"/>
		<updated>2023-05-21T09:38:52Z</updated>

		<summary type="html">&lt;p&gt;Gouessej: /* Maven */ Adds a link to the JogAmp development repository as it&amp;#039;s necessary since JOGL 2.4.0&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
These instructions assume that you&#039;ve created a project in your favorite IDE, and now you want your project to be able to use a JogAmp library like JOGL, JOCL, JOAL, or GlueGen. We use JOGL as an example below, but these instructions work equally well for any other JogAmp library.&lt;br /&gt;
&lt;br /&gt;
= Download a JogAmp library =&lt;br /&gt;
&lt;br /&gt;
If you haven&#039;t done so already, download and extract the JogAmp library you want to use. For example, to download and extract JOGL, see the instructions at [[Downloading and installing JOGL]].&lt;br /&gt;
&lt;br /&gt;
To use a JogAmp library you&#039;ll do three things:&lt;br /&gt;
&lt;br /&gt;
* Add its JAR files to the Java classpath&lt;br /&gt;
* Add its native libraries in one of two ways:&lt;br /&gt;
** Either place its native JAR files in the same directory as the library JAR files&lt;br /&gt;
** Or add its native library files(the &amp;lt;tt&amp;gt;.dll&amp;lt;/tt&amp;gt;,&amp;lt;tt&amp;gt;.so&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;.jnilib&amp;lt;/tt&amp;gt; files) to the Java library path&lt;br /&gt;
* Optional: Associate the *-java-src.zip files with the corresponding JAR files.&lt;br /&gt;
&lt;br /&gt;
Each IDE has a slightly different way to do these things, as we show below. Using the native JAR files is usually slightly easier than using the native library files directly, and native JARs make it possible for all platforms&#039; libraries to coexist in one project, so this is the recommended method.&lt;br /&gt;
&lt;br /&gt;
Please note that all JogAmp libraries depend on the GlueGen runtime libraries. These are included in every JogAmp library for convenience, but are only required once in the classpath and library path of your project.&lt;br /&gt;
&lt;br /&gt;
See  [[JogAmp JAR File Handling|JogAmp JAR File Handling]], for details on native JAR files and custom JAR bundling.&lt;br /&gt;
&lt;br /&gt;
= Eclipse IDE project =&lt;br /&gt;
&lt;br /&gt;
Probably the simplest way to use JOGL in an Eclipse project is to create another Eclipse project to contain the JOGL JARs, then make your project depend on this new JOGL project. In the example below, I include only the 64-bit Windows native JARs, but you can put native JARs for as many platforms as you wish together into the JOGL Eclipse project.&lt;br /&gt;
&lt;br /&gt;
=== Create a JOGL project ===&lt;br /&gt;
&lt;br /&gt;
* Put all the JOGL code JARs, native JARs for all platforms you wish to support, and source ZIP files in a directory called &amp;quot;JOGL&amp;quot; in your workspace directory.&lt;br /&gt;
* Click &amp;quot;File &amp;gt; New &amp;gt; Java Project&amp;quot;. Type &amp;quot;JOGL&amp;quot; as the project name and click &amp;quot;Next&amp;quot;.&lt;br /&gt;
[[File:Eclipse_project_setup_01_create_project.png|300px|thumb|none|Create JOGL project]]&lt;br /&gt;
* Remove the native JARs from the project, leaving only gluegen-rt.jar and jogl-all.jar.&lt;br /&gt;
[[File:Eclipse_project_setup_02_remove_native_JARs.png|300px|thumb|none|Remove native JARs]]&lt;br /&gt;
           NOTE: The gluegen-rt-natives-*-*.jar and jogl-all-natives-*-*.jar are not&lt;br /&gt;
           required in the classpath by JOGL, but are required by Eclipse to export&lt;br /&gt;
           your project as a runnable JAR file.&lt;br /&gt;
* Expand the jogl-all and gluegen-rt JARs. For each of them, double-click &amp;quot;Source attachment&amp;quot;, click &amp;quot;Workspace...&amp;quot;, navigate to the corresponding &amp;lt;tt&amp;gt;*-java-src.zip&amp;lt;/tt&amp;gt; file in the project, select it, click &amp;quot;OK&amp;quot;, and click &amp;quot;OK&amp;quot; again to dismiss the &amp;quot;Source Attachment Configuration&amp;quot; dialog. The JARs should look like this when you&#039;re done:&lt;br /&gt;
[[File:Eclipse_project_setup_03_JARs_with_source_attached.png|300px|thumb|none|Attach source to JARs]]&lt;br /&gt;
* Click the &amp;quot;Order and Export&amp;quot; tab. Check both JOGL JARs, then click &amp;quot;Finish&amp;quot;.&lt;br /&gt;
[[File:Eclipse_project_setup_04_order_and_export.png|300px|thumb|none|Exporting JOGL JARs]]&lt;br /&gt;
&lt;br /&gt;
=== Add dependency on the JOGL project ===&lt;br /&gt;
&lt;br /&gt;
* Right-click your project and click &amp;quot;Properties&amp;quot;.&lt;br /&gt;
* Select the &amp;quot;Java Build Path&amp;quot; on the left, then click the &amp;quot;Projects&amp;quot; tab on the right.&lt;br /&gt;
* Click the &amp;quot;Add...&amp;quot; button, check &amp;quot;JOGL&amp;quot;, and click &amp;quot;OK&amp;quot;.&lt;br /&gt;
* Your dependent project should look like this. Click &amp;quot;OK&amp;quot; to dismiss the &amp;quot;Properties&amp;quot; dialog.&lt;br /&gt;
[[File:Eclipse_project_setup_05_project_dependency.png|300px|thumb|none|JOGL project dependency]]&lt;br /&gt;
&lt;br /&gt;
That&#039;s it! Your project can now use the library.&lt;br /&gt;
&lt;br /&gt;
= Eclipse IDE user library =&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want to put JOGL in a separate Eclipse project, you can put it in a user library instead. The drawback to this is that the user library is defined in your .metadata directory and contains absolute paths, so it&#039;s hard to share with others. But for a non-shared project this works fine.&lt;br /&gt;
&lt;br /&gt;
=== Create a user library ===&lt;br /&gt;
&lt;br /&gt;
* Click &amp;quot;Window &amp;gt; Preferences&amp;quot;, then select &amp;quot;Java &amp;gt; Build Path &amp;gt; User Libraries&amp;quot; on the left.&lt;br /&gt;
* Click the &amp;quot;New...&amp;quot; button, type &amp;quot;JOGL&amp;quot; for the library name, and click &amp;quot;OK&amp;quot;.&lt;br /&gt;
[[File:Eclipse_setup_01_create_user_library.png|300px|thumb|none|Create user library]]&lt;br /&gt;
* Click the &amp;quot;Add JARs...&amp;quot; button, navigate to the directory where you&#039;ve stored the JARs, select all the non-native JARs, then click &amp;quot;Open&amp;quot;.&lt;br /&gt;
* If you&#039;re using native JAR files:&lt;br /&gt;
** Make sure the &amp;lt;tt&amp;gt;gluegen-rt-natives-*-*.jar&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jogl-all-natives-*-*.jar&amp;lt;/tt&amp;gt; files for each platform you want to run on are in the same directory as the other JAR files. The native JAR files don&#039;t need to be added to the classpath.&lt;br /&gt;
* Expand each non-native JAR in the list&lt;br /&gt;
** Double-click &amp;quot;Source attachment&amp;quot;, type the module&#039;s source zip name, (e.g. &amp;lt;tt&amp;gt;jogl-java-src.zip&amp;lt;/tt&amp;gt; for the JAR file &amp;lt;tt&amp;gt;jogl-all.jar&amp;lt;/tt&amp;gt;), and click &amp;quot;OK&amp;quot;.&lt;br /&gt;
** If you&#039;re using native library files:&lt;br /&gt;
*** Double-click &amp;quot;Native library location&amp;quot;, type the directory where native library files are stored, and click &amp;quot;OK&amp;quot;.&lt;br /&gt;
[[File:Eclipse_setup_02_set_native_library_locations.png|300px|thumb|none|Set native library locations]]&lt;br /&gt;
* Click &amp;quot;OK&amp;quot; to exit Preferences dialog.&lt;br /&gt;
&lt;br /&gt;
=== Add the user library to your project&#039;s dependencies ===&lt;br /&gt;
&lt;br /&gt;
* Right-click your project in the Package Explorer and click &amp;quot;Properties&amp;quot;.&lt;br /&gt;
* Select &amp;quot;Java Build Path&amp;quot; and click the &amp;quot;Libraries&amp;quot; tab.&lt;br /&gt;
[[File:Eclipse_setup_03_add_library_to_project.png|300px|thumb|none|Add library to project]]&lt;br /&gt;
* Click &amp;quot;Add Library...&amp;quot;, select &amp;quot;User Library&amp;quot;, click &amp;quot;Next&amp;quot;, check &amp;quot;JOGL&amp;quot;, and click &amp;quot;Finish&amp;quot;.&lt;br /&gt;
[[File:Eclipse_setup_04_add_JOGL_library_to_project.png|300px|thumb|none|Add JOGL library to project]]&lt;br /&gt;
* Click &amp;quot;OK&amp;quot; to dismiss the Properties dialog.&lt;br /&gt;
&lt;br /&gt;
That&#039;s it! You can now use the library in your project.&lt;br /&gt;
&lt;br /&gt;
= IntelliJ IDEA =&lt;br /&gt;
=== Add a library dependency to your project ===&lt;br /&gt;
&lt;br /&gt;
* Click &amp;quot;File &amp;gt; Project Structure&amp;quot;.&lt;br /&gt;
* Select &amp;quot;Modules&amp;quot; on the left, then click the &amp;quot;Dependencies&amp;quot; tab on the right.&lt;br /&gt;
* Click the &amp;quot;+&amp;quot; button on the right, then select &amp;quot;Library... &amp;gt; Java&amp;quot;.&lt;br /&gt;
[[File:IntelliJ_setup_01_add_library.png|300px|thumb|none|Add library]]&lt;br /&gt;
* Navigate to the directory where you extracted the JARs, select it, and click &amp;quot;OK&amp;quot;.&lt;br /&gt;
[[File:IntelliJ_setup_02_find_library.png|300px|thumb|none|Find library]]&lt;br /&gt;
* Click &amp;quot;OK&amp;quot; to dismiss the Configure Library dialog.&lt;br /&gt;
[[File:IntelliJ_setup_03_configure_library.png|300px|thumb|none|Configure library]]&lt;br /&gt;
* Click &amp;quot;OK&amp;quot; to dismiss the Project Structure dialog. The external libraries in your project should now look like this if you&#039;re using native JAR files:&lt;br /&gt;
[[File:IntelliJ_setup_04_external_library_native_JARs.png|300px|thumb|none|Native JARs]]&lt;br /&gt;
or like this if you&#039;re using native library files:&lt;br /&gt;
[[File:IntelliJ_setup_04_external_library.png|300px|thumb|none|Native library files]]&lt;br /&gt;
&lt;br /&gt;
* If you&#039;re using native JAR files:&lt;br /&gt;
** Make sure the &amp;lt;tt&amp;gt;gluegen-rt-natives-*-*.jar&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jogl-all-natives-*-*.jar&amp;lt;/tt&amp;gt; files for each platform you want to run on are in the same directory as the other JAR files.&lt;br /&gt;
* Otherwise, if you&#039;re using native library files:&lt;br /&gt;
** Click &amp;quot;Run &amp;gt; Edit Configurations&amp;quot;.&lt;br /&gt;
** Type &amp;lt;tt&amp;gt;-Djava.library.path=your/path/to/native/library/files&amp;lt;/tt&amp;gt; in the &amp;quot;VM Parameters&amp;quot; box. Note that paths with spaces must be double-quoted on Windows.&lt;br /&gt;
[[File:IntelliJ_setup_05_run_configuration.png|300px|thumb|none|Edit run configuration]]&lt;br /&gt;
** Click &amp;quot;OK&amp;quot; to dismiss the Run/Debug Configurations dialog.&lt;br /&gt;
&lt;br /&gt;
That&#039;s it! You can now use the library in your project.&lt;br /&gt;
&lt;br /&gt;
= NetBeans IDE = &lt;br /&gt;
=== Create a library and add it to your project ===&lt;br /&gt;
&lt;br /&gt;
* Right-click your project and click &amp;quot;Properties&amp;quot;.&lt;br /&gt;
* Select &amp;quot;Libraries&amp;quot; on the left and click &amp;quot;Add Library...&amp;quot;.&lt;br /&gt;
* Click the &amp;quot;Create&amp;quot; button, then type &amp;quot;JOGL&amp;quot; for the library name and click &amp;quot;OK&amp;quot;.[[File:NetBeans_setup_01_create_library.png|300px|thumb|none|Create library]]&lt;br /&gt;
* Click &amp;quot;Add JAR/Folder...&amp;quot;, then navigate to the directory you extracted the JAR files, select them and click &amp;quot;Add JAR/Folder&amp;quot;.&lt;br /&gt;
* Click &amp;quot;OK&amp;quot; to dismiss the Customize Library dialog.&lt;br /&gt;
* Click &amp;quot;Add Library&amp;quot; to dismiss the Add Library dialog.[[File:NetBeans_setup_02_add_library.png|300px|thumb|none|Add library]]&lt;br /&gt;
* Click &amp;quot;OK&amp;quot; to dismiss the Project Properties dialog. The libraries in your project should look like this.[[File:NetBeans_setup_03_libraries_in_project.png|300px|thumb|none|Libraries in project]]&lt;br /&gt;
&lt;br /&gt;
* If you&#039;re using native JAR files:&lt;br /&gt;
** Make sure the &amp;lt;tt&amp;gt;gluegen-rt-natives-*-*.jar&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jogl-all-natives-*-*.jar&amp;lt;/tt&amp;gt; files for each platform you want to run on are in the same directory as the other JAR files. The native JAR files don&#039;t need to be added to the classpath.&lt;br /&gt;
* Otherwise, if you&#039;re using native library files:&lt;br /&gt;
** Click &amp;quot;Run &amp;gt; Set Project Configuration &amp;gt; Customize...&amp;quot;. Select &amp;quot;Run&amp;quot; on the left if it isn&#039;t selected already.&lt;br /&gt;
** Type &amp;lt;tt&amp;gt;-Djava.library.path=your/path/to/native/library/files&amp;lt;/tt&amp;gt; in the &amp;quot;VM Options&amp;quot; box.&lt;br /&gt;
** NOTE: If the library path has spaces in it, you must put quotes around it (at least on Windows) or you may get an odd NoClassDefFoundError when you try to run.[[File:NetBeans_setup_04_native_library_path.png|300px|thumb|none|Native library path]]&lt;br /&gt;
** Click &amp;quot;OK&amp;quot; to dismiss the Project Properties dialog.&lt;br /&gt;
&lt;br /&gt;
That&#039;s it! You can now use the library in your project.&lt;br /&gt;
&lt;br /&gt;
= Maven =&lt;br /&gt;
&lt;br /&gt;
From &amp;lt;tt&amp;gt;2.0-rc11&amp;lt;/tt&amp;gt; to &amp;lt;tt&amp;gt;2.3.2&amp;lt;/tt&amp;gt;, packages for all the JogAmp projects have been pushed to&lt;br /&gt;
[http://search.maven.org/#search|ga|1|jogamp Maven Central]. Since &amp;lt;tt&amp;gt;2.4.0&amp;lt;/tt&amp;gt;, they have been pushed only to [https://jogamp.org/deployment/maven/ the JogAmp development repository]. Please see the&lt;br /&gt;
[[Maven]] page for details on how to use them in your projects.&lt;br /&gt;
&lt;br /&gt;
= vi and other text editors =&lt;br /&gt;
=== Create your project with the editor of your choice ===&lt;br /&gt;
* For example, to open vi, simply type &amp;lt;tt&amp;gt;vi&amp;lt;/tt&amp;gt; and press &amp;lt;return&amp;gt;.&lt;br /&gt;
* Type all your code, then save it.&lt;br /&gt;
&lt;br /&gt;
=== Compile and run your project from the command line ===&lt;br /&gt;
* We assume your JOGL JAR files are in a directory called &amp;lt;tt&amp;gt;jar&amp;lt;/tt&amp;gt;. If you&#039;re using native JARs, we assume they&#039;re also in the &amp;lt;tt&amp;gt;jar&amp;lt;/tt&amp;gt; directory. If you&#039;re using native library files, we assume they&#039;re in a directory called &amp;lt;tt&amp;gt;lib&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* First compile your program. We assume all your code is in a single file called &amp;lt;tt&amp;gt;name/someone/MyProject.java&amp;lt;/tt&amp;gt;.&lt;br /&gt;
** Windows: Type &amp;lt;tt&amp;gt;javac -classpath &amp;quot;jar\gluegen-rt.jar;jar\jogl-all.jar&amp;quot; name\someone\MyProject.java&amp;lt;/tt&amp;gt;&lt;br /&gt;
** Linux/MacOS X: Type &amp;lt;tt&amp;gt;javac -classpath &amp;quot;jar/gluegen-rt.jar:jar/jogl-all.jar&amp;quot; name/someone/MyProject.java&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Then run your project. We assume your main class is &amp;lt;tt&amp;gt;name.someone.MyProject&amp;lt;/tt&amp;gt;. If you&#039;re using native JARs:&lt;br /&gt;
** Windows: Type &amp;lt;tt&amp;gt;java -classpath &amp;quot;jar\gluegen-rt.jar;jar\jogl-all.jar;.&amp;quot; name.someone.MyProject&amp;lt;/tt&amp;gt;&lt;br /&gt;
** Linux/MacOS X: Type &amp;lt;tt&amp;gt;java -classpath &amp;quot;jar/gluegen-rt.jar:jar/jogl-all.jar:.&amp;quot; name.someone.MyProject&amp;lt;/tt&amp;gt;&lt;br /&gt;
* If you&#039;re using native library files:&lt;br /&gt;
** Windows: Type &amp;lt;tt&amp;gt;java -classpath &amp;quot;jar\gluegen-rt.jar;jar\jogl-all.jar;.&amp;quot; -Djava.library.path=lib -Djogamp.gluegen.UseTempJarCache=false name.someone.MyProject&amp;lt;/tt&amp;gt;&lt;br /&gt;
** Linux/MacOS X: Type &amp;lt;tt&amp;gt;java -classpath &amp;quot;jar/gluegen-rt.jar:jar/jogl-all.jar:.&amp;quot; -Djava.library.path=lib -Djogamp.gluegen.UseTempJarCache=false name.someone.MyProject&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That&#039;s it! You can now use the library in your project.&lt;/div&gt;</summary>
		<author><name>Gouessej</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Ardor3D_FAQ&amp;diff=2147</id>
		<title>Ardor3D FAQ</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Ardor3D_FAQ&amp;diff=2147"/>
		<updated>2023-04-10T08:15:09Z</updated>

		<summary type="html">&lt;p&gt;Gouessej: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Where can I download Ardor3D?&lt;br /&gt;
** http://jogamp.org/deployment/ardor3d/jogamp-ardor3d.7z &#039;&#039;&#039;N.B: All JARs except those containing the source code are absolutely necessary&#039;&#039;&#039;&lt;br /&gt;
* What else do I need to use Ardor3D?&lt;br /&gt;
** [https://jogamp.org/deployment/jogamp-current/archive/jogamp-all-platforms.7z JogAmp]&lt;br /&gt;
** JInput (optional)&lt;br /&gt;
** SWT (optional)&lt;br /&gt;
* How can I install Ardor3D?&lt;br /&gt;
** Some detailed instructions are [http://gouessej.wordpress.com/2014/11/22/ardor3d-est-mort-vive-jogamps-ardor3d-continuation-ardor3d-is-dead-long-life-to-jogamps-ardor3d-continuation/#installation here]. Just put all JARs except those containing the native libraries into your classpath.&lt;br /&gt;
** JogAmp&#039;s Ardor3D Continuation 1.0 will never be available on Maven Central but it is available on [https://jogamp.org/deployment/maven-ardor3d/ JogAmp Maven repository]&lt;br /&gt;
* Where can I get the source code of Ardor3D?&lt;br /&gt;
** [https://jogamp.org/cgit/ardor3d.git/ GIT repository]&lt;br /&gt;
** [https://jogamp.org/deployment/ardor3d/ JAR archives]&lt;br /&gt;
* How can I build Ardor3D?&lt;br /&gt;
** If you use [https://maven.apache.org/ Apache Maven], enter &#039;mvn install&#039; in command line or run the Maven &#039;install&#039; goal within your favorite IDE (Eclipse with [http://www.eclipse.org/m2e/ M2Eclipse], Netbeans, ...) &lt;br /&gt;
** If you use [http://www.gradle.org Gradle], enter &#039;gradle build&#039; in command line or run the Gradle &#039;build&#039; task within your favorite IDE (Eclipse, Netbeans, ...)&lt;br /&gt;
** If you use [http://ant.apache.org Ant], use [http://maven.apache.org/plugins/maven-ant-plugin/ Maven Ant plugin], enter &#039;mvn ant:ant&#039; to generate the Ant build script&lt;br /&gt;
* Where can I get any help about Ardor3D?&lt;br /&gt;
** You can get some help on [https://forum.jogamp.org our forum]&lt;br /&gt;
* Where can I find any examples using Ardor3D?&lt;br /&gt;
** [https://jogamp.org/cgit/ardor3d.git/tree/ardor3d-examples Almost one hundred of basic examples within the sub-project ardor3d-examples]&lt;br /&gt;
** [https://github.com/Renanse/Ardor3D/wiki/HelloNasaWorldWind Ardor3D with WorldWind Java]&lt;br /&gt;
** [https://github.com/Renanse/Ardor3D/wiki/Terrain-based-on-USGS-data A terrain implementation that uses USGS data]&lt;br /&gt;
** [https://github.com/Renanse/Ardor3D/wiki/Statistics How to gather scene statistics such as triangle count, framerate, etc]&lt;br /&gt;
** [https://github.com/Renanse/Ardor3D/wiki/Terrain The terrain]&lt;br /&gt;
** [http://tuer.sourceforge.net A first person shooter]&lt;br /&gt;
* Where can I report a bug in Ardor3D?&lt;br /&gt;
** https://jogamp.org/bugzilla/describecomponents.cgi?product=Ardor3D&lt;/div&gt;</summary>
		<author><name>Gouessej</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Ardor3D_Overview&amp;diff=2146</id>
		<title>Ardor3D Overview</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Ardor3D_Overview&amp;diff=2146"/>
		<updated>2023-04-10T08:08:54Z</updated>

		<summary type="html">&lt;p&gt;Gouessej: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ardor3D is a professionally oriented, open source, Java based 3D engine for desktop (GNU Linux, Mac OS X, OpenIndiana, Windows) and mobile (Android) environments. The sub-project ardor3d-android was based on [https://developer.android.com/guide/topics/graphics/opengl.html Android OpenGL ES].&lt;br /&gt;
&lt;br /&gt;
Ardor3D was created September 23rd, 2008 as a fork of [http://www.jmonkeyengine.org JMonkeyEngine] by [http://blog.renanse.com Joshua Slack (Renanse)] and Rikard Herlitz (MrCoder). It was developed by [http://www.ardorlabs.com Ardor Labs] and some contributors until its version 0.9. Renanse abandoned the project March 11th, 2014. He restarted it some years later.&lt;br /&gt;
&lt;br /&gt;
The version 1.0 is the first version actively developed and maintained by JogAmp&#039;s community and supporting exclusively JOGL 2 (and later). It is designated as a subset of the original engine as it retains the only renderer relevant for JogAmp&#039;s community. As a consequence, it supports only desktop environments, the Android backend might be rewritten with JogAmp in another version. This subset is preferably called JogAmp&#039;s Ardor3D Continuation in order to avoid any confusion with the &amp;quot;official&amp;quot; unmaintained version.&lt;/div&gt;</summary>
		<author><name>Gouessej</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Maven&amp;diff=2137</id>
		<title>Maven</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Maven&amp;diff=2137"/>
		<updated>2023-02-14T12:09:29Z</updated>

		<summary type="html">&lt;p&gt;Gouessej: /* The jogamp.org test repository (optional) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
JogAmp now contains support for Maven. As of &amp;lt;tt&amp;gt;2.0-rc11&amp;lt;/tt&amp;gt;, packages are pushed to &lt;br /&gt;
[http://search.maven.org/#search|ga|1|jogamp Maven Central].&lt;br /&gt;
&lt;br /&gt;
= Add dependencies on the correct packages =&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t know which packages you want, you almost certainly want to use the&lt;br /&gt;
&amp;lt;tt&amp;gt;jogl-all-main&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;gluegen-rt-main&amp;lt;/tt&amp;gt; packages, as these automatically&lt;br /&gt;
set up the correct dependencies on the native jar files for all platforms.&lt;br /&gt;
&lt;br /&gt;
As an example, if your project uses JOGL &amp;lt;tt&amp;gt;2.3.1&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;dependencies&amp;gt;&lt;br /&gt;
    &amp;lt;dependency&amp;gt;&lt;br /&gt;
      &amp;lt;groupId&amp;gt;org.jogamp.gluegen&amp;lt;/groupId&amp;gt;&lt;br /&gt;
      &amp;lt;artifactId&amp;gt;gluegen-rt-main&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
      &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;/dependency&amp;gt;&lt;br /&gt;
    &amp;lt;dependency&amp;gt;&lt;br /&gt;
      &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
      &amp;lt;artifactId&amp;gt;jogl-all-main&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
      &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;/dependencies&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maven will pull all of the dependencies the next time you attempt to build the project.&lt;br /&gt;
&lt;br /&gt;
Additionally, for &amp;lt;tt&amp;gt;joal&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jocl&amp;lt;/tt&amp;gt; support:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;dependencies&amp;gt;&lt;br /&gt;
    &amp;lt;dependency&amp;gt;&lt;br /&gt;
      &amp;lt;groupId&amp;gt;org.jogamp.jocl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
      &amp;lt;artifactId&amp;gt;jocl-main&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
      &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;/dependency&amp;gt;&lt;br /&gt;
    &amp;lt;dependency&amp;gt;&lt;br /&gt;
      &amp;lt;groupId&amp;gt;org.jogamp.joal&amp;lt;/groupId&amp;gt;&lt;br /&gt;
      &amp;lt;artifactId&amp;gt;joal-main&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
      &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;/dependencies&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An example project is available in the &amp;lt;tt&amp;gt;maven&amp;lt;/tt&amp;gt; subdirectory of the &amp;lt;tt&amp;gt;jogl-demos&amp;lt;/tt&amp;gt; project&lt;br /&gt;
[http://jogamp.org/git/?p=jogl-demos.git;a=tree;f=maven].&lt;br /&gt;
&lt;br /&gt;
= Package details =&lt;br /&gt;
&lt;br /&gt;
For each JogAmp project, there are essentially two packages published: One contains the main compiled&lt;br /&gt;
jar files and any associated native library jar files, and the other simply contains &amp;lt;i&amp;gt;dependencies&amp;lt;/i&amp;gt;&lt;br /&gt;
on those files. Using &amp;lt;tt&amp;gt;jogl-all&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jogl-all-main&amp;lt;/tt&amp;gt; as the example, the &amp;lt;tt&amp;gt;jogl-all&amp;lt;/tt&amp;gt;&lt;br /&gt;
package in the jogamp.org test repository:&lt;br /&gt;
&lt;br /&gt;
http://jogamp.org/deployment/maven/org/jogamp/jogl/jogl-all/2.3.1/&lt;br /&gt;
&lt;br /&gt;
Note that there are many native jar files attached to the main package. However, if you were to use&lt;br /&gt;
the following dependency in your own project:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl-all&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maven would download &amp;lt;tt&amp;gt;jogl-all-2.3.1.jar&amp;lt;/tt&amp;gt; but would completely ignore all of the other&lt;br /&gt;
native jar files. Why? The reason for this is that the native jar files are uploaded as extra artifacts&lt;br /&gt;
to the &amp;lt;tt&amp;gt;jogl-all&amp;lt;/tt&amp;gt; package and are, in a manner of speaking, not really considered to be part of&lt;br /&gt;
the package where dependencies are concerned. The POM for the &amp;lt;tt&amp;gt;jogl-all-main&amp;lt;/tt&amp;gt; package adds&lt;br /&gt;
explicit dependencies on all of the extra artifacts in the &amp;lt;tt&amp;gt;jogl-all&amp;lt;/tt&amp;gt; package:&lt;br /&gt;
&lt;br /&gt;
http://jogamp.org/deployment/maven/org/jogamp/jogl/jogl-all-main/2.3.1/jogl-all-main-2.3.1.pom&lt;br /&gt;
&lt;br /&gt;
So, when you add a dependency on &amp;lt;tt&amp;gt;jogl-all-main&amp;lt;/tt&amp;gt; in your own project, the native jar files of&lt;br /&gt;
&amp;lt;tt&amp;gt;jogl-all&amp;lt;/tt&amp;gt; are brought in as transitive dependencies and everything works as expected.&lt;br /&gt;
&lt;br /&gt;
= Available packages =&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|Group ID&lt;br /&gt;
|Artifact ID&lt;br /&gt;
|Since&lt;br /&gt;
|Description&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.gluegen&lt;br /&gt;
|gluegen-rt-android&lt;br /&gt;
|2.0.2-rc12&lt;br /&gt;
|GlueGen runtime code and native libraries (Android)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.gluegen&lt;br /&gt;
|gluegen-rt-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for the GlueGen runtime&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.gluegen&lt;br /&gt;
|gluegen-rt&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|GlueGen runtime code and native libraries&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.gluegen&lt;br /&gt;
|gluegen&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|GlueGen non-runtime code and native libraries (and atomic jars)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.joal&lt;br /&gt;
|joal-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOAL&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.joal&lt;br /&gt;
|joal&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|JOAL code and native libraries&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.joal&lt;br /&gt;
|joal-android&lt;br /&gt;
|2.2.0&lt;br /&gt;
|JOAL Android runtime&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jocl&lt;br /&gt;
|jocl-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOCL&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jocl&lt;br /&gt;
|jocl-android&lt;br /&gt;
|2.2.0&lt;br /&gt;
|JOCL Android runtime&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jocl&lt;br /&gt;
|jocl&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|JOCL code and native libraries&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-all-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOGL&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-all&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|JOGL code and native libraries&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-android&lt;br /&gt;
|2.0.2-rc12&lt;br /&gt;
|JOGL code and native libraries (Android)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-android-main&lt;br /&gt;
|2.2.0&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOGL (Android)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-mobile-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOGL (mobile)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-mobile&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|JOGL mobile code and native libraries (without AWT)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-noawt-main&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|Meta-package for automatic dependency resolution for JOGL (without AWT)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl-noawt&lt;br /&gt;
|2.0-rc11&lt;br /&gt;
|JOGL code and native libraries (without AWT)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|jogl&lt;br /&gt;
|2.0.2&lt;br /&gt;
|JOGL atomic jar files&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|nativewindow&lt;br /&gt;
|2.0.2&lt;br /&gt;
|Native window drivers for NEWT (atomic jars)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|nativewindow-main&lt;br /&gt;
|2.2.0&lt;br /&gt;
|Native window drivers for NEWT (atomic frontend)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|newt&lt;br /&gt;
|2.0.2&lt;br /&gt;
|NEWT code and native libraries (atomic jars)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|newt-main&lt;br /&gt;
|2.2.0&lt;br /&gt;
|NEWT code and native libraries (atomic frontend)&lt;br /&gt;
|-&lt;br /&gt;
|org.jogamp.jogl&lt;br /&gt;
|occulusvr&lt;br /&gt;
|2.2.0&lt;br /&gt;
|JOGL code and native libraries (Oculus VR atomic jar files)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Atomic jar files (optional) =&lt;br /&gt;
&lt;br /&gt;
The so-called &amp;lt;i&amp;gt;atomic&amp;lt;/i&amp;gt; jar files are provided as attachments to the &amp;lt;tt&amp;gt;jogl&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;newt&amp;lt;/tt&amp;gt;,&lt;br /&gt;
&amp;lt;tt&amp;gt;nativewindow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;gluegen&amp;lt;/tt&amp;gt; packages. As an example, to depend only on the Linux AMD64&lt;br /&gt;
native jar files, on X11, using only the core of &amp;lt;tt&amp;gt;jogl&amp;lt;/tt&amp;gt; and the native window toolkit in your&lt;br /&gt;
own projects, use the following dependencies:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.gluegen-rt&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.gluegen-rt&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;natives-linux-amd64&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;core&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;natives-linux-amd64&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;os-x11&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;jogl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;os-x11&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;newt&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;driver-x11&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;newt&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;core&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;newt&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;natives-linux-amd64&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;nativewindow&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;core&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;nativewindow&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;natives-linux-amd64&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
  &amp;lt;dependency&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.jogamp.jogl&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;nativewindow&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;2.3.1&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;classifier&amp;gt;driver-x11&amp;lt;/classifier&amp;gt;&lt;br /&gt;
  &amp;lt;/dependency&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the choice of which atomic jars are required is really outside of the scope of this&lt;br /&gt;
documentation. It&#039;s recommended that you browse the packages in question to see which jar&lt;br /&gt;
files are available. It&#039;s &amp;lt;i&amp;gt;not&amp;lt;/i&amp;gt; recommended to depend on platform-specific jar files&lt;br /&gt;
in the manner shown above unless there&#039;s an extremely good reason to do so; to do otherwise&lt;br /&gt;
harms portability for no good reason!&lt;br /&gt;
&lt;br /&gt;
= The jogamp.org test repository (optional) =&lt;br /&gt;
&lt;br /&gt;
Bleeding edge, experimental packages will continue to be made available from the&lt;br /&gt;
[http://jogamp.org/deployment/maven Jogamp Test Repository]. Most users won&#039;t need this, but&lt;br /&gt;
it can be used by adding a new profile in your &amp;lt;tt&amp;gt;~/.m2/settings.xml&amp;lt;/tt&amp;gt; file that specifies&lt;br /&gt;
the repository:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
  &amp;lt;settings&lt;br /&gt;
    xmlns=&amp;quot;http://maven.apache.org/SETTINGS/1.0.0&amp;quot; &lt;br /&gt;
    xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; &lt;br /&gt;
    xsi:schemaLocation=&amp;quot;http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;profiles&amp;gt;&lt;br /&gt;
      &amp;lt;profile&amp;gt;&lt;br /&gt;
        &amp;lt;id&amp;gt;jogamp&amp;lt;/id&amp;gt;&lt;br /&gt;
        &amp;lt;repositories&amp;gt;&lt;br /&gt;
          &amp;lt;repository&amp;gt;&lt;br /&gt;
            &amp;lt;id&amp;gt;jogamp-remote&amp;lt;/id&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;jogamp test mirror&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;url&amp;gt;https://www.jogamp.org/deployment/maven/&amp;lt;/url&amp;gt;&lt;br /&gt;
            &amp;lt;layout&amp;gt;default&amp;lt;/layout&amp;gt;&lt;br /&gt;
          &amp;lt;/repository&amp;gt;&lt;br /&gt;
        &amp;lt;/repositories&amp;gt;&lt;br /&gt;
      &amp;lt;/profile&amp;gt;&lt;br /&gt;
    &amp;lt;/profiles&amp;gt;&lt;br /&gt;
    &amp;lt;activeProfiles&amp;gt;&lt;br /&gt;
      &amp;lt;activeProfile&amp;gt;jogamp&amp;lt;/activeProfile&amp;gt;&lt;br /&gt;
    &amp;lt;/activeProfiles&amp;gt;&lt;br /&gt;
  &amp;lt;/settings&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maven will then check this repository for packages in addition to Maven Central when resolving dependencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Please note that packages on the jogamp test repository are subject to unannounced changes at any moment and may break existing code at any time! Do not use for production code!&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Android =&lt;br /&gt;
&lt;br /&gt;
There is a [[Maven_And_Android|separate page]] documenting one method of producing packages that work on both Android and ordinary&lt;br /&gt;
desktop Java.&lt;br /&gt;
&lt;br /&gt;
= Producing a fat jar =&lt;br /&gt;
&lt;br /&gt;
See [[JogAmp_JAR_File_Handling#Maven_Assembly_Plugin|JAR File Handling]].&lt;/div&gt;</summary>
		<author><name>Gouessej</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Jogl_Tutorial&amp;diff=2116</id>
		<title>Jogl Tutorial</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Jogl_Tutorial&amp;diff=2116"/>
		<updated>2022-11-08T21:48:29Z</updated>

		<summary type="html">&lt;p&gt;Gouessej: /* Hello Triangle and Texture */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= JogAmp&#039;s Static =&lt;br /&gt;
* [{{SERVER}}/jogl/doc/Overview-OpenGL-Evolution-And-JOGL.html OpenGL Evolution &amp;amp;amp; JOGL]&lt;br /&gt;
*API Doc [ [{{SERVER}}/deployment/jogamp-next/javadoc/jogl/javadoc/ Public], Specs [ [{{SERVER}}/deployment/jogamp-next/javadoc/jogl/javadoc_nativewindow_spec/ Nativewindow], [{{SERVER}}/deployment/jogamp-next/javadoc/jogl/javadoc_jogl_spec/ JOGL] ] ]&lt;br /&gt;
* [{{SERVER}}/jogl/doc/HowToBuild.html How to Build JOGL]&lt;br /&gt;
* [{{SERVER}}/jogl/doc/userguide/ Userguide]&lt;br /&gt;
* [{{SERVER}}/jogl/doc/deployment/JOGL-DEPLOYMENT.html Deployment]&lt;br /&gt;
* [{{SERVER}}/deployment/jogamp-current/jogl-test-applets.html JOGL Test Applets]&lt;br /&gt;
** [{{SERVER}}/deployment/jogamp-current/jogl-applet-runner-newt-gears-normal.html using Object/Embed tags]&lt;br /&gt;
** [{{SERVER}}/deployment/jogamp-current/jogl-demos/applet-gears.html using the Applet Tag]&lt;br /&gt;
* [{{SERVER}}/jogl/doc/NEWT-Overview.html NEWT - High Performance Native Windowing Toolkit]&lt;br /&gt;
* [{{SERVER}}/git/?p=jogl-demos.git;a=blob;f=src/demos/es2/RawGL2ES2demo.java;hb=HEAD OpenGL GL2ES2 GLSL Standalone Example by Xerxes Rånby]&lt;br /&gt;
* [https://jogamp.org/wiki/index.php/Rudimentary_standalone_example_using_the_fixed_pipeline_by_Julien_Gouesse Rudimentary standalone example using the fixed pipeline by Julien Gouesse]&lt;br /&gt;
* [https://gist.github.com/xranby/ccbcfcaef341f5bd1ba8 Rudimentary standalone example using the fixed pipeline with OpenGL ES 1 by Xerxes Rånby]&lt;br /&gt;
&lt;br /&gt;
= JogAmp&#039;s Wiki =&lt;br /&gt;
* [[Downloading and installing JOGL|Downloading and installing JOGL]]&lt;br /&gt;
** [[Jogamp_Versioning_and_Releases|Versioning And Release Information]]&lt;br /&gt;
* [[Setting up a JogAmp project in your favorite IDE|Setting up a JogAmp project in your favorite IDE]]&lt;br /&gt;
* Deployment&lt;br /&gt;
** [[JogAmp JAR File Handling|JAR File Handling]]&lt;br /&gt;
** [[Using JOGL in a Java applet|Using JOGL in a Java Applet]]&lt;br /&gt;
** [[Using JOGL in Java Web Start|Using JOGL in Java Web Start]]&lt;br /&gt;
** [[Foreign Packaging|Foreign Packaging]]&lt;br /&gt;
* JOGL&lt;br /&gt;
** [[How to write cross GLProfile compatible shader using JOGL]]&lt;br /&gt;
** [[How to use the Debug and Trace GL Pipeline and Debug GL Context]]&lt;br /&gt;
** [[Using JOGL in AWT SWT and Swing|Using JOGL in AWT, SWT, and Swing]]&lt;br /&gt;
** [[How to use X11 displays]]&lt;br /&gt;
* [[Jogl_FAQ|FAQ]]&lt;br /&gt;
&lt;br /&gt;
= Hello Triangle and Texture =&lt;br /&gt;
[https://github.com/elect86/helloTriangle Sample] that features GL4, pure newt, glWindow options, animator, indexed drawing, dynamic attribute and frag data binding, interleaved data, vao, vbo (with normalization on one attribute), ibo (with shorts), uniform, glsl program (with specific suffix) and matrix jogl util, gl error check, key listener and right way to dispose. &lt;br /&gt;
&lt;br /&gt;
There is also a gl3 version and a Texture sample.&lt;br /&gt;
&lt;br /&gt;
All the samples are written in Java and [https://en.wikipedia.org/wiki/Kotlin_(programming_language) Kotlin].&lt;br /&gt;
&lt;br /&gt;
[https://github.com/jvm-graphics-labs/hello-triangle/blob/master/src/main/java/gl4/HelloTriangleSimple.java This example in pure Java] is less difficult to use for newcomers but it requires [https://github.com/jvm-graphics-labs/hello-triangle/blob/master/src/main/java/framework/Semantic.java Semantic.java].&lt;br /&gt;
&lt;br /&gt;
= Common Mistakes =&lt;br /&gt;
I suggest you to take a read to these two pages for a quick overview over the most common problems, it is a very useful reading, legacy sections are carefully signaled.&lt;br /&gt;
&lt;br /&gt;
[https://www.opengl.org/wiki/Common_Mistakes OpenGL]&lt;br /&gt;
[https://www.opengl.org/wiki/GLSL_:_common_mistakes GLSL]&lt;br /&gt;
&lt;br /&gt;
Another common mistake that may happen if you port code from C/C++ to Java is this one:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Caused by: com.jogamp.opengl.GLException: unpack pixel_buffer_object must be bound to call this method&lt;br /&gt;
	at jogamp.opengl.gl4.GL4bcImpl.checkBufferObject(GL4bcImpl.java:40621)&lt;br /&gt;
	at jogamp.opengl.gl4.GL4bcImpl.checkUnpackPBOBound(GL4bcImpl.java:40707)&lt;br /&gt;
	at jogamp.opengl.gl4.GL4bcImpl.glTexImage2D(GL4bcImpl.java:5535)&lt;br /&gt;
	at tests.gl320.Gl_320_fbo_blit.initTexture(Gl_320_fbo_blit.java:199)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This happens because in C/C++, when you just want to allocate the space for a texture using, for example, &#039;&#039;glTexImage2D&#039;&#039;, you should not pass 0 as the last argument, but &#039;&#039;null&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
N.B: The use of color picking is &#039;&#039;&#039;NOT&#039;&#039;&#039; recommended on any hardware whose palette is partially emulated.&lt;br /&gt;
&lt;br /&gt;
= Java OpenGL Samples Pack =&lt;br /&gt;
&lt;br /&gt;
The [https://github.com/elect86/jogl-samples Java OpenGL Samples Pack] (called unsurprisingly jogl-samples) is a port of the [http://www.g-truc.net/project-0026.html OpenGL Samples Pack], a collection of OpenGL samples based on the OpenGL &amp;quot;core profile&amp;quot; specifications.&lt;br /&gt;
&lt;br /&gt;
The project aims to promote the new OpenGL features making easier version transitions for OpenGL programmers with a complementary documentation for the OpenGL specification. Despite the fact that the OpenGL Samples Pack provides as simple (and dumb) as possible samples, it&#039;s not a tutorial for beginner but a project for programmers already familiar with OpenGL. The OpenGL Samples Pack is also a good OpenGL drivers feature test.&lt;br /&gt;
&lt;br /&gt;
These samples illustrate mostly of the OpenGL features from ES 2.0 up to the last GL extenstions, same of them usually also called AZDO (Almost Zero Driver Overhead).&lt;br /&gt;
&lt;br /&gt;
= Wade&#039;s JOGL tutorials =&lt;br /&gt;
* [http://wadeawalker.wordpress.com/2010/10/09/tutorial-a-cross-platform-workbench-program-using-java-opengl-and-eclipse/ Cross-platform workbench program using Eclipse and JOGL]&lt;br /&gt;
* [http://wadeawalker.wordpress.com/2010/10/17/tutorial-faster-rendering-with-vertex-buffer-objects/ Faster rendering with vertex buffer objects]&lt;br /&gt;
* [http://wadeawalker.wordpress.com/2010/10/24/tutorial-creating-native-binary-executables-for-multi-platform-java-apps-with-opengl-and-eclipse-rcp/ Creating native binary executables for multi-platform Java apps with OpenGL and Eclipse RCP]&lt;br /&gt;
* [http://wadeawalker.wordpress.com/2010/12/06/tutorial-displaying-java-opengl-in-an-eclipse-editor-with-a-menu-bar-and-a-runpause-button/ Displaying Java OpenGL in an Eclipse RCP editor with a menu bar and a run/pause button]&lt;br /&gt;
&lt;br /&gt;
= Rami&#039;s JOGL tutorials =&lt;br /&gt;
* [http://ramisantina.com/blog/?p=8 Rami&#039;s Guide how to setup a JOGL Eclipse project]&lt;br /&gt;
&lt;br /&gt;
= [https://sites.google.com/site/justinscsstuff/jogl-tutorials Justin&#039;s Getting Started with JOGL 2 Tutorials] =&lt;br /&gt;
* [https://sites.google.com/site/justinscsstuff/jogl-tutorial-1 JOGL Tutorial 1 - Environment Setup]&lt;br /&gt;
* [https://sites.google.com/site/justinscsstuff/jogl-tutorial-2 JOGL Tutorial 2 - Creating a Window]&lt;br /&gt;
* [https://sites.google.com/site/justinscsstuff/jogl-tutorial-3 JOGL Tutorial 3 - Creating a Render Loop]&lt;br /&gt;
&lt;br /&gt;
= [http://ecs.csus.edu/~gordonvs/textbook.html Gordon] and Clevenger textbook =&lt;br /&gt;
&lt;br /&gt;
Shader-based modern OpenGL 3D graphics programming textbook entirely in JOGL. Also works as a JOGL primer. &amp;quot;Computer Graphics Programming in OpenGL with Java&amp;quot; by V. Scott Gordon and John L. Clevenger, published by [http://www.merclearning.com/titles/Computer_Graphics_Programming.html Mercury], available at [https://www.amazon.com/Computer-Graphics-Programming-OpenGL-Java/dp/1683920279/ Amazon].&lt;br /&gt;
&lt;br /&gt;
= Elect86&#039;s modern OpenGL examples =&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/elect86/modern-jogl-examples Source code on Github]&lt;br /&gt;
&lt;br /&gt;
= Nils Hoffmann&#039;s Netbeans Platform examples =&lt;br /&gt;
* [https://github.com/nilshoffmann/netbeans-jogl2 Source code on Github]&lt;br /&gt;
&lt;br /&gt;
= Courses =&lt;br /&gt;
* [http://www3.ntu.edu.sg/home/ehchua/programming/opengl/JOGL2.0.html Yet Another Tutorial on JOGL 2.0 - Including Nehe JOGL Port (Chua Hock-Chuan&#039;s notes at Nanyang Tech. University)]&lt;br /&gt;
* [http://www.informatik.uni-oldenburg.de/~trigger/opengl_course.html Johannes&#039;s Courses at University of Oldenburg (German)]&lt;br /&gt;
* [http://www.manuel-carcenac.com/courses/index.html Manuel&#039;s Courses at European University of Lefke]&lt;br /&gt;
** [http://www.manuel-carcenac.com/courses/Graphics_in_Java/index.htm Graphics in Java incl. 3D/JOGL]&lt;br /&gt;
** [http://www.manuel-carcenac.com/courses/Advanced_Graphics_in_Java_and_JOGL/index.htm Advanced 3D Graphics in Java and Java OpenGL (JOGL 2)]&lt;br /&gt;
&lt;br /&gt;
= [http://leolol.com/tutorials/graphics_tutorials.html LeoLoL.com Tutorials] (Currently unreachable) =&lt;br /&gt;
* [http://leolol.com/tutorials/graphics/lesson01.html Lesson 1 - Setting up a JOGL Template]&lt;br /&gt;
* [http://leolol.com/tutorials/graphics/lesson02.html Lesson 2 - Drawing basic 2D shapes]&lt;br /&gt;
* [http://leolol.com/tutorials/graphics/lesson03.html Lesson 3 - Adding colour]&lt;br /&gt;
* [http://leolol.com/tutorials/graphics/lesson04.html Lesson 4 - 3D Shapes and Rotation]&lt;br /&gt;
&lt;br /&gt;
= JOGL 1 tutorials =&lt;br /&gt;
* [http://www.felixgers.de/teaching/jogl/ Felix&#039;s OpenGL and JOGL]&lt;br /&gt;
&lt;br /&gt;
== [http://www.sjonesart.com/gl.php Ste3e&#039;s JOGL tutorials] ==&lt;br /&gt;
* [https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=true&amp;amp;srcid=0B9hhZie2D-fENGE3ZmZkOGItZGYzZC00ZDgzLTg0NTAtMTk1MTAwMzYxYzNk&amp;amp;hl=en Keys and Mouse]&lt;br /&gt;
* [https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=true&amp;amp;srcid=0B9hhZie2D-fEYTFiMmFiYzQtMDA0MC00ZWI0LWI1NjItODE3ZjM2OGUxOWEw&amp;amp;hl=en First-Person Shooter]&lt;br /&gt;
* [https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=true&amp;amp;srcid=0B9hhZie2D-fEZGI2NTZhZTMtYWYwNS00NTljLWFiNGQtM2UyNTYyNjAzNDYy&amp;amp;hl=en Vertex Buffer Objects]&lt;br /&gt;
* [https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=true&amp;amp;srcid=0B9hhZie2D-fENWFhODk0M2UtZDY0Ni00YWM5LWIxZGUtMzM0YzMxMmRlODgx&amp;amp;hl=en Shader Setup]&lt;br /&gt;
* [https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=true&amp;amp;srcid=0B9hhZie2D-fEMzNjNDBmMjUtNGQzNS00ODY0LWJkYmUtNDM5Y2I5ODc0Y2Nj&amp;amp;hl=en Texture Using Shaders]&lt;br /&gt;
&lt;br /&gt;
(The old (not quite up-to-date) JOGL Userguide is currently available [http://jogamp.org/jogl/doc/userguide/ here])&lt;/div&gt;</summary>
		<author><name>Gouessej</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Jogl_Tutorial&amp;diff=2006</id>
		<title>Jogl Tutorial</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Jogl_Tutorial&amp;diff=2006"/>
		<updated>2018-06-19T14:06:03Z</updated>

		<summary type="html">&lt;p&gt;Gouessej: Replaces the link to a github gist example I&amp;#039;m going to delete to an example stored into our wiki&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= JogAmp&#039;s Static =&lt;br /&gt;
* [{{SERVER}}/jogl/doc/Overview-OpenGL-Evolution-And-JOGL.html OpenGL Evolution &amp;amp;amp; JOGL]&lt;br /&gt;
*API Doc [ [{{SERVER}}/deployment/jogamp-next/javadoc/jogl/javadoc/ Public], Specs [ [{{SERVER}}/deployment/jogamp-next/javadoc/jogl/javadoc_nativewindow_spec/ Nativewindow], [{{SERVER}}/deployment/jogamp-next/javadoc/jogl/javadoc_jogl_spec/ JOGL] ] ]&lt;br /&gt;
* [{{SERVER}}/jogl/doc/HowToBuild.html How to Build JOGL]&lt;br /&gt;
* [{{SERVER}}/jogl/doc/userguide/ Userguide]&lt;br /&gt;
* [{{SERVER}}/jogl/doc/deployment/JOGL-DEPLOYMENT.html Deployment]&lt;br /&gt;
* [{{SERVER}}/deployment/jogamp-current/jogl-test-applets.html JOGL Test Applets]&lt;br /&gt;
** [{{SERVER}}/deployment/jogamp-current/jogl-applet-runner-newt-gears-normal.html using Object/Embed tags]&lt;br /&gt;
** [{{SERVER}}/deployment/jogamp-current/jogl-demos/applet-gears.html using the Applet Tag]&lt;br /&gt;
* [{{SERVER}}/jogl/doc/NEWT-Overview.html NEWT - High Performance Native Windowing Toolkit]&lt;br /&gt;
* [{{SERVER}}/git/?p=jogl-demos.git;a=blob;f=src/demos/es2/RawGL2ES2demo.java;hb=HEAD OpenGL GL2ES2 GLSL Standalone Example by Xerxes Rånby]&lt;br /&gt;
* [https://jogamp.org/wiki/index.php/Rudimentary_standalone_example_using_the_fixed_pipeline_by_Julien_Gouesse Rudimentary standalone example using the fixed pipeline by Julien Gouesse]&lt;br /&gt;
* [https://gist.github.com/xranby/ccbcfcaef341f5bd1ba8 Rudimentary standalone example using the fixed pipeline with OpenGL ES 1 by Xerxes Rånby]&lt;br /&gt;
&lt;br /&gt;
= JogAmp&#039;s Wiki =&lt;br /&gt;
* [[Downloading and installing JOGL|Downloading and installing JOGL]]&lt;br /&gt;
** [[Jogamp_Versioning_and_Releases|Versioning And Release Information]]&lt;br /&gt;
* [[Setting up a JogAmp project in your favorite IDE|Setting up a JogAmp project in your favorite IDE]]&lt;br /&gt;
* Deployment&lt;br /&gt;
** [[JogAmp JAR File Handling|JAR File Handling]]&lt;br /&gt;
** [[Using JOGL in a Java applet|Using JOGL in a Java Applet]]&lt;br /&gt;
** [[Using JOGL in Java Web Start|Using JOGL in Java Web Start]]&lt;br /&gt;
** [[Foreign Packaging|Foreign Packaging]]&lt;br /&gt;
* JOGL&lt;br /&gt;
** [[How to write cross GLProfile compatible shader using JOGL]]&lt;br /&gt;
** [[How to use the Debug and Trace GL Pipeline and Debug GL Context]]&lt;br /&gt;
** [[Using JOGL in AWT SWT and Swing|Using JOGL in AWT, SWT, and Swing]]&lt;br /&gt;
** [[How to use X11 displays]]&lt;br /&gt;
* [[Jogl_FAQ|FAQ]]&lt;br /&gt;
&lt;br /&gt;
= Hello Triangle and Texture =&lt;br /&gt;
[https://github.com/elect86/helloTriangle Simple sample] that features GL4, pure newt, glWindow options, animator, indexed drawing, dinamic attribute and frag data binding, interleaved data, vao, vbo (with normalization on one attribute), ibo (with shorts), uniform, glsl program (with specific suffix) and matrix jogl util, gl error check, key listener and right way to dispose. &lt;br /&gt;
&lt;br /&gt;
There is also a gl3 version and a Texture sample.&lt;br /&gt;
&lt;br /&gt;
All the samples are written in Java and [https://en.wikipedia.org/wiki/Kotlin_(programming_language) Kotlin].&lt;br /&gt;
&lt;br /&gt;
= Common Mistakes =&lt;br /&gt;
I suggest you to take a read to these two pages for a quick overview over the most common problems, it is a very useful reading, legacy sections are carefully signaled.&lt;br /&gt;
&lt;br /&gt;
[https://www.opengl.org/wiki/Common_Mistakes OpenGL]&lt;br /&gt;
[https://www.opengl.org/wiki/GLSL_:_common_mistakes GLSL]&lt;br /&gt;
&lt;br /&gt;
Another common mistake that may happen if you port code from C/C++ to Java is this one:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Caused by: com.jogamp.opengl.GLException: unpack pixel_buffer_object must be bound to call this method&lt;br /&gt;
	at jogamp.opengl.gl4.GL4bcImpl.checkBufferObject(GL4bcImpl.java:40621)&lt;br /&gt;
	at jogamp.opengl.gl4.GL4bcImpl.checkUnpackPBOBound(GL4bcImpl.java:40707)&lt;br /&gt;
	at jogamp.opengl.gl4.GL4bcImpl.glTexImage2D(GL4bcImpl.java:5535)&lt;br /&gt;
	at tests.gl320.Gl_320_fbo_blit.initTexture(Gl_320_fbo_blit.java:199)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This happens because in C/C++, when you just want to allocate the space for a texture using, for example, &#039;&#039;glTexImage2D&#039;&#039;, you should not pass 0 as the last argument, but &#039;&#039;null&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
N.B: The use of color picking is &#039;&#039;&#039;NOT&#039;&#039;&#039; recommended on any hardware whose palette is partially emulated.&lt;br /&gt;
&lt;br /&gt;
= Java OpenGL Samples Pack =&lt;br /&gt;
&lt;br /&gt;
The [https://github.com/elect86/jogl-samples Java OpenGL Samples Pack] (called unsurprisingly jogl-samples) is a port of the [http://www.g-truc.net/project-0026.html OpenGL Samples Pack], a collection of OpenGL samples based on the OpenGL &amp;quot;core profile&amp;quot; specifications.&lt;br /&gt;
&lt;br /&gt;
The project aims to promote the new OpenGL features making easier version transitions for OpenGL programmers with a complementary documentation for the OpenGL specification. Despite the fact that the OpenGL Samples Pack provides as simple (and dumb) as possible samples, it&#039;s not a tutorial for beginner but a project for programmers already familiar with OpenGL. The OpenGL Samples Pack is also a good OpenGL drivers feature test.&lt;br /&gt;
&lt;br /&gt;
These samples illustrate mostly of the OpenGL features from ES 2.0 up to the last GL extenstions, same of them usually also called AZDO (Almost Zero Driver Overhead).&lt;br /&gt;
&lt;br /&gt;
= Wade&#039;s JOGL tutorials =&lt;br /&gt;
* [http://wadeawalker.wordpress.com/2010/10/09/tutorial-a-cross-platform-workbench-program-using-java-opengl-and-eclipse/ Cross-platform workbench program using Eclipse and JOGL]&lt;br /&gt;
* [http://wadeawalker.wordpress.com/2010/10/17/tutorial-faster-rendering-with-vertex-buffer-objects/ Faster rendering with vertex buffer objects]&lt;br /&gt;
* [http://wadeawalker.wordpress.com/2010/10/24/tutorial-creating-native-binary-executables-for-multi-platform-java-apps-with-opengl-and-eclipse-rcp/ Creating native binary executables for multi-platform Java apps with OpenGL and Eclipse RCP]&lt;br /&gt;
* [http://wadeawalker.wordpress.com/2010/12/06/tutorial-displaying-java-opengl-in-an-eclipse-editor-with-a-menu-bar-and-a-runpause-button/ Displaying Java OpenGL in an Eclipse RCP editor with a menu bar and a run/pause button]&lt;br /&gt;
&lt;br /&gt;
= Rami&#039;s JOGL tutorials =&lt;br /&gt;
* [http://ramisantina.com/blog/?p=8 Rami&#039;s Guide how to setup a JOGL Eclipse project]&lt;br /&gt;
&lt;br /&gt;
= [https://sites.google.com/site/justinscsstuff/jogl-tutorials Justin&#039;s Getting Started with JOGL 2 Tutorials] =&lt;br /&gt;
* [https://sites.google.com/site/justinscsstuff/jogl-tutorial-1 JOGL Tutorial 1 - Environment Setup]&lt;br /&gt;
* [https://sites.google.com/site/justinscsstuff/jogl-tutorial-2 JOGL Tutorial 2 - Creating a Window]&lt;br /&gt;
* [https://sites.google.com/site/justinscsstuff/jogl-tutorial-3 JOGL Tutorial 3 - Creating a Render Loop]&lt;br /&gt;
&lt;br /&gt;
= [http://ecs.csus.edu/~gordonvs/textbook.html Gordon] and Clevenger textbook =&lt;br /&gt;
&lt;br /&gt;
Shader-based modern OpenGL 3D graphics programming textbook entirely in JOGL. Also works as a JOGL primer. &amp;quot;Computer Graphics Programming in OpenGL with Java&amp;quot; by V. Scott Gordon and John L. Clevenger, published by [http://www.merclearning.com/titles/Computer_Graphics_Programming.html Mercury], available at [https://www.amazon.com/Computer-Graphics-Programming-OpenGL-Java/dp/1683920279/ Amazon].&lt;br /&gt;
&lt;br /&gt;
= Elect86&#039;s modern OpenGL examples =&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/elect86/modern-jogl-examples Source code on Github]&lt;br /&gt;
&lt;br /&gt;
= Nils Hoffmann&#039;s Netbeans Platform examples =&lt;br /&gt;
* [https://github.com/nilshoffmann/netbeans-jogl2 Source code on Github]&lt;br /&gt;
&lt;br /&gt;
= Courses =&lt;br /&gt;
* [http://www3.ntu.edu.sg/home/ehchua/programming/opengl/JOGL2.0.html Yet Another Tutorial on JOGL 2.0 - Including Nehe JOGL Port (Chua Hock-Chuan&#039;s notes at Nanyang Tech. University)]&lt;br /&gt;
* [http://www.informatik.uni-oldenburg.de/~trigger/opengl_course.html Johannes&#039;s Courses at University of Oldenburg (German)]&lt;br /&gt;
* [http://www.manuel-carcenac.com/courses/index.html Manuel&#039;s Courses at European University of Lefke]&lt;br /&gt;
** [http://www.manuel-carcenac.com/courses/Graphics_in_Java/index.htm Graphics in Java incl. 3D/JOGL]&lt;br /&gt;
** [http://www.manuel-carcenac.com/courses/Advanced_Graphics_in_Java_and_JOGL/index.htm Advanced 3D Graphics in Java and Java OpenGL (JOGL 2)]&lt;br /&gt;
&lt;br /&gt;
= [http://leolol.com/tutorials/graphics_tutorials.html LeoLoL.com Tutorials] (Currently unreachable) =&lt;br /&gt;
* [http://leolol.com/tutorials/graphics/lesson01.html Lesson 1 - Setting up a JOGL Template]&lt;br /&gt;
* [http://leolol.com/tutorials/graphics/lesson02.html Lesson 2 - Drawing basic 2D shapes]&lt;br /&gt;
* [http://leolol.com/tutorials/graphics/lesson03.html Lesson 3 - Adding colour]&lt;br /&gt;
* [http://leolol.com/tutorials/graphics/lesson04.html Lesson 4 - 3D Shapes and Rotation]&lt;br /&gt;
&lt;br /&gt;
= JOGL 1 tutorials =&lt;br /&gt;
* [http://www.felixgers.de/teaching/jogl/ Felix&#039;s OpenGL and JOGL]&lt;br /&gt;
&lt;br /&gt;
== [http://www.sjonesart.com/gl.php Ste3e&#039;s JOGL tutorials] ==&lt;br /&gt;
* [https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=true&amp;amp;srcid=0B9hhZie2D-fENGE3ZmZkOGItZGYzZC00ZDgzLTg0NTAtMTk1MTAwMzYxYzNk&amp;amp;hl=en Keys and Mouse]&lt;br /&gt;
* [https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=true&amp;amp;srcid=0B9hhZie2D-fEYTFiMmFiYzQtMDA0MC00ZWI0LWI1NjItODE3ZjM2OGUxOWEw&amp;amp;hl=en First-Person Shooter]&lt;br /&gt;
* [https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=true&amp;amp;srcid=0B9hhZie2D-fEZGI2NTZhZTMtYWYwNS00NTljLWFiNGQtM2UyNTYyNjAzNDYy&amp;amp;hl=en Vertex Buffer Objects]&lt;br /&gt;
* [https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=true&amp;amp;srcid=0B9hhZie2D-fENWFhODk0M2UtZDY0Ni00YWM5LWIxZGUtMzM0YzMxMmRlODgx&amp;amp;hl=en Shader Setup]&lt;br /&gt;
* [https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=true&amp;amp;srcid=0B9hhZie2D-fEMzNjNDBmMjUtNGQzNS00ODY0LWJkYmUtNDM5Y2I5ODc0Y2Nj&amp;amp;hl=en Texture Using Shaders]&lt;br /&gt;
&lt;br /&gt;
(The old (not quite up-to-date) JOGL Userguide is currently available [http://jogamp.org/jogl/doc/userguide/ here])&lt;/div&gt;</summary>
		<author><name>Gouessej</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Rudimentary_standalone_example_using_the_fixed_pipeline_by_Julien_Gouesse&amp;diff=2005</id>
		<title>Rudimentary standalone example using the fixed pipeline by Julien Gouesse</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Rudimentary_standalone_example_using_the_fixed_pipeline_by_Julien_Gouesse&amp;diff=2005"/>
		<updated>2018-06-19T14:05:11Z</updated>

		<summary type="html">&lt;p&gt;Gouessej: Created page with &amp;quot;This program displays a simple 3D rendering of a polygon using JOGL. Please note though that this code is a demonstration of the use of JOGL and as such makes use of immediate...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This program displays a simple 3D rendering of a polygon using JOGL. Please note though that this code is a demonstration of the use of JOGL and as such makes use of immediate mode drawing commands; this serves to show how the conventional C style API is used through JOGL, but it is strongly recommended to make use of modern OpenGL techniques.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;import java.awt.*;&lt;br /&gt;
import java.awt.event.*;&lt;br /&gt;
import com.jogamp.opengl.*;&lt;br /&gt;
import com.jogamp.opengl.awt.GLCanvas;&lt;br /&gt;
import com.jogamp.opengl.fixedfunc.*;&lt;br /&gt;
import com.jogamp.opengl.util.Animator;&lt;br /&gt;
 &lt;br /&gt;
/**&lt;br /&gt;
 * Self-contained example (within a single class only to keep it simple) &lt;br /&gt;
 * displaying a rotating quad&lt;br /&gt;
 */&lt;br /&gt;
public class JOGLQuad implements GLEventListener {&lt;br /&gt;
 &lt;br /&gt;
	private float rotateT = 0.0f;&lt;br /&gt;
 &lt;br /&gt;
	@Override&lt;br /&gt;
	public void display(GLAutoDrawable gLDrawable) {&lt;br /&gt;
		final GL2 gl = gLDrawable.getGL().getGL2();&lt;br /&gt;
		gl.glClear(GL.GL_COLOR_BUFFER_BIT);&lt;br /&gt;
		gl.glClear(GL.GL_DEPTH_BUFFER_BIT);&lt;br /&gt;
		gl.glLoadIdentity();&lt;br /&gt;
		gl.glTranslatef(0.0f, 0.0f, -5.0f);&lt;br /&gt;
 &lt;br /&gt;
		// rotate about the three axes&lt;br /&gt;
		gl.glRotatef(rotateT, 1.0f, 0.0f, 0.0f);&lt;br /&gt;
		gl.glRotatef(rotateT, 0.0f, 1.0f, 0.0f);&lt;br /&gt;
		gl.glRotatef(rotateT, 0.0f, 0.0f, 1.0f);&lt;br /&gt;
 &lt;br /&gt;
		// Draw A Quad&lt;br /&gt;
		gl.glBegin(GL2.GL_QUADS);       &lt;br /&gt;
		gl.glColor3f(0.0f, 1.0f, 1.0f);   // set the color of the quad&lt;br /&gt;
		gl.glVertex3f(-1.0f, 1.0f, 0.0f);   // Top Left&lt;br /&gt;
		gl.glVertex3f( 1.0f, 1.0f, 0.0f);   // Top Right&lt;br /&gt;
		gl.glVertex3f( 1.0f,-1.0f, 0.0f);   // Bottom Right&lt;br /&gt;
		gl.glVertex3f(-1.0f,-1.0f, 0.0f);   // Bottom Left&lt;br /&gt;
		// Done Drawing The Quad&lt;br /&gt;
		gl.glEnd();                                                     &lt;br /&gt;
 &lt;br /&gt;
		// increasing rotation for the next iteration                   &lt;br /&gt;
		rotateT += 0.2f; &lt;br /&gt;
	}&lt;br /&gt;
 &lt;br /&gt;
	@Override&lt;br /&gt;
	public void init(GLAutoDrawable glDrawable) {&lt;br /&gt;
		GL2 gl = glDrawable.getGL().getGL2();&lt;br /&gt;
		gl.glShadeModel(GLLightingFunc.GL_SMOOTH);&lt;br /&gt;
		gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);&lt;br /&gt;
		gl.glClearDepth(1.0f);&lt;br /&gt;
		gl.glEnable(GL.GL_DEPTH_TEST);&lt;br /&gt;
		gl.glDepthFunc(GL.GL_LEQUAL);&lt;br /&gt;
		gl.glHint(GL2ES1.GL_PERSPECTIVE_CORRECTION_HINT, GL.GL_NICEST);&lt;br /&gt;
	}&lt;br /&gt;
 &lt;br /&gt;
	@Override&lt;br /&gt;
	public void reshape(GLAutoDrawable gLDrawable, int x, int y, int width, int height) {&lt;br /&gt;
		GL2 gl = gLDrawable.getGL().getGL2();&lt;br /&gt;
		final float aspect = (float) width / (float) height;&lt;br /&gt;
		gl.glMatrixMode(GLMatrixFunc.GL_PROJECTION);&lt;br /&gt;
		gl.glLoadIdentity();&lt;br /&gt;
		final float fh = 0.5f;&lt;br /&gt;
		final float fw = fh * aspect;&lt;br /&gt;
		gl.glFrustumf(-fw, fw, -fh, fh, 1.0f, 1000.0f);&lt;br /&gt;
		gl.glMatrixMode(GLMatrixFunc.GL_MODELVIEW);&lt;br /&gt;
		gl.glLoadIdentity();&lt;br /&gt;
	}&lt;br /&gt;
 &lt;br /&gt;
	@Override&lt;br /&gt;
	public void dispose(GLAutoDrawable gLDrawable) {&lt;br /&gt;
	}&lt;br /&gt;
 &lt;br /&gt;
	public static void main(String[] args) {&lt;br /&gt;
		final GLCanvas canvas = new GLCanvas();&lt;br /&gt;
		final Frame frame = new Frame(&amp;quot;Jogl Quad drawing&amp;quot;);&lt;br /&gt;
		final Animator animator = new Animator(canvas);&lt;br /&gt;
		canvas.addGLEventListener(new JOGLQuad());&lt;br /&gt;
		frame.add(canvas);&lt;br /&gt;
		frame.setSize(640, 480);&lt;br /&gt;
		frame.setResizable(false);&lt;br /&gt;
		frame.addWindowListener(new WindowAdapter() {&lt;br /&gt;
			public void windowClosing(WindowEvent e) {&lt;br /&gt;
				animator.stop();&lt;br /&gt;
				frame.dispose();&lt;br /&gt;
				System.exit(0);&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
		frame.setVisible(true);&lt;br /&gt;
		animator.start();&lt;br /&gt;
		canvas.requestFocus();&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gouessej</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Talk:SW_Tracking_Report_Objectives_for_the_release_2.3.3&amp;diff=2004</id>
		<title>Talk:SW Tracking Report Objectives for the release 2.3.3</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Talk:SW_Tracking_Report_Objectives_for_the_release_2.3.3&amp;diff=2004"/>
		<updated>2018-06-19T10:53:19Z</updated>

		<summary type="html">&lt;p&gt;Gouessej: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I broke something :s I only get a white page... --[[User:Gouessej|Gouessej]] ([[User talk:Gouessej|talk]]) 12:53, 19 June 2018 (CEST)&lt;/div&gt;</summary>
		<author><name>Gouessej</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Talk:SW_Tracking_Report_Objectives_for_the_release_2.3.3&amp;diff=2003</id>
		<title>Talk:SW Tracking Report Objectives for the release 2.3.3</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Talk:SW_Tracking_Report_Objectives_for_the_release_2.3.3&amp;diff=2003"/>
		<updated>2018-06-19T10:53:07Z</updated>

		<summary type="html">&lt;p&gt;Gouessej: Created page with &amp;quot;I broke something :s I only get a white page...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I broke something :s I only get a white page...&lt;/div&gt;</summary>
		<author><name>Gouessej</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Java3D_FAQ&amp;diff=1992</id>
		<title>Java3D FAQ</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Java3D_FAQ&amp;diff=1992"/>
		<updated>2017-12-01T08:55:02Z</updated>

		<summary type="html">&lt;p&gt;Gouessej: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Where can I download Java3D?&lt;br /&gt;
** http://jogamp.org/deployment/java3d/1.6.0-final/jogamp-java3d.7z&lt;br /&gt;
* What else do I need to use Java3D?&lt;br /&gt;
** http://jogamp.org/deployment/jogamp-current/archive/jogamp-all-platforms.7z JogAmp&lt;br /&gt;
* How can I install Java3D?&lt;br /&gt;
** Follow [https://jogamp.org/wiki/index.php/Downloading_and_installing_Java3D these instructions]&lt;br /&gt;
* Where can I get the source code of Java3D?&lt;br /&gt;
** https://github.com/hharrison/java3d-core - core&lt;br /&gt;
** https://github.com/hharrison/java3d-utils - utils&lt;br /&gt;
** https://github.com/hharrison/vecmath - vecmath&lt;br /&gt;
* Where can I get the Java API Documentation of Java3D?&lt;br /&gt;
** https://jogamp.org/wiki/index.php/Java3D_API_Documentation&lt;br /&gt;
* Where can I get any help about Java3D?&lt;br /&gt;
** You can get some help on [http://forum.jogamp.org/java3d-f3728156.html the subsection dedicated to Java3D on our forum] and on [http://jogamp.org/wiki/index.php/Chatroom#Freenode_IRC_Channel our IRC chatroom]&lt;br /&gt;
* Where can I find any examples using Java3D?&lt;br /&gt;
** You can find some examples using Java3D 1.7.0 on https://github.com/philjord/java3d-examples and Java3D 1.6.0 on http://www.java3d.org&lt;br /&gt;
* Where can I report a bug in Java3D?&lt;br /&gt;
** https://github.com/hharrison/java3d-core/issues and https://jogamp.org/bugzilla/&lt;/div&gt;</summary>
		<author><name>Gouessej</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Jogl_Tutorial&amp;diff=1990</id>
		<title>Jogl Tutorial</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Jogl_Tutorial&amp;diff=1990"/>
		<updated>2017-07-25T15:24:01Z</updated>

		<summary type="html">&lt;p&gt;Gouessej: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= JogAmp&#039;s Static =&lt;br /&gt;
* [{{SERVER}}/jogl/doc/Overview-OpenGL-Evolution-And-JOGL.html OpenGL Evolution &amp;amp;amp; JOGL]&lt;br /&gt;
*API Doc [ [{{SERVER}}/deployment/jogamp-next/javadoc/jogl/javadoc/ Public], Specs [ [{{SERVER}}/deployment/jogamp-next/javadoc/jogl/javadoc_nativewindow_spec/ Nativewindow], [{{SERVER}}/deployment/jogamp-next/javadoc/jogl/javadoc_jogl_spec/ JOGL] ] ]&lt;br /&gt;
* [{{SERVER}}/jogl/doc/HowToBuild.html How to Build JOGL]&lt;br /&gt;
* [{{SERVER}}/jogl/doc/userguide/ Userguide]&lt;br /&gt;
* [{{SERVER}}/jogl/doc/deployment/JOGL-DEPLOYMENT.html Deployment]&lt;br /&gt;
* [{{SERVER}}/deployment/jogamp-current/jogl-test-applets.html JOGL Test Applets]&lt;br /&gt;
** [{{SERVER}}/deployment/jogamp-current/jogl-applet-runner-newt-gears-normal.html using Object/Embed tags]&lt;br /&gt;
** [{{SERVER}}/deployment/jogamp-current/jogl-demos/applet-gears.html using the Applet Tag]&lt;br /&gt;
* [{{SERVER}}/jogl/doc/NEWT-Overview.html NEWT - High Performance Native Windowing Toolkit]&lt;br /&gt;
* [{{SERVER}}/git/?p=jogl-demos.git;a=blob;f=src/demos/es2/RawGL2ES2demo.java;hb=HEAD OpenGL GL2ES2 GLSL Standalone Example by Xerxes Rånby]&lt;br /&gt;
* [https://gist.github.com/gouessej/3420e2b6f632efdddf98 Rudimentary standalone example using the fixed pipeline by Julien Gouesse]&lt;br /&gt;
* [https://gist.github.com/xranby/ccbcfcaef341f5bd1ba8 Rudimentary standalone example using the fixed pipeline with OpenGL ES 1 by Xerxes Rånby]&lt;br /&gt;
&lt;br /&gt;
= JogAmp&#039;s Wiki =&lt;br /&gt;
* [[Downloading and installing JOGL|Downloading and installing JOGL]]&lt;br /&gt;
** [[Jogamp_Versioning_and_Releases|Versioning And Release Information]]&lt;br /&gt;
* [[Setting up a JogAmp project in your favorite IDE|Setting up a JogAmp project in your favorite IDE]]&lt;br /&gt;
* Deployment&lt;br /&gt;
** [[JogAmp JAR File Handling|JAR File Handling]]&lt;br /&gt;
** [[Using JOGL in a Java applet|Using JOGL in a Java Applet]]&lt;br /&gt;
** [[Using JOGL in Java Web Start|Using JOGL in Java Web Start]]&lt;br /&gt;
** [[Foreign Packaging|Foreign Packaging]]&lt;br /&gt;
* JOGL&lt;br /&gt;
** [[How to write cross GLProfile compatible shader using JOGL]]&lt;br /&gt;
** [[How to use the Debug and Trace GL Pipeline and Debug GL Context]]&lt;br /&gt;
** [[Using JOGL in AWT SWT and Swing|Using JOGL in AWT, SWT, and Swing]]&lt;br /&gt;
** [[How to use X11 displays]]&lt;br /&gt;
* [[Jogl_FAQ|FAQ]]&lt;br /&gt;
&lt;br /&gt;
= Hello Triangle and Texture =&lt;br /&gt;
[https://github.com/elect86/helloTriangle Simple sample] that features GL4, pure newt, glWindow options, animator, indexed drawing, dinamic attribute and frag data binding, interleaved data, vao, vbo (with normalization on one attribute), ibo (with shorts), uniform, glsl program (with specific suffix) and matrix jogl util, gl error check, key listener and right way to dispose. &lt;br /&gt;
&lt;br /&gt;
There is also a gl3 version and a Texture sample.&lt;br /&gt;
&lt;br /&gt;
All the samples are written in Java and [https://en.wikipedia.org/wiki/Kotlin_(programming_language) Kotlin].&lt;br /&gt;
&lt;br /&gt;
= Common Mistakes =&lt;br /&gt;
I suggest you to take a read to these two pages for a quick overview over the most common problems, it is a very useful reading, legacy sections are carefully signaled.&lt;br /&gt;
&lt;br /&gt;
[https://www.opengl.org/wiki/Common_Mistakes OpenGL]&lt;br /&gt;
[https://www.opengl.org/wiki/GLSL_:_common_mistakes GLSL]&lt;br /&gt;
&lt;br /&gt;
Another common mistake that may happen if you port code from C/C++ to Java is this one:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Caused by: com.jogamp.opengl.GLException: unpack pixel_buffer_object must be bound to call this method&lt;br /&gt;
	at jogamp.opengl.gl4.GL4bcImpl.checkBufferObject(GL4bcImpl.java:40621)&lt;br /&gt;
	at jogamp.opengl.gl4.GL4bcImpl.checkUnpackPBOBound(GL4bcImpl.java:40707)&lt;br /&gt;
	at jogamp.opengl.gl4.GL4bcImpl.glTexImage2D(GL4bcImpl.java:5535)&lt;br /&gt;
	at tests.gl320.Gl_320_fbo_blit.initTexture(Gl_320_fbo_blit.java:199)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This happens because in C/C++, when you just want to allocate the space for a texture using, for example, &#039;&#039;glTexImage2D&#039;&#039;, you should not pass 0 as the last argument, but &#039;&#039;null&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
N.B: The use of color picking is &#039;&#039;&#039;NOT&#039;&#039;&#039; recommended on any hardware whose palette is partially emulated.&lt;br /&gt;
&lt;br /&gt;
= Java OpenGL Samples Pack =&lt;br /&gt;
&lt;br /&gt;
The [https://github.com/elect86/jogl-samples Java OpenGL Samples Pack] (called unsurprisingly jogl-samples) is a port of the [http://www.g-truc.net/project-0026.html OpenGL Samples Pack], a collection of OpenGL samples based on the OpenGL &amp;quot;core profile&amp;quot; specifications.&lt;br /&gt;
&lt;br /&gt;
The project aims to promote the new OpenGL features making easier version transitions for OpenGL programmers with a complementary documentation for the OpenGL specification. Despite the fact that the OpenGL Samples Pack provides as simple (and dumb) as possible samples, it&#039;s not a tutorial for beginner but a project for programmers already familiar with OpenGL. The OpenGL Samples Pack is also a good OpenGL drivers feature test.&lt;br /&gt;
&lt;br /&gt;
These samples illustrate mostly of the OpenGL features from ES 2.0 up to the last GL extenstions, same of them usually also called AZDO (Almost Zero Driver Overhead).&lt;br /&gt;
&lt;br /&gt;
= Wade&#039;s JOGL tutorials =&lt;br /&gt;
* [http://wadeawalker.wordpress.com/2010/10/09/tutorial-a-cross-platform-workbench-program-using-java-opengl-and-eclipse/ Cross-platform workbench program using Eclipse and JOGL]&lt;br /&gt;
* [http://wadeawalker.wordpress.com/2010/10/17/tutorial-faster-rendering-with-vertex-buffer-objects/ Faster rendering with vertex buffer objects]&lt;br /&gt;
* [http://wadeawalker.wordpress.com/2010/10/24/tutorial-creating-native-binary-executables-for-multi-platform-java-apps-with-opengl-and-eclipse-rcp/ Creating native binary executables for multi-platform Java apps with OpenGL and Eclipse RCP]&lt;br /&gt;
* [http://wadeawalker.wordpress.com/2010/12/06/tutorial-displaying-java-opengl-in-an-eclipse-editor-with-a-menu-bar-and-a-runpause-button/ Displaying Java OpenGL in an Eclipse RCP editor with a menu bar and a run/pause button]&lt;br /&gt;
&lt;br /&gt;
= Rami&#039;s JOGL tutorials =&lt;br /&gt;
* [http://ramisantina.com/blog/?p=8 Rami&#039;s Guide how to setup a JOGL Eclipse project]&lt;br /&gt;
&lt;br /&gt;
= [https://sites.google.com/site/justinscsstuff/jogl-tutorials Justin&#039;s Getting Started with JOGL 2 Tutorials] =&lt;br /&gt;
* [https://sites.google.com/site/justinscsstuff/jogl-tutorial-1 JOGL Tutorial 1 - Environment Setup]&lt;br /&gt;
* [https://sites.google.com/site/justinscsstuff/jogl-tutorial-2 JOGL Tutorial 2 - Creating a Window]&lt;br /&gt;
* [https://sites.google.com/site/justinscsstuff/jogl-tutorial-3 JOGL Tutorial 3 - Creating a Render Loop]&lt;br /&gt;
&lt;br /&gt;
= [http://ecs.csus.edu/~gordonvs/textbook.html Gordon] and Clevenger textbook =&lt;br /&gt;
&lt;br /&gt;
Shader-based modern OpenGL 3D graphics programming textbook entirely in JOGL. Also works as a JOGL primer. &amp;quot;Computer Graphics Programming in OpenGL with Java&amp;quot; by V. Scott Gordon and John L. Clevenger, published by [http://www.merclearning.com/titles/Computer_Graphics_Programming.html Mercury], available at [https://www.amazon.com/Computer-Graphics-Programming-OpenGL-Java/dp/1683920279/ Amazon].&lt;br /&gt;
&lt;br /&gt;
= Elect86&#039;s modern OpenGL examples =&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/elect86/modern-jogl-examples Source code on Github]&lt;br /&gt;
&lt;br /&gt;
= Nils Hoffmann&#039;s Netbeans Platform examples =&lt;br /&gt;
* [https://github.com/nilshoffmann/netbeans-jogl2 Source code on Github]&lt;br /&gt;
&lt;br /&gt;
= Courses =&lt;br /&gt;
* [http://www3.ntu.edu.sg/home/ehchua/programming/opengl/JOGL2.0.html Yet Another Tutorial on JOGL 2.0 - Including Nehe JOGL Port (Chua Hock-Chuan&#039;s notes at Nanyang Tech. University)]&lt;br /&gt;
* [http://www.informatik.uni-oldenburg.de/~trigger/opengl_course.html Johannes&#039;s Courses at University of Oldenburg (German)]&lt;br /&gt;
* [http://www.manuel-carcenac.com/courses/index.html Manuel&#039;s Courses at European University of Lefke]&lt;br /&gt;
** [http://www.manuel-carcenac.com/courses/Graphics_in_Java/index.htm Graphics in Java incl. 3D/JOGL]&lt;br /&gt;
** [http://www.manuel-carcenac.com/courses/Advanced_Graphics_in_Java_and_JOGL/index.htm Advanced 3D Graphics in Java and Java OpenGL (JOGL 2)]&lt;br /&gt;
&lt;br /&gt;
= [http://leolol.com/tutorials/graphics_tutorials.html LeoLoL.com Tutorials] (Currently unreachable) =&lt;br /&gt;
* [http://leolol.com/tutorials/graphics/lesson01.html Lesson 1 - Setting up a JOGL Template]&lt;br /&gt;
* [http://leolol.com/tutorials/graphics/lesson02.html Lesson 2 - Drawing basic 2D shapes]&lt;br /&gt;
* [http://leolol.com/tutorials/graphics/lesson03.html Lesson 3 - Adding colour]&lt;br /&gt;
* [http://leolol.com/tutorials/graphics/lesson04.html Lesson 4 - 3D Shapes and Rotation]&lt;br /&gt;
&lt;br /&gt;
= JOGL 1 tutorials =&lt;br /&gt;
* [http://www.felixgers.de/teaching/jogl/ Felix&#039;s OpenGL and JOGL]&lt;br /&gt;
&lt;br /&gt;
== [http://www.sjonesart.com/gl.php Ste3e&#039;s JOGL tutorials] ==&lt;br /&gt;
* [https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=true&amp;amp;srcid=0B9hhZie2D-fENGE3ZmZkOGItZGYzZC00ZDgzLTg0NTAtMTk1MTAwMzYxYzNk&amp;amp;hl=en Keys and Mouse]&lt;br /&gt;
* [https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=true&amp;amp;srcid=0B9hhZie2D-fEYTFiMmFiYzQtMDA0MC00ZWI0LWI1NjItODE3ZjM2OGUxOWEw&amp;amp;hl=en First-Person Shooter]&lt;br /&gt;
* [https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=true&amp;amp;srcid=0B9hhZie2D-fEZGI2NTZhZTMtYWYwNS00NTljLWFiNGQtM2UyNTYyNjAzNDYy&amp;amp;hl=en Vertex Buffer Objects]&lt;br /&gt;
* [https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=true&amp;amp;srcid=0B9hhZie2D-fENWFhODk0M2UtZDY0Ni00YWM5LWIxZGUtMzM0YzMxMmRlODgx&amp;amp;hl=en Shader Setup]&lt;br /&gt;
* [https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=true&amp;amp;srcid=0B9hhZie2D-fEMzNjNDBmMjUtNGQzNS00ODY0LWJkYmUtNDM5Y2I5ODc0Y2Nj&amp;amp;hl=en Texture Using Shaders]&lt;br /&gt;
&lt;br /&gt;
(The old (not quite up-to-date) JOGL Userguide is currently available [http://jogamp.org/jogl/doc/userguide/ here])&lt;/div&gt;</summary>
		<author><name>Gouessej</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Java3D_FAQ&amp;diff=1983</id>
		<title>Java3D FAQ</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Java3D_FAQ&amp;diff=1983"/>
		<updated>2017-05-04T11:21:30Z</updated>

		<summary type="html">&lt;p&gt;Gouessej: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Where can I download Java3D?&lt;br /&gt;
** http://jogamp.org/deployment/java3d/1.6.0-pre12/jogamp-java3d.7z&lt;br /&gt;
* What else do I need to use Java3D?&lt;br /&gt;
** http://jogamp.org/deployment/jogamp-current/archive/jogamp-all-platforms.7z JogAmp&lt;br /&gt;
* How can I install Java3D?&lt;br /&gt;
** Follow [https://jogamp.org/wiki/index.php/Downloading_and_installing_Java3D these instructions]&lt;br /&gt;
* Where can I get the source code of Java3D?&lt;br /&gt;
** https://github.com/hharrison/java3d-core - core&lt;br /&gt;
** https://github.com/hharrison/java3d-utils - utils&lt;br /&gt;
** https://github.com/hharrison/vecmath - vecmath&lt;br /&gt;
* Where can I get the Java API Documentation of Java3D?&lt;br /&gt;
** https://jogamp.org/wiki/index.php/Java3D_API_Documentation&lt;br /&gt;
* Where can I get any help about Java3D?&lt;br /&gt;
** You can get some help on [http://forum.jogamp.org/java3d-f3728156.html the subsection dedicated to Java3D on our forum] and on [http://jogamp.org/wiki/index.php/Chatroom#Freenode_IRC_Channel our IRC chatroom]&lt;br /&gt;
* Where can I find any examples using Java3D?&lt;br /&gt;
** You can find some examples using Java3D 1.7.0 on https://github.com/philjord/java3d-examples and Java3D 1.6.0 on http://www.java3d.org&lt;br /&gt;
* Where can I report a bug in Java3D?&lt;br /&gt;
** https://github.com/hharrison/java3d-core/issues and https://jogamp.org/bugzilla/&lt;/div&gt;</summary>
		<author><name>Gouessej</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Java3D_API_Documentation&amp;diff=1982</id>
		<title>Java3D API Documentation</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Java3D_API_Documentation&amp;diff=1982"/>
		<updated>2017-05-04T11:17:59Z</updated>

		<summary type="html">&lt;p&gt;Gouessej: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Java3D 1.6 =&lt;br /&gt;
&lt;br /&gt;
The Java3D (all-in-one, i.e core + utils + vecmath) 1.6.0 API Documentation is available here:&lt;br /&gt;
&lt;br /&gt;
[http://jogamp.org/deployment/java3d/1.6.0-final/javadoc/ http://jogamp.org/deployment/java3d/1.6.0-final/javadoc/]&lt;br /&gt;
&lt;br /&gt;
The Java3D 1.6.0 API Documentation is composed of three parts: &lt;br /&gt;
&lt;br /&gt;
[http://jogamp.org/deployment/java3d/1.6.0-final/j3dcore/javadoc/ Java3D core API Documentation]&lt;br /&gt;
&lt;br /&gt;
[http://jogamp.org/deployment/java3d/1.6.0-final/j3dutils/javadoc/ Java3D utils API Documentation]&lt;br /&gt;
&lt;br /&gt;
[http://jogamp.org/deployment/java3d/1.6.0-final/vecmath/javadoc/ Java3D vecmath API Documentation]&lt;br /&gt;
&lt;br /&gt;
= Java3D 1.7 =&lt;br /&gt;
&lt;br /&gt;
The Java3D (all-in-one, i.e core + utils + vecmath) 1.7.0 API Documentation is available here:&lt;br /&gt;
&lt;br /&gt;
[http://jogamp.org/deployment/java3d/1.7.0-pre1/javadoc/ http://jogamp.org/deployment/java3d/1.7.0-pre1/javadoc/]&lt;br /&gt;
&lt;br /&gt;
The Java3D 1.7.0 API Documentation is composed of three parts: &lt;br /&gt;
&lt;br /&gt;
[http://jogamp.org/deployment/java3d/1.7.0-pre1/j3dcore/javadoc/ Java3D core API Documentation]&lt;br /&gt;
&lt;br /&gt;
[http://jogamp.org/deployment/java3d/1.7.0-pre1/j3dutils/javadoc/ Java3D utils API Documentation]&lt;br /&gt;
&lt;br /&gt;
[http://jogamp.org/deployment/java3d/1.7.0-pre1/vecmath/javadoc/ Java3D vecmath API Documentation]&lt;/div&gt;</summary>
		<author><name>Gouessej</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Java3D_API_Documentation&amp;diff=1981</id>
		<title>Java3D API Documentation</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Java3D_API_Documentation&amp;diff=1981"/>
		<updated>2017-05-04T11:17:02Z</updated>

		<summary type="html">&lt;p&gt;Gouessej: Adds the documentation of Java3D 1.7&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Java3D (all-in-one, i.e core + utils + vecmath) 1.6.0 API Documentation is available here:&lt;br /&gt;
&lt;br /&gt;
[http://jogamp.org/deployment/java3d/1.6.0-final/javadoc/ http://jogamp.org/deployment/java3d/1.6.0-final/javadoc/]&lt;br /&gt;
&lt;br /&gt;
The Java3D 1.6.0 API Documentation is composed of three parts: &lt;br /&gt;
&lt;br /&gt;
[http://jogamp.org/deployment/java3d/1.6.0-final/j3dcore/javadoc/ Java3D core API Documentation]&lt;br /&gt;
&lt;br /&gt;
[http://jogamp.org/deployment/java3d/1.6.0-final/j3dutils/javadoc/ Java3D utils API Documentation]&lt;br /&gt;
&lt;br /&gt;
[http://jogamp.org/deployment/java3d/1.6.0-final/vecmath/javadoc/ Java3D vecmath API Documentation]&lt;br /&gt;
&lt;br /&gt;
The Java3D (all-in-one, i.e core + utils + vecmath) 1.7.0 API Documentation is available here:&lt;br /&gt;
&lt;br /&gt;
[http://jogamp.org/deployment/java3d/1.7.0-pre1/javadoc/ http://jogamp.org/deployment/java3d/1.7.0-pre1/javadoc/]&lt;br /&gt;
&lt;br /&gt;
The Java3D 1.7.0 API Documentation is composed of three parts: &lt;br /&gt;
&lt;br /&gt;
[http://jogamp.org/deployment/java3d/1.7.0-pre1/j3dcore/javadoc/ Java3D core API Documentation]&lt;br /&gt;
&lt;br /&gt;
[http://jogamp.org/deployment/java3d/1.7.0-pre1/j3dutils/javadoc/ Java3D utils API Documentation]&lt;br /&gt;
&lt;br /&gt;
[http://jogamp.org/deployment/java3d/1.7.0-pre1/vecmath/javadoc/ Java3D vecmath API Documentation]&lt;/div&gt;</summary>
		<author><name>Gouessej</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Java3D_API_Documentation&amp;diff=1979</id>
		<title>Java3D API Documentation</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Java3D_API_Documentation&amp;diff=1979"/>
		<updated>2017-04-16T11:52:56Z</updated>

		<summary type="html">&lt;p&gt;Gouessej: Provides the all-in-one Java3D API documentation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Java3D (all-in-one, i.e core + utils + vecmath) 1.6.0 API Documentation is available here:&lt;br /&gt;
&lt;br /&gt;
[http://jogamp.org/deployment/java3d/1.6.0-final/javadoc/ http://jogamp.org/deployment/java3d/1.6.0-final/javadoc/]&lt;br /&gt;
&lt;br /&gt;
The Java3D 1.6.0 API Documentation is composed of three parts: &lt;br /&gt;
&lt;br /&gt;
[http://jogamp.org/deployment/java3d/1.6.0-final/j3dcore/javadoc/ Java3D core API Documentation]&lt;br /&gt;
&lt;br /&gt;
[http://jogamp.org/deployment/java3d/1.6.0-final/j3dutils/javadoc/ Java3D utils API Documentation]&lt;br /&gt;
&lt;br /&gt;
[http://jogamp.org/deployment/java3d/1.6.0-final/vecmath/javadoc/ Java3D vecmath API Documentation]&lt;/div&gt;</summary>
		<author><name>Gouessej</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Java3D_FAQ&amp;diff=1978</id>
		<title>Java3D FAQ</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Java3D_FAQ&amp;diff=1978"/>
		<updated>2017-04-15T11:59:11Z</updated>

		<summary type="html">&lt;p&gt;Gouessej: Mentions the Java API Documentation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Where can I download Java3D?&lt;br /&gt;
** http://jogamp.org/deployment/java3d/1.6.0-pre12/jogamp-java3d.7z&lt;br /&gt;
* What else do I need to use Java3D?&lt;br /&gt;
** http://jogamp.org/deployment/jogamp-current/archive/jogamp-all-platforms.7z JogAmp&lt;br /&gt;
* How can I install Java3D?&lt;br /&gt;
** Follow [https://jogamp.org/wiki/index.php/Downloading_and_installing_Java3D these instructions]&lt;br /&gt;
* Where can I get the source code of Java3D?&lt;br /&gt;
** https://github.com/hharrison/java3d-core - core&lt;br /&gt;
** https://github.com/hharrison/java3d-utils - utils&lt;br /&gt;
** https://github.com/hharrison/vecmath - vecmath&lt;br /&gt;
* Where can I get the Java API Documentation of Java3D?&lt;br /&gt;
** https://jogamp.org/wiki/index.php/Java3D_API_Documentation&lt;br /&gt;
* Where can I get any help about Java3D?&lt;br /&gt;
** You can get some help on [http://forum.jogamp.org/java3d-f3728156.html the subsection dedicated to Java3D on our forum] and on [http://jogamp.org/wiki/index.php/Chatroom#Freenode_IRC_Channel our IRC chatroom]&lt;br /&gt;
* Where can I find any examples using Java3D?&lt;br /&gt;
** You can find some examples using Java3D on http://www.java3d.org&lt;br /&gt;
* Where can I report a bug in Java3D?&lt;br /&gt;
** https://github.com/hharrison/java3d-core/issues and https://jogamp.org/bugzilla/&lt;/div&gt;</summary>
		<author><name>Gouessej</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Java3D_API_Documentation&amp;diff=1977</id>
		<title>Java3D API Documentation</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Java3D_API_Documentation&amp;diff=1977"/>
		<updated>2017-04-15T11:55:10Z</updated>

		<summary type="html">&lt;p&gt;Gouessej: Created page with &amp;quot;The Java3D 1.6.0 API Documentation is composed of three parts:   [http://jogamp.org/deployment/java3d/1.6.0-final/j3dcore/javadoc/ Java3D core API Documentation]  [http://joga...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Java3D 1.6.0 API Documentation is composed of three parts: &lt;br /&gt;
&lt;br /&gt;
[http://jogamp.org/deployment/java3d/1.6.0-final/j3dcore/javadoc/ Java3D core API Documentation]&lt;br /&gt;
&lt;br /&gt;
[http://jogamp.org/deployment/java3d/1.6.0-final/j3dutils/javadoc/ Java3D utils API Documentation]&lt;br /&gt;
&lt;br /&gt;
[http://jogamp.org/deployment/java3d/1.6.0-final/vecmath/javadoc/ Java3D vecmath API Documentation]&lt;/div&gt;</summary>
		<author><name>Gouessej</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Main_Page&amp;diff=1976</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Main_Page&amp;diff=1976"/>
		<updated>2017-04-15T11:51:03Z</updated>

		<summary type="html">&lt;p&gt;Gouessej: Adds a link to a dedicated page for the Java3D API Documentation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
Welcome to the [{{SERVER}}/ JogAmp] wiki. It documents JOGL, JOCL and JOAL, the cross-platform bindings to the OpenGL, OpenCL, and OpenAL APIs.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{| style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;Getting Started&amp;lt;/h3&amp;gt;&lt;br /&gt;
*[[Downloading and installing JOGL|Downloading and installing]]&lt;br /&gt;
**[[Jogamp Versioning and Releases|Versioning and Releases]]&lt;br /&gt;
*[[Setting up a JogAmp project in your favorite IDE|Setting up a JogAmp project in your favorite IDE]]&lt;br /&gt;
*[[Jogamp SCM Repositories|Source Code Repositories]]&lt;br /&gt;
*[[SW Tracking|Tracking Reports]]&lt;br /&gt;
*[{{SERVER}}/chuck/ Build and Test Server]&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;Community&amp;lt;/h3&amp;gt;&lt;br /&gt;
*[[How to Contribute|Contribute to JogAmp]]&lt;br /&gt;
*[[How to Build|Build JogAmp]]&lt;br /&gt;
*[[Maintainer and Contacts]]&lt;br /&gt;
*[[Jogl FAQ#Bugreports &amp;amp; Testing|Report a bug]]&lt;br /&gt;
**[{{SERVER}}/bugzilla/ Bugzilla]&lt;br /&gt;
*[http://forum.jogamp.org/ Ask a question in the forum]&lt;br /&gt;
*[[chatroom|JogAmp IRC]]&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot; width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;lt;h1&amp;gt;JogAmp Modules&amp;lt;/h1&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;Roadmaps&amp;lt;/h3&amp;gt;&lt;br /&gt;
* [[SW Tracking Report Objectives for the release 2.4.0|2.4.0]]&lt;br /&gt;
* [[SW Tracking Report Objectives for the release 2.3.3|2.3.3]], [[SW Tracking Report Objectives for the release 2.3.2|2.3.2]], [[SW Tracking Report Objectives for the release 2.3.1|2.3.1]], [[SW Tracking Report Objectives for the release 2.3.0|2.3.0]]&lt;br /&gt;
* [[SW Tracking Report Objectives for the release 2.2.4|2.2.4]], [[SW Tracking Report Objectives for the release 2.2.3|2.2.3]], [[SW Tracking Report Objectives for the release 2.2.2|2.2.2]], [[SW Tracking Report Objectives for the release 2.2.1|2.2.1]], [[SW Tracking Report Objectives for the release 2.2.0|2.2.0]]&lt;br /&gt;
* [[SW Tracking Report Objectives for the release 2.1.5|2.1.5]], [[SW Tracking Report Objectives for the release 2.1.4|2.1.4]], [[SW Tracking Report Objectives for the release 2.1.3|2.1.3]], [[SW Tracking Report Objectives for the release 2.1.2|2.1.2]], [[SW Tracking Report Objectives for the release 2.1.1|2.1.1]], [[SW Tracking Report Objectives for the release 2.1.0|2.1.0]]&lt;br /&gt;
* [[SW Tracking Report Objectives for the release 2.0.2 of JOGL|2.0.2]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;JOGL&amp;lt;/h3&amp;gt;&lt;br /&gt;
*[[Jogl Overview|Overview]] [ [{{SERVER}}/jogl/doc/Overview-OpenGL-Evolution-And-JOGL.html OpenGL Evolution &amp;amp;amp; JOGL] ]&lt;br /&gt;
*[[Why Instance Design|Why Instance Design]]&lt;br /&gt;
*[[Jogl Tutorial|Tutorial]]&lt;br /&gt;
*[[Jogl FAQ|FAQ]]&lt;br /&gt;
*[{{SERVER}}/git/?p=jogl.git;a=blob;f=LICENSE.txt License]&lt;br /&gt;
*API Doc [ [{{SERVER}}/deployment/jogamp-next/javadoc/jogl/javadoc/ Public], Specs [ [{{SERVER}}/deployment/jogamp-next/javadoc/jogl/javadoc_nativewindow_spec/ Nativewindow], [{{SERVER}}/deployment/jogamp-next/javadoc/jogl/javadoc_jogl_spec/ JOGL] ] ]&lt;br /&gt;
*[[Jogl API Overview|API Overview]]&lt;br /&gt;
**[[GL Debug Output|GL Debug Output]]&lt;br /&gt;
*[{{SERVER}}/jogl/doc/HowToBuild.html How to Build JOGL]&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;JOCL&amp;lt;/h3&amp;gt;&lt;br /&gt;
*[[JOCL Overview|Overview]]&lt;br /&gt;
*[[JOCL Tutorial|Tutorial]]&lt;br /&gt;
*[[JOCL FAQ|FAQ]]&lt;br /&gt;
*[{{SERVER}}/git/?p=jocl.git;a=blob;f=LICENSE License]&lt;br /&gt;
*[{{SERVER}}/deployment/jogamp-next/javadoc/jocl/javadoc/ API Doc]&lt;br /&gt;
*[{{SERVER}}/jocl/doc/HowToBuild.html How to Build JOCL]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;JOAL&amp;lt;/h3&amp;gt;&lt;br /&gt;
*[[Joal Overview|Overview]]&lt;br /&gt;
*[[Joal Tutorial|Tutorial]]&lt;br /&gt;
*[[Joal FAQ|FAQ]]&lt;br /&gt;
*[{{SERVER}}/git/?p=joal.git;a=blob;f=LICENSE.txt License]&lt;br /&gt;
*API Doc [ [{{SERVER}}/deployment/jogamp-next/javadoc/joal/javadoc/ Public], [{{SERVER}}/deployment/jogamp-next/javadoc/joal/javadoc_dev/ Internal] ]&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;GlueGen&amp;lt;/h3&amp;gt;&lt;br /&gt;
* [[GlueGen_Wiki|Overview]]&lt;br /&gt;
* [{{SERVER}}/git/?p=gluegen.git;a=blob;f=LICENSE.txt License]&lt;br /&gt;
* [{{SERVER}}/deployment/jogamp-next/javadoc/gluegen/javadoc/ API Doc]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot; width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;lt;h1&amp;gt;Related Projects&amp;lt;/h1&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;Java3D&amp;lt;/h3&amp;gt;&lt;br /&gt;
*[[Java3D Overview|Overview]]&lt;br /&gt;
*[[Downloading and installing Java3D|Downloading and installing]]&lt;br /&gt;
*[[Java3D Tutorial|Tutorial]]&lt;br /&gt;
*[[Java3D API Documentation|API Documentation]]&lt;br /&gt;
*[[Java3D FAQ|FAQ]]&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;Ji Gong&amp;lt;/h3&amp;gt;&lt;br /&gt;
*[[Ji Gong Overview|Overview]]&lt;br /&gt;
*[[Ji Gong Motivation|Motivation]]&lt;br /&gt;
*[[Ji Gong FAQ|FAQ]]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;Source Certification Contract (SCC)&amp;lt;/h3&amp;gt;&lt;br /&gt;
*[[SCC Overview|Overview]]&lt;br /&gt;
*[[SCC FAQ|FAQ]]&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;Ardor3D&amp;lt;/h3&amp;gt;&lt;br /&gt;
*[[Ardor3D Overview|Overview]]&lt;br /&gt;
*[[Ardor3D Tutorial|Tutorial]]&lt;br /&gt;
*[http://jogamp.org/deployment/ardor3d/javadoc/ API Documentation]&lt;br /&gt;
*[[Ardor3D FAQ|FAQ]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Gouessej</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Downloading_and_installing_Java3D&amp;diff=1975</id>
		<title>Downloading and installing Java3D</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Downloading_and_installing_Java3D&amp;diff=1975"/>
		<updated>2017-04-13T13:47:38Z</updated>

		<summary type="html">&lt;p&gt;Gouessej: Updates the Java3D version from pre12 to final&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Downloading the latest stable version =&lt;br /&gt;
&lt;br /&gt;
Go to [{{SERVER}}/deployment/java3d/1.6.0-final/ this page] and download the 7z archive file:&lt;br /&gt;
&lt;br /&gt;
: [{{SERVER}}/deployment/java3d/1.6.0-final/jogamp-java3d.7z jogamp-java3d.7z]&lt;br /&gt;
&lt;br /&gt;
Do the same for JogAmp as it is indicated [https://jogamp.org/wiki/index.php/Downloading_and_installing_JOGL#Downloading_the_latest_stable_version here].&lt;br /&gt;
&lt;br /&gt;
== Using the 7z jogamp-java3d archive ==&lt;br /&gt;
&lt;br /&gt;
After inflating the file with [http://www.7-zip.org/ 7zip], you will have the general directory structure:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;amp;lt;jogamp-java3d&amp;amp;gt;/&lt;br /&gt;
&amp;amp;lt;jogamp-java3d&amp;amp;gt;/jar/&amp;amp;lt;module&amp;amp;gt;.jar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
While keeping the above directory structure as-is, you can go ahead and&lt;br /&gt;
* add the JAR files to your CLASSPATH (IDE, manual, ..)&lt;br /&gt;
* do the same for JogAmp as it is indicated [https://jogamp.org/wiki/index.php/Downloading_and_installing_JOGL#Using_the_7z_jogamp-all-platforms_archive here]&lt;br /&gt;
&lt;br /&gt;
.. now you are set to start using Java 3D in your project.&lt;br /&gt;
&lt;br /&gt;
= More information =&lt;br /&gt;
&lt;br /&gt;
Some very detailed instructions are available [http://gouessej.wordpress.com/2012/08/01/java-3d-est-de-retour-java-3d-is-back/ here].&lt;/div&gt;</summary>
		<author><name>Gouessej</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=SW_Tracking_Report_Objectives_for_the_release_2.4.0&amp;diff=1954</id>
		<title>SW Tracking Report Objectives for the release 2.4.0</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=SW_Tracking_Report_Objectives_for_the_release_2.4.0&amp;diff=1954"/>
		<updated>2017-01-16T15:40:38Z</updated>

		<summary type="html">&lt;p&gt;Gouessej: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Bugs =&lt;br /&gt;
&lt;br /&gt;
List started on 2015-03-06, concluding [[SW Tracking Report Objectives for the release 2.3.3|Release 2.3.3]] -  &#039;&#039;&#039;In Progress&#039;&#039;&#039; - continuation @ [[SW Tracking Report Objectives for the release 2.4.1|Release 2.4.1]].&lt;br /&gt;
&lt;br /&gt;
Warning: WIP&lt;br /&gt;
&lt;br /&gt;
* [{{SERVER}}/bugzilla/buglist.cgi?cmdtype=runnamed&amp;amp;list_id=2214&amp;amp;namedcmd=Release%202.4.0 Total]&lt;br /&gt;
* [{{SERVER}}/bugzilla/buglist.cgi?bug_status=UNCONFIRMED&amp;amp;bug_status=CONFIRMED&amp;amp;bug_status=IN_PROGRESS&amp;amp;classification=Unclassified&amp;amp;classification=JogAmp&amp;amp;classification=Ji_Gong&amp;amp;known_name=Release%202.4.0%20Open%20Bugs&amp;amp;list_id=2228&amp;amp;query_based_on=Release%202.4.0%20Open%20Bugs&amp;amp;query_format=advanced&amp;amp;resolution=---&amp;amp;resolution=FIXED&amp;amp;resolution=INVALID&amp;amp;resolution=WONTFIX&amp;amp;resolution=DUPLICATE&amp;amp;resolution=WORKSFORME&amp;amp;resolution=MOVED&amp;amp;version=2.4.0 Open]&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
Please note that most features below might not get into release 2.4.0,&lt;br /&gt;
but will be pushed back to the next release.&lt;br /&gt;
&lt;br /&gt;
After finalizing release 2.4.0 .. such entries will be moved to the next version&#039;s page,&lt;br /&gt;
removed from here .. etc.&lt;br /&gt;
&lt;br /&gt;
=== Graph ===&lt;br /&gt;
&lt;br /&gt;
==== Graph UI ====&lt;br /&gt;
&lt;br /&gt;
[{{SERVER}}/bugzilla/showdependencytree.cgi?id=803&amp;amp;hide_resolved=0 Dependency Tree]&lt;br /&gt;
&lt;br /&gt;
[{{SERVER}}/bugzilla/buglist.cgi?bug_status=UNCONFIRMED&amp;amp;bug_status=CONFIRMED&amp;amp;bug_status=IN_PROGRESS&amp;amp;bug_status=RESOLVED&amp;amp;bug_status=VERIFIED&amp;amp;columnlist=product%2Ccomponent%2Cassigned_to%2Cbug_status%2Cresolution%2Cversion%2Cshort_desc%2Cchangeddate&amp;amp;component=core&amp;amp;component=Plugin&amp;amp;list_id=2265&amp;amp;product=GraphUI&amp;amp;query_format=advanced&amp;amp;resolution=---&amp;amp;resolution=FIXED&amp;amp;resolution=INVALID&amp;amp;resolution=WONTFIX&amp;amp;resolution=DUPLICATE&amp;amp;resolution=WORKSFORME&amp;amp;resolution=MOVED&amp;amp;version=2.4.0 All GraphUI 2.4.0]&lt;br /&gt;
&lt;br /&gt;
{{#bugzilla:&lt;br /&gt;
   |disablecache=1&lt;br /&gt;
   |version=2.4.0&lt;br /&gt;
   |product=graphui   &lt;br /&gt;
   |columns=id,product,component,priority,severity,status,resolution,summary,votes&lt;br /&gt;
   |sort=id&lt;br /&gt;
   |order=desc&lt;br /&gt;
   |noresultsmessage=We have no bugs quickly fixable to fix for this release}}&lt;br /&gt;
&lt;br /&gt;
==== Jogl / Graph ====&lt;br /&gt;
&lt;br /&gt;
[{{SERVER}}/bugzilla/showdependencytree.cgi?id=1064&amp;amp;hide_resolved=0 Dependency Tree Graph Font Issues]&lt;br /&gt;
&lt;br /&gt;
[{{SERVER}}/bugzilla/buglist.cgi?bug_status=UNCONFIRMED&amp;amp;bug_status=CONFIRMED&amp;amp;bug_status=IN_PROGRESS&amp;amp;bug_status=RESOLVED&amp;amp;bug_status=VERIFIED&amp;amp;columnlist=product%2Ccomponent%2Cassigned_to%2Cbug_status%2Cresolution%2Cversion%2Cshort_desc%2Cchangeddate&amp;amp;component=graph&amp;amp;list_id=2264&amp;amp;product=Jogl&amp;amp;query_format=advanced&amp;amp;resolution=---&amp;amp;resolution=FIXED&amp;amp;resolution=INVALID&amp;amp;resolution=WONTFIX&amp;amp;resolution=DUPLICATE&amp;amp;resolution=WORKSFORME&amp;amp;resolution=MOVED&amp;amp;version=2.4.0 All Jogl Graph 2.4.0]&lt;br /&gt;
&lt;br /&gt;
{{#bugzilla:&lt;br /&gt;
   |disablecache=1&lt;br /&gt;
   |version=2.4.0&lt;br /&gt;
   |product=jogl&lt;br /&gt;
   |component=graph&lt;br /&gt;
   |columns=id,product,component,priority,severity,status,resolution,summary,votes&lt;br /&gt;
   |sort=id&lt;br /&gt;
   |order=desc&lt;br /&gt;
   |noresultsmessage=We have no bugs quickly fixable to fix for this release}}&lt;br /&gt;
&lt;br /&gt;
=== Vulkan  ===&lt;br /&gt;
&lt;br /&gt;
{{#bugzilla:&lt;br /&gt;
   |disablecache=1&lt;br /&gt;
   |version=2.4.0&lt;br /&gt;
   |component=vulkan   &lt;br /&gt;
   |columns=id,product,component,priority,severity,status,resolution,summary,votes&lt;br /&gt;
   |sort=id&lt;br /&gt;
   |order=desc&lt;br /&gt;
   |noresultsmessage=We have no bugs quickly fixable to fix for this release}}&lt;br /&gt;
&lt;br /&gt;
=== NEWT ===&lt;br /&gt;
&lt;br /&gt;
* [{{SERVER}}/bugzilla/showdependencytree.cgi?id=807&amp;amp;hide_resolved=0 Dependency Tree NEWT Input Devices]&lt;br /&gt;
* [{{SERVER}}/bugzilla/showdependencytree.cgi?id=814&amp;amp;hide_resolved=0 Dependency Tree NEWT Pointer Event]&lt;br /&gt;
&lt;br /&gt;
{{#bugzilla:&lt;br /&gt;
   |disablecache=1&lt;br /&gt;
   |version=2.4.0&lt;br /&gt;
   |product=newt,jinput&lt;br /&gt;
   |filters=cf_type%3Dfeature&lt;br /&gt;
   |columns=id,product,component,priority,severity,status,resolution,summary,votes&lt;br /&gt;
   |sort=id&lt;br /&gt;
   |order=desc&lt;br /&gt;
   |noresultsmessage=We have no bugs quickly fixable to fix for this release}}&lt;br /&gt;
&lt;br /&gt;
=== Misc ===&lt;br /&gt;
&lt;br /&gt;
{{#bugzilla:&lt;br /&gt;
   |disablecache=1&lt;br /&gt;
   |version=2.4.0&lt;br /&gt;
   |product=!(graphui,newt)&lt;br /&gt;
   |component=!(graph,vulkan)&lt;br /&gt;
   |filters=cf_type%3Dfeature&lt;br /&gt;
   |columns=id,product,component,priority,severity,status,resolution,summary,votes&lt;br /&gt;
   |sort=id&lt;br /&gt;
   |order=desc&lt;br /&gt;
   |noresultsmessage=We have no bugs quickly fixable to fix for this release}}&lt;br /&gt;
&lt;br /&gt;
== Non Features ==&lt;br /&gt;
&lt;br /&gt;
=== Bugs to fix for this release ===&lt;br /&gt;
&lt;br /&gt;
{{#bugzilla:&lt;br /&gt;
   |disablecache=1&lt;br /&gt;
   |status=unconfirmed,in_progress,confirmed&lt;br /&gt;
   |version=2.4.0&lt;br /&gt;
   |filters=cf_type%3D!feature&lt;br /&gt;
   |columns=id,product,component,priority,severity,status,resolution,summary,votes&lt;br /&gt;
   |sort=id&lt;br /&gt;
   |order=desc&lt;br /&gt;
   |noresultsmessage=Lazy devs}}&lt;br /&gt;
&lt;br /&gt;
=== Bugs already fixed for this release ===&lt;br /&gt;
&lt;br /&gt;
{{#bugzilla:&lt;br /&gt;
   |disablecache=1&lt;br /&gt;
   |status=resolved,verified&lt;br /&gt;
   |version=2.4.0&lt;br /&gt;
   |filters=cf_type%3D!feature&lt;br /&gt;
   |columns=id,product,component,priority,severity,status,resolution,summary,votes&lt;br /&gt;
   |sort=id&lt;br /&gt;
   |order=desc&lt;br /&gt;
   |noresultsmessage=Lazy devs}}&lt;/div&gt;</summary>
		<author><name>Gouessej</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Main_Page&amp;diff=1952</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Main_Page&amp;diff=1952"/>
		<updated>2017-01-16T15:29:45Z</updated>

		<summary type="html">&lt;p&gt;Gouessej: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
Welcome to the [{{SERVER}}/ JogAmp] wiki. It documents JOGL, JOCL and JOAL, the cross-platform bindings to the OpenGL, OpenCL, and OpenAL APIs.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{| style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;Getting Started&amp;lt;/h3&amp;gt;&lt;br /&gt;
*[[Downloading and installing JOGL|Downloading and installing]]&lt;br /&gt;
**[[Jogamp Versioning and Releases|Versioning and Releases]]&lt;br /&gt;
*[[Setting up a JogAmp project in your favorite IDE|Setting up a JogAmp project in your favorite IDE]]&lt;br /&gt;
*[[Jogamp SCM Repositories|Source Code Repositories]]&lt;br /&gt;
*[[SW Tracking|Tracking Reports]]&lt;br /&gt;
*[{{SERVER}}/chuck/ Build and Test Server]&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;Community&amp;lt;/h3&amp;gt;&lt;br /&gt;
*[[How to Contribute|Contribute to JogAmp]]&lt;br /&gt;
*[[How to Build|Build JogAmp]]&lt;br /&gt;
*[[Maintainer and Contacts]]&lt;br /&gt;
*[[Jogl FAQ#Bugreports &amp;amp; Testing|Report a bug]]&lt;br /&gt;
**[{{SERVER}}/bugzilla/ Bugzilla]&lt;br /&gt;
*[http://forum.jogamp.org/ Ask a question in the forum]&lt;br /&gt;
*[[chatroom|JogAmp IRC]]&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot; width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;lt;h1&amp;gt;JogAmp Modules&amp;lt;/h1&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;Roadmaps&amp;lt;/h3&amp;gt;&lt;br /&gt;
* [[SW Tracking Report Objectives for the release 2.4.0|2.4.0]]&lt;br /&gt;
* [[SW Tracking Report Objectives for the release 2.3.3|2.3.3]], [[SW Tracking Report Objectives for the release 2.3.2|2.3.2]], [[SW Tracking Report Objectives for the release 2.3.1|2.3.1]], [[SW Tracking Report Objectives for the release 2.3.0|2.3.0]]&lt;br /&gt;
* [[SW Tracking Report Objectives for the release 2.2.4|2.2.4]], [[SW Tracking Report Objectives for the release 2.2.3|2.2.3]], [[SW Tracking Report Objectives for the release 2.2.2|2.2.2]], [[SW Tracking Report Objectives for the release 2.2.1|2.2.1]], [[SW Tracking Report Objectives for the release 2.2.0|2.2.0]]&lt;br /&gt;
* [[SW Tracking Report Objectives for the release 2.1.5|2.1.5]], [[SW Tracking Report Objectives for the release 2.1.4|2.1.4]], [[SW Tracking Report Objectives for the release 2.1.3|2.1.3]], [[SW Tracking Report Objectives for the release 2.1.2|2.1.2]], [[SW Tracking Report Objectives for the release 2.1.1|2.1.1]], [[SW Tracking Report Objectives for the release 2.1.0|2.1.0]]&lt;br /&gt;
* [[SW Tracking Report Objectives for the release 2.0.2 of JOGL|2.0.2]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;JOGL&amp;lt;/h3&amp;gt;&lt;br /&gt;
*[[Jogl Overview|Overview]] [ [{{SERVER}}/jogl/doc/Overview-OpenGL-Evolution-And-JOGL.html OpenGL Evolution &amp;amp;amp; JOGL] ]&lt;br /&gt;
*[[Why Instance Design|Why Instance Design]]&lt;br /&gt;
*[[Jogl Tutorial|Tutorial]]&lt;br /&gt;
*[[Jogl FAQ|FAQ]]&lt;br /&gt;
*[{{SERVER}}/git/?p=jogl.git;a=blob;f=LICENSE.txt License]&lt;br /&gt;
*API Doc [ [{{SERVER}}/deployment/jogamp-next/javadoc/jogl/javadoc/ Public], Specs [ [{{SERVER}}/deployment/jogamp-next/javadoc/jogl/javadoc_nativewindow_spec/ Nativewindow], [{{SERVER}}/deployment/jogamp-next/javadoc/jogl/javadoc_jogl_spec/ JOGL] ] ]&lt;br /&gt;
*[[Jogl API Overview|API Overview]]&lt;br /&gt;
**[[GL Debug Output|GL Debug Output]]&lt;br /&gt;
*[{{SERVER}}/jogl/doc/HowToBuild.html How to Build JOGL]&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;JOCL&amp;lt;/h3&amp;gt;&lt;br /&gt;
*[[JOCL Overview|Overview]]&lt;br /&gt;
*[[JOCL Tutorial|Tutorial]]&lt;br /&gt;
*[[JOCL FAQ|FAQ]]&lt;br /&gt;
*[{{SERVER}}/git/?p=jocl.git;a=blob;f=LICENSE License]&lt;br /&gt;
*[{{SERVER}}/deployment/jogamp-next/javadoc/jocl/javadoc/ API Doc]&lt;br /&gt;
*[{{SERVER}}/jocl/doc/HowToBuild.html How to Build JOCL]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;JOAL&amp;lt;/h3&amp;gt;&lt;br /&gt;
*[[Joal Overview|Overview]]&lt;br /&gt;
*[[Joal Tutorial|Tutorial]]&lt;br /&gt;
*[[Joal FAQ|FAQ]]&lt;br /&gt;
*[{{SERVER}}/git/?p=joal.git;a=blob;f=LICENSE.txt License]&lt;br /&gt;
*API Doc [ [{{SERVER}}/deployment/jogamp-next/javadoc/joal/javadoc/ Public], [{{SERVER}}/deployment/jogamp-next/javadoc/joal/javadoc_dev/ Internal] ]&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;GlueGen&amp;lt;/h3&amp;gt;&lt;br /&gt;
* [[GlueGen_Wiki|Overview]]&lt;br /&gt;
* [{{SERVER}}/git/?p=gluegen.git;a=blob;f=LICENSE.txt License]&lt;br /&gt;
* [{{SERVER}}/deployment/jogamp-next/javadoc/gluegen/javadoc/ API Doc]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot; width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;lt;h1&amp;gt;Related Projects&amp;lt;/h1&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;Java3D&amp;lt;/h3&amp;gt;&lt;br /&gt;
*[[Java3D Overview|Overview]]&lt;br /&gt;
*[[Downloading and installing Java3D|Downloading and installing]]&lt;br /&gt;
*[[Java3D Tutorial|Tutorial]]&lt;br /&gt;
*[[Java3D FAQ|FAQ]]&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;Ji Gong&amp;lt;/h3&amp;gt;&lt;br /&gt;
*[[Ji Gong Overview|Overview]]&lt;br /&gt;
*[[Ji Gong Motivation|Motivation]]&lt;br /&gt;
*[[Ji Gong FAQ|FAQ]]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;Source Certification Contract (SCC)&amp;lt;/h3&amp;gt;&lt;br /&gt;
*[[SCC Overview|Overview]]&lt;br /&gt;
*[[SCC FAQ|FAQ]]&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;Ardor3D&amp;lt;/h3&amp;gt;&lt;br /&gt;
*[[Ardor3D Overview|Overview]]&lt;br /&gt;
*[[Ardor3D Tutorial|Tutorial]]&lt;br /&gt;
*[http://jogamp.org/deployment/ardor3d/javadoc/ API Documentation]&lt;br /&gt;
*[[Ardor3D FAQ|FAQ]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Gouessej</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Using_JOGL_in_a_Java_applet&amp;diff=1950</id>
		<title>Using JOGL in a Java applet</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Using_JOGL_in_a_Java_applet&amp;diff=1950"/>
		<updated>2016-02-04T13:42:26Z</updated>

		<summary type="html">&lt;p&gt;Gouessej: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;N.B: [https://blogs.oracle.com/java-platform-group/entry/moving_to_a_plugin_free The Java Plugin is deprecated in Oracle Java 1.9], it will be removed from future JavaSE releases and it won&#039;t be supported in the major web browsers at the end of 2016. As a consequence, you are highly encouraged to stop developing Java applets.&lt;br /&gt;
&lt;br /&gt;
= Preface =&lt;br /&gt;
You can use JOGL in a [http://java.sun.com/applets/ Java applet], which lets you run a Java program embedded in a web page. This page shows an example of how to do this. The example program just draws one triangle that fills a fixed-size frame in a web page.&lt;br /&gt;
&lt;br /&gt;
You can see online examples here: [{{SERVER}}/deployment/jogamp-current/jogl-test-applets.html JOGL Test Applets]&lt;br /&gt;
&lt;br /&gt;
Documented Examples using the Object/Embed tags:&lt;br /&gt;
* Normal-Applet using native-JAR lib loading&lt;br /&gt;
** [{{SERVER}}/deployment/jogamp-current/jogl-applet-runner-newt-gears-normal-napplet.html &#039;&#039;Demo and modules on jogamp.org&#039;&#039;]&lt;br /&gt;
** [http://jausoft.com/jogamp/jogl-applet-runner-newt-gears-normal-napplet.html &#039;&#039;Demo on jausoft.com and modules on jogamp.org&#039;&#039;]&lt;br /&gt;
* JNLP-Applet w/ JNLPLauncher fallback&lt;br /&gt;
** [{{SERVER}}/deployment/jogamp-current/jogl-applet-runner-newt-gears-normal.html &#039;&#039;Demo and modules on jogamp.org&#039;&#039;]&lt;br /&gt;
** [http://jausoft.com/jogamp/jogl-applet-runner-newt-gears-normal.html &#039;&#039;Demo on jausoft.com and modules on jogamp.org&#039;&#039;]&lt;br /&gt;
* JNLPLauncher only&lt;br /&gt;
** [{{SERVER}}/deployment/jogamp-current/jogl-applet-runner-newt-gears-normal-launcheronly.html &#039;&#039;Demo and modules on jogamp.org&#039;&#039;]&lt;br /&gt;
** [http://jausoft.com/jogamp/jogl-applet-runner-newt-gears-normal-launcheronly.html &#039;&#039;Demo on jausoft.com and modules on jogamp.org&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
A short &#039;&#039;copy&#039;&#039; is included in the static page [{{SERVER}}/jogl/doc/deployment/JOGL-DEPLOYMENT.html#NApplets JOGL Deployment as a New Applet].&lt;br /&gt;
&lt;br /&gt;
= Base class =&lt;br /&gt;
&lt;br /&gt;
We&#039;ll use the same triangle-drawing base class for this example that we did in the [https://jogamp.org/wiki/index.php/Using_JOGL_in_Java_Web_Start#Base_class Java Web Start example]. Copy the code to a file called &amp;lt;tt&amp;gt;OneTriangle.java&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Applet class =&lt;br /&gt;
&lt;br /&gt;
Now we need a simple class that extends &amp;lt;tt&amp;gt;java.applet.Applet&amp;lt;/tt&amp;gt; to form the top level of our program. Copy this code to a file called &amp;lt;tt&amp;gt;OneTriangleAWTApplet.java&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
package name.wadewalker.jogl2tests.onetriangle;&lt;br /&gt;
&lt;br /&gt;
import java.applet.*;&lt;br /&gt;
import java.awt.*;&lt;br /&gt;
&lt;br /&gt;
import javax.media.opengl.GLAnimatorControl;&lt;br /&gt;
import javax.media.opengl.GLAutoDrawable;&lt;br /&gt;
import javax.media.opengl.GLCapabilities;&lt;br /&gt;
import javax.media.opengl.GLEventListener;&lt;br /&gt;
import javax.media.opengl.GLProfile;&lt;br /&gt;
import javax.media.opengl.awt.GLCanvas;&lt;br /&gt;
&lt;br /&gt;
import com.jogamp.opengl.util.FPSAnimator;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * A minimal applet that draws with JOGL in a browser window.&lt;br /&gt;
 *&lt;br /&gt;
 * @author Wade Walker&lt;br /&gt;
 */&lt;br /&gt;
@SuppressWarnings(&amp;quot;serial&amp;quot;)&lt;br /&gt;
public class OneTriangleAWTApplet extends Applet {&lt;br /&gt;
&lt;br /&gt;
    private GLAnimatorControl glanimatorcontrol;&lt;br /&gt;
&lt;br /&gt;
    public void init() {&lt;br /&gt;
        GLProfile.initSingleton();&lt;br /&gt;
        setLayout( new BorderLayout() );&lt;br /&gt;
&lt;br /&gt;
        final GLCanvas glcanvas = new GLCanvas();&lt;br /&gt;
        glcanvas.addGLEventListener( new GLEventListener() {&lt;br /&gt;
            &lt;br /&gt;
            @Override&lt;br /&gt;
            public void reshape( GLAutoDrawable glautodrawable, int x, int y, int width, int height ) {&lt;br /&gt;
                OneTriangle.setup( glautodrawable.getGL().getGL2(), width, height );&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            @Override&lt;br /&gt;
            public void init( GLAutoDrawable glautodrawable ) {&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            @Override&lt;br /&gt;
            public void dispose( GLAutoDrawable glautodrawable ) {&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            @Override&lt;br /&gt;
            public void display( GLAutoDrawable glautodrawable ) {&lt;br /&gt;
                OneTriangle.render( glautodrawable.getGL().getGL2(), glautodrawable.getWidth(), glautodrawable.getHeight() );&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
    &lt;br /&gt;
        glcanvas.setSize( getSize() );&lt;br /&gt;
        add( glcanvas, BorderLayout.CENTER );&lt;br /&gt;
        glanimatorcontrol = new FPSAnimator( glcanvas, 30 );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void start() {&lt;br /&gt;
        glanimatorcontrol.start();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    public void stop() {&lt;br /&gt;
        glanimatorcontrol.stop();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    public void destroy() {&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Applet web page =&lt;br /&gt;
&lt;br /&gt;
Finally, the applet needs a web page to display in. Note that this file sets the fixed size of the applet window. Copy this code to a file called &amp;lt;tt&amp;gt;OneTriangleApplet.html&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Using JogAmp&#039;s Signed Jar and Jnlp Files ==&lt;br /&gt;
&lt;br /&gt;
The URL &amp;lt;code&amp;gt;http://jogamp.org/deployment/jogamp-current/&amp;lt;/code&amp;gt; specifies&lt;br /&gt;
JogAmp&#039;s location of released signed Jar and JNLP files.&lt;br /&gt;
Currently supported locations are:&lt;br /&gt;
&lt;br /&gt;
* http://jogamp.org/deployment/jogamp-current/ - Current Release&lt;br /&gt;
* http://jogamp.org/deployment/jogamp-next/ - Next Release&lt;br /&gt;
* http://jogamp.org/deployment/v2.0-rc10/ - Specific Version&lt;br /&gt;
&lt;br /&gt;
=== [{{SERVER}}/jogl/doc/deployment/JOGL-DEPLOYMENT.html#NApplets NApplet] using native-JAR lib loading ===&lt;br /&gt;
&lt;br /&gt;
The html snippet, for &amp;lt;tt&amp;gt;OneTriangleNApplet.html&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;object classid=&amp;quot;clsid:8AD9C840-044E-11D1-B3E9-00805F499D93&amp;quot;&lt;br /&gt;
      width=&amp;quot;200&amp;quot; height=&amp;quot;200&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;param name=&amp;quot;code&amp;quot; value=&amp;quot;name.wadewalker.jogl2tests.onetriangle.OneTriangleAWTApplet&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;param name=&amp;quot;archive&amp;quot; value=&amp;quot;http://jogamp.org/deployment/jogamp-current/jar/gluegen-rt.jar,&lt;br /&gt;
                                http://jogamp.org/deployment/jogamp-current/jar/jogl-all.jar,&lt;br /&gt;
                                onetriangle.jar&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;comment&amp;gt;&lt;br /&gt;
     &amp;lt;embed code=&amp;quot;name.wadewalker.jogl2tests.onetriangle.OneTriangleAWTApplet&amp;quot;&lt;br /&gt;
          width=&amp;quot;200&amp;quot; height=&amp;quot;200&amp;quot;&lt;br /&gt;
          type=&amp;quot;application/x-java-applet;version=1.6&amp;quot;&lt;br /&gt;
          pluginspage=&amp;quot;http://java.sun.com/javase/downloads/ea.jsp&amp;quot;&lt;br /&gt;
          archive=&amp;quot;http://jogamp.org/deployment/jogamp-current/jar/gluegen-rt.jar,&lt;br /&gt;
                   http://jogamp.org/deployment/jogamp-current/jar/jogl-all.jar,&lt;br /&gt;
                   onetriangle.jar&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;noembed&amp;gt;Sorry, no Java support detected.&amp;lt;/noembed&amp;gt;&lt;br /&gt;
     &amp;lt;/embed&amp;gt;&lt;br /&gt;
   &amp;lt;/comment&amp;gt;&lt;br /&gt;
&amp;lt;/object&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
* [http://jausoft.com/jogamp/jogl-applet-runner-newt-gears-normal-napplet.html &#039;&#039;Demo on jausoft.com and modules on jogamp.org&#039;&#039;]&lt;br /&gt;
* [{{SERVER}}/deployment/jogamp-current/jogl-applet-runner-newt-gears-normal-napplet.html &#039;&#039;Demo and modules on jogamp.org&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
=== JNLP-Applet w/ [{{SERVER}}/jogl/doc/deployment/JOGL-DEPLOYMENT.html#NApplets NApplet] fallback ===&lt;br /&gt;
&lt;br /&gt;
The html snippet, for &amp;lt;tt&amp;gt;OneTriangleApplet.html&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;object classid=&amp;quot;clsid:8AD9C840-044E-11D1-B3E9-00805F499D93&amp;quot;&lt;br /&gt;
      width=&amp;quot;200&amp;quot; height=&amp;quot;200&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;param name=&amp;quot;code&amp;quot; value=&amp;quot;name.wadewalker.jogl2tests.onetriangle.OneTriangleAWTApplet&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;param name=&amp;quot;archive&amp;quot; value=&amp;quot;http://jogamp.org/deployment/jogamp-current/jar/gluegen-rt.jar,&lt;br /&gt;
                                http://jogamp.org/deployment/jogamp-current/jar/jogl-all.jar,&lt;br /&gt;
                                onetriangle.jar&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;param name=&amp;quot;jnlp_href&amp;quot; value=&amp;quot;OneTriangleApplet.jnlp&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;comment&amp;gt;&lt;br /&gt;
     &amp;lt;embed code=&amp;quot;name.wadewalker.jogl2tests.onetriangle.OneTriangleAWTApplet&amp;quot;&lt;br /&gt;
          width=&amp;quot;200&amp;quot; height=&amp;quot;200&amp;quot;&lt;br /&gt;
          type=&amp;quot;application/x-java-applet;version=1.6&amp;quot;&lt;br /&gt;
          pluginspage=&amp;quot;http://java.sun.com/javase/downloads/ea.jsp&amp;quot;&lt;br /&gt;
          archive=&amp;quot;http://jogamp.org/deployment/jogamp-current/jar/gluegen-rt.jar,&lt;br /&gt;
                   http://jogamp.org/deployment/jogamp-current/jar/jogl-all.jar,&lt;br /&gt;
                   onetriangle.jar&amp;quot;&lt;br /&gt;
          jnlp_href=&amp;quot;OneTriangleApplet.jnlp&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;noembed&amp;gt;Sorry, no Java support detected.&amp;lt;/noembed&amp;gt;&lt;br /&gt;
     &amp;lt;/embed&amp;gt;&lt;br /&gt;
   &amp;lt;/comment&amp;gt;&lt;br /&gt;
&amp;lt;/object&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;OneTriangleApplet.jnlp&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;jnlp spec=&amp;quot;1.0+&amp;quot; codebase=&amp;quot;./&amp;quot;&lt;br /&gt;
  href=&amp;quot;OneTriangleApplet.jnlp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;information&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;OneTriangle Demo&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;vendor&amp;gt;JogAmp Community&amp;lt;/vendor&amp;gt;&lt;br /&gt;
    &amp;lt;homepage href=&amp;quot;http://jogamp.org/&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;description&amp;gt;OneTriangle Java Web Start Demo&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;description kind=&amp;quot;short&amp;quot;&amp;gt;The simplest possible JOGL Java Web Start demo - draws one triangle.&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;offline-allowed/&amp;gt;&lt;br /&gt;
  &amp;lt;/information&amp;gt;&lt;br /&gt;
  &amp;lt;update check=&amp;quot;background&amp;quot; policy=&amp;quot;always&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;resources&amp;gt;&lt;br /&gt;
    &amp;lt;j2se href=&amp;quot;http://java.sun.com/products/autodl/j2se&amp;quot; version=&amp;quot;1.4+&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;extension name=&amp;quot;jogl-all-awt&amp;quot; href=&amp;quot;http://jogamp.org/deployment/jogamp-current/jogl-all-awt.jnlp&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;jar href=&amp;quot;onetriangle.jar&amp;quot; main=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/resources&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;applet-desc &lt;br /&gt;
      name=&amp;quot;OneTriangle Applet&amp;quot;&lt;br /&gt;
      main-class=&amp;quot;name.wadewalker.jogl2tests.onetriangle.OneTriangleAWTApplet&amp;quot;&lt;br /&gt;
      width=&amp;quot;200&amp;quot; &lt;br /&gt;
      height=&amp;quot;200&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/applet-desc&amp;gt;&lt;br /&gt;
&amp;lt;/jnlp&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
** [http://jausoft.com/jogamp/jogl-applet-runner-newt-gears-normal.html &#039;&#039;Demo on jausoft.com and modules on jogamp.org&#039;&#039;]&lt;br /&gt;
** [{{SERVER}}/deployment/jogamp-current/jogl-applet-runner-newt-gears-normal.html &#039;&#039;Demo and modules on jogamp.org&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
If you decide to use our JogAmp signed Jar and Jnlp files you can skip the next chapter.&lt;br /&gt;
&lt;br /&gt;
== Using Your own Signed Jar and Jnlp Files ==&lt;br /&gt;
&lt;br /&gt;
In case you prefer to use your own JogAmp files, just replace the above JogAmp URL &lt;br /&gt;
with your own and sign the Jar files of your JogAmp files with your own valid key, or test key as described below.&lt;br /&gt;
Don&#039;t sign your own applet code&#039;s JAR file(s).&lt;br /&gt;
&lt;br /&gt;
= Setting up the applet directory =&lt;br /&gt;
&lt;br /&gt;
Note that none of your applet Jar files needs to be signed. Only the Jogamp files (GlueGen, JOGL, ..) require code signing.&lt;br /&gt;
&lt;br /&gt;
* Create a directory to hold your applet.&lt;br /&gt;
* Put your &amp;lt;tt&amp;gt;OneTriangleApplet.html&amp;lt;/tt&amp;gt; file in that new directory.&lt;br /&gt;
* Create a subdirectory &amp;lt;tt&amp;gt;name/wadewalker/jogl2tests/onetriangle&amp;lt;/tt&amp;gt; inside your applet directory. Or if you changed the packages of the files above, create a subdirectory that matches your package names.&lt;br /&gt;
* Put your &amp;lt;tt&amp;gt;OneTriangle.java&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;OneTriangleAWT.java&amp;lt;/tt&amp;gt; files inside the subdirectory.&lt;br /&gt;
&lt;br /&gt;
If you decide to use our JogAmp signed Jar and Jnlp files you can skip the next chapter.&lt;br /&gt;
&lt;br /&gt;
== Using Your own Signed Jar and Jnlp Files ==&lt;br /&gt;
* Copy all the JogAmp Jar files ([[{{SERVER}}/jogl/doc/deployment/JOGL-DEPLOYMENT.html#GluegenJARs|GlueGen]] and [[{{SERVER}}/jogl/doc/deployment/JOGL-DEPLOYMENT.html#JOGLAllInOneJARs|JOGL]]) into the applet directory as described [https://jogamp.org/wiki/index.php/Using_JOGL_in_Java_Web_Start#Setting_up_the_application_directory here] and sign them (see below).&lt;br /&gt;
* Copy &amp;lt;tt&amp;gt;applet-launcher.jar&amp;lt;/tt&amp;gt; into the applet directory and sign it (see below). Currently this file is not part of the JOGL distribution. I built it from source I downloaded from [https://github.com/sgothel/applet-launcher Sven&#039;s repository].&lt;br /&gt;
* Copy the JogAmp [[{{SERVER}}/jogl/doc/deployment/JOGL-DEPLOYMENT.html#JNLPFiles|Jnlp files]] into that applet directory&lt;br /&gt;
&lt;br /&gt;
=== Signing the JogAmp Jar Files ===&lt;br /&gt;
&lt;br /&gt;
All the JogAmp Jar files your applet uses must be signed to work correctly in a web browser. Do this just as in the [https://jogamp.org/wiki/index.php/Using_JOGL_in_Java_Web_Start#Signing_your_JARs Java Web Start case], with one addition for the applet launcher JAR:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
jarsigner -keystore testKeys applet-launcher.jar ww&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Compiling and JARing your program =&lt;br /&gt;
&lt;br /&gt;
You can compile and JAR the program exactly as we did for the [https://jogamp.org/wiki/index.php/Using_JOGL_in_Java_Web_Start#Compiling_and_JARing_your_program Java Web Start case].&lt;br /&gt;
&lt;br /&gt;
= Writing the JNLP files =&lt;br /&gt;
&lt;br /&gt;
New-style Java applets use two [http://download.oracle.com/javase/1,5.0/docs/guide/javaws/developersguide/syntax.html Java Network Launching Protocol (JNLP)] files to find the JAR files that make up the applet. Create both JNLP files exactly as in the [https://jogamp.org/wiki/index.php/Using_JOGL_in_Java_Web_Start#Writing_the_JNLP_files Java Web Start case].&lt;br /&gt;
&lt;br /&gt;
= Running the applet in a browser =&lt;br /&gt;
&lt;br /&gt;
To run the applet in a browser on Windows, right-click the &amp;lt;tt&amp;gt;OneTriangleApplet.html&amp;lt;/tt&amp;gt; file and click &amp;quot;Open with &amp;gt; Internet Explorer|Chrome|Firefox|Safari&amp;quot;. The result should look like this:&lt;br /&gt;
&lt;br /&gt;
[[File:Applet-browser-test.png|300px|thumb|none|Applet OneTriangle in IE 9]]&lt;br /&gt;
&lt;br /&gt;
= Clearing the applet cache =&lt;br /&gt;
&lt;br /&gt;
Java caches applet JAR and JNLP files to reduce load time. Unfortunately, if you edit one of these files and re-launch, sometimes you won&#039;t see your changes because Java is still using the cached copy.&lt;br /&gt;
&lt;br /&gt;
* To clear the cache on Windows:&lt;br /&gt;
** From the control panel: click &amp;lt;tt&amp;gt;Start &amp;gt; Control Panel &amp;gt; Java&amp;lt;/tt&amp;gt;, then click &amp;lt;tt&amp;gt;Temporary Internet Files&amp;lt;/tt&amp;gt;, click &amp;lt;tt&amp;gt; Settings...&amp;lt;/tt&amp;gt;, click &amp;lt;tt&amp;gt;Delete Files...&amp;lt;/tt&amp;gt;, and click &amp;lt;tt&amp;gt;OK&amp;lt;/tt&amp;gt;.&lt;br /&gt;
** From the command line: delete &amp;lt;tt&amp;gt;%USERPROFILE%\AppData\LocalLow\Sun\Java\Deployment\cache&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* To clear the cache on Mac OS X:&lt;br /&gt;
** From the control panel: click &amp;lt;tt&amp;gt;Dock &amp;gt; Applications &amp;gt; Utilities &amp;gt; Java Preferences.app&amp;lt;/tt&amp;gt;, then click the &amp;lt;tt&amp;gt;Network tab&amp;lt;/tt&amp;gt;, click &amp;lt;tt&amp;gt;Delete Files...&amp;lt;/tt&amp;gt;, and click &amp;lt;tt&amp;gt;OK&amp;lt;/tt&amp;gt;.&lt;br /&gt;
** From the command line: delete &amp;lt;tt&amp;gt;~/Library/Caches/Java/cache&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The JNLPAppletLauncher (if it&#039;s used) may also cache files. You can clear its cache on Windows by deleting &amp;lt;tt&amp;gt;%USERPROFILE%\.jnlp-applet&amp;lt;/tt&amp;gt;, and on Mac OS X by deleting &amp;lt;tt&amp;gt;~/.jnlp-applet&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Running the applet with the Java applet viewer =&lt;br /&gt;
&lt;br /&gt;
The Java JDK comes with a program called &amp;lt;tt&amp;gt;appletviewer&amp;lt;/tt&amp;gt;, which you can use to launch your applet from the command line without the use of a browser. This viewer works the way that older Java browser plugins used to work (and the way Safari&#039;s plugin still works), so it can help test compatibility.&lt;br /&gt;
&lt;br /&gt;
When you launch with &amp;lt;tt&amp;gt;appletviewer&amp;lt;/tt&amp;gt;, it also uses the &amp;lt;tt&amp;gt;JNLPAppletLauncher&amp;lt;/tt&amp;gt; class that we specified in &amp;lt;tt&amp;gt;OneTriangleApplet.html&amp;lt;/tt&amp;gt;, which the newer Java plugins seem to ignore.&lt;br /&gt;
&lt;br /&gt;
The downside of that is the &amp;lt;tt&amp;gt;JNLPAppletLauncher&amp;lt;/tt&amp;gt; doesn&#039;t yet support relative paths, so you&#039;ll need to change the value of &amp;lt;tt&amp;gt;jnlpExtension1&amp;lt;/tt&amp;gt; in &amp;lt;tt&amp;gt;OneTriangleApplet.html&amp;lt;/tt&amp;gt; from &amp;lt;tt&amp;gt;&amp;quot;./&amp;quot;&amp;lt;/tt&amp;gt; to an absolute path like &amp;lt;tt&amp;gt;&amp;quot;file://localhost/C:/Users/my/applet/dir/JOGL.jnlp&amp;quot;&amp;lt;/tt&amp;gt;, and the value of &amp;lt;tt&amp;gt;codebase&amp;lt;/tt&amp;gt; in &amp;lt;tt&amp;gt;JOGL.jnlp&amp;lt;/tt&amp;gt; from &amp;lt;tt&amp;gt;&amp;quot;./&amp;quot;&amp;lt;/tt&amp;gt; to an absolute path like &amp;lt;tt&amp;gt;&amp;quot;file://localhost/C:/Users/my/applet/dir/&amp;quot;&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Then, to give the applet the permissions it needs to run outside the browser, create a file named &amp;lt;tt&amp;gt;all.policy&amp;lt;/tt&amp;gt; in your applet directory, and put this text in it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grant {&lt;br /&gt;
  permission java.security.AllPermission;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then finally you can launch the applet from the command line like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;appletviewer -J-Djava.security.policy=all.policy OneTriangleApplet.html&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The result should look like this:&lt;br /&gt;
&lt;br /&gt;
[[File:applet-viewer-test.png|300px|thumb|none|Applet OneTriangle in appletviewer]]&lt;br /&gt;
&lt;br /&gt;
You can also use the applet viewer to remotely debug your code like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;appletviewer -J-Djava.security.policy=all.policy -J-Xdebug -J-Djava.compiler=NONE -J-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 OneTriangleApplet.html&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When you hit return, the applet will suspend on startup, so you can connect to the applet process with your debugger of choice.&lt;br /&gt;
&lt;br /&gt;
= Running the applet from inside Eclipse =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*This section is unfinished*&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you set up your applet as an Eclipse project, you can run it in the applet viewer by right-clicking the applet project and clicking &amp;quot;Run As &amp;gt; Java Applet&amp;quot;. This is similar to running the applet via &amp;lt;tt&amp;gt;appletviewer&amp;lt;/tt&amp;gt; on the command line, but allows local instead of remote debugging.&lt;br /&gt;
&lt;br /&gt;
= Running the applet from a web server =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*This section is unfinished*&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Once you&#039;re sure that the applet launches correctly from the local file system, you&#039;re ready to deploy it to a web server.&lt;br /&gt;
&lt;br /&gt;
* Create or choose an applet directory on your web server.&lt;br /&gt;
* Change the &amp;lt;tt&amp;gt;codebase&amp;lt;/tt&amp;gt; entries in the JNLP from directory names to URLs that refer to the applet directory on your web server.&lt;br /&gt;
* Copy all the HTML, JAR, and JNLP files from your local applet directory to the applet directory on your web server.&lt;br /&gt;
* Put a link to the &amp;lt;tt&amp;gt;OneTriangleApplet.html&amp;lt;/tt&amp;gt; file on a page on your web server so users can find your applet page.&lt;/div&gt;</summary>
		<author><name>Gouessej</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=JogAmp_JAR_File_Handling&amp;diff=1930</id>
		<title>JogAmp JAR File Handling</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=JogAmp_JAR_File_Handling&amp;diff=1930"/>
		<updated>2015-11-04T09:09:53Z</updated>

		<summary type="html">&lt;p&gt;Gouessej: /* Ant */ Adds the missing inclusion filters into the zip fileset in order to repair Windows support as it relies on these executables&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Native JAR Files =&lt;br /&gt;
&lt;br /&gt;
See [{{SERVER}}/jogl/doc/deployment/JOGL-DEPLOYMENT.html#NativeJARFiles Native JAR Files] explained.&lt;br /&gt;
&lt;br /&gt;
Native JAR files are loaded [{{SERVER}}/jogl/doc/userguide/index.html#automatednativelibraryloading automatically].&lt;br /&gt;
&lt;br /&gt;
= Applet / JNLP Usage =&lt;br /&gt;
&lt;br /&gt;
* [[Using JOGL in a Java applet|Using JOGL in a Java Applet]]&lt;br /&gt;
* [[Using JOGL in Java Web Start|Using JOGL in Java Web Start]]&lt;br /&gt;
&lt;br /&gt;
A short &#039;&#039;copy&#039;&#039; is included in the static page [{{SERVER}}/jogl/doc/deployment/JOGL-DEPLOYMENT.html#NApplets JOGL Deployment using NApplet].&lt;br /&gt;
&lt;br /&gt;
= Custom Bundling =&lt;br /&gt;
&lt;br /&gt;
== Multi-Jar ==&lt;br /&gt;
[{{SERVER}}/bugzilla/show_bug.cgi?id=843 Multi-Jar]&lt;br /&gt;
&lt;br /&gt;
This configuration is discouraged, since such deployment removes our artifacts as stored in&lt;br /&gt;
the jar&#039;s manifest file, which helps identifying the jogamp modules for bug reports etc.&lt;br /&gt;
&lt;br /&gt;
However, since we don&#039;t want to patronize our user base, we support this feature with our native JAR lib loading mechanism. &lt;br /&gt;
&lt;br /&gt;
It is possible to merge all modules together, i.e.&lt;br /&gt;
&lt;br /&gt;
  multi.jar:&lt;br /&gt;
    gluegen-rt.jar&lt;br /&gt;
    jogl-all.jar&lt;br /&gt;
    user-app.jar&lt;br /&gt;
&lt;br /&gt;
  multi-natives-&amp;lt;os.and.arch&amp;gt;.jar:&lt;br /&gt;
    gluegen-rt-natives-&amp;lt;os.and.arch&amp;gt;.jar&lt;br /&gt;
    jogl-all-natives-&amp;lt;os.and.arch&amp;gt;.jar&lt;br /&gt;
&lt;br /&gt;
A combination with Fat-Jar is possible.&lt;br /&gt;
&lt;br /&gt;
== Fat-Jar ==&lt;br /&gt;
&lt;br /&gt;
[{{SERVER}}/bugzilla/show_bug.cgi?id=845 Discouraged Fat-Jar]&lt;br /&gt;
&lt;br /&gt;
This configuration is discouraged, since such deployment removes our artifacts as stored in&lt;br /&gt;
the jar&#039;s manifest file, which helps identifying the jogamp modules for bug reports etc.&lt;br /&gt;
&lt;br /&gt;
Furthermore, adding all native library files for all supported platforms&lt;br /&gt;
will add-up to +3M of _compressed_ jar data!&lt;br /&gt;
&lt;br /&gt;
However, since we don&#039;t want to patronize our user base, &lt;br /&gt;
we support this feature with our native JAR lib loading mechanism.&lt;br /&gt;
&lt;br /&gt;
=== Usage ===&lt;br /&gt;
&lt;br /&gt;
If the modules&#039;s jar file contains the folder &#039;natives/&amp;lt;os.and.arch&amp;gt;/&#039;&lt;br /&gt;
we assume a fat-jar and attempt to load all native libraries from the same.&lt;br /&gt;
        &lt;br /&gt;
If we don&#039;t have a fat-jar or if fat-jar loading doesn&#039;t result in extracted native libraries,&lt;br /&gt;
we assume a regular slim jar file.&lt;br /&gt;
&lt;br /&gt;
Layout:&lt;br /&gt;
&lt;br /&gt;
  /com/lala1/Lala1.class&lt;br /&gt;
  /com/lala2/Lala2.class&lt;br /&gt;
  /natives/&amp;lt;os.and.arch&amp;gt;/libLala1.so&lt;br /&gt;
  /natives/&amp;lt;os.and.arch&amp;gt;/libLala2.so&lt;br /&gt;
&lt;br /&gt;
A combination w/ Multi-Jar is of course possible.&lt;br /&gt;
&lt;br /&gt;
=== Creation ===&lt;br /&gt;
&lt;br /&gt;
==== Ant ====&lt;br /&gt;
You can use the [http://ant.apache.org/manual/Tasks/jar.html Ant jar task] to create a fat JAR. You must avoid file names collision, i.e you must exclude the file(s) with the same name(s) in multiple JARs. You can use [https://ant.apache.org/manual/Tasks/manifest.html Ant manifest task] to create a manifest file. The following line just keeps the strict minimum to make JogAmp work and should be used with the [http://ant.apache.org/manual/Tasks/jar.html Ant jar task]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;zipfileset src=&amp;quot;jogamp-fat.jar&amp;quot; includes=&amp;quot;**/*.class,**/*.png,**/*.glsl,**/*.vp,**/*.fp,**/*.bvp,**/*.bfp,**/*.so,**/*.jnilib,**/*.dylib,**/*.dll,**/*.bin,**/*.defl&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Maven ====&lt;br /&gt;
[http://maven.apache.org/plugins/maven-shade-plugin/index.html Maven Shade Plugin] is the recommended plugin to use to create fat JARs with [http://maven.apache.org Maven]. [http://maven.apache.org/plugins/maven-shade-plugin/examples/executable-jar.html This example] shows how to set some entries in the manifest file.&lt;br /&gt;
&lt;br /&gt;
==== Maven Assembly Plugin ====&lt;br /&gt;
&lt;br /&gt;
An example descriptor file that produces a fat jar containing all of the calling project&#039;s dependencies, and the JOGL/GlueGen native jar files placed into the correct directory inside the jar:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;assembly&lt;br /&gt;
  xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&lt;br /&gt;
  xmlns=&amp;quot;http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0&amp;quot;&lt;br /&gt;
  xsi:schemaLocation=&amp;quot;http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;id&amp;gt;with-dependencies&amp;lt;/id&amp;gt;&lt;br /&gt;
  &amp;lt;includeBaseDirectory&amp;gt;false&amp;lt;/includeBaseDirectory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;formats&amp;gt;&lt;br /&gt;
    &amp;lt;format&amp;gt;jar&amp;lt;/format&amp;gt;&lt;br /&gt;
  &amp;lt;/formats&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;dependencySets&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Unpack everything that isn&#039;t a JOGL or GlueGen library --&amp;gt;&lt;br /&gt;
    &amp;lt;dependencySet&amp;gt;&lt;br /&gt;
      &amp;lt;outputDirectory&amp;gt;/&amp;lt;/outputDirectory&amp;gt;&lt;br /&gt;
      &amp;lt;useProjectArtifact&amp;gt;true&amp;lt;/useProjectArtifact&amp;gt;&lt;br /&gt;
      &amp;lt;scope&amp;gt;runtime&amp;lt;/scope&amp;gt;&lt;br /&gt;
      &amp;lt;unpack&amp;gt;true&amp;lt;/unpack&amp;gt;&lt;br /&gt;
      &amp;lt;unpackOptions&amp;gt;&lt;br /&gt;
        &amp;lt;excludes&amp;gt;&lt;br /&gt;
          &amp;lt;exclude&amp;gt;libgluegen-rt*&amp;lt;/exclude&amp;gt;&lt;br /&gt;
          &amp;lt;exclude&amp;gt;libjogl_desktop.*&amp;lt;/exclude&amp;gt;&lt;br /&gt;
          &amp;lt;exclude&amp;gt;libjogl_mobile.*&amp;lt;/exclude&amp;gt;&lt;br /&gt;
          &amp;lt;exclude&amp;gt;libnativewindow_awt.*&amp;lt;/exclude&amp;gt;&lt;br /&gt;
          &amp;lt;exclude&amp;gt;libnativewindow_macosx.*&amp;lt;/exclude&amp;gt;&lt;br /&gt;
          &amp;lt;exclude&amp;gt;libnativewindow_x11.*&amp;lt;/exclude&amp;gt;&lt;br /&gt;
          &amp;lt;exclude&amp;gt;libnewt.*&amp;lt;/exclude&amp;gt;&lt;br /&gt;
        &amp;lt;/excludes&amp;gt;&lt;br /&gt;
      &amp;lt;/unpackOptions&amp;gt;&lt;br /&gt;
    &amp;lt;/dependencySet&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Place the natives for the popular platforms into the correct place --&amp;gt;&lt;br /&gt;
    &amp;lt;!-- in the resulting jar file. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;dependencySet&amp;gt;&lt;br /&gt;
      &amp;lt;outputDirectory&amp;gt;/natives/linux-amd64/&amp;lt;/outputDirectory&amp;gt;&lt;br /&gt;
      &amp;lt;useProjectArtifact&amp;gt;true&amp;lt;/useProjectArtifact&amp;gt;&lt;br /&gt;
      &amp;lt;scope&amp;gt;runtime&amp;lt;/scope&amp;gt;&lt;br /&gt;
      &amp;lt;unpack&amp;gt;true&amp;lt;/unpack&amp;gt;&lt;br /&gt;
      &amp;lt;includes&amp;gt;&lt;br /&gt;
        &amp;lt;include&amp;gt;org.jogamp.gluegen:gluegen-rt:jar:natives-linux-amd64&amp;lt;/include&amp;gt;&lt;br /&gt;
        &amp;lt;include&amp;gt;org.jogamp.jogl:jogl-all:jar:natives-linux-amd64&amp;lt;/include&amp;gt;&lt;br /&gt;
      &amp;lt;/includes&amp;gt;&lt;br /&gt;
      &amp;lt;unpackOptions&amp;gt;&lt;br /&gt;
        &amp;lt;includes&amp;gt;&amp;lt;include&amp;gt;*.so&amp;lt;/include&amp;gt;&amp;lt;/includes&amp;gt;&lt;br /&gt;
      &amp;lt;/unpackOptions&amp;gt;&lt;br /&gt;
    &amp;lt;/dependencySet&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;dependencySet&amp;gt;&lt;br /&gt;
      &amp;lt;outputDirectory&amp;gt;/natives/linux-i586/&amp;lt;/outputDirectory&amp;gt;&lt;br /&gt;
      &amp;lt;useProjectArtifact&amp;gt;true&amp;lt;/useProjectArtifact&amp;gt;&lt;br /&gt;
      &amp;lt;scope&amp;gt;runtime&amp;lt;/scope&amp;gt;&lt;br /&gt;
      &amp;lt;unpack&amp;gt;true&amp;lt;/unpack&amp;gt;&lt;br /&gt;
      &amp;lt;includes&amp;gt;&lt;br /&gt;
        &amp;lt;include&amp;gt;org.jogamp.gluegen:gluegen-rt:jar:natives-linux-i586&amp;lt;/include&amp;gt;&lt;br /&gt;
        &amp;lt;include&amp;gt;org.jogamp.jogl:jogl-all:jar:natives-linux-i586&amp;lt;/include&amp;gt;&lt;br /&gt;
      &amp;lt;/includes&amp;gt;&lt;br /&gt;
      &amp;lt;unpackOptions&amp;gt;&lt;br /&gt;
        &amp;lt;includes&amp;gt;&amp;lt;include&amp;gt;*.so&amp;lt;/include&amp;gt;&amp;lt;/includes&amp;gt;&lt;br /&gt;
      &amp;lt;/unpackOptions&amp;gt;&lt;br /&gt;
    &amp;lt;/dependencySet&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;dependencySet&amp;gt;&lt;br /&gt;
      &amp;lt;outputDirectory&amp;gt;/natives/windows-amd64/&amp;lt;/outputDirectory&amp;gt;&lt;br /&gt;
      &amp;lt;useProjectArtifact&amp;gt;true&amp;lt;/useProjectArtifact&amp;gt;&lt;br /&gt;
      &amp;lt;scope&amp;gt;runtime&amp;lt;/scope&amp;gt;&lt;br /&gt;
      &amp;lt;unpack&amp;gt;true&amp;lt;/unpack&amp;gt;&lt;br /&gt;
      &amp;lt;includes&amp;gt;&lt;br /&gt;
        &amp;lt;include&amp;gt;org.jogamp.gluegen:gluegen-rt:jar:natives-windows-amd64&amp;lt;/include&amp;gt;&lt;br /&gt;
        &amp;lt;include&amp;gt;org.jogamp.jogl:jogl-all:jar:natives-windows-amd64&amp;lt;/include&amp;gt;&lt;br /&gt;
      &amp;lt;/includes&amp;gt;&lt;br /&gt;
      &amp;lt;unpackOptions&amp;gt;&lt;br /&gt;
        &amp;lt;includes&amp;gt;&amp;lt;include&amp;gt;*.dll&amp;lt;/include&amp;gt;&amp;lt;/includes&amp;gt;&lt;br /&gt;
      &amp;lt;/unpackOptions&amp;gt;&lt;br /&gt;
    &amp;lt;/dependencySet&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;dependencySet&amp;gt;&lt;br /&gt;
      &amp;lt;outputDirectory&amp;gt;/natives/windows-i586/&amp;lt;/outputDirectory&amp;gt;&lt;br /&gt;
      &amp;lt;useProjectArtifact&amp;gt;true&amp;lt;/useProjectArtifact&amp;gt;&lt;br /&gt;
      &amp;lt;scope&amp;gt;runtime&amp;lt;/scope&amp;gt;&lt;br /&gt;
      &amp;lt;unpack&amp;gt;true&amp;lt;/unpack&amp;gt;&lt;br /&gt;
      &amp;lt;includes&amp;gt;&lt;br /&gt;
        &amp;lt;include&amp;gt;org.jogamp.gluegen:gluegen-rt:jar:natives-windows-i586&amp;lt;/include&amp;gt;&lt;br /&gt;
        &amp;lt;include&amp;gt;org.jogamp.jogl:jogl-all:jar:natives-windows-i586&amp;lt;/include&amp;gt;&lt;br /&gt;
      &amp;lt;/includes&amp;gt;&lt;br /&gt;
      &amp;lt;unpackOptions&amp;gt;&lt;br /&gt;
        &amp;lt;includes&amp;gt;&amp;lt;include&amp;gt;*.dll&amp;lt;/include&amp;gt;&amp;lt;/includes&amp;gt;&lt;br /&gt;
      &amp;lt;/unpackOptions&amp;gt;&lt;br /&gt;
    &amp;lt;/dependencySet&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;dependencySet&amp;gt;&lt;br /&gt;
      &amp;lt;outputDirectory&amp;gt;/natives/macosx-universal/&amp;lt;/outputDirectory&amp;gt;&lt;br /&gt;
      &amp;lt;useProjectArtifact&amp;gt;true&amp;lt;/useProjectArtifact&amp;gt;&lt;br /&gt;
      &amp;lt;scope&amp;gt;runtime&amp;lt;/scope&amp;gt;&lt;br /&gt;
      &amp;lt;unpack&amp;gt;true&amp;lt;/unpack&amp;gt;&lt;br /&gt;
      &amp;lt;includes&amp;gt;&lt;br /&gt;
        &amp;lt;include&amp;gt;org.jogamp.gluegen:gluegen-rt:jar:natives-macosx-universal&amp;lt;/include&amp;gt;&lt;br /&gt;
        &amp;lt;include&amp;gt;org.jogamp.jogl:jogl-all:jar:natives-macosx-universal&amp;lt;/include&amp;gt;&lt;br /&gt;
      &amp;lt;/includes&amp;gt;&lt;br /&gt;
      &amp;lt;unpackOptions&amp;gt;&lt;br /&gt;
        &amp;lt;includes&amp;gt;&amp;lt;include&amp;gt;*.jnilib&amp;lt;/include&amp;gt;&amp;lt;/includes&amp;gt;&lt;br /&gt;
      &amp;lt;/unpackOptions&amp;gt;&lt;br /&gt;
    &amp;lt;/dependencySet&amp;gt;&lt;br /&gt;
  &amp;lt;/dependencySets&amp;gt;&lt;br /&gt;
&amp;lt;/assembly&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This can be called in the usual manner (assuming that the descriptor file is in &amp;lt;tt&amp;gt;src/main/assembly/application.xml&amp;lt;/tt&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;plugin&amp;gt;&lt;br /&gt;
  &amp;lt;artifactId&amp;gt;maven-assembly-plugin&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
  &amp;lt;configuration&amp;gt;&lt;br /&gt;
    &amp;lt;archive&amp;gt;&lt;br /&gt;
      &amp;lt;manifest&amp;gt;&lt;br /&gt;
        &amp;lt;mainClass&amp;gt;com.example.main.SomeMainClassHere&amp;lt;/mainClass&amp;gt;&lt;br /&gt;
      &amp;lt;/manifest&amp;gt;&lt;br /&gt;
    &amp;lt;/archive&amp;gt;&lt;br /&gt;
    &amp;lt;descriptors&amp;gt;&lt;br /&gt;
      &amp;lt;descriptor&amp;gt;src/main/assembly/application.xml&amp;lt;/descriptor&amp;gt;&lt;br /&gt;
    &amp;lt;/descriptors&amp;gt;&lt;br /&gt;
  &amp;lt;/configuration&amp;gt;&lt;br /&gt;
  &amp;lt;executions&amp;gt;&lt;br /&gt;
    &amp;lt;execution&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;make-assembly&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;phase&amp;gt;package&amp;lt;/phase&amp;gt;&lt;br /&gt;
      &amp;lt;goals&amp;gt;&lt;br /&gt;
        &amp;lt;goal&amp;gt;single&amp;lt;/goal&amp;gt;&lt;br /&gt;
      &amp;lt;/goals&amp;gt;&lt;br /&gt;
    &amp;lt;/execution&amp;gt;&lt;br /&gt;
  &amp;lt;/executions&amp;gt;&lt;br /&gt;
&amp;lt;/plugin&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The result is an executable jar file, suffixed with &amp;lt;tt&amp;gt;-with-dependencies.jar&amp;lt;/tt&amp;gt; that will execute &amp;lt;tt&amp;gt;com.example.main.SomeMainClassHere&amp;lt;/tt&amp;gt; and that will correctly find all of the native libraries at run-time.&lt;br /&gt;
&lt;br /&gt;
== One-Jar ==&lt;br /&gt;
&lt;br /&gt;
[{{SERVER}}/bugzilla/show_bug.cgi?id=846 One-Jar]&lt;br /&gt;
&lt;br /&gt;
One-Jar is incomplete, i.e. it does not provide a URL handler for &lt;br /&gt;
it&#039;s jar-in-jar resources - hence we would need to implement this functionality manually.&lt;br /&gt;
&lt;br /&gt;
See [{{SERVER}}/bugzilla/show_bug.cgi?id=846#c1 One-Jar lacks of URLHandler ...]&lt;br /&gt;
&lt;br /&gt;
For now, one can use Eclipse working jar-in-jar feature (see below).&lt;br /&gt;
Since Eclipse is under an open source license, one should be able&lt;br /&gt;
to locate the source code and include in a standalone toolkit, if so required.&lt;br /&gt;
&lt;br /&gt;
== JarMatey ==&lt;br /&gt;
&lt;br /&gt;
[http://staticvoidgames.com/JarMatey/ JarMatey] is an [https://github.com/KevinWorkman/JarMatey open source] tool for creating standalone self-executing JARs, similar to One-Jar but with a graphical user interface and no support for build tools (Ant, Maven). You can find a detailed tutorial about it [http://staticvoidgames.com/tutorials/deployment/joglExample here].&lt;br /&gt;
&lt;br /&gt;
== Eclipse ==&lt;br /&gt;
&lt;br /&gt;
Native JAR files and their respective base JAR files can be bundled in [{{SERVER}}/bugzilla/show_bug.cgi?id=522#c7 custom ways, e.g. eclipse Jar-In-Jar etc].&lt;br /&gt;
&lt;br /&gt;
    Manual tested w/ Eclipse:&lt;br /&gt;
    &lt;br /&gt;
    Preparations:&lt;br /&gt;
    ===============&lt;br /&gt;
    &lt;br /&gt;
    1) Set up a vanilla eclipse (3.7.0) workspace&lt;br /&gt;
    &lt;br /&gt;
    2) Add the JOGL User Library:&lt;br /&gt;
      - Window.Preference&lt;br /&gt;
       - Java.Build_Path.User_Libraries:&lt;br /&gt;
         + JOGL&lt;br /&gt;
            + gluegen-rt.jar&lt;br /&gt;
            + jogl-all.jar&lt;br /&gt;
            + gluegen-rt-natives-linux-amd64.jar&lt;br /&gt;
            + jogl-all-natives-linux-amd64.jar&lt;br /&gt;
    &lt;br /&gt;
            You may add all other native JARs here.&lt;br /&gt;
            Note that these are not required in the CLASSPATH by JOGL,&lt;br /&gt;
            however, they are required by Eclipse to export your project as a Runnable JAR File.&lt;br /&gt;
&lt;br /&gt;
    3) New test project&lt;br /&gt;
      -  Right-click your project in the Package Explorer and click &amp;quot;Properties&amp;quot;.&lt;br /&gt;
           - Select &amp;quot;Java Build Path&amp;quot; and click the &amp;quot;Libraries&amp;quot; tab.&lt;br /&gt;
              + JOGL&lt;br /&gt;
      - Add some simple code ..&lt;br /&gt;
      - Run as Java Application ..&lt;br /&gt;
    &lt;br /&gt;
    Test-1:&lt;br /&gt;
    =========&lt;br /&gt;
    &lt;br /&gt;
    Export&lt;br /&gt;
      - Right-click your project in the Package Explorer and click &amp;quot;Export&amp;quot;&lt;br /&gt;
        - Select Java.Runnable_JAR_file&lt;br /&gt;
          + Launch configuration&lt;br /&gt;
          + some destination path&lt;br /&gt;
          + Library handling:&lt;br /&gt;
            Copy required libraries into a sub-folder next to the generated JAR&lt;br /&gt;
    &lt;br /&gt;
    Result: Works!&lt;br /&gt;
    &lt;br /&gt;
    ./lala01.jar&lt;br /&gt;
    ./lala01_lib/jogl-all.jar&lt;br /&gt;
    ./lala01_lib/jogl-all-natives-linux-amd64.jar&lt;br /&gt;
    ./lala01_lib/... etc ..&lt;br /&gt;
    &lt;br /&gt;
    Test-2:&lt;br /&gt;
    =========&lt;br /&gt;
    &lt;br /&gt;
    Export&lt;br /&gt;
      - Right-click your project in the Package Explorer and click &amp;quot;Export&amp;quot;&lt;br /&gt;
        - Select Java.Runnable_JAR_file&lt;br /&gt;
          + Launch configuration&lt;br /&gt;
          + some destination path&lt;br /&gt;
          + Library handling:&lt;br /&gt;
            Package required libraries into generated JAR&lt;br /&gt;
&lt;br /&gt;
    Result: Works!&lt;br /&gt;
    &lt;br /&gt;
    ./lala02.jar:&lt;br /&gt;
      Manifest-Version: 1.0&lt;br /&gt;
      Rsrc-Class-Path: ./ gluegen-rt-natives-linux-amd64.jar gluegen-rt.jar&lt;br /&gt;
                          jogl-all-natives-linux-amd64.jar jogl-all.jar&lt;br /&gt;
      Class-Path: .&lt;br /&gt;
      Rsrc-Main-Class: Test01&lt;br /&gt;
      Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader&lt;/div&gt;</summary>
		<author><name>Gouessej</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Downloading_and_installing_Java3D&amp;diff=1923</id>
		<title>Downloading and installing Java3D</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Downloading_and_installing_Java3D&amp;diff=1923"/>
		<updated>2015-10-24T21:55:34Z</updated>

		<summary type="html">&lt;p&gt;Gouessej: /* Downloading the latest stable version */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Downloading the latest stable version =&lt;br /&gt;
&lt;br /&gt;
Go to [{{SERVER}}/deployment/java3d/1.6.0-pre12/ this page] and download the 7z archive file:&lt;br /&gt;
&lt;br /&gt;
: [{{SERVER}}/deployment/java3d/1.6.0-pre12/jogamp-java3d.7z jogamp-java3d.7z]&lt;br /&gt;
&lt;br /&gt;
Do the same for JogAmp as it is indicated [https://jogamp.org/wiki/index.php/Downloading_and_installing_JOGL#Downloading_the_latest_stable_version here].&lt;br /&gt;
&lt;br /&gt;
== Using the 7z jogamp-java3d archive ==&lt;br /&gt;
&lt;br /&gt;
After inflating the file with [http://www.7-zip.org/ 7zip], you will have the general directory structure:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;amp;lt;jogamp-java3d&amp;amp;gt;/&lt;br /&gt;
&amp;amp;lt;jogamp-java3d&amp;amp;gt;/jar/&amp;amp;lt;module&amp;amp;gt;.jar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
While keeping the above directory structure as-is, you can go ahead and&lt;br /&gt;
* add the JAR files to your CLASSPATH (IDE, manual, ..)&lt;br /&gt;
* do the same for JogAmp as it is indicated [https://jogamp.org/wiki/index.php/Downloading_and_installing_JOGL#Using_the_7z_jogamp-all-platforms_archive here]&lt;br /&gt;
&lt;br /&gt;
.. now you are set to start using Java 3D in your project.&lt;br /&gt;
&lt;br /&gt;
= More information =&lt;br /&gt;
&lt;br /&gt;
Some very detailed instructions are available [http://gouessej.wordpress.com/2012/08/01/java-3d-est-de-retour-java-3d-is-back/ here].&lt;/div&gt;</summary>
		<author><name>Gouessej</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Java3D_FAQ&amp;diff=1922</id>
		<title>Java3D FAQ</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Java3D_FAQ&amp;diff=1922"/>
		<updated>2015-10-16T23:34:40Z</updated>

		<summary type="html">&lt;p&gt;Gouessej: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Where can I download Java3D?&lt;br /&gt;
** http://jogamp.org/deployment/java3d/1.6.0-pre12/jogamp-java3d.7z&lt;br /&gt;
* What else do I need to use Java3D?&lt;br /&gt;
** http://jogamp.org/deployment/jogamp-current/archive/jogamp-all-platforms.7z JogAmp&lt;br /&gt;
* How can I install Java3D?&lt;br /&gt;
** Follow [https://jogamp.org/wiki/index.php/Downloading_and_installing_Java3D these instructions]&lt;br /&gt;
* Where can I get the source code of Java3D?&lt;br /&gt;
** https://github.com/hharrison/java3d-core - core&lt;br /&gt;
** https://github.com/hharrison/java3d-utils - utils&lt;br /&gt;
** https://github.com/hharrison/vecmath - vecmath&lt;br /&gt;
* Where can I get any help about Java3D?&lt;br /&gt;
** You can get some help on [http://forum.jogamp.org/java3d-f3728156.html the subsection dedicated to Java3D on our forum] and on [http://jogamp.org/wiki/index.php/Chatroom#Freenode_IRC_Channel our IRC chatroom]&lt;br /&gt;
* Where can I find any examples using Java3D?&lt;br /&gt;
** You can find some examples using Java3D on http://www.java3d.org&lt;br /&gt;
* Where can I report a bug in Java3D?&lt;br /&gt;
** https://github.com/hharrison/java3d-core/issues and https://jogamp.org/bugzilla/&lt;/div&gt;</summary>
		<author><name>Gouessej</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Jogl_Tutorial&amp;diff=1860</id>
		<title>Jogl Tutorial</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Jogl_Tutorial&amp;diff=1860"/>
		<updated>2015-09-23T10:59:32Z</updated>

		<summary type="html">&lt;p&gt;Gouessej: /* JogAmp&amp;#039;s Static */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= JogAmp&#039;s Static =&lt;br /&gt;
* [{{SERVER}}/jogl/doc/Overview-OpenGL-Evolution-And-JOGL.html OpenGL Evolution &amp;amp;amp; JOGL]&lt;br /&gt;
*API Doc [ [{{SERVER}}/deployment/jogamp-next/javadoc/jogl/javadoc/ Public], Specs [ [{{SERVER}}/deployment/jogamp-next/javadoc/jogl/javadoc_nativewindow_spec/ Nativewindow], [{{SERVER}}/deployment/jogamp-next/javadoc/jogl/javadoc_jogl_spec/ JOGL] ] ]&lt;br /&gt;
* [{{SERVER}}/jogl/doc/HowToBuild.html How to Build JOGL]&lt;br /&gt;
* [{{SERVER}}/jogl/doc/userguide/ Userguide]&lt;br /&gt;
* [{{SERVER}}/jogl/doc/deployment/JOGL-DEPLOYMENT.html Deployment]&lt;br /&gt;
* [{{SERVER}}/deployment/jogamp-current/jogl-test-applets.html JOGL Test Applets]&lt;br /&gt;
** [{{SERVER}}/deployment/jogamp-current/jogl-applet-runner-newt-gears-normal.html using Object/Embed tags]&lt;br /&gt;
** [{{SERVER}}/deployment/jogamp-current/jogl-demos/applet-gears.html using the Applet Tag]&lt;br /&gt;
* [{{SERVER}}/jogl/doc/NEWT-Overview.html NEWT - High Performance Native Windowing Toolkit]&lt;br /&gt;
* [{{SERVER}}/git/?p=jogl-demos.git;a=blob;f=src/demos/es2/RawGL2ES2demo.java;hb=HEAD OpenGL GL2ES2 GLSL Standalone Example by Xerxes Rånby]&lt;br /&gt;
* [https://gist.github.com/gouessej/3420e2b6f632efdddf98 Rudimentary standalone example using the fixed pipeline by Julien Gouesse]&lt;br /&gt;
* [https://gist.github.com/xranby/ccbcfcaef341f5bd1ba8 Rudimentary standalone example using the fixed pipeline with OpenGL ES 1 by Xerxes Rånby]&lt;br /&gt;
&lt;br /&gt;
= JogAmp&#039;s Wiki =&lt;br /&gt;
* [[Downloading and installing JOGL|Downloading and installing JOGL]]&lt;br /&gt;
** [[Jogamp_Versioning_and_Releases|Versioning And Release Information]]&lt;br /&gt;
* [[Setting up a JogAmp project in your favorite IDE|Setting up a JogAmp project in your favorite IDE]]&lt;br /&gt;
* Deployment&lt;br /&gt;
** [[JogAmp JAR File Handling|JAR File Handling]]&lt;br /&gt;
** [[Using JOGL in a Java applet|Using JOGL in a Java Applet]]&lt;br /&gt;
** [[Using JOGL in Java Web Start|Using JOGL in Java Web Start]]&lt;br /&gt;
** [[Foreign Packaging|Foreign Packaging]]&lt;br /&gt;
* JOGL&lt;br /&gt;
** [[How to write cross GLProfile compatible shader using JOGL]]&lt;br /&gt;
** [[How to use the Debug and Trace GL Pipeline and Debug GL Context]]&lt;br /&gt;
** [[Using JOGL in AWT SWT and Swing|Using JOGL in AWT, SWT, and Swing]]&lt;br /&gt;
** [[How to use X11 displays]]&lt;br /&gt;
* [[Jogl_FAQ|FAQ]]&lt;br /&gt;
&lt;br /&gt;
= Hello Triangle =&lt;br /&gt;
[https://github.com/elect86/jogl-samples/blob/master/jogl-samples/src/helloTriangle/HelloTriangle.java Simple sample] that features GL4, pure newt, glWindow options, animator, indexed drawing, dinamic attribute and frag data binding, interleaved data, vao, vbo (with normalization on one attribute), ibo (with shorts), uniform, glsl program (with specific suffix) and matrix jogl util, gl error check, key listener and right way to dispose.&lt;br /&gt;
&lt;br /&gt;
= Common Mistakes =&lt;br /&gt;
I suggest you to take a read to these two pages for a quick overview over the most common problems, it is a very useful reading, legacy sections are carefully signaled.&lt;br /&gt;
&lt;br /&gt;
[https://www.opengl.org/wiki/Common_Mistakes OpenGL]&lt;br /&gt;
[https://www.opengl.org/wiki/GLSL_:_common_mistakes GLSL]&lt;br /&gt;
&lt;br /&gt;
N.B: The use of color picking is &#039;&#039;&#039;NOT&#039;&#039;&#039; recommended on any hardware whose palette is partially emulated.&lt;br /&gt;
&lt;br /&gt;
= Wade&#039;s JOGL tutorials =&lt;br /&gt;
* [http://wadeawalker.wordpress.com/2010/10/09/tutorial-a-cross-platform-workbench-program-using-java-opengl-and-eclipse/ Cross-platform workbench program using Eclipse and JOGL]&lt;br /&gt;
* [http://wadeawalker.wordpress.com/2010/10/17/tutorial-faster-rendering-with-vertex-buffer-objects/ Faster rendering with vertex buffer objects]&lt;br /&gt;
* [http://wadeawalker.wordpress.com/2010/10/24/tutorial-creating-native-binary-executables-for-multi-platform-java-apps-with-opengl-and-eclipse-rcp/ Creating native binary executables for multi-platform Java apps with OpenGL and Eclipse RCP]&lt;br /&gt;
* [http://wadeawalker.wordpress.com/2010/12/06/tutorial-displaying-java-opengl-in-an-eclipse-editor-with-a-menu-bar-and-a-runpause-button/ Displaying Java OpenGL in an Eclipse RCP editor with a menu bar and a run/pause button]&lt;br /&gt;
&lt;br /&gt;
= Rami&#039;s JOGL tutorials =&lt;br /&gt;
* [http://ramisantina.com/blog/?p=8 Rami&#039;s Guide how to setup a JOGL Eclipse project]&lt;br /&gt;
&lt;br /&gt;
= [https://sites.google.com/site/justinscsstuff/jogl-tutorials Justin&#039;s Getting Started with JOGL 2 Tutorials] =&lt;br /&gt;
* [https://sites.google.com/site/justinscsstuff/jogl-tutorial-1 JOGL Tutorial 1 - Environment Setup]&lt;br /&gt;
* [https://sites.google.com/site/justinscsstuff/jogl-tutorial-2 JOGL Tutorial 2 - Creating a Window]&lt;br /&gt;
* [https://sites.google.com/site/justinscsstuff/jogl-tutorial-3 JOGL Tutorial 3 - Creating a Render Loop]&lt;br /&gt;
&lt;br /&gt;
= Elect86&#039;s modern OpenGL examples =&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/elect86/modern-jogl-examples Source code on Github]&lt;br /&gt;
&lt;br /&gt;
= Nils Hoffmann&#039;s Netbeans Platform examples =&lt;br /&gt;
* [https://github.com/nilshoffmann/netbeans-jogl2 Source code on Github]&lt;br /&gt;
&lt;br /&gt;
= Courses =&lt;br /&gt;
* [http://www3.ntu.edu.sg/home/ehchua/programming/opengl/JOGL2.0.html Yet Another Tutorial on JOGL 2.0 - Including Nehe JOGL Port (Chua Hock-Chuan&#039;s notes at Nanyang Tech. University)]&lt;br /&gt;
* [http://www.informatik.uni-oldenburg.de/~trigger/opengl_course.html Johannes&#039;s Courses at University of Oldenburg (German)]&lt;br /&gt;
* [http://www.manuel-carcenac.com/courses/index.html Manuel&#039;s Courses at European University of Lefke]&lt;br /&gt;
** [http://www.manuel-carcenac.com/courses/Graphics_in_Java/index.htm Graphics in Java incl. 3D/JOGL]&lt;br /&gt;
** [http://www.manuel-carcenac.com/courses/Advanced_Graphics_in_Java_and_JOGL/index.htm Advanced 3D Graphics in Java and Java OpenGL (JOGL 2)]&lt;br /&gt;
&lt;br /&gt;
= [http://leolol.com/tutorials/graphics_tutorials.html LeoLoL.com Tutorials] (Currently unreachable) =&lt;br /&gt;
* [http://leolol.com/tutorials/graphics/lesson01.html Lesson 1 - Setting up a JOGL Template]&lt;br /&gt;
* [http://leolol.com/tutorials/graphics/lesson02.html Lesson 2 - Drawing basic 2D shapes]&lt;br /&gt;
* [http://leolol.com/tutorials/graphics/lesson03.html Lesson 3 - Adding colour]&lt;br /&gt;
* [http://leolol.com/tutorials/graphics/lesson04.html Lesson 4 - 3D Shapes and Rotation]&lt;br /&gt;
&lt;br /&gt;
= JOGL 1 tutorials =&lt;br /&gt;
* [http://www.felixgers.de/teaching/jogl/ Felix&#039;s OpenGL and JOGL]&lt;br /&gt;
&lt;br /&gt;
== [http://www.sjonesart.com/gl.php Ste3e&#039;s JOGL tutorials] ==&lt;br /&gt;
* [https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=true&amp;amp;srcid=0B9hhZie2D-fENGE3ZmZkOGItZGYzZC00ZDgzLTg0NTAtMTk1MTAwMzYxYzNk&amp;amp;hl=en Keys and Mouse]&lt;br /&gt;
* [https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=true&amp;amp;srcid=0B9hhZie2D-fEYTFiMmFiYzQtMDA0MC00ZWI0LWI1NjItODE3ZjM2OGUxOWEw&amp;amp;hl=en First-Person Shooter]&lt;br /&gt;
* [https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=true&amp;amp;srcid=0B9hhZie2D-fEZGI2NTZhZTMtYWYwNS00NTljLWFiNGQtM2UyNTYyNjAzNDYy&amp;amp;hl=en Vertex Buffer Objects]&lt;br /&gt;
* [https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=true&amp;amp;srcid=0B9hhZie2D-fENWFhODk0M2UtZDY0Ni00YWM5LWIxZGUtMzM0YzMxMmRlODgx&amp;amp;hl=en Shader Setup]&lt;br /&gt;
* [https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=true&amp;amp;srcid=0B9hhZie2D-fEMzNjNDBmMjUtNGQzNS00ODY0LWJkYmUtNDM5Y2I5ODc0Y2Nj&amp;amp;hl=en Texture Using Shaders]&lt;br /&gt;
&lt;br /&gt;
(The old (not quite up-to-date) JOGL Userguide is currently available [http://jogamp.org/jogl/doc/userguide/ here])&lt;/div&gt;</summary>
		<author><name>Gouessej</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Foreign_Packaging&amp;diff=1857</id>
		<title>Foreign Packaging</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Foreign_Packaging&amp;diff=1857"/>
		<updated>2015-09-16T11:11:34Z</updated>

		<summary type="html">&lt;p&gt;Gouessej: Redline with Maven&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;N.B: This article is subject to changes and is incomplete.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We assume that the application is packaged as a [http://jogamp.org/wiki/index.php/JogAmp_JAR_File_Handling#Fat-Jar fat JAR] called &amp;quot;user-app.jar&amp;quot; for the sake of simplicity.&lt;br /&gt;
&lt;br /&gt;
= Red Hat Package Manager =&lt;br /&gt;
&lt;br /&gt;
[http://www.rpm.org RPM] (Red Hat Package Manager) is the default package management system under Red Hat, Fedora, Mageia, Mandriva, OpenSUSE, Oracle Linux, ...&lt;br /&gt;
&lt;br /&gt;
== Platform dependent tools ==&lt;br /&gt;
&lt;br /&gt;
The following tools only work under GNU Linux or other Unix platforms with native rpm support.&lt;br /&gt;
&lt;br /&gt;
[http://www.rpm.org/max-rpm-snapshot/rpmbuild.8.html rpmbuild] can be used to build RPMs. You can find more information about RPM packaging in the [http://www.rpm.org/wiki/Docs#PackagerDocumentation official documentation].&lt;br /&gt;
&lt;br /&gt;
The build tool [http://ant.apache.org Ant] can call this command when you use its [http://ant.apache.org/manual/Tasks/rpm.html RPM task]. The build system [http://maven.apache.org Maven] does the same with its [http://mojo.codehaus.org/rpm-maven-plugin/ RPM plugin].&lt;br /&gt;
&lt;br /&gt;
== Cross-platform tools ==&lt;br /&gt;
&lt;br /&gt;
=== jRPM ===&lt;br /&gt;
&lt;br /&gt;
[http://jrpm.sourceforge.net jRPM] is a pure Java library for manipulating RPM packages.&lt;br /&gt;
&lt;br /&gt;
=== Redline ===&lt;br /&gt;
[http://redline-rpm.org Redline RPM] is a pure Java library for manipulating RPM packages. It can be use in command line, with [http://ant.apache.org Ant] and with [http://maven.apache.org Maven].&lt;br /&gt;
&lt;br /&gt;
Redline requires [http://commons.apache.org/proper/commons-compress/download_compress.cgi Apache Commons Compress], [http://www.bouncycastle.org/latest_releases.html Bounty Castle], [http://www.slf4j.org/download.html SLF4J] and [http://repo1.maven.org/maven2/org/tukaani/xz/1.4/ XZ].&lt;br /&gt;
&lt;br /&gt;
==== Redline with Ant ====&lt;br /&gt;
Using a distinct name space or a different task name for the Redline RPM task is necessary to avoid any conflict with the build-in Ant [http://ant.apache.org/manual/Tasks/rpm.html RPM task]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;taskdef name=&amp;quot;pure-java-rpm&amp;quot; classname=&amp;quot;org.redline_rpm.ant.RedlineTask&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;classpath&amp;gt;&lt;br /&gt;
            &amp;lt;pathelement path=&amp;quot;bcpg-jdk15on-151.jar&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;pathelement path=&amp;quot;commons-compress-1.8.1.jar&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;pathelement path=&amp;quot;slf4j-api-1.7.7.jar&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;pathelement path=&amp;quot;slf4j-simple-1.7.7.jar&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;pathelement path=&amp;quot;xz-1.4.jar&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;pathelement path=&amp;quot;redline-1.1.16.jar&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/classpath&amp;gt;&lt;br /&gt;
    &amp;lt;/taskdef&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, you can call this Ant task:&lt;br /&gt;
&amp;lt;code lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;pure-java-rpm group=&amp;quot;Games&amp;quot; name=&amp;quot;mygame&amp;quot; version=&amp;quot;0&amp;quot; release=&amp;quot;0&amp;quot; destination=&amp;quot;rpms&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;zipfileset prefix=&amp;quot;/usr/share/games/mygame&amp;quot; file=&amp;quot;user-app.jar&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;depends name=&amp;quot;java&amp;quot; version=&amp;quot;&amp;gt;= 1.6&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/pure-java-rpm&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The created RPM will use the JRE installed on the operating system.&lt;br /&gt;
&lt;br /&gt;
==== Redline with Maven ====&lt;br /&gt;
[http://ronanquillevere.github.io/2015/06/18/redline-rpm-generation.html This tutorial] explains how to use Redline with Maven.&lt;br /&gt;
&lt;br /&gt;
= Debian Package Manager =&lt;br /&gt;
&lt;br /&gt;
[http://wiki.debian.org/Teams/Dpkg Dpkg] (Debian packager) is the default management system under Debian, Ubuntu, Knoppix, Mint, ...&lt;br /&gt;
&lt;br /&gt;
== Platform dependent tools ==&lt;br /&gt;
&lt;br /&gt;
The following tools only work under GNU Linux or other Unix platforms with native deb support.&lt;br /&gt;
&lt;br /&gt;
[http://manpages.ubuntu.com/manpages/lucid/fr/man1/dpkg-buildpackage.1.htmldpkg-buildpackage dpkg-buildpackage] can be used to build DEBs. You can find more information about DEB packaging in the [http://wiki.debian.org/Packaging official documentation].&lt;br /&gt;
&lt;br /&gt;
The build system [http://maven.apache.org Maven] can call this command when you use its [http://debian-maven.sourceforge.net Debian Maven plugin].&lt;br /&gt;
&lt;br /&gt;
== Cross-platform tools ==&lt;br /&gt;
&lt;br /&gt;
=== Jpkg ===&lt;br /&gt;
&lt;br /&gt;
[http://leplastrier.com/projects/jpkg/ Jpkg] is a pure Java library for manipulating DEB packages. It provides an Ant task. You can find an example of use in its [http://github.com/leplastrier/jpkg-library/blob/master/README.md readme file].&lt;br /&gt;
&lt;br /&gt;
=== JDeb ===&lt;br /&gt;
&lt;br /&gt;
[http://github.com/tcurdt/jdeb JDeb] is a pure Java library for manipulating DEB packages. It can be use in command line, with [http://ant.apache.org Ant] and with [http://maven.apache.org Maven].&lt;br /&gt;
&lt;br /&gt;
JDeb requires [http://commons.apache.org/proper/commons-compress/download_compress.cgi Apache Commons Compress], [http://www.bouncycastle.org/latest_releases.html Bounty Castle] and [http://commons.apache.org/proper/commons-io/download_io.cgi Apache Commons IO].&lt;br /&gt;
&lt;br /&gt;
Using a distinct name space or a different task name for the JDeb deb task is necessary to avoid any conflict with any other library used for the same purpose:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;taskdef name=&amp;quot;pure-java-deb&amp;quot;  classname=&amp;quot;org.vafer.jdeb.ant.DebAntTask&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;classpath&amp;gt;&lt;br /&gt;
            &amp;lt;pathelement path=&amp;quot;bcpg-jdk15on-151.jar&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;pathelement path=&amp;quot;commons-compress-1.8.1.jar&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;pathelement path=&amp;quot;commons-io-2.4.jar&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;pathelement path=&amp;quot;jdeb-1.3.jar&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/classpath&amp;gt;&lt;br /&gt;
    &amp;lt;/taskdef&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, you can call this Ant task:&lt;br /&gt;
&amp;lt;code lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;pure-java-deb destfile=&amp;quot;debs&amp;quot; control=&amp;quot;controlDir&amp;quot; verbose=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;data src=&amp;quot;user-app.jar&amp;quot; type=&amp;quot;file&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;mapper type=&amp;quot;perm&amp;quot; prefix=&amp;quot;/usr/share/games/mygame&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/data&amp;gt;&lt;br /&gt;
    &amp;lt;/pure-java-deb&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The attribute &amp;quot;control&amp;quot; must be a directory and the control filename must be named &amp;quot;control&amp;quot; in order to be found by JDeb. You can find an example of control file [http://github.com/tcurdt/jdeb/blob/master/src/examples/ant/src/deb/control/control here].&lt;br /&gt;
&lt;br /&gt;
= Cross-platform tools supporting several package managers =&lt;br /&gt;
&lt;br /&gt;
== JNDT ==&lt;br /&gt;
[http://gouessej.wordpress.com/2014/11/22/ardor3d-est-mort-vive-jogamps-ardor3d-continuation-ardor3d-is-dead-long-life-to-jogamps-ardor3d-continuation/#jndt JNDT] is a pure Java library that provides several Ant targets to create some self-contained native application bundles for GNU Linux, Mac OS X and Windows. It supports several package formats under GNU Linux and as it is cross-platform, it doesn&#039;t require any support of native build tools, i.e it allows to create a DEB package with a GNU Linux distribution that doesn&#039;t support the native DEB build tools, it allows to create a Mac application bundle under Windows, ...&lt;/div&gt;</summary>
		<author><name>Gouessej</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=JogAmp_JAR_File_Handling&amp;diff=1829</id>
		<title>JogAmp JAR File Handling</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=JogAmp_JAR_File_Handling&amp;diff=1829"/>
		<updated>2015-08-20T09:50:12Z</updated>

		<summary type="html">&lt;p&gt;Gouessej: /* Creation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Native JAR Files =&lt;br /&gt;
&lt;br /&gt;
See [{{SERVER}}/jogl/doc/deployment/JOGL-DEPLOYMENT.html#NativeJARFiles Native JAR Files] explained.&lt;br /&gt;
&lt;br /&gt;
Native JAR files are loaded [{{SERVER}}/jogl/doc/userguide/index.html#automatednativelibraryloading automatically].&lt;br /&gt;
&lt;br /&gt;
= Applet / JNLP Usage =&lt;br /&gt;
&lt;br /&gt;
* [[Using JOGL in a Java applet|Using JOGL in a Java Applet]]&lt;br /&gt;
* [[Using JOGL in Java Web Start|Using JOGL in Java Web Start]]&lt;br /&gt;
&lt;br /&gt;
A short &#039;&#039;copy&#039;&#039; is included in the static page [{{SERVER}}/jogl/doc/deployment/JOGL-DEPLOYMENT.html#NApplets JOGL Deployment using NApplet].&lt;br /&gt;
&lt;br /&gt;
= Custom Bundling =&lt;br /&gt;
&lt;br /&gt;
== Multi-Jar ==&lt;br /&gt;
[{{SERVER}}/bugzilla/show_bug.cgi?id=843 Multi-Jar]&lt;br /&gt;
&lt;br /&gt;
This configuration is discouraged, since such deployment removes our artifacts as stored in&lt;br /&gt;
the jar&#039;s manifest file, which helps identifying the jogamp modules for bug reports etc.&lt;br /&gt;
&lt;br /&gt;
However, since we don&#039;t want to patronize our user base, we support this feature with our native JAR lib loading mechanism. &lt;br /&gt;
&lt;br /&gt;
It is possible to merge all modules together, i.e.&lt;br /&gt;
&lt;br /&gt;
  multi.jar:&lt;br /&gt;
    gluegen-rt.jar&lt;br /&gt;
    jogl-all.jar&lt;br /&gt;
    user-app.jar&lt;br /&gt;
&lt;br /&gt;
  multi-natives-&amp;lt;os.and.arch&amp;gt;.jar:&lt;br /&gt;
    gluegen-rt-natives-&amp;lt;os.and.arch&amp;gt;.jar&lt;br /&gt;
    jogl-all-natives-&amp;lt;os.and.arch&amp;gt;.jar&lt;br /&gt;
&lt;br /&gt;
A combination with Fat-Jar is possible.&lt;br /&gt;
&lt;br /&gt;
== Fat-Jar ==&lt;br /&gt;
&lt;br /&gt;
[{{SERVER}}/bugzilla/show_bug.cgi?id=845 Discouraged Fat-Jar]&lt;br /&gt;
&lt;br /&gt;
This configuration is discouraged, since such deployment removes our artifacts as stored in&lt;br /&gt;
the jar&#039;s manifest file, which helps identifying the jogamp modules for bug reports etc.&lt;br /&gt;
&lt;br /&gt;
Furthermore, adding all native library files for all supported platforms&lt;br /&gt;
will add-up to +3M of _compressed_ jar data!&lt;br /&gt;
&lt;br /&gt;
However, since we don&#039;t want to patronize our user base, &lt;br /&gt;
we support this feature with our native JAR lib loading mechanism.&lt;br /&gt;
&lt;br /&gt;
=== Usage ===&lt;br /&gt;
&lt;br /&gt;
If the modules&#039;s jar file contains the folder &#039;natives/&amp;lt;os.and.arch&amp;gt;/&#039;&lt;br /&gt;
we assume a fat-jar and attempt to load all native libraries from the same.&lt;br /&gt;
        &lt;br /&gt;
If we don&#039;t have a fat-jar or if fat-jar loading doesn&#039;t result in extracted native libraries,&lt;br /&gt;
we assume a regular slim jar file.&lt;br /&gt;
&lt;br /&gt;
Layout:&lt;br /&gt;
&lt;br /&gt;
  /com/lala1/Lala1.class&lt;br /&gt;
  /com/lala2/Lala2.class&lt;br /&gt;
  /natives/&amp;lt;os.and.arch&amp;gt;/libLala1.so&lt;br /&gt;
  /natives/&amp;lt;os.and.arch&amp;gt;/libLala2.so&lt;br /&gt;
&lt;br /&gt;
A combination w/ Multi-Jar is of course possible.&lt;br /&gt;
&lt;br /&gt;
=== Creation ===&lt;br /&gt;
&lt;br /&gt;
==== Ant ====&lt;br /&gt;
You can use the [http://ant.apache.org/manual/Tasks/jar.html Ant jar task] to create a fat JAR. You must avoid file names collision, i.e you must exclude the file(s) with the same name(s) in multiple JARs. You can use [https://ant.apache.org/manual/Tasks/manifest.html Ant manifest task] to create a manifest file. The following line just keeps the strict minimum to make JogAmp work and should be used with the [http://ant.apache.org/manual/Tasks/jar.html Ant jar task]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;zipfileset src=&amp;quot;jogamp-fat.jar&amp;quot; includes=&amp;quot;**/*.class,**/*.png,**/*.glsl,**/*.vp,**/*.fp,**/*.bvp,**/*.bfp,**/*.so,**/*.jnilib,**/*.dylib,**/*.dll,**/.bin&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Maven ====&lt;br /&gt;
[http://maven.apache.org/plugins/maven-shade-plugin/index.html Maven Shade Plugin] is the recommended plugin to use to create fat JARs with [http://maven.apache.org Maven]. [http://maven.apache.org/plugins/maven-shade-plugin/examples/executable-jar.html This example] shows how to set some entries in the manifest file.&lt;br /&gt;
&lt;br /&gt;
== One-Jar ==&lt;br /&gt;
&lt;br /&gt;
[{{SERVER}}/bugzilla/show_bug.cgi?id=846 One-Jar]&lt;br /&gt;
&lt;br /&gt;
One-Jar is incomplete, i.e. it does not provide a URL handler for &lt;br /&gt;
it&#039;s jar-in-jar resources - hence we would need to implement this functionality manually.&lt;br /&gt;
&lt;br /&gt;
See [{{SERVER}}/bugzilla/show_bug.cgi?id=846#c1 One-Jar lacks of URLHandler ...]&lt;br /&gt;
&lt;br /&gt;
For now, one can use Eclipse working jar-in-jar feature (see below).&lt;br /&gt;
Since Eclipse is under an open source license, one should be able&lt;br /&gt;
to locate the source code and include in a standalone toolkit, if so required.&lt;br /&gt;
&lt;br /&gt;
== JarMatey ==&lt;br /&gt;
&lt;br /&gt;
[http://staticvoidgames.com/JarMatey/ JarMatey] is an [https://github.com/KevinWorkman/JarMatey open source] tool for creating standalone self-executing JARs, similar to One-Jar but with a graphical user interface and no support for build tools (Ant, Maven). You can find a detailed tutorial about it [http://staticvoidgames.com/tutorials/deployment/joglExample here].&lt;br /&gt;
&lt;br /&gt;
== Eclipse ==&lt;br /&gt;
&lt;br /&gt;
Native JAR files and their respective base JAR files can be bundled in [{{SERVER}}/bugzilla/show_bug.cgi?id=522#c7 custom ways, e.g. eclipse Jar-In-Jar etc].&lt;br /&gt;
&lt;br /&gt;
    Manual tested w/ Eclipse:&lt;br /&gt;
    &lt;br /&gt;
    Preparations:&lt;br /&gt;
    ===============&lt;br /&gt;
    &lt;br /&gt;
    1) Set up a vanilla eclipse (3.7.0) workspace&lt;br /&gt;
    &lt;br /&gt;
    2) Add the JOGL User Library:&lt;br /&gt;
      - Window.Preference&lt;br /&gt;
       - Java.Build_Path.User_Libraries:&lt;br /&gt;
         + JOGL&lt;br /&gt;
            + gluegen-rt.jar&lt;br /&gt;
            + jogl-all.jar&lt;br /&gt;
            + gluegen-rt-natives-linux-amd64.jar&lt;br /&gt;
            + jogl-all-natives-linux-amd64.jar&lt;br /&gt;
    &lt;br /&gt;
            You may add all other native JARs here.&lt;br /&gt;
            Note that these are not required in the CLASSPATH by JOGL,&lt;br /&gt;
            however, they are required by Eclipse to export your project as a Runnable JAR File.&lt;br /&gt;
&lt;br /&gt;
    3) New test project&lt;br /&gt;
      -  Right-click your project in the Package Explorer and click &amp;quot;Properties&amp;quot;.&lt;br /&gt;
           - Select &amp;quot;Java Build Path&amp;quot; and click the &amp;quot;Libraries&amp;quot; tab.&lt;br /&gt;
              + JOGL&lt;br /&gt;
      - Add some simple code ..&lt;br /&gt;
      - Run as Java Application ..&lt;br /&gt;
    &lt;br /&gt;
    Test-1:&lt;br /&gt;
    =========&lt;br /&gt;
    &lt;br /&gt;
    Export&lt;br /&gt;
      - Right-click your project in the Package Explorer and click &amp;quot;Export&amp;quot;&lt;br /&gt;
        - Select Java.Runnable_JAR_file&lt;br /&gt;
          + Launch configuration&lt;br /&gt;
          + some destination path&lt;br /&gt;
          + Library handling:&lt;br /&gt;
            Copy required libraries into a sub-folder next to the generated JAR&lt;br /&gt;
    &lt;br /&gt;
    Result: Works!&lt;br /&gt;
    &lt;br /&gt;
    ./lala01.jar&lt;br /&gt;
    ./lala01_lib/jogl-all.jar&lt;br /&gt;
    ./lala01_lib/jogl-all-natives-linux-amd64.jar&lt;br /&gt;
    ./lala01_lib/... etc ..&lt;br /&gt;
    &lt;br /&gt;
    Test-2:&lt;br /&gt;
    =========&lt;br /&gt;
    &lt;br /&gt;
    Export&lt;br /&gt;
      - Right-click your project in the Package Explorer and click &amp;quot;Export&amp;quot;&lt;br /&gt;
        - Select Java.Runnable_JAR_file&lt;br /&gt;
          + Launch configuration&lt;br /&gt;
          + some destination path&lt;br /&gt;
          + Library handling:&lt;br /&gt;
            Package required libraries into generated JAR&lt;br /&gt;
&lt;br /&gt;
    Result: Works!&lt;br /&gt;
    &lt;br /&gt;
    ./lala02.jar:&lt;br /&gt;
      Manifest-Version: 1.0&lt;br /&gt;
      Rsrc-Class-Path: ./ gluegen-rt-natives-linux-amd64.jar gluegen-rt.jar&lt;br /&gt;
                          jogl-all-natives-linux-amd64.jar jogl-all.jar&lt;br /&gt;
      Class-Path: .&lt;br /&gt;
      Rsrc-Main-Class: Test01&lt;br /&gt;
      Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader&lt;/div&gt;</summary>
		<author><name>Gouessej</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=JogAmp_JAR_File_Handling&amp;diff=1828</id>
		<title>JogAmp JAR File Handling</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=JogAmp_JAR_File_Handling&amp;diff=1828"/>
		<updated>2015-08-20T09:44:10Z</updated>

		<summary type="html">&lt;p&gt;Gouessej: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Native JAR Files =&lt;br /&gt;
&lt;br /&gt;
See [{{SERVER}}/jogl/doc/deployment/JOGL-DEPLOYMENT.html#NativeJARFiles Native JAR Files] explained.&lt;br /&gt;
&lt;br /&gt;
Native JAR files are loaded [{{SERVER}}/jogl/doc/userguide/index.html#automatednativelibraryloading automatically].&lt;br /&gt;
&lt;br /&gt;
= Applet / JNLP Usage =&lt;br /&gt;
&lt;br /&gt;
* [[Using JOGL in a Java applet|Using JOGL in a Java Applet]]&lt;br /&gt;
* [[Using JOGL in Java Web Start|Using JOGL in Java Web Start]]&lt;br /&gt;
&lt;br /&gt;
A short &#039;&#039;copy&#039;&#039; is included in the static page [{{SERVER}}/jogl/doc/deployment/JOGL-DEPLOYMENT.html#NApplets JOGL Deployment using NApplet].&lt;br /&gt;
&lt;br /&gt;
= Custom Bundling =&lt;br /&gt;
&lt;br /&gt;
== Multi-Jar ==&lt;br /&gt;
[{{SERVER}}/bugzilla/show_bug.cgi?id=843 Multi-Jar]&lt;br /&gt;
&lt;br /&gt;
This configuration is discouraged, since such deployment removes our artifacts as stored in&lt;br /&gt;
the jar&#039;s manifest file, which helps identifying the jogamp modules for bug reports etc.&lt;br /&gt;
&lt;br /&gt;
However, since we don&#039;t want to patronize our user base, we support this feature with our native JAR lib loading mechanism. &lt;br /&gt;
&lt;br /&gt;
It is possible to merge all modules together, i.e.&lt;br /&gt;
&lt;br /&gt;
  multi.jar:&lt;br /&gt;
    gluegen-rt.jar&lt;br /&gt;
    jogl-all.jar&lt;br /&gt;
    user-app.jar&lt;br /&gt;
&lt;br /&gt;
  multi-natives-&amp;lt;os.and.arch&amp;gt;.jar:&lt;br /&gt;
    gluegen-rt-natives-&amp;lt;os.and.arch&amp;gt;.jar&lt;br /&gt;
    jogl-all-natives-&amp;lt;os.and.arch&amp;gt;.jar&lt;br /&gt;
&lt;br /&gt;
A combination with Fat-Jar is possible.&lt;br /&gt;
&lt;br /&gt;
== Fat-Jar ==&lt;br /&gt;
&lt;br /&gt;
[{{SERVER}}/bugzilla/show_bug.cgi?id=845 Discouraged Fat-Jar]&lt;br /&gt;
&lt;br /&gt;
This configuration is discouraged, since such deployment removes our artifacts as stored in&lt;br /&gt;
the jar&#039;s manifest file, which helps identifying the jogamp modules for bug reports etc.&lt;br /&gt;
&lt;br /&gt;
Furthermore, adding all native library files for all supported platforms&lt;br /&gt;
will add-up to +3M of _compressed_ jar data!&lt;br /&gt;
&lt;br /&gt;
However, since we don&#039;t want to patronize our user base, &lt;br /&gt;
we support this feature with our native JAR lib loading mechanism.&lt;br /&gt;
&lt;br /&gt;
=== Usage ===&lt;br /&gt;
&lt;br /&gt;
If the modules&#039;s jar file contains the folder &#039;natives/&amp;lt;os.and.arch&amp;gt;/&#039;&lt;br /&gt;
we assume a fat-jar and attempt to load all native libraries from the same.&lt;br /&gt;
        &lt;br /&gt;
If we don&#039;t have a fat-jar or if fat-jar loading doesn&#039;t result in extracted native libraries,&lt;br /&gt;
we assume a regular slim jar file.&lt;br /&gt;
&lt;br /&gt;
Layout:&lt;br /&gt;
&lt;br /&gt;
  /com/lala1/Lala1.class&lt;br /&gt;
  /com/lala2/Lala2.class&lt;br /&gt;
  /natives/&amp;lt;os.and.arch&amp;gt;/libLala1.so&lt;br /&gt;
  /natives/&amp;lt;os.and.arch&amp;gt;/libLala2.so&lt;br /&gt;
&lt;br /&gt;
A combination w/ Multi-Jar is of course possible.&lt;br /&gt;
&lt;br /&gt;
=== Creation ===&lt;br /&gt;
&lt;br /&gt;
==== Ant ====&lt;br /&gt;
You can use the [http://ant.apache.org/manual/Tasks/jar.html Ant jar task] to create a fat JAR. You must avoid file names collision, i.e you must exclude the file(s) with the same name(s) in multiple JARs. The following line just keeps the strict minimum to make JogAmp work and should be used with the [http://ant.apache.org/manual/Tasks/jar.html Ant jar task]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;zipfileset src=&amp;quot;jogamp-fat.jar&amp;quot; includes=&amp;quot;**/*.class,**/*.png,**/*.glsl,**/*.vp,**/*.fp,**/*.bvp,**/*.bfp,**/*.so,**/*.jnilib,**/*.dylib,**/*.dll,**/.bin&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== One-Jar ==&lt;br /&gt;
&lt;br /&gt;
[{{SERVER}}/bugzilla/show_bug.cgi?id=846 One-Jar]&lt;br /&gt;
&lt;br /&gt;
One-Jar is incomplete, i.e. it does not provide a URL handler for &lt;br /&gt;
it&#039;s jar-in-jar resources - hence we would need to implement this functionality manually.&lt;br /&gt;
&lt;br /&gt;
See [{{SERVER}}/bugzilla/show_bug.cgi?id=846#c1 One-Jar lacks of URLHandler ...]&lt;br /&gt;
&lt;br /&gt;
For now, one can use Eclipse working jar-in-jar feature (see below).&lt;br /&gt;
Since Eclipse is under an open source license, one should be able&lt;br /&gt;
to locate the source code and include in a standalone toolkit, if so required.&lt;br /&gt;
&lt;br /&gt;
== JarMatey ==&lt;br /&gt;
&lt;br /&gt;
[http://staticvoidgames.com/JarMatey/ JarMatey] is an [https://github.com/KevinWorkman/JarMatey open source] tool for creating standalone self-executing JARs, similar to One-Jar but with a graphical user interface and no support for build tools (Ant, Maven). You can find a detailed tutorial about it [http://staticvoidgames.com/tutorials/deployment/joglExample here].&lt;br /&gt;
&lt;br /&gt;
== Eclipse ==&lt;br /&gt;
&lt;br /&gt;
Native JAR files and their respective base JAR files can be bundled in [{{SERVER}}/bugzilla/show_bug.cgi?id=522#c7 custom ways, e.g. eclipse Jar-In-Jar etc].&lt;br /&gt;
&lt;br /&gt;
    Manual tested w/ Eclipse:&lt;br /&gt;
    &lt;br /&gt;
    Preparations:&lt;br /&gt;
    ===============&lt;br /&gt;
    &lt;br /&gt;
    1) Set up a vanilla eclipse (3.7.0) workspace&lt;br /&gt;
    &lt;br /&gt;
    2) Add the JOGL User Library:&lt;br /&gt;
      - Window.Preference&lt;br /&gt;
       - Java.Build_Path.User_Libraries:&lt;br /&gt;
         + JOGL&lt;br /&gt;
            + gluegen-rt.jar&lt;br /&gt;
            + jogl-all.jar&lt;br /&gt;
            + gluegen-rt-natives-linux-amd64.jar&lt;br /&gt;
            + jogl-all-natives-linux-amd64.jar&lt;br /&gt;
    &lt;br /&gt;
            You may add all other native JARs here.&lt;br /&gt;
            Note that these are not required in the CLASSPATH by JOGL,&lt;br /&gt;
            however, they are required by Eclipse to export your project as a Runnable JAR File.&lt;br /&gt;
&lt;br /&gt;
    3) New test project&lt;br /&gt;
      -  Right-click your project in the Package Explorer and click &amp;quot;Properties&amp;quot;.&lt;br /&gt;
           - Select &amp;quot;Java Build Path&amp;quot; and click the &amp;quot;Libraries&amp;quot; tab.&lt;br /&gt;
              + JOGL&lt;br /&gt;
      - Add some simple code ..&lt;br /&gt;
      - Run as Java Application ..&lt;br /&gt;
    &lt;br /&gt;
    Test-1:&lt;br /&gt;
    =========&lt;br /&gt;
    &lt;br /&gt;
    Export&lt;br /&gt;
      - Right-click your project in the Package Explorer and click &amp;quot;Export&amp;quot;&lt;br /&gt;
        - Select Java.Runnable_JAR_file&lt;br /&gt;
          + Launch configuration&lt;br /&gt;
          + some destination path&lt;br /&gt;
          + Library handling:&lt;br /&gt;
            Copy required libraries into a sub-folder next to the generated JAR&lt;br /&gt;
    &lt;br /&gt;
    Result: Works!&lt;br /&gt;
    &lt;br /&gt;
    ./lala01.jar&lt;br /&gt;
    ./lala01_lib/jogl-all.jar&lt;br /&gt;
    ./lala01_lib/jogl-all-natives-linux-amd64.jar&lt;br /&gt;
    ./lala01_lib/... etc ..&lt;br /&gt;
    &lt;br /&gt;
    Test-2:&lt;br /&gt;
    =========&lt;br /&gt;
    &lt;br /&gt;
    Export&lt;br /&gt;
      - Right-click your project in the Package Explorer and click &amp;quot;Export&amp;quot;&lt;br /&gt;
        - Select Java.Runnable_JAR_file&lt;br /&gt;
          + Launch configuration&lt;br /&gt;
          + some destination path&lt;br /&gt;
          + Library handling:&lt;br /&gt;
            Package required libraries into generated JAR&lt;br /&gt;
&lt;br /&gt;
    Result: Works!&lt;br /&gt;
    &lt;br /&gt;
    ./lala02.jar:&lt;br /&gt;
      Manifest-Version: 1.0&lt;br /&gt;
      Rsrc-Class-Path: ./ gluegen-rt-natives-linux-amd64.jar gluegen-rt.jar&lt;br /&gt;
                          jogl-all-natives-linux-amd64.jar jogl-all.jar&lt;br /&gt;
      Class-Path: .&lt;br /&gt;
      Rsrc-Main-Class: Test01&lt;br /&gt;
      Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader&lt;/div&gt;</summary>
		<author><name>Gouessej</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=JogAmp_JAR_File_Handling&amp;diff=1827</id>
		<title>JogAmp JAR File Handling</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=JogAmp_JAR_File_Handling&amp;diff=1827"/>
		<updated>2015-08-20T09:42:25Z</updated>

		<summary type="html">&lt;p&gt;Gouessej: /* Fat-Jar */ creation with Ant&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Native JAR Files =&lt;br /&gt;
&lt;br /&gt;
See [{{SERVER}}/jogl/doc/deployment/JOGL-DEPLOYMENT.html#NativeJARFiles Native JAR Files] explained.&lt;br /&gt;
&lt;br /&gt;
Native JAR files are loaded [{{SERVER}}/jogl/doc/userguide/index.html#automatednativelibraryloading automatically].&lt;br /&gt;
&lt;br /&gt;
= Applet / JNLP Usage =&lt;br /&gt;
&lt;br /&gt;
* [[Using JOGL in a Java applet|Using JOGL in a Java Applet]]&lt;br /&gt;
* [[Using JOGL in Java Web Start|Using JOGL in Java Web Start]]&lt;br /&gt;
&lt;br /&gt;
A short &#039;&#039;copy&#039;&#039; is included in the static page [{{SERVER}}/jogl/doc/deployment/JOGL-DEPLOYMENT.html#NApplets JOGL Deployment using NApplet].&lt;br /&gt;
&lt;br /&gt;
= Custom Bundling =&lt;br /&gt;
&lt;br /&gt;
== Multi-Jar ==&lt;br /&gt;
[{{SERVER}}/bugzilla/show_bug.cgi?id=843 Multi-Jar]&lt;br /&gt;
&lt;br /&gt;
This configuration is discouraged, since such deployment removes our artifacts as stored in&lt;br /&gt;
the jar&#039;s manifest file, which helps identifying the jogamp modules for bug reports etc.&lt;br /&gt;
&lt;br /&gt;
However, since we don&#039;t want to patronize our user base, we support this feature with our native JAR lib loading mechanism. &lt;br /&gt;
&lt;br /&gt;
It is possible to merge all modules together, i.e.&lt;br /&gt;
&lt;br /&gt;
  multi.jar:&lt;br /&gt;
    gluegen-rt.jar&lt;br /&gt;
    jogl-all.jar&lt;br /&gt;
    user-app.jar&lt;br /&gt;
&lt;br /&gt;
  multi-natives-&amp;lt;os.and.arch&amp;gt;.jar:&lt;br /&gt;
    gluegen-rt-natives-&amp;lt;os.and.arch&amp;gt;.jar&lt;br /&gt;
    jogl-all-natives-&amp;lt;os.and.arch&amp;gt;.jar&lt;br /&gt;
&lt;br /&gt;
A combination with Fat-Jar is possible.&lt;br /&gt;
&lt;br /&gt;
== Fat-Jar ==&lt;br /&gt;
&lt;br /&gt;
[{{SERVER}}/bugzilla/show_bug.cgi?id=845 Discouraged Fat-Jar]&lt;br /&gt;
&lt;br /&gt;
This configuration is discouraged, since such deployment removes our artifacts as stored in&lt;br /&gt;
the jar&#039;s manifest file, which helps identifying the jogamp modules for bug reports etc.&lt;br /&gt;
&lt;br /&gt;
Furthermore, adding all native library files for all supported platforms&lt;br /&gt;
will add-up to +3M of _compressed_ jar data!&lt;br /&gt;
&lt;br /&gt;
However, since we don&#039;t want to patronize our user base, &lt;br /&gt;
we support this feature with our native JAR lib loading mechanism.&lt;br /&gt;
&lt;br /&gt;
=== Usage ===&lt;br /&gt;
&lt;br /&gt;
If the modules&#039;s jar file contains the folder &#039;natives/&amp;lt;os.and.arch&amp;gt;/&#039;&lt;br /&gt;
we assume a fat-jar and attempt to load all native libraries from the same.&lt;br /&gt;
        &lt;br /&gt;
If we don&#039;t have a fat-jar or if fat-jar loading doesn&#039;t result in extracted native libraries,&lt;br /&gt;
we assume a regular slim jar file.&lt;br /&gt;
&lt;br /&gt;
Layout:&lt;br /&gt;
&lt;br /&gt;
  /com/lala1/Lala1.class&lt;br /&gt;
  /com/lala2/Lala2.class&lt;br /&gt;
  /natives/&amp;lt;os.and.arch&amp;gt;/libLala1.so&lt;br /&gt;
  /natives/&amp;lt;os.and.arch&amp;gt;/libLala2.so&lt;br /&gt;
&lt;br /&gt;
A combination w/ Multi-Jar is of course possible.&lt;br /&gt;
&lt;br /&gt;
=== Creation ===&lt;br /&gt;
&lt;br /&gt;
== Ant ==&lt;br /&gt;
You can use the [http://ant.apache.org/manual/Tasks/jar.html Ant jar task] to create a fat JAR. You must avoid file names collision, i.e you must exclude the file(s) with the same name(s) in multiple JARs. The following line just keeps the strict minimum to make JogAmp work and should be used with the [http://ant.apache.org/manual/Tasks/jar.html Ant jar task]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;zipfileset src=&amp;quot;jogamp-fat.jar&amp;quot; includes=&amp;quot;**/*.class,**/*.png,**/*.glsl,**/*.vp,**/*.fp,**/*.bvp,**/*.bfp,**/*.so,**/*.jnilib,**/*.dylib,**/*.dll,**/.bin&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== One-Jar ==&lt;br /&gt;
&lt;br /&gt;
[{{SERVER}}/bugzilla/show_bug.cgi?id=846 One-Jar]&lt;br /&gt;
&lt;br /&gt;
One-Jar is incomplete, i.e. it does not provide a URL handler for &lt;br /&gt;
it&#039;s jar-in-jar resources - hence we would need to implement this functionality manually.&lt;br /&gt;
&lt;br /&gt;
See [{{SERVER}}/bugzilla/show_bug.cgi?id=846#c1 One-Jar lacks of URLHandler ...]&lt;br /&gt;
&lt;br /&gt;
For now, one can use Eclipse working jar-in-jar feature (see below).&lt;br /&gt;
Since Eclipse is under an open source license, one should be able&lt;br /&gt;
to locate the source code and include in a standalone toolkit, if so required.&lt;br /&gt;
&lt;br /&gt;
== JarMatey ==&lt;br /&gt;
&lt;br /&gt;
[http://staticvoidgames.com/JarMatey/ JarMatey] is an [https://github.com/KevinWorkman/JarMatey open source] tool for creating standalone self-executing JARs, similar to One-Jar but with a graphical user interface and no support for build tools (Ant, Maven). You can find a detailed tutorial about it [http://staticvoidgames.com/tutorials/deployment/joglExample here].&lt;br /&gt;
&lt;br /&gt;
== Eclipse ==&lt;br /&gt;
&lt;br /&gt;
Native JAR files and their respective base JAR files can be bundled in [{{SERVER}}/bugzilla/show_bug.cgi?id=522#c7 custom ways, e.g. eclipse Jar-In-Jar etc].&lt;br /&gt;
&lt;br /&gt;
    Manual tested w/ Eclipse:&lt;br /&gt;
    &lt;br /&gt;
    Preparations:&lt;br /&gt;
    ===============&lt;br /&gt;
    &lt;br /&gt;
    1) Set up a vanilla eclipse (3.7.0) workspace&lt;br /&gt;
    &lt;br /&gt;
    2) Add the JOGL User Library:&lt;br /&gt;
      - Window.Preference&lt;br /&gt;
       - Java.Build_Path.User_Libraries:&lt;br /&gt;
         + JOGL&lt;br /&gt;
            + gluegen-rt.jar&lt;br /&gt;
            + jogl-all.jar&lt;br /&gt;
            + gluegen-rt-natives-linux-amd64.jar&lt;br /&gt;
            + jogl-all-natives-linux-amd64.jar&lt;br /&gt;
    &lt;br /&gt;
            You may add all other native JARs here.&lt;br /&gt;
            Note that these are not required in the CLASSPATH by JOGL,&lt;br /&gt;
            however, they are required by Eclipse to export your project as a Runnable JAR File.&lt;br /&gt;
&lt;br /&gt;
    3) New test project&lt;br /&gt;
      -  Right-click your project in the Package Explorer and click &amp;quot;Properties&amp;quot;.&lt;br /&gt;
           - Select &amp;quot;Java Build Path&amp;quot; and click the &amp;quot;Libraries&amp;quot; tab.&lt;br /&gt;
              + JOGL&lt;br /&gt;
      - Add some simple code ..&lt;br /&gt;
      - Run as Java Application ..&lt;br /&gt;
    &lt;br /&gt;
    Test-1:&lt;br /&gt;
    =========&lt;br /&gt;
    &lt;br /&gt;
    Export&lt;br /&gt;
      - Right-click your project in the Package Explorer and click &amp;quot;Export&amp;quot;&lt;br /&gt;
        - Select Java.Runnable_JAR_file&lt;br /&gt;
          + Launch configuration&lt;br /&gt;
          + some destination path&lt;br /&gt;
          + Library handling:&lt;br /&gt;
            Copy required libraries into a sub-folder next to the generated JAR&lt;br /&gt;
    &lt;br /&gt;
    Result: Works!&lt;br /&gt;
    &lt;br /&gt;
    ./lala01.jar&lt;br /&gt;
    ./lala01_lib/jogl-all.jar&lt;br /&gt;
    ./lala01_lib/jogl-all-natives-linux-amd64.jar&lt;br /&gt;
    ./lala01_lib/... etc ..&lt;br /&gt;
    &lt;br /&gt;
    Test-2:&lt;br /&gt;
    =========&lt;br /&gt;
    &lt;br /&gt;
    Export&lt;br /&gt;
      - Right-click your project in the Package Explorer and click &amp;quot;Export&amp;quot;&lt;br /&gt;
        - Select Java.Runnable_JAR_file&lt;br /&gt;
          + Launch configuration&lt;br /&gt;
          + some destination path&lt;br /&gt;
          + Library handling:&lt;br /&gt;
            Package required libraries into generated JAR&lt;br /&gt;
&lt;br /&gt;
    Result: Works!&lt;br /&gt;
    &lt;br /&gt;
    ./lala02.jar:&lt;br /&gt;
      Manifest-Version: 1.0&lt;br /&gt;
      Rsrc-Class-Path: ./ gluegen-rt-natives-linux-amd64.jar gluegen-rt.jar&lt;br /&gt;
                          jogl-all-natives-linux-amd64.jar jogl-all.jar&lt;br /&gt;
      Class-Path: .&lt;br /&gt;
      Rsrc-Main-Class: Test01&lt;br /&gt;
      Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader&lt;/div&gt;</summary>
		<author><name>Gouessej</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Foreign_Packaging&amp;diff=1826</id>
		<title>Foreign Packaging</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Foreign_Packaging&amp;diff=1826"/>
		<updated>2015-08-20T08:49:32Z</updated>

		<summary type="html">&lt;p&gt;Gouessej: JNDT&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;N.B: This article is subject to changes and is incomplete.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We assume that the application is packaged as a [http://jogamp.org/wiki/index.php/JogAmp_JAR_File_Handling#Fat-Jar fat JAR] called &amp;quot;user-app.jar&amp;quot; for the sake of simplicity.&lt;br /&gt;
&lt;br /&gt;
= Red Hat Package Manager =&lt;br /&gt;
&lt;br /&gt;
[http://www.rpm.org RPM] (Red Hat Package Manager) is the default package management system under Red Hat, Fedora, Mageia, Mandriva, OpenSUSE, Oracle Linux, ...&lt;br /&gt;
&lt;br /&gt;
== Platform dependent tools ==&lt;br /&gt;
&lt;br /&gt;
The following tools only work under GNU Linux or other Unix platforms with native rpm support.&lt;br /&gt;
&lt;br /&gt;
[http://www.rpm.org/max-rpm-snapshot/rpmbuild.8.html rpmbuild] can be used to build RPMs. You can find more information about RPM packaging in the [http://www.rpm.org/wiki/Docs#PackagerDocumentation official documentation].&lt;br /&gt;
&lt;br /&gt;
The build tool [http://ant.apache.org Ant] can call this command when you use its [http://ant.apache.org/manual/Tasks/rpm.html RPM task]. The build system [http://maven.apache.org Maven] does the same with its [http://mojo.codehaus.org/rpm-maven-plugin/ RPM plugin].&lt;br /&gt;
&lt;br /&gt;
== Cross-platform tools ==&lt;br /&gt;
&lt;br /&gt;
=== jRPM ===&lt;br /&gt;
&lt;br /&gt;
[http://jrpm.sourceforge.net jRPM] is a pure Java library for manipulating RPM packages.&lt;br /&gt;
&lt;br /&gt;
=== Redline ===&lt;br /&gt;
[http://redline-rpm.org Redline RPM] is a pure Java library for manipulating RPM packages. It can be use in command line, with [http://ant.apache.org Ant] and with [http://maven.apache.org Maven].&lt;br /&gt;
&lt;br /&gt;
Redline requires [http://commons.apache.org/proper/commons-compress/download_compress.cgi Apache Commons Compress], [http://www.bouncycastle.org/latest_releases.html Bounty Castle], [http://www.slf4j.org/download.html SLF4J] and [http://repo1.maven.org/maven2/org/tukaani/xz/1.4/ XZ].&lt;br /&gt;
&lt;br /&gt;
Using a distinct name space or a different task name for the Redline RPM task is necessary to avoid any conflict with the build-in Ant [http://ant.apache.org/manual/Tasks/rpm.html RPM task]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;taskdef name=&amp;quot;pure-java-rpm&amp;quot; classname=&amp;quot;org.redline_rpm.ant.RedlineTask&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;classpath&amp;gt;&lt;br /&gt;
            &amp;lt;pathelement path=&amp;quot;bcpg-jdk15on-151.jar&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;pathelement path=&amp;quot;commons-compress-1.8.1.jar&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;pathelement path=&amp;quot;slf4j-api-1.7.7.jar&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;pathelement path=&amp;quot;slf4j-simple-1.7.7.jar&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;pathelement path=&amp;quot;xz-1.4.jar&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;pathelement path=&amp;quot;redline-1.1.16.jar&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/classpath&amp;gt;&lt;br /&gt;
    &amp;lt;/taskdef&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, you can call this Ant task:&lt;br /&gt;
&amp;lt;code lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;pure-java-rpm group=&amp;quot;Games&amp;quot; name=&amp;quot;mygame&amp;quot; version=&amp;quot;0&amp;quot; release=&amp;quot;0&amp;quot; destination=&amp;quot;rpms&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;zipfileset prefix=&amp;quot;/usr/share/games/mygame&amp;quot; file=&amp;quot;user-app.jar&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;depends name=&amp;quot;java&amp;quot; version=&amp;quot;&amp;gt;= 1.6&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/pure-java-rpm&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The created RPM will use the JRE installed on the operating system.&lt;br /&gt;
&lt;br /&gt;
= Debian Package Manager =&lt;br /&gt;
&lt;br /&gt;
[http://wiki.debian.org/Teams/Dpkg Dpkg] (Debian packager) is the default management system under Debian, Ubuntu, Knoppix, Mint, ...&lt;br /&gt;
&lt;br /&gt;
== Platform dependent tools ==&lt;br /&gt;
&lt;br /&gt;
The following tools only work under GNU Linux or other Unix platforms with native deb support.&lt;br /&gt;
&lt;br /&gt;
[http://manpages.ubuntu.com/manpages/lucid/fr/man1/dpkg-buildpackage.1.htmldpkg-buildpackage dpkg-buildpackage] can be used to build DEBs. You can find more information about DEB packaging in the [http://wiki.debian.org/Packaging official documentation].&lt;br /&gt;
&lt;br /&gt;
The build system [http://maven.apache.org Maven] can call this command when you use its [http://debian-maven.sourceforge.net Debian Maven plugin].&lt;br /&gt;
&lt;br /&gt;
== Cross-platform tools ==&lt;br /&gt;
&lt;br /&gt;
=== Jpkg ===&lt;br /&gt;
&lt;br /&gt;
[http://leplastrier.com/projects/jpkg/ Jpkg] is a pure Java library for manipulating DEB packages. It provides an Ant task. You can find an example of use in its [http://github.com/leplastrier/jpkg-library/blob/master/README.md readme file].&lt;br /&gt;
&lt;br /&gt;
=== JDeb ===&lt;br /&gt;
&lt;br /&gt;
[http://github.com/tcurdt/jdeb JDeb] is a pure Java library for manipulating DEB packages. It can be use in command line, with [http://ant.apache.org Ant] and with [http://maven.apache.org Maven].&lt;br /&gt;
&lt;br /&gt;
JDeb requires [http://commons.apache.org/proper/commons-compress/download_compress.cgi Apache Commons Compress], [http://www.bouncycastle.org/latest_releases.html Bounty Castle] and [http://commons.apache.org/proper/commons-io/download_io.cgi Apache Commons IO].&lt;br /&gt;
&lt;br /&gt;
Using a distinct name space or a different task name for the JDeb deb task is necessary to avoid any conflict with any other library used for the same purpose:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;taskdef name=&amp;quot;pure-java-deb&amp;quot;  classname=&amp;quot;org.vafer.jdeb.ant.DebAntTask&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;classpath&amp;gt;&lt;br /&gt;
            &amp;lt;pathelement path=&amp;quot;bcpg-jdk15on-151.jar&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;pathelement path=&amp;quot;commons-compress-1.8.1.jar&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;pathelement path=&amp;quot;commons-io-2.4.jar&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;pathelement path=&amp;quot;jdeb-1.3.jar&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/classpath&amp;gt;&lt;br /&gt;
    &amp;lt;/taskdef&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, you can call this Ant task:&lt;br /&gt;
&amp;lt;code lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;pure-java-deb destfile=&amp;quot;debs&amp;quot; control=&amp;quot;controlDir&amp;quot; verbose=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;data src=&amp;quot;user-app.jar&amp;quot; type=&amp;quot;file&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;mapper type=&amp;quot;perm&amp;quot; prefix=&amp;quot;/usr/share/games/mygame&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/data&amp;gt;&lt;br /&gt;
    &amp;lt;/pure-java-deb&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The attribute &amp;quot;control&amp;quot; must be a directory and the control filename must be named &amp;quot;control&amp;quot; in order to be found by JDeb. You can find an example of control file [http://github.com/tcurdt/jdeb/blob/master/src/examples/ant/src/deb/control/control here].&lt;br /&gt;
&lt;br /&gt;
= Cross-platform tools supporting several package managers =&lt;br /&gt;
&lt;br /&gt;
== JNDT ==&lt;br /&gt;
[http://gouessej.wordpress.com/2014/11/22/ardor3d-est-mort-vive-jogamps-ardor3d-continuation-ardor3d-is-dead-long-life-to-jogamps-ardor3d-continuation/#jndt JNDT] is a pure Java library that provides several Ant targets to create some self-contained native application bundles for GNU Linux, Mac OS X and Windows. It supports several package formats under GNU Linux and as it is cross-platform, it doesn&#039;t require any support of native build tools, i.e it allows to create a DEB package with a GNU Linux distribution that doesn&#039;t support the native DEB build tools, it allows to create a Mac application bundle under Windows, ...&lt;/div&gt;</summary>
		<author><name>Gouessej</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Jogl_Tutorial&amp;diff=1818</id>
		<title>Jogl Tutorial</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Jogl_Tutorial&amp;diff=1818"/>
		<updated>2015-08-07T13:07:15Z</updated>

		<summary type="html">&lt;p&gt;Gouessej: /* Common Mistakes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= JogAmp&#039;s Static =&lt;br /&gt;
* [{{SERVER}}/jogl/doc/Overview-OpenGL-Evolution-And-JOGL.html OpenGL Evolution &amp;amp;amp; JOGL]&lt;br /&gt;
*API Doc [ [{{SERVER}}/deployment/jogamp-next/javadoc/jogl/javadoc/ Public], Specs [ [{{SERVER}}/deployment/jogamp-next/javadoc/jogl/javadoc_nativewindow_spec/ Nativewindow], [{{SERVER}}/deployment/jogamp-next/javadoc/jogl/javadoc_jogl_spec/ JOGL] ] ]&lt;br /&gt;
* [{{SERVER}}/jogl/doc/HowToBuild.html How to Build JOGL]&lt;br /&gt;
* [{{SERVER}}/jogl/doc/userguide/ Userguide]&lt;br /&gt;
* [{{SERVER}}/jogl/doc/deployment/JOGL-DEPLOYMENT.html Deployment]&lt;br /&gt;
* [{{SERVER}}/deployment/jogamp-current/jogl-test-applets.html JOGL Test Applets]&lt;br /&gt;
** [{{SERVER}}/deployment/jogamp-current/jogl-applet-runner-newt-gears-normal.html using Object/Embed tags]&lt;br /&gt;
** [{{SERVER}}/deployment/jogamp-current/jogl-demos/applet-gears.html using the Applet Tag]&lt;br /&gt;
* [{{SERVER}}/jogl/doc/NEWT-Overview.html NEWT - High Performance Native Windowing Toolkit]&lt;br /&gt;
* [{{SERVER}}/git/?p=jogl-demos.git;a=blob;f=src/demos/es2/RawGL2ES2demo.java;hb=HEAD OpenGL GL2ES2 GLSL Standalone Example by Xerxes Rånby ]&lt;br /&gt;
* [https://gist.github.com/gouessej/3420e2b6f632efdddf98 Rudimentary standalone example using the fixed pipeline by Julien Gouesse]&lt;br /&gt;
&lt;br /&gt;
= JogAmp&#039;s Wiki =&lt;br /&gt;
* [[Downloading and installing JOGL|Downloading and installing JOGL]]&lt;br /&gt;
** [[Jogamp_Versioning_and_Releases|Versioning And Release Information]]&lt;br /&gt;
* [[Setting up a JogAmp project in your favorite IDE|Setting up a JogAmp project in your favorite IDE]]&lt;br /&gt;
* Deployment&lt;br /&gt;
** [[JogAmp JAR File Handling|JAR File Handling]]&lt;br /&gt;
** [[Using JOGL in a Java applet|Using JOGL in a Java Applet]]&lt;br /&gt;
** [[Using JOGL in Java Web Start|Using JOGL in Java Web Start]]&lt;br /&gt;
** [[Foreign Packaging|Foreign Packaging]]&lt;br /&gt;
* JOGL&lt;br /&gt;
** [[How to write cross GLProfile compatible shader using JOGL]]&lt;br /&gt;
** [[How to use the Debug and Trace GL Pipeline and Debug GL Context]]&lt;br /&gt;
** [[Using JOGL in AWT SWT and Swing|Using JOGL in AWT, SWT, and Swing]]&lt;br /&gt;
** [[How to use X11 displays]]&lt;br /&gt;
* [[Jogl_FAQ|FAQ]]&lt;br /&gt;
&lt;br /&gt;
= Hello Triangle =&lt;br /&gt;
[https://github.com/elect86/jogl-samples/blob/master/jogl-samples/src/helloTriangle/HelloTriangle.java Simple sample] that features GL4, pure newt, glWindow options, animator, indexed drawing, dinamic attribute and frag data binding, interleaved data, vao, vbo (with normalization on one attribute), ibo (with shorts), uniform, glsl program (with specific suffix) and matrix jogl util, gl error check, key listener and right way to dispose.&lt;br /&gt;
&lt;br /&gt;
= Common Mistakes =&lt;br /&gt;
I suggest you to take a read to these two pages for a quick overview over the most common problems, it is a very useful reading, legacy sections are carefully signaled.&lt;br /&gt;
&lt;br /&gt;
[https://www.opengl.org/wiki/Common_Mistakes OpenGL]&lt;br /&gt;
[https://www.opengl.org/wiki/GLSL_:_common_mistakes GLSL]&lt;br /&gt;
&lt;br /&gt;
N.B: The use of color picking is &#039;&#039;&#039;NOT&#039;&#039;&#039; recommended on any hardware whose palette is partially emulated.&lt;br /&gt;
&lt;br /&gt;
= Wade&#039;s JOGL tutorials =&lt;br /&gt;
* [http://wadeawalker.wordpress.com/2010/10/09/tutorial-a-cross-platform-workbench-program-using-java-opengl-and-eclipse/ Cross-platform workbench program using Eclipse and JOGL]&lt;br /&gt;
* [http://wadeawalker.wordpress.com/2010/10/17/tutorial-faster-rendering-with-vertex-buffer-objects/ Faster rendering with vertex buffer objects]&lt;br /&gt;
* [http://wadeawalker.wordpress.com/2010/10/24/tutorial-creating-native-binary-executables-for-multi-platform-java-apps-with-opengl-and-eclipse-rcp/ Creating native binary executables for multi-platform Java apps with OpenGL and Eclipse RCP]&lt;br /&gt;
* [http://wadeawalker.wordpress.com/2010/12/06/tutorial-displaying-java-opengl-in-an-eclipse-editor-with-a-menu-bar-and-a-runpause-button/ Displaying Java OpenGL in an Eclipse RCP editor with a menu bar and a run/pause button]&lt;br /&gt;
&lt;br /&gt;
= Rami&#039;s JOGL tutorials =&lt;br /&gt;
* [http://ramisantina.com/blog/?p=8 Rami&#039;s Guide how to setup a JOGL Eclipse project]&lt;br /&gt;
&lt;br /&gt;
= [https://sites.google.com/site/justinscsstuff/jogl-tutorials Justin&#039;s Getting Started with JOGL 2 Tutorials] =&lt;br /&gt;
* [https://sites.google.com/site/justinscsstuff/jogl-tutorial-1 JOGL Tutorial 1 - Environment Setup]&lt;br /&gt;
* [https://sites.google.com/site/justinscsstuff/jogl-tutorial-2 JOGL Tutorial 2 - Creating a Window]&lt;br /&gt;
* [https://sites.google.com/site/justinscsstuff/jogl-tutorial-3 JOGL Tutorial 3 - Creating a Render Loop]&lt;br /&gt;
&lt;br /&gt;
= Elect86&#039;s modern OpenGL examples =&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/elect86/modern-jogl-examples Source code on Github]&lt;br /&gt;
&lt;br /&gt;
= Nils Hoffmann&#039;s Netbeans Platform examples =&lt;br /&gt;
* [https://github.com/nilshoffmann/netbeans-jogl2 Source code on Github]&lt;br /&gt;
&lt;br /&gt;
= Courses =&lt;br /&gt;
* [http://www3.ntu.edu.sg/home/ehchua/programming/opengl/JOGL2.0.html Yet Another Tutorial on JOGL 2.0 - Including Nehe JOGL Port (Chua Hock-Chuan&#039;s notes at Nanyang Tech. University)]&lt;br /&gt;
* [http://www.informatik.uni-oldenburg.de/~trigger/opengl_course.html Johannes&#039;s Courses at University of Oldenburg (German)]&lt;br /&gt;
* [http://www.manuel-carcenac.com/courses/index.html Manuel&#039;s Courses at European University of Lefke]&lt;br /&gt;
** [http://www.manuel-carcenac.com/courses/Graphics_in_Java/index.htm Graphics in Java incl. 3D/JOGL]&lt;br /&gt;
** [http://www.manuel-carcenac.com/courses/Advanced_Graphics_in_Java_and_JOGL/index.htm Advanced 3D Graphics in Java and Java OpenGL (JOGL 2)]&lt;br /&gt;
&lt;br /&gt;
= [http://leolol.com/tutorials/graphics_tutorials.html LeoLoL.com Tutorials] (Currently unreachable) =&lt;br /&gt;
* [http://leolol.com/tutorials/graphics/lesson01.html Lesson 1 - Setting up a JOGL Template]&lt;br /&gt;
* [http://leolol.com/tutorials/graphics/lesson02.html Lesson 2 - Drawing basic 2D shapes]&lt;br /&gt;
* [http://leolol.com/tutorials/graphics/lesson03.html Lesson 3 - Adding colour]&lt;br /&gt;
* [http://leolol.com/tutorials/graphics/lesson04.html Lesson 4 - 3D Shapes and Rotation]&lt;br /&gt;
&lt;br /&gt;
= JOGL 1 tutorials =&lt;br /&gt;
* [http://www.felixgers.de/teaching/jogl/ Felix&#039;s OpenGL and JOGL]&lt;br /&gt;
&lt;br /&gt;
== [http://www.sjonesart.com/gl.php Ste3e&#039;s JOGL tutorials] ==&lt;br /&gt;
* [https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=true&amp;amp;srcid=0B9hhZie2D-fENGE3ZmZkOGItZGYzZC00ZDgzLTg0NTAtMTk1MTAwMzYxYzNk&amp;amp;hl=en Keys and Mouse]&lt;br /&gt;
* [https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=true&amp;amp;srcid=0B9hhZie2D-fEYTFiMmFiYzQtMDA0MC00ZWI0LWI1NjItODE3ZjM2OGUxOWEw&amp;amp;hl=en First-Person Shooter]&lt;br /&gt;
* [https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=true&amp;amp;srcid=0B9hhZie2D-fEZGI2NTZhZTMtYWYwNS00NTljLWFiNGQtM2UyNTYyNjAzNDYy&amp;amp;hl=en Vertex Buffer Objects]&lt;br /&gt;
* [https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=true&amp;amp;srcid=0B9hhZie2D-fENWFhODk0M2UtZDY0Ni00YWM5LWIxZGUtMzM0YzMxMmRlODgx&amp;amp;hl=en Shader Setup]&lt;br /&gt;
* [https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=true&amp;amp;srcid=0B9hhZie2D-fEMzNjNDBmMjUtNGQzNS00ODY0LWJkYmUtNDM5Y2I5ODc0Y2Nj&amp;amp;hl=en Texture Using Shaders]&lt;br /&gt;
&lt;br /&gt;
(The old (not quite up-to-date) JOGL Userguide is currently available [http://jogamp.org/jogl/doc/userguide/ here])&lt;/div&gt;</summary>
		<author><name>Gouessej</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Main_Page&amp;diff=1759</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Main_Page&amp;diff=1759"/>
		<updated>2015-07-16T18:13:00Z</updated>

		<summary type="html">&lt;p&gt;Gouessej: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
Welcome to the [{{SERVER}}/ JogAmp] wiki. It documents JOGL, JOCL and JOAL, the cross-platform bindings to the OpenGL, OpenCL, and OpenAL APIs.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{| style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;Getting Started&amp;lt;/h3&amp;gt;&lt;br /&gt;
*[[Downloading and installing JOGL|Downloading and installing]]&lt;br /&gt;
**[[Jogamp Versioning and Releases|Versioning and Releases]]&lt;br /&gt;
*[[Setting up a JogAmp project in your favorite IDE|Setting up a JogAmp project in your favorite IDE]]&lt;br /&gt;
*[[Jogamp SCM Repositories|Source Code Repositories]]&lt;br /&gt;
*[[SW Tracking|Tracking Reports]]&lt;br /&gt;
*[{{SERVER}}/chuck/ Build and Test Server]&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;Community&amp;lt;/h3&amp;gt;&lt;br /&gt;
*[[How to Contribute|Contribute to JogAmp]]&lt;br /&gt;
*[[How to Build|Build JogAmp]]&lt;br /&gt;
*[[Maintainer and Contacts]]&lt;br /&gt;
*[[Jogl FAQ#Bugreports &amp;amp; Testing|Report a bug]]&lt;br /&gt;
**[{{SERVER}}/bugzilla/ Bugzilla]&lt;br /&gt;
*[http://forum.jogamp.org/ Ask a question in the forum]&lt;br /&gt;
*[[chatroom|JogAmp IRC]]&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot; width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;lt;h1&amp;gt;JogAmp Modules&amp;lt;/h1&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;Roadmaps&amp;lt;/h3&amp;gt;&lt;br /&gt;
* [[SW Tracking Report Objectives for the release 2.3.3|2.3.3]], [[SW Tracking Report Objectives for the release 2.3.2|2.3.2]], [[SW Tracking Report Objectives for the release 2.3.1|2.3.1]], [[SW Tracking Report Objectives for the release 2.3.0|2.3.0]]&lt;br /&gt;
* [[SW Tracking Report Objectives for the release 2.2.4|2.2.4]], [[SW Tracking Report Objectives for the release 2.2.3|2.2.3]], [[SW Tracking Report Objectives for the release 2.2.2|2.2.2]], [[SW Tracking Report Objectives for the release 2.2.1|2.2.1]], [[SW Tracking Report Objectives for the release 2.2.0|2.2.0]]&lt;br /&gt;
* [[SW Tracking Report Objectives for the release 2.1.5|2.1.5]], [[SW Tracking Report Objectives for the release 2.1.4|2.1.4]], [[SW Tracking Report Objectives for the release 2.1.3|2.1.3]], [[SW Tracking Report Objectives for the release 2.1.2|2.1.2]], [[SW Tracking Report Objectives for the release 2.1.1|2.1.1]], [[SW Tracking Report Objectives for the release 2.1.0|2.1.0]]&lt;br /&gt;
* [[SW Tracking Report Objectives for the release 2.0.2 of JOGL|2.0.2]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;JOGL&amp;lt;/h3&amp;gt;&lt;br /&gt;
*[[Jogl Overview|Overview]] [ [{{SERVER}}/jogl/doc/Overview-OpenGL-Evolution-And-JOGL.html OpenGL Evolution &amp;amp;amp; JOGL] ]&lt;br /&gt;
*[[Jogl Tutorial|Tutorial]]&lt;br /&gt;
*[[Jogl FAQ|FAQ]]&lt;br /&gt;
*[{{SERVER}}/git/?p=jogl.git;a=blob;f=LICENSE.txt License]&lt;br /&gt;
*API Doc [ [{{SERVER}}/deployment/jogamp-next/javadoc/jogl/javadoc/ Public], Specs [ [{{SERVER}}/deployment/jogamp-next/javadoc/jogl/javadoc_nativewindow_spec/ Nativewindow], [{{SERVER}}/deployment/jogamp-next/javadoc/jogl/javadoc_jogl_spec/ JOGL] ] ]&lt;br /&gt;
*[{{SERVER}}/jogl/doc/HowToBuild.html How to Build JOGL]&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;JOCL&amp;lt;/h3&amp;gt;&lt;br /&gt;
*[[JOCL Overview|Overview]]&lt;br /&gt;
*[[JOCL Tutorial|Tutorial]]&lt;br /&gt;
*[[JOCL FAQ|FAQ]]&lt;br /&gt;
*[{{SERVER}}/git/?p=jocl.git;a=blob;f=LICENSE License]&lt;br /&gt;
*[{{SERVER}}/deployment/jogamp-next/javadoc/jocl/javadoc/ API Doc]&lt;br /&gt;
*[{{SERVER}}/jocl/doc/HowToBuild.html How to Build JOCL]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;JOAL&amp;lt;/h3&amp;gt;&lt;br /&gt;
*[[Joal Overview|Overview]]&lt;br /&gt;
*[[Joal Tutorial|Tutorial]]&lt;br /&gt;
*[[Joal FAQ|FAQ]]&lt;br /&gt;
*[{{SERVER}}/git/?p=joal.git;a=blob;f=LICENSE.txt License]&lt;br /&gt;
*API Doc [ [{{SERVER}}/deployment/jogamp-next/javadoc/joal/javadoc/ Public], [{{SERVER}}/deployment/jogamp-next/javadoc/joal/javadoc_dev/ Internal] ]&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;GlueGen&amp;lt;/h3&amp;gt;&lt;br /&gt;
* [[GlueGen_Wiki|Overview]]&lt;br /&gt;
* [{{SERVER}}/git/?p=gluegen.git;a=blob;f=LICENSE.txt License]&lt;br /&gt;
* [{{SERVER}}/deployment/jogamp-next/javadoc/gluegen/javadoc/ API Doc]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot; width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;lt;h1&amp;gt;Related Projects&amp;lt;/h1&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;Java3D&amp;lt;/h3&amp;gt;&lt;br /&gt;
*[[Java3D Overview|Overview]]&lt;br /&gt;
*[[Downloading and installing Java3D|Downloading and installing]]&lt;br /&gt;
*[[Java3D Tutorial|Tutorial]]&lt;br /&gt;
*[[Java3D FAQ|FAQ]]&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;Ji Gong&amp;lt;/h3&amp;gt;&lt;br /&gt;
*[[Ji Gong Overview|Overview]]&lt;br /&gt;
*[[Ji Gong Motivation|Motivation]]&lt;br /&gt;
*[[Ji Gong FAQ|FAQ]]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;Source Certification Contract (SCC)&amp;lt;/h3&amp;gt;&lt;br /&gt;
*[[SCC Overview|Overview]]&lt;br /&gt;
*[[SCC FAQ|FAQ]]&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;Ardor3D&amp;lt;/h3&amp;gt;&lt;br /&gt;
*[[Ardor3D Overview|Overview]]&lt;br /&gt;
*[[Ardor3D Tutorial|Tutorial]]&lt;br /&gt;
*[http://jogamp.org/deployment/ardor3d/javadoc/ API Documentation]&lt;br /&gt;
*[[Ardor3D FAQ|FAQ]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Gouessej</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Main_Page&amp;diff=1758</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Main_Page&amp;diff=1758"/>
		<updated>2015-07-16T18:12:19Z</updated>

		<summary type="html">&lt;p&gt;Gouessej: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
Welcome to the [{{SERVER}}/ JogAmp] wiki. It documents JOGL, JOCL and JOAL, the cross-platform bindings to the OpenGL, OpenCL, and OpenAL APIs.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{| style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;Getting Started&amp;lt;/h3&amp;gt;&lt;br /&gt;
*[[Downloading and installing JOGL|Downloading and installing]]&lt;br /&gt;
**[[Jogamp Versioning and Releases|Versioning and Releases]]&lt;br /&gt;
*[[Setting up a JogAmp project in your favorite IDE|Setting up a JogAmp project in your favorite IDE]]&lt;br /&gt;
*[[Jogamp SCM Repositories|Source Code Repositories]]&lt;br /&gt;
*[[SW Tracking|Tracking Reports]]&lt;br /&gt;
*[{{SERVER}}/chuck/ Build and Test Server]&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;Community&amp;lt;/h3&amp;gt;&lt;br /&gt;
*[[How to Contribute|Contribute to JogAmp]]&lt;br /&gt;
*[[How to Build|Build JogAmp]]&lt;br /&gt;
*[[Maintainer and Contacts]]&lt;br /&gt;
*[[Jogl FAQ#Bugreports &amp;amp; Testing|Report a bug]]&lt;br /&gt;
**[{{SERVER}}/bugzilla/ Bugzilla]&lt;br /&gt;
*[http://forum.jogamp.org/ Ask a question in the forum]&lt;br /&gt;
*[[chatroom|JogAmp IRC]]&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot; width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;lt;h1&amp;gt;JogAmp Modules&amp;lt;/h1&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;Roadmaps&amp;lt;/h3&amp;gt;&lt;br /&gt;
* [[SW Tracking Report Objectives for the release 2.3.3|2.3.3]], [[SW Tracking Report Objectives for the release 2.3.2|2.3.2]], [[SW Tracking Report Objectives for the release 2.3.1|2.3.1]], [[SW Tracking Report Objectives for the release 2.3.0|2.3.0]]&lt;br /&gt;
* [[SW Tracking Report Objectives for the release 2.2.4|2.2.4]], [[SW Tracking Report Objectives for the release 2.2.3|2.2.3]], [[SW Tracking Report Objectives for the release 2.2.2|2.2.2]], [[SW Tracking Report Objectives for the release 2.2.1|2.2.1]], [[SW Tracking Report Objectives for the release 2.2.0|2.2.0]]&lt;br /&gt;
* [[SW Tracking Report Objectives for the release 2.1.5|2.1.5]], [[SW Tracking Report Objectives for the release 2.1.4|2.1.4]], [[SW Tracking Report Objectives for the release 2.1.3|2.1.3]], [[SW Tracking Report Objectives for the release 2.1.2|2.1.2]], [[SW Tracking Report Objectives for the release 2.1.1|2.1.1]], [[SW Tracking Report Objectives for the release 2.1.0|2.1.0]]&lt;br /&gt;
* [[SW Tracking Report Objectives for the release 2.0.2 of JOGL|2.0.2]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;JOGL&amp;lt;/h3&amp;gt;&lt;br /&gt;
*[[Jogl Overview|Overview]] [ [{{SERVER}}/jogl/doc/Overview-OpenGL-Evolution-And-JOGL.html OpenGL Evolution &amp;amp;amp; JOGL] ]&lt;br /&gt;
*[[Jogl Tutorial|Tutorial]]&lt;br /&gt;
*[[Jogl FAQ|FAQ]]&lt;br /&gt;
*[{{SERVER}}/git/?p=jogl.git;a=blob;f=LICENSE.txt License]&lt;br /&gt;
*API Doc [ [{{SERVER}}/deployment/jogamp-next/javadoc/jogl/javadoc/ Public], Specs [ [{{SERVER}}/deployment/jogamp-next/javadoc/jogl/javadoc_nativewindow_spec/ Nativewindow], [{{SERVER}}/deployment/jogamp-next/javadoc/jogl/javadoc_jogl_spec/ JOGL] ] ]&lt;br /&gt;
*[{{SERVER}}/jogl/doc/HowToBuild.html How to Build JOGL]&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;JOCL&amp;lt;/h3&amp;gt;&lt;br /&gt;
*[[JOCL Overview|Overview]]&lt;br /&gt;
*[[JOCL Tutorial|Tutorial]]&lt;br /&gt;
*[[JOCL FAQ|FAQ]]&lt;br /&gt;
*[{{SERVER}}/git/?p=jocl.git;a=blob;f=LICENSE License]&lt;br /&gt;
*[{{SERVER}}/deployment/jogamp-next/javadoc/jocl/javadoc/ API Doc]&lt;br /&gt;
*[{{SERVER}}/jocl/doc/HowToBuild.html How to Build JOCL]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;JOAL&amp;lt;/h3&amp;gt;&lt;br /&gt;
*[[Joal Overview|Overview]]&lt;br /&gt;
*[[Joal Tutorial|Tutorial]]&lt;br /&gt;
*[[Joal FAQ|FAQ]]&lt;br /&gt;
*[{{SERVER}}/git/?p=joal.git;a=blob;f=LICENSE.txt License]&lt;br /&gt;
*API Doc [ [{{SERVER}}/deployment/jogamp-next/javadoc/joal/javadoc/ Public], [{{SERVER}}/deployment/jogamp-next/javadoc/joal/javadoc_dev/ Internal] ]&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;GlueGen&amp;lt;/h3&amp;gt;&lt;br /&gt;
* [[GlueGen_Wiki|Overview]]&lt;br /&gt;
* [{{SERVER}}/git/?p=gluegen.git;a=blob;f=LICENSE.txt License]&lt;br /&gt;
* [{{SERVER}}/deployment/jogamp-next/javadoc/gluegen/javadoc/ API Doc]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot; width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;lt;h1&amp;gt;Related Projects&amp;lt;/h1&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;Java3D&amp;lt;/h3&amp;gt;&lt;br /&gt;
*[[Java3D Overview|Overview]]&lt;br /&gt;
*[[Downloading and installing Java3D|Downloading and installing]]&lt;br /&gt;
*[[Java3D Tutorial|Tutorial]]&lt;br /&gt;
*[[Java3D FAQ|FAQ]]&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;Ji Gong&amp;lt;/h3&amp;gt;&lt;br /&gt;
*[[Ji Gong Overview|Overview]]&lt;br /&gt;
*[[Ji Gong Motivation|Motivation]]&lt;br /&gt;
*[[Ji Gong FAQ|FAQ]]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;Source Certification Contract (SCC)&amp;lt;/h3&amp;gt;&lt;br /&gt;
*[[SCC Overview|Overview]]&lt;br /&gt;
*[[SCC FAQ|FAQ]]&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;Ardor3D&amp;lt;/h3&amp;gt;&lt;br /&gt;
*[[Ardor3D Overview|Overview]]&lt;br /&gt;
*[[Ardor3D Tutorial|Tutorial]]&lt;br /&gt;
*[http://jogamp.org/deployment/ardor3d/javadoc/|API Documentation]&lt;br /&gt;
*[[Ardor3D FAQ|FAQ]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Gouessej</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Main_Page&amp;diff=1757</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Main_Page&amp;diff=1757"/>
		<updated>2015-07-16T18:12:00Z</updated>

		<summary type="html">&lt;p&gt;Gouessej: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
Welcome to the [{{SERVER}}/ JogAmp] wiki. It documents JOGL, JOCL and JOAL, the cross-platform bindings to the OpenGL, OpenCL, and OpenAL APIs.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{| style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;Getting Started&amp;lt;/h3&amp;gt;&lt;br /&gt;
*[[Downloading and installing JOGL|Downloading and installing]]&lt;br /&gt;
**[[Jogamp Versioning and Releases|Versioning and Releases]]&lt;br /&gt;
*[[Setting up a JogAmp project in your favorite IDE|Setting up a JogAmp project in your favorite IDE]]&lt;br /&gt;
*[[Jogamp SCM Repositories|Source Code Repositories]]&lt;br /&gt;
*[[SW Tracking|Tracking Reports]]&lt;br /&gt;
*[{{SERVER}}/chuck/ Build and Test Server]&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;Community&amp;lt;/h3&amp;gt;&lt;br /&gt;
*[[How to Contribute|Contribute to JogAmp]]&lt;br /&gt;
*[[How to Build|Build JogAmp]]&lt;br /&gt;
*[[Maintainer and Contacts]]&lt;br /&gt;
*[[Jogl FAQ#Bugreports &amp;amp; Testing|Report a bug]]&lt;br /&gt;
**[{{SERVER}}/bugzilla/ Bugzilla]&lt;br /&gt;
*[http://forum.jogamp.org/ Ask a question in the forum]&lt;br /&gt;
*[[chatroom|JogAmp IRC]]&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot; width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;lt;h1&amp;gt;JogAmp Modules&amp;lt;/h1&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;Roadmaps&amp;lt;/h3&amp;gt;&lt;br /&gt;
* [[SW Tracking Report Objectives for the release 2.3.3|2.3.3]], [[SW Tracking Report Objectives for the release 2.3.2|2.3.2]], [[SW Tracking Report Objectives for the release 2.3.1|2.3.1]], [[SW Tracking Report Objectives for the release 2.3.0|2.3.0]]&lt;br /&gt;
* [[SW Tracking Report Objectives for the release 2.2.4|2.2.4]], [[SW Tracking Report Objectives for the release 2.2.3|2.2.3]], [[SW Tracking Report Objectives for the release 2.2.2|2.2.2]], [[SW Tracking Report Objectives for the release 2.2.1|2.2.1]], [[SW Tracking Report Objectives for the release 2.2.0|2.2.0]]&lt;br /&gt;
* [[SW Tracking Report Objectives for the release 2.1.5|2.1.5]], [[SW Tracking Report Objectives for the release 2.1.4|2.1.4]], [[SW Tracking Report Objectives for the release 2.1.3|2.1.3]], [[SW Tracking Report Objectives for the release 2.1.2|2.1.2]], [[SW Tracking Report Objectives for the release 2.1.1|2.1.1]], [[SW Tracking Report Objectives for the release 2.1.0|2.1.0]]&lt;br /&gt;
* [[SW Tracking Report Objectives for the release 2.0.2 of JOGL|2.0.2]]&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;JOGL&amp;lt;/h3&amp;gt;&lt;br /&gt;
*[[Jogl Overview|Overview]] [ [{{SERVER}}/jogl/doc/Overview-OpenGL-Evolution-And-JOGL.html OpenGL Evolution &amp;amp;amp; JOGL] ]&lt;br /&gt;
*[[Jogl Tutorial|Tutorial]]&lt;br /&gt;
*[[Jogl FAQ|FAQ]]&lt;br /&gt;
*[{{SERVER}}/git/?p=jogl.git;a=blob;f=LICENSE.txt License]&lt;br /&gt;
*API Doc [ [{{SERVER}}/deployment/jogamp-next/javadoc/jogl/javadoc/ Public], Specs [ [{{SERVER}}/deployment/jogamp-next/javadoc/jogl/javadoc_nativewindow_spec/ Nativewindow], [{{SERVER}}/deployment/jogamp-next/javadoc/jogl/javadoc_jogl_spec/ JOGL] ] ]&lt;br /&gt;
*[{{SERVER}}/jogl/doc/HowToBuild.html How to Build JOGL]&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;JOCL&amp;lt;/h3&amp;gt;&lt;br /&gt;
*[[JOCL Overview|Overview]]&lt;br /&gt;
*[[JOCL Tutorial|Tutorial]]&lt;br /&gt;
*[[JOCL FAQ|FAQ]]&lt;br /&gt;
*[{{SERVER}}/git/?p=jocl.git;a=blob;f=LICENSE License]&lt;br /&gt;
*[{{SERVER}}/deployment/jogamp-next/javadoc/jocl/javadoc/ API Doc]&lt;br /&gt;
*[{{SERVER}}/jocl/doc/HowToBuild.html How to Build JOCL]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;JOAL&amp;lt;/h3&amp;gt;&lt;br /&gt;
*[[Joal Overview|Overview]]&lt;br /&gt;
*[[Joal Tutorial|Tutorial]]&lt;br /&gt;
*[[Joal FAQ|FAQ]]&lt;br /&gt;
*[{{SERVER}}/git/?p=joal.git;a=blob;f=LICENSE.txt License]&lt;br /&gt;
*API Doc [ [{{SERVER}}/deployment/jogamp-next/javadoc/joal/javadoc/ Public], [{{SERVER}}/deployment/jogamp-next/javadoc/joal/javadoc_dev/ Internal] ]&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;GlueGen&amp;lt;/h3&amp;gt;&lt;br /&gt;
* [[GlueGen_Wiki|Overview]]&lt;br /&gt;
* [{{SERVER}}/git/?p=gluegen.git;a=blob;f=LICENSE.txt License]&lt;br /&gt;
* [{{SERVER}}/deployment/jogamp-next/javadoc/gluegen/javadoc/ API Doc]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot; width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;lt;h1&amp;gt;Related Projects&amp;lt;/h1&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;Java3D&amp;lt;/h3&amp;gt;&lt;br /&gt;
*[[Java3D Overview|Overview]]&lt;br /&gt;
*[[Downloading and installing Java3D|Downloading and installing]]&lt;br /&gt;
*[[Java3D Tutorial|Tutorial]]&lt;br /&gt;
*[[Java3D FAQ|FAQ]]&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;Ji Gong&amp;lt;/h3&amp;gt;&lt;br /&gt;
*[[Ji Gong Overview|Overview]]&lt;br /&gt;
*[[Ji Gong Motivation|Motivation]]&lt;br /&gt;
*[[Ji Gong FAQ|FAQ]]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;Source Certification Contract (SCC)&amp;lt;/h3&amp;gt;&lt;br /&gt;
*[[SCC Overview|Overview]]&lt;br /&gt;
*[[SCC FAQ|FAQ]]&lt;br /&gt;
|style=&amp;quot;vertical-align: top; padding: 5px; width: 50%&amp;quot;|&amp;lt;h3&amp;gt;Ardor3D&amp;lt;/h3&amp;gt;&lt;br /&gt;
*[[Ardor3D Overview|Overview]]&lt;br /&gt;
*[[Ardor3D Tutorial|Tutorial]]&lt;br /&gt;
*[[http://jogamp.org/deployment/ardor3d/javadoc/|API Documentation]]&lt;br /&gt;
*[[Ardor3D FAQ|FAQ]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Gouessej</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Jogl_Overview&amp;diff=1747</id>
		<title>Jogl Overview</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Jogl_Overview&amp;diff=1747"/>
		<updated>2015-04-24T09:45:43Z</updated>

		<summary type="html">&lt;p&gt;Gouessej: /* OpenGL Profiles explained */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A more detailed document is available: [{{SERVER}}/jogl/doc/Overview-OpenGL-Evolution-And-JOGL.html OpenGL Evolution &amp;amp;amp; JOGL]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== OpenGL Profiles explained ==&lt;br /&gt;
&lt;br /&gt;
[http://jogamp.org/jogl/doc/uml/html-svg/ JOGL 2 supports several OpenGL Profiles]. This entry explains what profiles are and why they are needed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h5&amp;gt; History &amp;lt;/h5&amp;gt;&lt;br /&gt;
SGI released the first OpenGL specification 1992. Since this point OpenGL 1.x constantly evolved (under the ARB and later Khronos Group) by adding new functions to the core API. This went well until programmable graphics hardware became mainstream and shaders became suddenly more flexible and efficient as the generic fixed function pipeline.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h5&amp;gt;OpenGL 2.x &amp;lt;/h5&amp;gt;&lt;br /&gt;
It was the last version in which you could freely mix the fixed function pipeline with the programmable pipeline (as a core feature).&lt;br /&gt;
&lt;br /&gt;
With the release of OpenGL 3.0 the whole fixed function pipeline has been deprecated but you could still use it if you haven&#039;t requested a forward compatible context.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h5&amp;gt;OpenGL ES 1.x and ES 2.x&amp;lt;/h5&amp;gt;&lt;br /&gt;
It specifies a subset of OpenGL intended to be used on embedded devices.&lt;br /&gt;
ES 1.x is a subset of the OpenGL fixed function pipeline, where ES 2.x is a subset of the&lt;br /&gt;
programmable shader hardware only.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h5&amp;gt;OpenGL 3.1 and 3.2 &amp;lt;/h5&amp;gt;&lt;br /&gt;
It removed most deprecated functionality from core specification, however some implementations (e.g. Nvidia drivers) still allow to get them back via an optional compatibility extension. Since 3.1 was the first release which broke compatibility, it is often seen as major OpenGL 3 release.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h5&amp;gt;JOGL 2&amp;lt;/h5&amp;gt;&lt;br /&gt;
&lt;br /&gt;
JOGL 1.1.1 lived in the timeframe up to OpenGL 2.1 which made it easy to stay in sync with the spec. To be able to solve the issue with the deprecation of functionality,&lt;br /&gt;
&lt;br /&gt;
JOGL 2 [http://jogamp.org/jogl/doc/bouml/html-svg/ introduces an abstraction] of the original OpenGL versioning called Profile. Profiles allow Java applications to be written in a way which allows compatibility with multiple OpenGL versions at the same time. Since OpenGL ES (GL for embedded systems) has overlapping functionality with OpenGL itself it opened the opportunity to add even Profiles which bridge desktop and embedded implementations. The class diagram below shows the dependencies between all available Profiles.&lt;/div&gt;</summary>
		<author><name>Gouessej</name></author>
	</entry>
</feed>