<?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=Sgothel</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=Sgothel"/>
	<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Special:Contributions/Sgothel"/>
	<updated>2026-04-19T20:14:54Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=SW_Tracking_Report_Objectives_for_the_release_2.6.0&amp;diff=2258</id>
		<title>SW Tracking Report Objectives for the release 2.6.0</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=SW_Tracking_Report_Objectives_for_the_release_2.6.0&amp;diff=2258"/>
		<updated>2025-09-11T12:30:39Z</updated>

		<summary type="html">&lt;p&gt;Sgothel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;List started on 2023-07-xx, concluding [[SW Tracking Report Objectives for the release 2.5.0|Release 2.5.0]] -  &#039;&#039;&#039;Closed 2025-08-31&#039;&#039;&#039; - continuation @ [[SW Tracking Report Objectives for the release 2.7.0|Release 2.7.0]].&lt;br /&gt;
&lt;br /&gt;
* [{{SERVER}}/gluegen/doc/JogAmpPlatforms-2.6.0.html Supported Platforms]&lt;br /&gt;
* [[Release 2.6.0|Release 2.6.0 Page]]&lt;br /&gt;
* [{{SERVER}}/bugzilla//show_bug.cgi?id=1512 Release 2.6.0 Bugzilla Entry]&lt;br /&gt;
* [{{SERVER}}/bugzilla/buglist.cgi?list_id=2822&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.6.0 Complete Bugzilla List of Version 2.6.0]&lt;br /&gt;
&lt;br /&gt;
= Features =&lt;br /&gt;
&lt;br /&gt;
== Features to be classified for this release ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;status&amp;quot;:[&amp;quot;UNCONFIRMED&amp;quot;],&lt;br /&gt;
        &amp;quot;version&amp;quot;:&amp;quot;2.6.0&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,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;
== Features to implement for this release ==&lt;br /&gt;
&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;],&lt;br /&gt;
        &amp;quot;version&amp;quot;:&amp;quot;2.6.0&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,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;
== Features already implemented for this release ==&lt;br /&gt;
&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;version&amp;quot;:&amp;quot;2.6.0&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,product,component,priority,severity,status,resolution,summary&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Bugs =&lt;br /&gt;
&lt;br /&gt;
== Bugs to be classified for this release ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;status&amp;quot;:[&amp;quot;UNCONFIRMED&amp;quot;],&lt;br /&gt;
        &amp;quot;version&amp;quot;:&amp;quot;2.6.0&amp;quot;,&lt;br /&gt;
        &amp;quot;cf_type&amp;quot;:[&amp;quot;---&amp;quot;, &amp;quot;DEFECT&amp;quot;],&lt;br /&gt;
        &amp;quot;include_fields&amp;quot;:&amp;quot;id,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;
== Bugs to fix for this release ==&lt;br /&gt;
&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;],&lt;br /&gt;
        &amp;quot;version&amp;quot;:&amp;quot;2.6.0&amp;quot;,&lt;br /&gt;
        &amp;quot;cf_type&amp;quot;:[&amp;quot;---&amp;quot;, &amp;quot;DEFECT&amp;quot;],&lt;br /&gt;
        &amp;quot;include_fields&amp;quot;:&amp;quot;id,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;
== Bugs already fixed for this release ==&lt;br /&gt;
&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;version&amp;quot;:&amp;quot;2.6.0&amp;quot;,&lt;br /&gt;
        &amp;quot;cf_type&amp;quot;:[&amp;quot;---&amp;quot;, &amp;quot;DEFECT&amp;quot;],&lt;br /&gt;
        &amp;quot;include_fields&amp;quot;:&amp;quot;id,product,component,priority,severity,status,resolution,summary&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sgothel</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Main_Page&amp;diff=2257</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Main_Page&amp;diff=2257"/>
		<updated>2025-09-11T08:40:40Z</updated>

		<summary type="html">&lt;p&gt;Sgothel: &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;
&lt;br /&gt;
See [{{SERVER}}/cgit/jogl.git/about/#jogamp-history--milestones project history &amp;amp; milestones].&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;
* &#039;&#039;[[SW Tracking Report Feature Objectives Overview|Feature &amp;amp; Objectives]], [[SW Tracking Report Objectives undetermined release|tbd]], [[SW Tracking Report Objectives for the release 3.0.0|3.0.0]], [[SW Tracking Report Objectives for the release 2.7.0|2.7.0]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;[[SW Tracking Report Objectives for the release 2.6.0|2.6.0]] (last stable)&#039;&#039;&#039;, [[SW Tracking Report Objectives for the release 2.5.0|2.5.0]], [[SW Tracking Report Objectives for the release 2.4.0|2.4.0]], [[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/ GlueGen Java™ API-Doc]&lt;br /&gt;
* [{{SERVER}}/gluegen/doc/GlueGen_Mapping.html GlueGen Native Data &amp;amp; Function Mapping]&lt;br /&gt;
* [{{SERVER}}/gluegen/doc/manual/ GlueGen Manual]&lt;br /&gt;
* [{{SERVER}}/gluegen/doc/HowToBuild.html How To Build]&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;
*[{{SERVER}}/bugzilla/showdependencytree.cgi?id=1368&amp;amp;hide_resolved=0 Bugzilla Dependency Tree]&lt;br /&gt;
*[{{SERVER}}/bugzilla/show_bug.cgi?id=1368 Bugzilla Parent Entry]&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>Sgothel</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Main_Page&amp;diff=2256</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Main_Page&amp;diff=2256"/>
		<updated>2025-09-11T08:29:13Z</updated>

		<summary type="html">&lt;p&gt;Sgothel: &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;
See [{{SERVER}}/cgit/jogl.git/about/#jogamp-history--milestones project history &amp;amp; milestones].&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;
* &#039;&#039;[[SW Tracking Report Feature Objectives Overview|Feature &amp;amp; Objectives]], [[SW Tracking Report Objectives undetermined release|tbd]], [[SW Tracking Report Objectives for the release 3.0.0|3.0.0]], [[SW Tracking Report Objectives for the release 2.7.0|2.7.0]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;[[SW Tracking Report Objectives for the release 2.6.0|2.6.0]] (last stable)&#039;&#039;&#039;, [[SW Tracking Report Objectives for the release 2.5.0|2.5.0]], [[SW Tracking Report Objectives for the release 2.4.0|2.4.0]], [[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/ GlueGen Java™ API-Doc]&lt;br /&gt;
* [{{SERVER}}/gluegen/doc/GlueGen_Mapping.html GlueGen Native Data &amp;amp; Function Mapping]&lt;br /&gt;
* [{{SERVER}}/gluegen/doc/manual/ GlueGen Manual]&lt;br /&gt;
* [{{SERVER}}/gluegen/doc/HowToBuild.html How To Build]&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;
*[{{SERVER}}/bugzilla/showdependencytree.cgi?id=1368&amp;amp;hide_resolved=0 Bugzilla Dependency Tree]&lt;br /&gt;
*[{{SERVER}}/bugzilla/show_bug.cgi?id=1368 Bugzilla Parent Entry]&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>Sgothel</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=WebAssembly_(wasm)_Target_Platform&amp;diff=2255</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=2255"/>
		<updated>2025-09-11T06:17:45Z</updated>

		<summary type="html">&lt;p&gt;Sgothel: &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;
Since March &#039;25 [https://2025.wasm.io/slides/the-future-of-write-once-run-anywhere-from-java-to-webassembly-wasmio25.pdf Recent GraalVM on JDK25 supports the wasm target].&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 on JDK 25 hosts wasm and supports &#039;&#039;wasm target&#039;&#039; for the wasm (browser) runtime.&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;
* [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;
&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>Sgothel</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=WebAssembly_(wasm)_Target_Platform&amp;diff=2254</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=2254"/>
		<updated>2025-09-11T06:12:41Z</updated>

		<summary type="html">&lt;p&gt;Sgothel: /* GraalVM */&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 on JDK 25 hosts wasm and supports &#039;&#039;wasm target&#039;&#039; for the wasm (browser) runtime.&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;
* [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;
&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>Sgothel</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Setting_up_a_JogAmp_project_in_your_favorite_IDE&amp;diff=2253</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=2253"/>
		<updated>2025-09-08T18:18:02Z</updated>

		<summary type="html">&lt;p&gt;Sgothel: &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;
= Maven =&lt;br /&gt;
&lt;br /&gt;
JogAmp supports Maven via its [https://jogamp.org/deployment/maven/ the Jogamp Mirror Repository].&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; and from &amp;lt;tt&amp;gt;2.6.0&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;
Please see the [[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;
JogAmp supports Maven via its [https://jogamp.org/deployment/maven/ the Jogamp Mirror Repository].&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; and from &amp;lt;tt&amp;gt;2.6.0&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;
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.6.0&#039;&lt;br /&gt;
  implementation &#039;org.jogamp.jogl:jogl-all-main:2.6.0&#039;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&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;
= 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>Sgothel</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Maven&amp;diff=2252</id>
		<title>Maven</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Maven&amp;diff=2252"/>
		<updated>2025-09-08T18:17:35Z</updated>

		<summary type="html">&lt;p&gt;Sgothel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
JogAmp supports Maven via its [https://jogamp.org/deployment/maven/ the Jogamp Mirror Repository].&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; and from &amp;lt;tt&amp;gt;2.6.0&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.6.0&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.6.0&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.6.0&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.6.0&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.6.0&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 mirror repository:&lt;br /&gt;
&lt;br /&gt;
https://jogamp.org/deployment/maven/org/jogamp/jogl/jogl-all/2.6.0/&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.6.0&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.6.0.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.6.0/jogl-all-main-2.6.0.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.6.0&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.6.0&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.6.0&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.6.0&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.6.0&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.6.0&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.6.0&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.6.0&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.6.0&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.6.0&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.6.0&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.6.0&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 Mirror 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 Mirror Repository] and can be used &lt;br /&gt;
by adding a new profile in your &amp;lt;tt&amp;gt;~/.m2/settings.xml&amp;lt;/tt&amp;gt; file that specifies this 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 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;
= 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>Sgothel</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Downloading_and_installing_JOGL&amp;diff=2251</id>
		<title>Downloading and installing JOGL</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Downloading_and_installing_JOGL&amp;diff=2251"/>
		<updated>2025-09-08T18:17:10Z</updated>

		<summary type="html">&lt;p&gt;Sgothel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Before you can build a project that uses JOGL [https://jogamp.org/wiki/index.php/Setting_up_a_JogAmp_project_in_your_favorite_IDE in your IDE or on the command line], you&#039;ll need to download and install the JOGL JAR files and native JARs or native library files (&amp;lt;tt&amp;gt;.dll&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;.so&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;.jnilib&amp;lt;/tt&amp;gt; files).&lt;br /&gt;
&lt;br /&gt;
You have a choice of JOGL versions to download. The [{{SERVER}}/deployment/jogamp-current/archive/ latest stable version] is the safest, but lags behind in features. The [{{SERVER}}/deployment/autobuilds/master/ latest automatic build] contains all checked-in code, but may be failing some tests.&lt;br /&gt;
&lt;br /&gt;
See also [[Jogamp Versioning and Releases]] for versioning details.&lt;br /&gt;
&lt;br /&gt;
= Downloading the latest stable version =&lt;br /&gt;
&lt;br /&gt;
== Fat Jar for all platforms ==&lt;br /&gt;
(excluding Android)&lt;br /&gt;
&lt;br /&gt;
* [{{SERVER}}/deployment/jogamp-current/fat/jogamp-fat.jar jogamp-fat.jar]&lt;br /&gt;
* Demo files&lt;br /&gt;
** [{{SERVER}}/deployment/jogamp-current/fat/jogl-demos.jar jogl-demos.jar]&lt;br /&gt;
** [{{SERVER}}/deployment/jogamp-current/fat/jogl-fonts-p0.jar jogl-fonts-p0.jar]&lt;br /&gt;
&lt;br /&gt;
=== Using the fat jar ===&lt;br /&gt;
Download all three jar files into a folder as described above and launch e.g. &lt;br /&gt;
&#039;&#039;java -cp jogamp-fat.jar:jogl-demos.jar com.jogamp.opengl.demos.graph.ui.UISceneDemo03&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== APK for Android ==&lt;br /&gt;
* See [[Android Packages]]&lt;br /&gt;
* [{{SERVER}}/deployment/jogamp-current/apk/ Latest APK files location]&lt;br /&gt;
&lt;br /&gt;
User are encouraged to merge the &#039;&#039;&amp;lt;module&amp;gt;-all-android-&amp;lt;arch&amp;gt;.apk&#039;&#039; or jar files with their own application.&lt;br /&gt;
&lt;br /&gt;
=== Testing a single fat APK ===&lt;br /&gt;
A fat demo APK &#039;&#039;jogl-demos-fat-android-${arch}.apk&#039;&#039; resides inside the [{{SERVER}}/deployment/jogamp-current/apk/ APK release folder] and can be directly installed and tested on your device w/ developer mode enabled.&lt;br /&gt;
&lt;br /&gt;
== 7z all-in-one archive ==&lt;br /&gt;
Go to [{{SERVER}}/deployment/jogamp-current/archive/ this page] and download the all-in-one 7z archive file:&lt;br /&gt;
&lt;br /&gt;
: [{{SERVER}}/deployment/jogamp-current/archive/jogamp-all-platforms.7z jogamp-all-platforms.7z]&lt;br /&gt;
&lt;br /&gt;
=== Using the jogamp-all-platforms ===&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-all-platforms&amp;amp;gt;/&lt;br /&gt;
&amp;amp;lt;jogamp-all-platforms&amp;amp;gt;/etc/test.sh&lt;br /&gt;
&amp;amp;lt;jogamp-all-platforms&amp;amp;gt;/etc/test.bat&lt;br /&gt;
&amp;amp;lt;jogamp-all-platforms&amp;amp;gt;/etc/test_dbg.sh&lt;br /&gt;
&amp;amp;lt;jogamp-all-platforms&amp;amp;gt;/etc/test_dbg.bat&lt;br /&gt;
&amp;amp;lt;jogamp-all-platforms&amp;amp;gt;/jar/&amp;amp;lt;module&amp;amp;gt;.jar&lt;br /&gt;
&amp;amp;lt;jogamp-all-platforms&amp;amp;gt;/jar/&amp;amp;lt;module&amp;amp;gt;-natives-&amp;amp;lt;os.and.arch&amp;amp;gt;.jar&lt;br /&gt;
&amp;amp;lt;jogamp-all-platforms&amp;amp;gt;/lib/&lt;br /&gt;
&amp;amp;lt;jogamp-all-platforms&amp;amp;gt;/&amp;amp;lt;module&amp;amp;gt;-java-src.zip*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Legend:&lt;br /&gt;
* [{{SERVER}}/jogl/doc/deployment/JOGL-DEPLOYMENT.html#NativeJARFileNameConvention os.and.arch] &lt;br /&gt;
* module: gluegen, joal, jogl or jocl&lt;br /&gt;
&lt;br /&gt;
Now you can &#039;&#039;&#039;test&#039;&#039;&#039; the &#039;&#039;archive&#039;&#039; as described &lt;br /&gt;
in [[Jogamp Versioning and Releases#Runtime Version Check|runtime version check]]&lt;br /&gt;
and [[Jogamp Versioning and Releases#Runtime Debug Logs|runtime debug test]].&lt;br /&gt;
&lt;br /&gt;
If anything doesn&#039;t work as predicted, please follow our [[Jogl FAQ#Bugreports &amp;amp; Testing|bugreport guide]].&lt;br /&gt;
&lt;br /&gt;
While keeping the above directory structure as-is, you can go ahead and&lt;br /&gt;
* add the non-native JAR files to your CLASSPATH (IDE, manual, ..)&lt;br /&gt;
* attach the java-source files to the non-native JAR files (IDE)&lt;br /&gt;
&lt;br /&gt;
.. now you are set to start using JogAmp module in your project.&lt;br /&gt;
&lt;br /&gt;
The above is detailed in [[Setting_up_a_JogAmp_project_in_your_favorite_IDE#Eclipse_IDE_project|Eclipse Project]]&lt;br /&gt;
and [[Setting_up_a_JogAmp_project_in_your_favorite_IDE#Eclipse_IDE_user_library|Eclipse User Library]].&lt;br /&gt;
&lt;br /&gt;
== Maven ==&lt;br /&gt;
&lt;br /&gt;
JogAmp supports Maven via its [https://jogamp.org/deployment/maven/ the Jogamp Mirror Repository].&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; and from &amp;lt;tt&amp;gt;2.6.0&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;
Please see the [[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;
JogAmp supports Maven via its [https://jogamp.org/deployment/maven/ the Jogamp Mirror Repository].&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; and from &amp;lt;tt&amp;gt;2.6.0&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;
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.6.0&#039;&lt;br /&gt;
  implementation &#039;org.jogamp.jogl:jogl-all-main:2.6.0&#039;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Downloading the latest aggregated autobuild =&lt;br /&gt;
&lt;br /&gt;
Got to [{{SERVER}}/deployment/archive/master/?C=M;O=D this page] and navigate into the first folder,&lt;br /&gt;
which shall be the latest &#039;&#039;aggregated autobuild&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Then navigate further down to &#039;&#039;&#039;archive&#039;&#039;&#039; and download the file &#039;&#039;&#039;jogamp-all-platforms.7z&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
For example, on &#039;&#039;&#039;13-Mar-2013 20:19 CET&#039;&#039;&#039;, the latest &#039;&#039;aggregated autobuild&#039;&#039; was:&lt;br /&gt;
&lt;br /&gt;
 [{{SERVER}}/deployment/archive/master/gluegen_646-joal_408-jogl_930-jocl_756/archive/jogamp-all-platforms.7z {{SERVER}}/deployment/archive/master/gluegen_646-joal_408-jogl_930-jocl_756/archive/jogamp-all-platforms.7z]&lt;br /&gt;
&lt;br /&gt;
Now you can continue [[#Using the 7z jogamp-all-platforms archive|here]].&lt;br /&gt;
&lt;br /&gt;
= Downloading the latest automatic build =&lt;br /&gt;
&lt;br /&gt;
For the latest automatic build, we have to download gluegen and jogl separately.&lt;br /&gt;
&lt;br /&gt;
First, go to [{{SERVER}}/deployment/autobuilds/master/?C=M;O=D this page] and click on the most recent &amp;lt;tt&amp;gt;gluegen-b*&amp;lt;/tt&amp;gt; directory. Then download one of these files for each platform you&#039;re developing on:&lt;br /&gt;
&lt;br /&gt;
: 32-bit Windows: &amp;lt;tt&amp;gt;gluegen-2.0-bvvv-20yymmdd-windows-i586.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 64-bit Windows: &amp;lt;tt&amp;gt;gluegen-2.0-bvvv-20yymmdd-windows-amd64.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 32/64-bit Mac OS X: &amp;lt;tt&amp;gt;gluegen-2.0-bvvv-20yymmdd-macosx-universal.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 32-bit Linux: &amp;lt;tt&amp;gt;gluegen-2.0-bvvv-20yymmdd-linux-i586.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 64-bit Linux: &amp;lt;tt&amp;gt;gluegen-2.0-bvvv-20yymmdd-linux-amd64.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 32-bit Solaris: &amp;lt;tt&amp;gt;gluegen-2.0-bvvv-20yymmdd-solaris-i586.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 64-bit Solaris: &amp;lt;tt&amp;gt;gluegen-2.0-bvvv-20yymmdd-solaris-amd64.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, go back to [{{SERVER}}/deployment/autobuilds/master/?C=M;O=D this page] and click on the most recent &amp;lt;tt&amp;gt;jogl-b*&amp;lt;/tt&amp;gt; directory. Then download one of these files for each platform you&#039;re developing on:&lt;br /&gt;
&lt;br /&gt;
: 32-bit Windows: &amp;lt;tt&amp;gt;jogl-2.0-bvvv-20yymmdd-windows-i586.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 64-bit Windows: &amp;lt;tt&amp;gt;jogl-2.0-bvvv-20yymmdd-windows-amd64.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 32/64-bit Mac OS X: &amp;lt;tt&amp;gt;jogl-2.0-bvvv-20yymmdd-macosx-universal.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 32-bit Linux: &amp;lt;tt&amp;gt;jogl-2.0-bvvv-20yymmdd-linux-i586.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 64-bit Linux: &amp;lt;tt&amp;gt;jogl-2.0-bvvv-20yymmdd-linux-amd64.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 32-bit Solaris: &amp;lt;tt&amp;gt;jogl-2.0-bvvv-20yymmdd-solaris-i586.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 64-bit Solaris: &amp;lt;tt&amp;gt;jogl-2.0-bvvv-20yymmdd-solaris-amd64.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that these automatic builds may not have passed all the regression tests. You can check the test results on the [https://jogamp.org/chuck/ build server] to make sure you&#039;re not downloading a broken build.&lt;br /&gt;
&lt;br /&gt;
== Native JARs vs. native library files ==&lt;br /&gt;
&lt;br /&gt;
JOGL uses native libraries to interface with each platform&#039;s OpenGL library. You can either download these native libraries wrapped up in JAR files (the &amp;quot;native JARs&amp;quot; option), or you can download them as separate &amp;lt;tt&amp;gt;.dll&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;.so&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;.jnilib&amp;lt;/tt&amp;gt; files (the &amp;quot;native library files&amp;quot; option).&lt;br /&gt;
&lt;br /&gt;
When using native JARs, JOGL automatically unzips the native JARs at startup into a temporary directory, then loads the resulting &amp;lt;tt&amp;gt;.dll&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;.so&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;.jnilib&amp;lt;/tt&amp;gt; files from there. When using native library files, JOGL just loads them directly from where they sit, with no unzipping.&lt;br /&gt;
&lt;br /&gt;
Using native JARs is usually easiest, since there are fewer files to manage and it allows different platforms&#039; native library files to coexist in the same directory. Only use the native library files directly if you need fine control over native library file placement or if your app doesn&#039;t have permissions to create temporary directories.&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;
== Unzipping the files ==&lt;br /&gt;
&lt;br /&gt;
Unzip all the downloaded files with [http://www.7-zip.org/ 7zip]. An unzipped file has this general directory structure:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;amp;lt;archive&amp;amp;gt;/&lt;br /&gt;
&amp;amp;lt;archive&amp;amp;gt;/jar/&lt;br /&gt;
&amp;amp;lt;archive&amp;amp;gt;/lib/&lt;br /&gt;
&amp;amp;lt;archive&amp;amp;gt;/&amp;amp;lt;module&amp;amp;gt;-java-src.zip*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you may copy the required JARs out of each &amp;lt;tt&amp;gt;jar&amp;lt;/tt&amp;gt; folder and the native library files (if you&#039;re using them) out of each &amp;lt;tt&amp;gt;lib&amp;lt;/tt&amp;gt; folder. For a full desktop installation using native JARs, here are the files you need. Note that the native JAR names are different for each platform, so you can use some or all of the native JARs together to create a multi-platform installation.&lt;br /&gt;
&lt;br /&gt;
{|cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot;|64-bit Windows&lt;br /&gt;
!align=&amp;quot;left&amp;quot;|64-bit Linux&lt;br /&gt;
!align=&amp;quot;left&amp;quot;|32/64-bit Mac&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;gluegen-rt.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-rt.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-rt.jar&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;jogl-all.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-all.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-all.jar&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;gluegen-java-src.zip&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-java-src.zip&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-java-src.zip&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;jogl-java-src.zip&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-java-src.zip&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-java-src.zip&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;gluegen-rt-natives-windows-amd64.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-rt-natives-linux-amd64.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-rt-natives-macosx-universal.jar&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;jogl-all-natives-windows-amd64.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-all-natives-linux-amd64.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-all-natives-macosx-universal.jar&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
{|cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot;|32-bit Windows&lt;br /&gt;
!align=&amp;quot;left&amp;quot;|32-bit Linux&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;gluegen-rt.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-rt.jar&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;jogl-all.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-all.jar&amp;lt;/tt&amp;gt;||&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;gluegen-java-src.zip&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-java-src.zip&amp;lt;/tt&amp;gt;||&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;jogl-java-src.zip&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-java-src.zip&amp;lt;/tt&amp;gt;||&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;gluegen-rt-natives-windows-i586.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-rt-natives-linux-i586.jar&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;jogl-all-natives-windows-i586.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-all-natives-linux-i586.jar&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
For a full desktop installation using native library files, here are the files you need. Note that the native library files have the same names for 32-bit and 64-bit platforms, so 32-bit and 64-bit platforms can&#039;t coexist in one installation.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot;|Windows&lt;br /&gt;
!align=&amp;quot;left&amp;quot;|Linux&lt;br /&gt;
!align=&amp;quot;left&amp;quot;|Mac&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;gluegen-rt.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-rt.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-rt.jar&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;jogl-all.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-all.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-all.jar&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;gluegen-java-src.zip&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-java-src.zip&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-java-src.zip&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;jogl-java-src.zip&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-java-src.zip&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-java-src.zip&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;gluegen-rt.dll&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;libgluegen-rt.so&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;libgluegen-rt.jnilib&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;jogl_desktop.dll&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;libjogl_desktop.so&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;libjogl_desktop.jnilib&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;nativewindow_awt.dll&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;libnativewindow_awt.so&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;libnativewindow_awt.jnilib&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;nativewindow_win32.dll&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;libnativewindow_x11.so&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;libnativewindow_macosx.jnilib&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;newt.dll&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;libnewt.so&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;libnewt.jnilib&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Maven =&lt;br /&gt;
Alternatively, the Jogamp packages are available through Maven.&lt;br /&gt;
&lt;br /&gt;
See the [[Setting_up_a_JogAmp_project_in_your_favorite_IDE#Maven|maven instructions]] for a guide to using Jogamp in&lt;br /&gt;
Maven projects.&lt;br /&gt;
&lt;br /&gt;
= More information =&lt;br /&gt;
&lt;br /&gt;
JogAmp follows a [[Jogamp_Versioning_and_Releases#Release_Classification|release scheme]],&lt;br /&gt;
which describes the following locations to download the 7z archives from:&lt;br /&gt;
&lt;br /&gt;
* [{{SERVER}}/deployment/ Deployment Home]&lt;br /&gt;
** [{{SERVER}}/deployment/jogamp-current/archive/ Signed Release]&lt;br /&gt;
** [{{SERVER}}/deployment/jogamp-next/archive/ Signed Candidate]&lt;br /&gt;
** [{{SERVER}}/deployment/jogamp-next/v2.0-rc3archive/ Specific Version]&lt;br /&gt;
&lt;br /&gt;
[{{SERVER}}/jogl/doc/deployment/JOGL-DEPLOYMENT.html JOGL Deployment] describes the content of the 7z archive files.&lt;br /&gt;
&lt;br /&gt;
These installations contain all of JOGL. If you want to remove parts you don&#039;t use, see [{{SERVER}}/jogl/doc/deployment/JOGL-DEPLOYMENT.html JOGL Deployment] for more information.&lt;/div&gt;</summary>
		<author><name>Sgothel</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Downloading_and_installing_JOGL&amp;diff=2250</id>
		<title>Downloading and installing JOGL</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Downloading_and_installing_JOGL&amp;diff=2250"/>
		<updated>2025-09-08T18:15:33Z</updated>

		<summary type="html">&lt;p&gt;Sgothel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Before you can build a project that uses JOGL [https://jogamp.org/wiki/index.php/Setting_up_a_JogAmp_project_in_your_favorite_IDE in your IDE or on the command line], you&#039;ll need to download and install the JOGL JAR files and native JARs or native library files (&amp;lt;tt&amp;gt;.dll&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;.so&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;.jnilib&amp;lt;/tt&amp;gt; files).&lt;br /&gt;
&lt;br /&gt;
You have a choice of JOGL versions to download. The [{{SERVER}}/deployment/jogamp-current/archive/ latest stable version] is the safest, but lags behind in features. The [{{SERVER}}/deployment/autobuilds/master/ latest automatic build] contains all checked-in code, but may be failing some tests.&lt;br /&gt;
&lt;br /&gt;
See also [[Jogamp Versioning and Releases]] for versioning details.&lt;br /&gt;
&lt;br /&gt;
= Downloading the latest stable version =&lt;br /&gt;
&lt;br /&gt;
== Fat Jar for all platforms ==&lt;br /&gt;
(excluding Android)&lt;br /&gt;
&lt;br /&gt;
* [{{SERVER}}/deployment/jogamp-current/fat/jogamp-fat.jar jogamp-fat.jar]&lt;br /&gt;
* Demo files&lt;br /&gt;
** [{{SERVER}}/deployment/jogamp-current/fat/jogl-demos.jar jogl-demos.jar]&lt;br /&gt;
** [{{SERVER}}/deployment/jogamp-current/fat/jogl-fonts-p0.jar jogl-fonts-p0.jar]&lt;br /&gt;
&lt;br /&gt;
=== Using the fat jar ===&lt;br /&gt;
Download all three jar files into a folder as described above and launch e.g. &lt;br /&gt;
&#039;&#039;java -cp jogamp-fat.jar:jogl-demos.jar com.jogamp.opengl.demos.graph.ui.UISceneDemo03&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== APK for Android ==&lt;br /&gt;
* See [[Android Packages]]&lt;br /&gt;
* [{{SERVER}}/deployment/jogamp-current/apk/ Latest APK files location]&lt;br /&gt;
&lt;br /&gt;
User are encouraged to merge the &#039;&#039;&amp;lt;module&amp;gt;-all-android-&amp;lt;arch&amp;gt;.apk&#039;&#039; or jar files with their own application.&lt;br /&gt;
&lt;br /&gt;
=== Testing a single fat APK ===&lt;br /&gt;
A fat demo APK &#039;&#039;jogl-demos-fat-android-${arch}.apk&#039;&#039; resides inside the [{{SERVER}}/deployment/jogamp-current/apk/ APK release folder] and can be directly installed and tested on your device w/ developer mode enabled.&lt;br /&gt;
&lt;br /&gt;
== 7z all-in-one archive ==&lt;br /&gt;
Go to [{{SERVER}}/deployment/jogamp-current/archive/ this page] and download the all-in-one 7z archive file:&lt;br /&gt;
&lt;br /&gt;
: [{{SERVER}}/deployment/jogamp-current/archive/jogamp-all-platforms.7z jogamp-all-platforms.7z]&lt;br /&gt;
&lt;br /&gt;
=== Using the jogamp-all-platforms ===&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-all-platforms&amp;amp;gt;/&lt;br /&gt;
&amp;amp;lt;jogamp-all-platforms&amp;amp;gt;/etc/test.sh&lt;br /&gt;
&amp;amp;lt;jogamp-all-platforms&amp;amp;gt;/etc/test.bat&lt;br /&gt;
&amp;amp;lt;jogamp-all-platforms&amp;amp;gt;/etc/test_dbg.sh&lt;br /&gt;
&amp;amp;lt;jogamp-all-platforms&amp;amp;gt;/etc/test_dbg.bat&lt;br /&gt;
&amp;amp;lt;jogamp-all-platforms&amp;amp;gt;/jar/&amp;amp;lt;module&amp;amp;gt;.jar&lt;br /&gt;
&amp;amp;lt;jogamp-all-platforms&amp;amp;gt;/jar/&amp;amp;lt;module&amp;amp;gt;-natives-&amp;amp;lt;os.and.arch&amp;amp;gt;.jar&lt;br /&gt;
&amp;amp;lt;jogamp-all-platforms&amp;amp;gt;/lib/&lt;br /&gt;
&amp;amp;lt;jogamp-all-platforms&amp;amp;gt;/&amp;amp;lt;module&amp;amp;gt;-java-src.zip*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Legend:&lt;br /&gt;
* [{{SERVER}}/jogl/doc/deployment/JOGL-DEPLOYMENT.html#NativeJARFileNameConvention os.and.arch] &lt;br /&gt;
* module: gluegen, joal, jogl or jocl&lt;br /&gt;
&lt;br /&gt;
Now you can &#039;&#039;&#039;test&#039;&#039;&#039; the &#039;&#039;archive&#039;&#039; as described &lt;br /&gt;
in [[Jogamp Versioning and Releases#Runtime Version Check|runtime version check]]&lt;br /&gt;
and [[Jogamp Versioning and Releases#Runtime Debug Logs|runtime debug test]].&lt;br /&gt;
&lt;br /&gt;
If anything doesn&#039;t work as predicted, please follow our [[Jogl FAQ#Bugreports &amp;amp; Testing|bugreport guide]].&lt;br /&gt;
&lt;br /&gt;
While keeping the above directory structure as-is, you can go ahead and&lt;br /&gt;
* add the non-native JAR files to your CLASSPATH (IDE, manual, ..)&lt;br /&gt;
* attach the java-source files to the non-native JAR files (IDE)&lt;br /&gt;
&lt;br /&gt;
.. now you are set to start using JogAmp module in your project.&lt;br /&gt;
&lt;br /&gt;
The above is detailed in [[Setting_up_a_JogAmp_project_in_your_favorite_IDE#Eclipse_IDE_project|Eclipse Project]]&lt;br /&gt;
and [[Setting_up_a_JogAmp_project_in_your_favorite_IDE#Eclipse_IDE_user_library|Eclipse User Library]].&lt;br /&gt;
&lt;br /&gt;
== Maven ==&lt;br /&gt;
&lt;br /&gt;
JogAmp supports for Maven via its [https://jogamp.org/deployment/maven/ the Jogamp Mirror Repository].&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; and from &amp;lt;tt&amp;gt;2.6.0&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;
Please see the [[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;
JogAmp supports for Maven via its [https://jogamp.org/deployment/maven/ the Jogamp Mirror Repository].&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; and from &amp;lt;tt&amp;gt;2.6.0&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;
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.6.0&#039;&lt;br /&gt;
  implementation &#039;org.jogamp.jogl:jogl-all-main:2.6.0&#039;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Downloading the latest aggregated autobuild =&lt;br /&gt;
&lt;br /&gt;
Got to [{{SERVER}}/deployment/archive/master/?C=M;O=D this page] and navigate into the first folder,&lt;br /&gt;
which shall be the latest &#039;&#039;aggregated autobuild&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Then navigate further down to &#039;&#039;&#039;archive&#039;&#039;&#039; and download the file &#039;&#039;&#039;jogamp-all-platforms.7z&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
For example, on &#039;&#039;&#039;13-Mar-2013 20:19 CET&#039;&#039;&#039;, the latest &#039;&#039;aggregated autobuild&#039;&#039; was:&lt;br /&gt;
&lt;br /&gt;
 [{{SERVER}}/deployment/archive/master/gluegen_646-joal_408-jogl_930-jocl_756/archive/jogamp-all-platforms.7z {{SERVER}}/deployment/archive/master/gluegen_646-joal_408-jogl_930-jocl_756/archive/jogamp-all-platforms.7z]&lt;br /&gt;
&lt;br /&gt;
Now you can continue [[#Using the 7z jogamp-all-platforms archive|here]].&lt;br /&gt;
&lt;br /&gt;
= Downloading the latest automatic build =&lt;br /&gt;
&lt;br /&gt;
For the latest automatic build, we have to download gluegen and jogl separately.&lt;br /&gt;
&lt;br /&gt;
First, go to [{{SERVER}}/deployment/autobuilds/master/?C=M;O=D this page] and click on the most recent &amp;lt;tt&amp;gt;gluegen-b*&amp;lt;/tt&amp;gt; directory. Then download one of these files for each platform you&#039;re developing on:&lt;br /&gt;
&lt;br /&gt;
: 32-bit Windows: &amp;lt;tt&amp;gt;gluegen-2.0-bvvv-20yymmdd-windows-i586.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 64-bit Windows: &amp;lt;tt&amp;gt;gluegen-2.0-bvvv-20yymmdd-windows-amd64.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 32/64-bit Mac OS X: &amp;lt;tt&amp;gt;gluegen-2.0-bvvv-20yymmdd-macosx-universal.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 32-bit Linux: &amp;lt;tt&amp;gt;gluegen-2.0-bvvv-20yymmdd-linux-i586.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 64-bit Linux: &amp;lt;tt&amp;gt;gluegen-2.0-bvvv-20yymmdd-linux-amd64.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 32-bit Solaris: &amp;lt;tt&amp;gt;gluegen-2.0-bvvv-20yymmdd-solaris-i586.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 64-bit Solaris: &amp;lt;tt&amp;gt;gluegen-2.0-bvvv-20yymmdd-solaris-amd64.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, go back to [{{SERVER}}/deployment/autobuilds/master/?C=M;O=D this page] and click on the most recent &amp;lt;tt&amp;gt;jogl-b*&amp;lt;/tt&amp;gt; directory. Then download one of these files for each platform you&#039;re developing on:&lt;br /&gt;
&lt;br /&gt;
: 32-bit Windows: &amp;lt;tt&amp;gt;jogl-2.0-bvvv-20yymmdd-windows-i586.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 64-bit Windows: &amp;lt;tt&amp;gt;jogl-2.0-bvvv-20yymmdd-windows-amd64.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 32/64-bit Mac OS X: &amp;lt;tt&amp;gt;jogl-2.0-bvvv-20yymmdd-macosx-universal.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 32-bit Linux: &amp;lt;tt&amp;gt;jogl-2.0-bvvv-20yymmdd-linux-i586.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 64-bit Linux: &amp;lt;tt&amp;gt;jogl-2.0-bvvv-20yymmdd-linux-amd64.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 32-bit Solaris: &amp;lt;tt&amp;gt;jogl-2.0-bvvv-20yymmdd-solaris-i586.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 64-bit Solaris: &amp;lt;tt&amp;gt;jogl-2.0-bvvv-20yymmdd-solaris-amd64.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that these automatic builds may not have passed all the regression tests. You can check the test results on the [https://jogamp.org/chuck/ build server] to make sure you&#039;re not downloading a broken build.&lt;br /&gt;
&lt;br /&gt;
== Native JARs vs. native library files ==&lt;br /&gt;
&lt;br /&gt;
JOGL uses native libraries to interface with each platform&#039;s OpenGL library. You can either download these native libraries wrapped up in JAR files (the &amp;quot;native JARs&amp;quot; option), or you can download them as separate &amp;lt;tt&amp;gt;.dll&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;.so&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;.jnilib&amp;lt;/tt&amp;gt; files (the &amp;quot;native library files&amp;quot; option).&lt;br /&gt;
&lt;br /&gt;
When using native JARs, JOGL automatically unzips the native JARs at startup into a temporary directory, then loads the resulting &amp;lt;tt&amp;gt;.dll&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;.so&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;.jnilib&amp;lt;/tt&amp;gt; files from there. When using native library files, JOGL just loads them directly from where they sit, with no unzipping.&lt;br /&gt;
&lt;br /&gt;
Using native JARs is usually easiest, since there are fewer files to manage and it allows different platforms&#039; native library files to coexist in the same directory. Only use the native library files directly if you need fine control over native library file placement or if your app doesn&#039;t have permissions to create temporary directories.&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;
== Unzipping the files ==&lt;br /&gt;
&lt;br /&gt;
Unzip all the downloaded files with [http://www.7-zip.org/ 7zip]. An unzipped file has this general directory structure:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;amp;lt;archive&amp;amp;gt;/&lt;br /&gt;
&amp;amp;lt;archive&amp;amp;gt;/jar/&lt;br /&gt;
&amp;amp;lt;archive&amp;amp;gt;/lib/&lt;br /&gt;
&amp;amp;lt;archive&amp;amp;gt;/&amp;amp;lt;module&amp;amp;gt;-java-src.zip*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you may copy the required JARs out of each &amp;lt;tt&amp;gt;jar&amp;lt;/tt&amp;gt; folder and the native library files (if you&#039;re using them) out of each &amp;lt;tt&amp;gt;lib&amp;lt;/tt&amp;gt; folder. For a full desktop installation using native JARs, here are the files you need. Note that the native JAR names are different for each platform, so you can use some or all of the native JARs together to create a multi-platform installation.&lt;br /&gt;
&lt;br /&gt;
{|cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot;|64-bit Windows&lt;br /&gt;
!align=&amp;quot;left&amp;quot;|64-bit Linux&lt;br /&gt;
!align=&amp;quot;left&amp;quot;|32/64-bit Mac&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;gluegen-rt.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-rt.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-rt.jar&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;jogl-all.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-all.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-all.jar&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;gluegen-java-src.zip&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-java-src.zip&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-java-src.zip&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;jogl-java-src.zip&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-java-src.zip&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-java-src.zip&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;gluegen-rt-natives-windows-amd64.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-rt-natives-linux-amd64.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-rt-natives-macosx-universal.jar&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;jogl-all-natives-windows-amd64.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-all-natives-linux-amd64.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-all-natives-macosx-universal.jar&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
{|cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot;|32-bit Windows&lt;br /&gt;
!align=&amp;quot;left&amp;quot;|32-bit Linux&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;gluegen-rt.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-rt.jar&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;jogl-all.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-all.jar&amp;lt;/tt&amp;gt;||&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;gluegen-java-src.zip&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-java-src.zip&amp;lt;/tt&amp;gt;||&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;jogl-java-src.zip&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-java-src.zip&amp;lt;/tt&amp;gt;||&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;gluegen-rt-natives-windows-i586.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-rt-natives-linux-i586.jar&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;jogl-all-natives-windows-i586.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-all-natives-linux-i586.jar&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
For a full desktop installation using native library files, here are the files you need. Note that the native library files have the same names for 32-bit and 64-bit platforms, so 32-bit and 64-bit platforms can&#039;t coexist in one installation.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot;|Windows&lt;br /&gt;
!align=&amp;quot;left&amp;quot;|Linux&lt;br /&gt;
!align=&amp;quot;left&amp;quot;|Mac&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;gluegen-rt.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-rt.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-rt.jar&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;jogl-all.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-all.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-all.jar&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;gluegen-java-src.zip&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-java-src.zip&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-java-src.zip&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;jogl-java-src.zip&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-java-src.zip&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-java-src.zip&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;gluegen-rt.dll&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;libgluegen-rt.so&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;libgluegen-rt.jnilib&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;jogl_desktop.dll&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;libjogl_desktop.so&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;libjogl_desktop.jnilib&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;nativewindow_awt.dll&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;libnativewindow_awt.so&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;libnativewindow_awt.jnilib&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;nativewindow_win32.dll&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;libnativewindow_x11.so&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;libnativewindow_macosx.jnilib&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;newt.dll&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;libnewt.so&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;libnewt.jnilib&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Maven =&lt;br /&gt;
Alternatively, the Jogamp packages are available through Maven.&lt;br /&gt;
&lt;br /&gt;
See the [[Setting_up_a_JogAmp_project_in_your_favorite_IDE#Maven|maven instructions]] for a guide to using Jogamp in&lt;br /&gt;
Maven projects.&lt;br /&gt;
&lt;br /&gt;
= More information =&lt;br /&gt;
&lt;br /&gt;
JogAmp follows a [[Jogamp_Versioning_and_Releases#Release_Classification|release scheme]],&lt;br /&gt;
which describes the following locations to download the 7z archives from:&lt;br /&gt;
&lt;br /&gt;
* [{{SERVER}}/deployment/ Deployment Home]&lt;br /&gt;
** [{{SERVER}}/deployment/jogamp-current/archive/ Signed Release]&lt;br /&gt;
** [{{SERVER}}/deployment/jogamp-next/archive/ Signed Candidate]&lt;br /&gt;
** [{{SERVER}}/deployment/jogamp-next/v2.0-rc3archive/ Specific Version]&lt;br /&gt;
&lt;br /&gt;
[{{SERVER}}/jogl/doc/deployment/JOGL-DEPLOYMENT.html JOGL Deployment] describes the content of the 7z archive files.&lt;br /&gt;
&lt;br /&gt;
These installations contain all of JOGL. If you want to remove parts you don&#039;t use, see [{{SERVER}}/jogl/doc/deployment/JOGL-DEPLOYMENT.html JOGL Deployment] for more information.&lt;/div&gt;</summary>
		<author><name>Sgothel</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Setting_up_a_JogAmp_project_in_your_favorite_IDE&amp;diff=2249</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=2249"/>
		<updated>2025-09-08T18:11:07Z</updated>

		<summary type="html">&lt;p&gt;Sgothel: &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;
= Maven =&lt;br /&gt;
&lt;br /&gt;
JogAmp supports for Maven via its [https://jogamp.org/deployment/maven/ the Jogamp Mirror Repository].&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; and from &amp;lt;tt&amp;gt;2.6.0&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;
Please see the [[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;
JogAmp supports for Maven via its [https://jogamp.org/deployment/maven/ the Jogamp Mirror Repository].&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; and from &amp;lt;tt&amp;gt;2.6.0&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;
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.6.0&#039;&lt;br /&gt;
  implementation &#039;org.jogamp.jogl:jogl-all-main:2.6.0&#039;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&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;
= 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>Sgothel</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Setting_up_a_JogAmp_project_in_your_favorite_IDE&amp;diff=2248</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=2248"/>
		<updated>2025-09-08T18:09:08Z</updated>

		<summary type="html">&lt;p&gt;Sgothel: /* Maven */&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;
JogAmp supports for Maven via its [https://jogamp.org/deployment/maven/ the Jogamp Mirror Repository].&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; and from &amp;lt;tt&amp;gt;2.6.0&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;
Please see the [[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>Sgothel</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Maven&amp;diff=2247</id>
		<title>Maven</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Maven&amp;diff=2247"/>
		<updated>2025-09-08T18:08:27Z</updated>

		<summary type="html">&lt;p&gt;Sgothel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
JogAmp supports for Maven via its [https://jogamp.org/deployment/maven/ the Jogamp Mirror Repository].&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; and from &amp;lt;tt&amp;gt;2.6.0&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.6.0&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.6.0&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.6.0&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.6.0&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.6.0&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 mirror repository:&lt;br /&gt;
&lt;br /&gt;
https://jogamp.org/deployment/maven/org/jogamp/jogl/jogl-all/2.6.0/&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.6.0&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.6.0.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.6.0/jogl-all-main-2.6.0.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.6.0&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.6.0&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.6.0&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.6.0&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.6.0&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.6.0&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.6.0&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.6.0&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.6.0&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.6.0&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.6.0&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.6.0&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 Mirror 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 Mirror Repository] and can be used &lt;br /&gt;
by adding a new profile in your &amp;lt;tt&amp;gt;~/.m2/settings.xml&amp;lt;/tt&amp;gt; file that specifies this 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 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;
= 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>Sgothel</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Maven&amp;diff=2246</id>
		<title>Maven</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Maven&amp;diff=2246"/>
		<updated>2025-09-07T21:54:07Z</updated>

		<summary type="html">&lt;p&gt;Sgothel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
JogAmp now contains support for Maven via its [https://jogamp.org/deployment/maven/ the Jogamp Mirror Repository].&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; and from &amp;lt;tt&amp;gt;2.6.0&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.6.0&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.6.0&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.6.0&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.6.0&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.6.0&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 mirror repository:&lt;br /&gt;
&lt;br /&gt;
https://jogamp.org/deployment/maven/org/jogamp/jogl/jogl-all/2.6.0/&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.6.0&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.6.0.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.6.0/jogl-all-main-2.6.0.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.6.0&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.6.0&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.6.0&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.6.0&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.6.0&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.6.0&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.6.0&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.6.0&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.6.0&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.6.0&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.6.0&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.6.0&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 Mirror 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 Mirror Repository] and can be used &lt;br /&gt;
by adding a new profile in your &amp;lt;tt&amp;gt;~/.m2/settings.xml&amp;lt;/tt&amp;gt; file that specifies this 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 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;
= 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>Sgothel</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Downloading_and_installing_JOGL&amp;diff=2245</id>
		<title>Downloading and installing JOGL</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Downloading_and_installing_JOGL&amp;diff=2245"/>
		<updated>2025-09-01T02:12:25Z</updated>

		<summary type="html">&lt;p&gt;Sgothel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Before you can build a project that uses JOGL [https://jogamp.org/wiki/index.php/Setting_up_a_JogAmp_project_in_your_favorite_IDE in your IDE or on the command line], you&#039;ll need to download and install the JOGL JAR files and native JARs or native library files (&amp;lt;tt&amp;gt;.dll&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;.so&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;.jnilib&amp;lt;/tt&amp;gt; files).&lt;br /&gt;
&lt;br /&gt;
You have a choice of JOGL versions to download. The [{{SERVER}}/deployment/jogamp-current/archive/ latest stable version] is the safest, but lags behind in features. The [{{SERVER}}/deployment/autobuilds/master/ latest automatic build] contains all checked-in code, but may be failing some tests.&lt;br /&gt;
&lt;br /&gt;
See also [[Jogamp Versioning and Releases]] for versioning details.&lt;br /&gt;
&lt;br /&gt;
= Downloading the latest stable version =&lt;br /&gt;
&lt;br /&gt;
== Fat Jar for all platforms ==&lt;br /&gt;
(excluding Android)&lt;br /&gt;
&lt;br /&gt;
* [{{SERVER}}/deployment/jogamp-current/fat/jogamp-fat.jar jogamp-fat.jar]&lt;br /&gt;
* Demo files&lt;br /&gt;
** [{{SERVER}}/deployment/jogamp-current/fat/jogl-demos.jar jogl-demos.jar]&lt;br /&gt;
** [{{SERVER}}/deployment/jogamp-current/fat/jogl-fonts-p0.jar jogl-fonts-p0.jar]&lt;br /&gt;
&lt;br /&gt;
=== Using the fat jar ===&lt;br /&gt;
Download all three jar files into a folder as described above and launch e.g. &lt;br /&gt;
&#039;&#039;java -cp jogamp-fat.jar:jogl-demos.jar com.jogamp.opengl.demos.graph.ui.UISceneDemo03&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== APK for Android ==&lt;br /&gt;
* See [[Android Packages]]&lt;br /&gt;
* [{{SERVER}}/deployment/jogamp-current/apk/ Latest APK files location]&lt;br /&gt;
&lt;br /&gt;
User are encouraged to merge the &#039;&#039;&amp;lt;module&amp;gt;-all-android-&amp;lt;arch&amp;gt;.apk&#039;&#039; or jar files with their own application.&lt;br /&gt;
&lt;br /&gt;
=== Testing a single fat APK ===&lt;br /&gt;
A fat demo APK &#039;&#039;jogl-demos-fat-android-${arch}.apk&#039;&#039; resides inside the [{{SERVER}}/deployment/jogamp-current/apk/ APK release folder] and can be directly installed and tested on your device w/ developer mode enabled.&lt;br /&gt;
&lt;br /&gt;
== 7z all-in-one archive ==&lt;br /&gt;
Go to [{{SERVER}}/deployment/jogamp-current/archive/ this page] and download the all-in-one 7z archive file:&lt;br /&gt;
&lt;br /&gt;
: [{{SERVER}}/deployment/jogamp-current/archive/jogamp-all-platforms.7z jogamp-all-platforms.7z]&lt;br /&gt;
&lt;br /&gt;
=== Using the jogamp-all-platforms ===&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-all-platforms&amp;amp;gt;/&lt;br /&gt;
&amp;amp;lt;jogamp-all-platforms&amp;amp;gt;/etc/test.sh&lt;br /&gt;
&amp;amp;lt;jogamp-all-platforms&amp;amp;gt;/etc/test.bat&lt;br /&gt;
&amp;amp;lt;jogamp-all-platforms&amp;amp;gt;/etc/test_dbg.sh&lt;br /&gt;
&amp;amp;lt;jogamp-all-platforms&amp;amp;gt;/etc/test_dbg.bat&lt;br /&gt;
&amp;amp;lt;jogamp-all-platforms&amp;amp;gt;/jar/&amp;amp;lt;module&amp;amp;gt;.jar&lt;br /&gt;
&amp;amp;lt;jogamp-all-platforms&amp;amp;gt;/jar/&amp;amp;lt;module&amp;amp;gt;-natives-&amp;amp;lt;os.and.arch&amp;amp;gt;.jar&lt;br /&gt;
&amp;amp;lt;jogamp-all-platforms&amp;amp;gt;/lib/&lt;br /&gt;
&amp;amp;lt;jogamp-all-platforms&amp;amp;gt;/&amp;amp;lt;module&amp;amp;gt;-java-src.zip*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Legend:&lt;br /&gt;
* [{{SERVER}}/jogl/doc/deployment/JOGL-DEPLOYMENT.html#NativeJARFileNameConvention os.and.arch] &lt;br /&gt;
* module: gluegen, joal, jogl or jocl&lt;br /&gt;
&lt;br /&gt;
Now you can &#039;&#039;&#039;test&#039;&#039;&#039; the &#039;&#039;archive&#039;&#039; as described &lt;br /&gt;
in [[Jogamp Versioning and Releases#Runtime Version Check|runtime version check]]&lt;br /&gt;
and [[Jogamp Versioning and Releases#Runtime Debug Logs|runtime debug test]].&lt;br /&gt;
&lt;br /&gt;
If anything doesn&#039;t work as predicted, please follow our [[Jogl FAQ#Bugreports &amp;amp; Testing|bugreport guide]].&lt;br /&gt;
&lt;br /&gt;
While keeping the above directory structure as-is, you can go ahead and&lt;br /&gt;
* add the non-native JAR files to your CLASSPATH (IDE, manual, ..)&lt;br /&gt;
* attach the java-source files to the non-native JAR files (IDE)&lt;br /&gt;
&lt;br /&gt;
.. now you are set to start using JogAmp module in your project.&lt;br /&gt;
&lt;br /&gt;
The above is detailed in [[Setting_up_a_JogAmp_project_in_your_favorite_IDE#Eclipse_IDE_project|Eclipse Project]]&lt;br /&gt;
and [[Setting_up_a_JogAmp_project_in_your_favorite_IDE#Eclipse_IDE_user_library|Eclipse User Library]].&lt;br /&gt;
&lt;br /&gt;
= Downloading the latest aggregated autobuild =&lt;br /&gt;
&lt;br /&gt;
Got to [{{SERVER}}/deployment/archive/master/?C=M;O=D this page] and navigate into the first folder,&lt;br /&gt;
which shall be the latest &#039;&#039;aggregated autobuild&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Then navigate further down to &#039;&#039;&#039;archive&#039;&#039;&#039; and download the file &#039;&#039;&#039;jogamp-all-platforms.7z&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
For example, on &#039;&#039;&#039;13-Mar-2013 20:19 CET&#039;&#039;&#039;, the latest &#039;&#039;aggregated autobuild&#039;&#039; was:&lt;br /&gt;
&lt;br /&gt;
 [{{SERVER}}/deployment/archive/master/gluegen_646-joal_408-jogl_930-jocl_756/archive/jogamp-all-platforms.7z {{SERVER}}/deployment/archive/master/gluegen_646-joal_408-jogl_930-jocl_756/archive/jogamp-all-platforms.7z]&lt;br /&gt;
&lt;br /&gt;
Now you can continue [[#Using the 7z jogamp-all-platforms archive|here]].&lt;br /&gt;
&lt;br /&gt;
= Downloading the latest automatic build =&lt;br /&gt;
&lt;br /&gt;
For the latest automatic build, we have to download gluegen and jogl separately.&lt;br /&gt;
&lt;br /&gt;
First, go to [{{SERVER}}/deployment/autobuilds/master/?C=M;O=D this page] and click on the most recent &amp;lt;tt&amp;gt;gluegen-b*&amp;lt;/tt&amp;gt; directory. Then download one of these files for each platform you&#039;re developing on:&lt;br /&gt;
&lt;br /&gt;
: 32-bit Windows: &amp;lt;tt&amp;gt;gluegen-2.0-bvvv-20yymmdd-windows-i586.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 64-bit Windows: &amp;lt;tt&amp;gt;gluegen-2.0-bvvv-20yymmdd-windows-amd64.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 32/64-bit Mac OS X: &amp;lt;tt&amp;gt;gluegen-2.0-bvvv-20yymmdd-macosx-universal.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 32-bit Linux: &amp;lt;tt&amp;gt;gluegen-2.0-bvvv-20yymmdd-linux-i586.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 64-bit Linux: &amp;lt;tt&amp;gt;gluegen-2.0-bvvv-20yymmdd-linux-amd64.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 32-bit Solaris: &amp;lt;tt&amp;gt;gluegen-2.0-bvvv-20yymmdd-solaris-i586.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 64-bit Solaris: &amp;lt;tt&amp;gt;gluegen-2.0-bvvv-20yymmdd-solaris-amd64.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, go back to [{{SERVER}}/deployment/autobuilds/master/?C=M;O=D this page] and click on the most recent &amp;lt;tt&amp;gt;jogl-b*&amp;lt;/tt&amp;gt; directory. Then download one of these files for each platform you&#039;re developing on:&lt;br /&gt;
&lt;br /&gt;
: 32-bit Windows: &amp;lt;tt&amp;gt;jogl-2.0-bvvv-20yymmdd-windows-i586.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 64-bit Windows: &amp;lt;tt&amp;gt;jogl-2.0-bvvv-20yymmdd-windows-amd64.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 32/64-bit Mac OS X: &amp;lt;tt&amp;gt;jogl-2.0-bvvv-20yymmdd-macosx-universal.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 32-bit Linux: &amp;lt;tt&amp;gt;jogl-2.0-bvvv-20yymmdd-linux-i586.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 64-bit Linux: &amp;lt;tt&amp;gt;jogl-2.0-bvvv-20yymmdd-linux-amd64.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 32-bit Solaris: &amp;lt;tt&amp;gt;jogl-2.0-bvvv-20yymmdd-solaris-i586.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 64-bit Solaris: &amp;lt;tt&amp;gt;jogl-2.0-bvvv-20yymmdd-solaris-amd64.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that these automatic builds may not have passed all the regression tests. You can check the test results on the [https://jogamp.org/chuck/ build server] to make sure you&#039;re not downloading a broken build.&lt;br /&gt;
&lt;br /&gt;
== Native JARs vs. native library files ==&lt;br /&gt;
&lt;br /&gt;
JOGL uses native libraries to interface with each platform&#039;s OpenGL library. You can either download these native libraries wrapped up in JAR files (the &amp;quot;native JARs&amp;quot; option), or you can download them as separate &amp;lt;tt&amp;gt;.dll&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;.so&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;.jnilib&amp;lt;/tt&amp;gt; files (the &amp;quot;native library files&amp;quot; option).&lt;br /&gt;
&lt;br /&gt;
When using native JARs, JOGL automatically unzips the native JARs at startup into a temporary directory, then loads the resulting &amp;lt;tt&amp;gt;.dll&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;.so&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;.jnilib&amp;lt;/tt&amp;gt; files from there. When using native library files, JOGL just loads them directly from where they sit, with no unzipping.&lt;br /&gt;
&lt;br /&gt;
Using native JARs is usually easiest, since there are fewer files to manage and it allows different platforms&#039; native library files to coexist in the same directory. Only use the native library files directly if you need fine control over native library file placement or if your app doesn&#039;t have permissions to create temporary directories.&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;
== Unzipping the files ==&lt;br /&gt;
&lt;br /&gt;
Unzip all the downloaded files with [http://www.7-zip.org/ 7zip]. An unzipped file has this general directory structure:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;amp;lt;archive&amp;amp;gt;/&lt;br /&gt;
&amp;amp;lt;archive&amp;amp;gt;/jar/&lt;br /&gt;
&amp;amp;lt;archive&amp;amp;gt;/lib/&lt;br /&gt;
&amp;amp;lt;archive&amp;amp;gt;/&amp;amp;lt;module&amp;amp;gt;-java-src.zip*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you may copy the required JARs out of each &amp;lt;tt&amp;gt;jar&amp;lt;/tt&amp;gt; folder and the native library files (if you&#039;re using them) out of each &amp;lt;tt&amp;gt;lib&amp;lt;/tt&amp;gt; folder. For a full desktop installation using native JARs, here are the files you need. Note that the native JAR names are different for each platform, so you can use some or all of the native JARs together to create a multi-platform installation.&lt;br /&gt;
&lt;br /&gt;
{|cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot;|64-bit Windows&lt;br /&gt;
!align=&amp;quot;left&amp;quot;|64-bit Linux&lt;br /&gt;
!align=&amp;quot;left&amp;quot;|32/64-bit Mac&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;gluegen-rt.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-rt.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-rt.jar&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;jogl-all.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-all.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-all.jar&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;gluegen-java-src.zip&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-java-src.zip&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-java-src.zip&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;jogl-java-src.zip&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-java-src.zip&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-java-src.zip&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;gluegen-rt-natives-windows-amd64.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-rt-natives-linux-amd64.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-rt-natives-macosx-universal.jar&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;jogl-all-natives-windows-amd64.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-all-natives-linux-amd64.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-all-natives-macosx-universal.jar&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
{|cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot;|32-bit Windows&lt;br /&gt;
!align=&amp;quot;left&amp;quot;|32-bit Linux&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;gluegen-rt.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-rt.jar&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;jogl-all.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-all.jar&amp;lt;/tt&amp;gt;||&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;gluegen-java-src.zip&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-java-src.zip&amp;lt;/tt&amp;gt;||&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;jogl-java-src.zip&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-java-src.zip&amp;lt;/tt&amp;gt;||&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;gluegen-rt-natives-windows-i586.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-rt-natives-linux-i586.jar&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;jogl-all-natives-windows-i586.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-all-natives-linux-i586.jar&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
For a full desktop installation using native library files, here are the files you need. Note that the native library files have the same names for 32-bit and 64-bit platforms, so 32-bit and 64-bit platforms can&#039;t coexist in one installation.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot;|Windows&lt;br /&gt;
!align=&amp;quot;left&amp;quot;|Linux&lt;br /&gt;
!align=&amp;quot;left&amp;quot;|Mac&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;gluegen-rt.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-rt.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-rt.jar&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;jogl-all.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-all.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-all.jar&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;gluegen-java-src.zip&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-java-src.zip&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-java-src.zip&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;jogl-java-src.zip&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-java-src.zip&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-java-src.zip&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;gluegen-rt.dll&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;libgluegen-rt.so&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;libgluegen-rt.jnilib&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;jogl_desktop.dll&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;libjogl_desktop.so&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;libjogl_desktop.jnilib&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;nativewindow_awt.dll&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;libnativewindow_awt.so&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;libnativewindow_awt.jnilib&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;nativewindow_win32.dll&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;libnativewindow_x11.so&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;libnativewindow_macosx.jnilib&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;newt.dll&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;libnewt.so&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;libnewt.jnilib&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Maven =&lt;br /&gt;
Alternatively, the Jogamp packages are available through Maven.&lt;br /&gt;
&lt;br /&gt;
See the [[Setting_up_a_JogAmp_project_in_your_favorite_IDE#Maven|maven instructions]] for a guide to using Jogamp in&lt;br /&gt;
Maven projects.&lt;br /&gt;
&lt;br /&gt;
= More information =&lt;br /&gt;
&lt;br /&gt;
JogAmp follows a [[Jogamp_Versioning_and_Releases#Release_Classification|release scheme]],&lt;br /&gt;
which describes the following locations to download the 7z archives from:&lt;br /&gt;
&lt;br /&gt;
* [{{SERVER}}/deployment/ Deployment Home]&lt;br /&gt;
** [{{SERVER}}/deployment/jogamp-current/archive/ Signed Release]&lt;br /&gt;
** [{{SERVER}}/deployment/jogamp-next/archive/ Signed Candidate]&lt;br /&gt;
** [{{SERVER}}/deployment/jogamp-next/v2.0-rc3archive/ Specific Version]&lt;br /&gt;
&lt;br /&gt;
[{{SERVER}}/jogl/doc/deployment/JOGL-DEPLOYMENT.html JOGL Deployment] describes the content of the 7z archive files.&lt;br /&gt;
&lt;br /&gt;
These installations contain all of JOGL. If you want to remove parts you don&#039;t use, see [{{SERVER}}/jogl/doc/deployment/JOGL-DEPLOYMENT.html JOGL Deployment] for more information.&lt;/div&gt;</summary>
		<author><name>Sgothel</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Downloading_and_installing_JOGL&amp;diff=2244</id>
		<title>Downloading and installing JOGL</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Downloading_and_installing_JOGL&amp;diff=2244"/>
		<updated>2025-08-31T18:59:29Z</updated>

		<summary type="html">&lt;p&gt;Sgothel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Before you can build a project that uses JOGL [https://jogamp.org/wiki/index.php/Setting_up_a_JogAmp_project_in_your_favorite_IDE in your IDE or on the command line], you&#039;ll need to download and install the JOGL JAR files and native JARs or native library files (&amp;lt;tt&amp;gt;.dll&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;.so&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;.jnilib&amp;lt;/tt&amp;gt; files).&lt;br /&gt;
&lt;br /&gt;
You have a choice of JOGL versions to download. The [{{SERVER}}/deployment/jogamp-current/archive/ latest stable version] is the safest, but lags behind in features. The [{{SERVER}}/deployment/autobuilds/master/ latest automatic build] contains all checked-in code, but may be failing some tests.&lt;br /&gt;
&lt;br /&gt;
= Downloading the latest stable version =&lt;br /&gt;
&lt;br /&gt;
== Fat Jar for all platforms ==&lt;br /&gt;
(excluding Android)&lt;br /&gt;
&lt;br /&gt;
* [{{SERVER}}/deployment/jogamp-current/fat/jogamp-fat.jar jogamp-fat.jar]&lt;br /&gt;
* Demo files&lt;br /&gt;
** [{{SERVER}}/deployment/jogamp-current/fat/jogl-demos.jar jogl-demos.jar]&lt;br /&gt;
** [{{SERVER}}/deployment/jogamp-current/fat/jogl-fonts-p0.jar jogl-fonts-p0.jar]&lt;br /&gt;
&lt;br /&gt;
=== Using the fat jar ===&lt;br /&gt;
Download all three jar files into a folder as described above and launch e.g. &lt;br /&gt;
&#039;&#039;java -cp jogamp-fat.jar:jogl-demos.jar com.jogamp.opengl.demos.graph.ui.UISceneDemo03&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== APK for Android ==&lt;br /&gt;
* See [[Android Packages]]&lt;br /&gt;
* [{{SERVER}}/deployment/jogamp-current/apk/ Latest APK files location]&lt;br /&gt;
&lt;br /&gt;
User are encouraged to merge the &#039;&#039;&amp;lt;module&amp;gt;-all-android-&amp;lt;arch&amp;gt;.apk&#039;&#039; or jar files with their own application.&lt;br /&gt;
&lt;br /&gt;
=== Testing a single fat APK ===&lt;br /&gt;
A fat demo APK &#039;&#039;jogl-demos-fat-android-${arch}.apk&#039;&#039; resides inside the [{{SERVER}}/deployment/jogamp-current/apk/ APK release folder] and can be directly installed and tested on your device w/ developer mode enabled.&lt;br /&gt;
&lt;br /&gt;
== 7z all-in-one archive ==&lt;br /&gt;
Go to [{{SERVER}}/deployment/jogamp-current/archive/ this page] and download the all-in-one 7z archive file:&lt;br /&gt;
&lt;br /&gt;
: [{{SERVER}}/deployment/jogamp-current/archive/jogamp-all-platforms.7z jogamp-all-platforms.7z]&lt;br /&gt;
&lt;br /&gt;
=== Using the jogamp-all-platforms ===&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-all-platforms&amp;amp;gt;/&lt;br /&gt;
&amp;amp;lt;jogamp-all-platforms&amp;amp;gt;/etc/test.sh&lt;br /&gt;
&amp;amp;lt;jogamp-all-platforms&amp;amp;gt;/etc/test.bat&lt;br /&gt;
&amp;amp;lt;jogamp-all-platforms&amp;amp;gt;/etc/test_dbg.sh&lt;br /&gt;
&amp;amp;lt;jogamp-all-platforms&amp;amp;gt;/etc/test_dbg.bat&lt;br /&gt;
&amp;amp;lt;jogamp-all-platforms&amp;amp;gt;/jar/&amp;amp;lt;module&amp;amp;gt;.jar&lt;br /&gt;
&amp;amp;lt;jogamp-all-platforms&amp;amp;gt;/jar/&amp;amp;lt;module&amp;amp;gt;-natives-&amp;amp;lt;os.and.arch&amp;amp;gt;.jar&lt;br /&gt;
&amp;amp;lt;jogamp-all-platforms&amp;amp;gt;/lib/&lt;br /&gt;
&amp;amp;lt;jogamp-all-platforms&amp;amp;gt;/&amp;amp;lt;module&amp;amp;gt;-java-src.zip*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Legend:&lt;br /&gt;
* [{{SERVER}}/jogl/doc/deployment/JOGL-DEPLOYMENT.html#NativeJARFileNameConvention os.and.arch] &lt;br /&gt;
* module: gluegen, joal, jogl or jocl&lt;br /&gt;
&lt;br /&gt;
Now you can &#039;&#039;&#039;test&#039;&#039;&#039; the &#039;&#039;archive&#039;&#039; as described &lt;br /&gt;
in [[Jogamp Versioning and Releases#Runtime Version Check|runtime version check]]&lt;br /&gt;
and [[Jogamp Versioning and Releases#Runtime Debug Logs|runtime debug test]].&lt;br /&gt;
&lt;br /&gt;
If anything doesn&#039;t work as predicted, please follow our [[Jogl FAQ#Bugreports &amp;amp; Testing|bugreport guide]].&lt;br /&gt;
&lt;br /&gt;
While keeping the above directory structure as-is, you can go ahead and&lt;br /&gt;
* add the non-native JAR files to your CLASSPATH (IDE, manual, ..)&lt;br /&gt;
* attach the java-source files to the non-native JAR files (IDE)&lt;br /&gt;
&lt;br /&gt;
.. now you are set to start using JogAmp module in your project.&lt;br /&gt;
&lt;br /&gt;
The above is detailed in [[Setting_up_a_JogAmp_project_in_your_favorite_IDE#Eclipse_IDE_project|Eclipse Project]]&lt;br /&gt;
and [[Setting_up_a_JogAmp_project_in_your_favorite_IDE#Eclipse_IDE_user_library|Eclipse User Library]].&lt;br /&gt;
&lt;br /&gt;
= Downloading the latest aggregated autobuild =&lt;br /&gt;
&lt;br /&gt;
Got to [{{SERVER}}/deployment/archive/master/?C=M;O=D this page] and navigate into the first folder,&lt;br /&gt;
which shall be the latest &#039;&#039;aggregated autobuild&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Then navigate further down to &#039;&#039;&#039;archive&#039;&#039;&#039; and download the file &#039;&#039;&#039;jogamp-all-platforms.7z&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
For example, on &#039;&#039;&#039;13-Mar-2013 20:19 CET&#039;&#039;&#039;, the latest &#039;&#039;aggregated autobuild&#039;&#039; was:&lt;br /&gt;
&lt;br /&gt;
 [{{SERVER}}/deployment/archive/master/gluegen_646-joal_408-jogl_930-jocl_756/archive/jogamp-all-platforms.7z {{SERVER}}/deployment/archive/master/gluegen_646-joal_408-jogl_930-jocl_756/archive/jogamp-all-platforms.7z]&lt;br /&gt;
&lt;br /&gt;
Now you can continue [[#Using the 7z jogamp-all-platforms archive|here]].&lt;br /&gt;
&lt;br /&gt;
= Downloading the latest automatic build =&lt;br /&gt;
&lt;br /&gt;
For the latest automatic build, we have to download gluegen and jogl separately.&lt;br /&gt;
&lt;br /&gt;
First, go to [{{SERVER}}/deployment/autobuilds/master/?C=M;O=D this page] and click on the most recent &amp;lt;tt&amp;gt;gluegen-b*&amp;lt;/tt&amp;gt; directory. Then download one of these files for each platform you&#039;re developing on:&lt;br /&gt;
&lt;br /&gt;
: 32-bit Windows: &amp;lt;tt&amp;gt;gluegen-2.0-bvvv-20yymmdd-windows-i586.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 64-bit Windows: &amp;lt;tt&amp;gt;gluegen-2.0-bvvv-20yymmdd-windows-amd64.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 32/64-bit Mac OS X: &amp;lt;tt&amp;gt;gluegen-2.0-bvvv-20yymmdd-macosx-universal.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 32-bit Linux: &amp;lt;tt&amp;gt;gluegen-2.0-bvvv-20yymmdd-linux-i586.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 64-bit Linux: &amp;lt;tt&amp;gt;gluegen-2.0-bvvv-20yymmdd-linux-amd64.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 32-bit Solaris: &amp;lt;tt&amp;gt;gluegen-2.0-bvvv-20yymmdd-solaris-i586.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 64-bit Solaris: &amp;lt;tt&amp;gt;gluegen-2.0-bvvv-20yymmdd-solaris-amd64.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, go back to [{{SERVER}}/deployment/autobuilds/master/?C=M;O=D this page] and click on the most recent &amp;lt;tt&amp;gt;jogl-b*&amp;lt;/tt&amp;gt; directory. Then download one of these files for each platform you&#039;re developing on:&lt;br /&gt;
&lt;br /&gt;
: 32-bit Windows: &amp;lt;tt&amp;gt;jogl-2.0-bvvv-20yymmdd-windows-i586.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 64-bit Windows: &amp;lt;tt&amp;gt;jogl-2.0-bvvv-20yymmdd-windows-amd64.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 32/64-bit Mac OS X: &amp;lt;tt&amp;gt;jogl-2.0-bvvv-20yymmdd-macosx-universal.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 32-bit Linux: &amp;lt;tt&amp;gt;jogl-2.0-bvvv-20yymmdd-linux-i586.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 64-bit Linux: &amp;lt;tt&amp;gt;jogl-2.0-bvvv-20yymmdd-linux-amd64.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 32-bit Solaris: &amp;lt;tt&amp;gt;jogl-2.0-bvvv-20yymmdd-solaris-i586.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 64-bit Solaris: &amp;lt;tt&amp;gt;jogl-2.0-bvvv-20yymmdd-solaris-amd64.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that these automatic builds may not have passed all the regression tests. You can check the test results on the [https://jogamp.org/chuck/ build server] to make sure you&#039;re not downloading a broken build.&lt;br /&gt;
&lt;br /&gt;
== Native JARs vs. native library files ==&lt;br /&gt;
&lt;br /&gt;
JOGL uses native libraries to interface with each platform&#039;s OpenGL library. You can either download these native libraries wrapped up in JAR files (the &amp;quot;native JARs&amp;quot; option), or you can download them as separate &amp;lt;tt&amp;gt;.dll&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;.so&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;.jnilib&amp;lt;/tt&amp;gt; files (the &amp;quot;native library files&amp;quot; option).&lt;br /&gt;
&lt;br /&gt;
When using native JARs, JOGL automatically unzips the native JARs at startup into a temporary directory, then loads the resulting &amp;lt;tt&amp;gt;.dll&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;.so&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;.jnilib&amp;lt;/tt&amp;gt; files from there. When using native library files, JOGL just loads them directly from where they sit, with no unzipping.&lt;br /&gt;
&lt;br /&gt;
Using native JARs is usually easiest, since there are fewer files to manage and it allows different platforms&#039; native library files to coexist in the same directory. Only use the native library files directly if you need fine control over native library file placement or if your app doesn&#039;t have permissions to create temporary directories.&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;
== Unzipping the files ==&lt;br /&gt;
&lt;br /&gt;
Unzip all the downloaded files with [http://www.7-zip.org/ 7zip]. An unzipped file has this general directory structure:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;amp;lt;archive&amp;amp;gt;/&lt;br /&gt;
&amp;amp;lt;archive&amp;amp;gt;/jar/&lt;br /&gt;
&amp;amp;lt;archive&amp;amp;gt;/lib/&lt;br /&gt;
&amp;amp;lt;archive&amp;amp;gt;/&amp;amp;lt;module&amp;amp;gt;-java-src.zip*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you may copy the required JARs out of each &amp;lt;tt&amp;gt;jar&amp;lt;/tt&amp;gt; folder and the native library files (if you&#039;re using them) out of each &amp;lt;tt&amp;gt;lib&amp;lt;/tt&amp;gt; folder. For a full desktop installation using native JARs, here are the files you need. Note that the native JAR names are different for each platform, so you can use some or all of the native JARs together to create a multi-platform installation.&lt;br /&gt;
&lt;br /&gt;
{|cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot;|64-bit Windows&lt;br /&gt;
!align=&amp;quot;left&amp;quot;|64-bit Linux&lt;br /&gt;
!align=&amp;quot;left&amp;quot;|32/64-bit Mac&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;gluegen-rt.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-rt.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-rt.jar&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;jogl-all.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-all.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-all.jar&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;gluegen-java-src.zip&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-java-src.zip&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-java-src.zip&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;jogl-java-src.zip&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-java-src.zip&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-java-src.zip&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;gluegen-rt-natives-windows-amd64.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-rt-natives-linux-amd64.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-rt-natives-macosx-universal.jar&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;jogl-all-natives-windows-amd64.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-all-natives-linux-amd64.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-all-natives-macosx-universal.jar&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
{|cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot;|32-bit Windows&lt;br /&gt;
!align=&amp;quot;left&amp;quot;|32-bit Linux&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;gluegen-rt.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-rt.jar&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;jogl-all.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-all.jar&amp;lt;/tt&amp;gt;||&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;gluegen-java-src.zip&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-java-src.zip&amp;lt;/tt&amp;gt;||&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;jogl-java-src.zip&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-java-src.zip&amp;lt;/tt&amp;gt;||&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;gluegen-rt-natives-windows-i586.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-rt-natives-linux-i586.jar&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;jogl-all-natives-windows-i586.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-all-natives-linux-i586.jar&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
For a full desktop installation using native library files, here are the files you need. Note that the native library files have the same names for 32-bit and 64-bit platforms, so 32-bit and 64-bit platforms can&#039;t coexist in one installation.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot;|Windows&lt;br /&gt;
!align=&amp;quot;left&amp;quot;|Linux&lt;br /&gt;
!align=&amp;quot;left&amp;quot;|Mac&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;gluegen-rt.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-rt.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-rt.jar&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;jogl-all.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-all.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-all.jar&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;gluegen-java-src.zip&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-java-src.zip&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-java-src.zip&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;jogl-java-src.zip&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-java-src.zip&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-java-src.zip&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;gluegen-rt.dll&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;libgluegen-rt.so&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;libgluegen-rt.jnilib&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;jogl_desktop.dll&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;libjogl_desktop.so&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;libjogl_desktop.jnilib&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;nativewindow_awt.dll&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;libnativewindow_awt.so&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;libnativewindow_awt.jnilib&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;nativewindow_win32.dll&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;libnativewindow_x11.so&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;libnativewindow_macosx.jnilib&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;newt.dll&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;libnewt.so&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;libnewt.jnilib&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Maven =&lt;br /&gt;
Alternatively, the Jogamp packages are available through Maven.&lt;br /&gt;
&lt;br /&gt;
See the [[Setting_up_a_JogAmp_project_in_your_favorite_IDE#Maven|maven instructions]] for a guide to using Jogamp in&lt;br /&gt;
Maven projects.&lt;br /&gt;
&lt;br /&gt;
= More information =&lt;br /&gt;
&lt;br /&gt;
JogAmp follows a [[Jogamp_Versioning_and_Releases#Release_Classification|release scheme]],&lt;br /&gt;
which describes the following locations to download the 7z archives from:&lt;br /&gt;
&lt;br /&gt;
* [{{SERVER}}/deployment/ Deployment Home]&lt;br /&gt;
** [{{SERVER}}/deployment/jogamp-current/archive/ Signed Release]&lt;br /&gt;
** [{{SERVER}}/deployment/jogamp-next/archive/ Signed Candidate]&lt;br /&gt;
** [{{SERVER}}/deployment/jogamp-next/v2.0-rc3archive/ Specific Version]&lt;br /&gt;
&lt;br /&gt;
[{{SERVER}}/jogl/doc/deployment/JOGL-DEPLOYMENT.html JOGL Deployment] describes the content of the 7z archive files.&lt;br /&gt;
&lt;br /&gt;
These installations contain all of JOGL. If you want to remove parts you don&#039;t use, see [{{SERVER}}/jogl/doc/deployment/JOGL-DEPLOYMENT.html JOGL Deployment] for more information.&lt;/div&gt;</summary>
		<author><name>Sgothel</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Android_Packages&amp;diff=2243</id>
		<title>Android Packages</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Android_Packages&amp;diff=2243"/>
		<updated>2025-08-31T18:56:21Z</updated>

		<summary type="html">&lt;p&gt;Sgothel: /* Direct download and installation of our Android Packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Direct download and installation of our Android Packages =&lt;br /&gt;
&lt;br /&gt;
[{{SERVER}}/deployment/jogamp-current/apk Latest APK files location]&lt;br /&gt;
&lt;br /&gt;
You may need to uninstall previous installed versions first!&lt;br /&gt;
&lt;br /&gt;
== Single Fat Application Method ==&lt;br /&gt;
A fat demo APK &#039;&#039;jogl-demos-fat-android-${arch}.apk&#039;&#039; resides inside the [{{SERVER}}/deployment/jogamp-current/apk APK release folder] and can be directly installed and tested on your device w/ developer mode enabled.&lt;br /&gt;
&lt;br /&gt;
User are encouraged to merge the &#039;&#039;&amp;lt;module&amp;gt;-all-android-&amp;lt;arch&amp;gt;.apk&#039;&#039; or jar files with their own application.&lt;br /&gt;
&lt;br /&gt;
== Launcher Method ==&lt;br /&gt;
The following APKs must be installed to complete a JogAmp installation:&lt;br /&gt;
* [{{Server}}/deployment/jogamp-current/apk/jogamp-android-launcher.apk Launcher]&lt;br /&gt;
* ARM 32-bit &amp;gt;= armv6&lt;br /&gt;
** [{{Server}}/deployment/jogamp-current/apk/gluegen-rt-android-armv6.apk GlueGen]&lt;br /&gt;
** [{{Server}}/deployment/jogamp-current/apk/joal-android-armv6.apk JOAL]&lt;br /&gt;
** [{{Server}}/deployment/jogamp-current/apk/jogl-all-android-armv6.apk JOGL]&lt;br /&gt;
* ARM 64-bit &amp;gt;= aarch64&lt;br /&gt;
** [{{Server}}/deployment/jogamp-current/apk/gluegen-rt-android-aarch64.apk GlueGen]&lt;br /&gt;
** [{{Server}}/deployment/jogamp-current/apk/joal-android-aarch64.apk JOAL]&lt;br /&gt;
** [{{Server}}/deployment/jogamp-current/apk/jogl-all-android-aarch64.apk JOGL]&lt;br /&gt;
            &lt;br /&gt;
The following demo APK should be installed:&lt;br /&gt;
* [{{Server}}/deployment/jogamp-current/apk/joal-test-android.apk JOAL Tests]&lt;br /&gt;
* [{{Server}}/deployment/jogamp-current/apk/jogl-test-android.apk JOGL Tests]&lt;br /&gt;
&lt;br /&gt;
= Download and installation via &#039;&#039;Google Play&#039;&#039;  =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; These versions are currently not maintained and are older versions! &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The following APKs must be installed to complete a JogAmp installation:&lt;br /&gt;
* [https://play.google.com/store/apps/details?id=jogamp.android.launcher Launcher]&lt;br /&gt;
* [https://play.google.com/store/apps/details?id=com.jogamp.common GlueGen]&lt;br /&gt;
* [https://play.google.com/store/apps/details?id=com.jogamp.openal JOAL]&lt;br /&gt;
* [https://play.google.com/store/apps/details?id=javax.media.opengl JOGL]&lt;br /&gt;
            &lt;br /&gt;
The following demo APK should be installed:&lt;br /&gt;
* [https://play.google.com/store/apps/details?id=com.jogamp.opengl.test JOAL Tests]&lt;br /&gt;
* [https://play.google.com/store/apps/details?id=com.jogamp.opengl.test JOGL Tests]&lt;/div&gt;</summary>
		<author><name>Sgothel</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Downloading_and_installing_JOGL&amp;diff=2242</id>
		<title>Downloading and installing JOGL</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Downloading_and_installing_JOGL&amp;diff=2242"/>
		<updated>2025-08-31T18:55:28Z</updated>

		<summary type="html">&lt;p&gt;Sgothel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Before you can build a project that uses JOGL [https://jogamp.org/wiki/index.php/Setting_up_a_JogAmp_project_in_your_favorite_IDE in your IDE or on the command line], you&#039;ll need to download and install the JOGL JAR files and native JARs or native library files (&amp;lt;tt&amp;gt;.dll&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;.so&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;.jnilib&amp;lt;/tt&amp;gt; files).&lt;br /&gt;
&lt;br /&gt;
You have a choice of JOGL versions to download. The [{{SERVER}}/deployment/jogamp-current/archive/ latest stable version] is the safest, but lags behind in features. The [{{SERVER}}/deployment/autobuilds/master/ latest automatic build] contains all checked-in code, but may be failing some tests.&lt;br /&gt;
&lt;br /&gt;
= Downloading the latest stable version =&lt;br /&gt;
&lt;br /&gt;
== Fat Jar for all platforms ==&lt;br /&gt;
(excluding Android)&lt;br /&gt;
&lt;br /&gt;
* [{{SERVER}}/deployment/jogamp-current/fat/jogamp-fat.jar jogamp-fat.jar]&lt;br /&gt;
* Demo files&lt;br /&gt;
** [{{SERVER}}/deployment/jogamp-current/fat/jogl-demos.jar jogl-demos.jar]&lt;br /&gt;
** [{{SERVER}}/deployment/jogamp-current/fat/jogl-fonts-p0.jar jogl-fonts-p0.jar]&lt;br /&gt;
&lt;br /&gt;
=== Using the fat jar ===&lt;br /&gt;
Download all three jar files into a folder as described above and launch e.g. &lt;br /&gt;
&#039;&#039;java -cp jogamp-fat.jar:jogl-demos.jar com.jogamp.opengl.demos.graph.ui.UISceneDemo03&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Fat APK for Android ==&lt;br /&gt;
* See [[Android Packages]]&lt;br /&gt;
* [{{SERVER}}/deployment/jogamp-current/apk/ Latest APK files location]&lt;br /&gt;
&lt;br /&gt;
=== Testing a single fat APK ===&lt;br /&gt;
A fat demo APK &#039;&#039;jogl-demos-fat-android-${arch}.apk&#039;&#039; resides inside the [{{SERVER}}/deployment/jogamp-current/apk/ APK release folder] and can be directly installed and tested on your device w/ developer mode enabled.&lt;br /&gt;
&lt;br /&gt;
User are encouraged to merge the &#039;&#039;&amp;lt;module&amp;gt;-all-android-&amp;lt;arch&amp;gt;.apk&#039;&#039; or jar files with their own application.&lt;br /&gt;
&lt;br /&gt;
== 7z all-in-one archive ==&lt;br /&gt;
Go to [{{SERVER}}/deployment/jogamp-current/archive/ this page] and download the all-in-one 7z archive file:&lt;br /&gt;
&lt;br /&gt;
: [{{SERVER}}/deployment/jogamp-current/archive/jogamp-all-platforms.7z jogamp-all-platforms.7z]&lt;br /&gt;
&lt;br /&gt;
=== Using the jogamp-all-platforms ===&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-all-platforms&amp;amp;gt;/&lt;br /&gt;
&amp;amp;lt;jogamp-all-platforms&amp;amp;gt;/etc/test.sh&lt;br /&gt;
&amp;amp;lt;jogamp-all-platforms&amp;amp;gt;/etc/test.bat&lt;br /&gt;
&amp;amp;lt;jogamp-all-platforms&amp;amp;gt;/etc/test_dbg.sh&lt;br /&gt;
&amp;amp;lt;jogamp-all-platforms&amp;amp;gt;/etc/test_dbg.bat&lt;br /&gt;
&amp;amp;lt;jogamp-all-platforms&amp;amp;gt;/jar/&amp;amp;lt;module&amp;amp;gt;.jar&lt;br /&gt;
&amp;amp;lt;jogamp-all-platforms&amp;amp;gt;/jar/&amp;amp;lt;module&amp;amp;gt;-natives-&amp;amp;lt;os.and.arch&amp;amp;gt;.jar&lt;br /&gt;
&amp;amp;lt;jogamp-all-platforms&amp;amp;gt;/lib/&lt;br /&gt;
&amp;amp;lt;jogamp-all-platforms&amp;amp;gt;/&amp;amp;lt;module&amp;amp;gt;-java-src.zip*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Legend:&lt;br /&gt;
* [{{SERVER}}/jogl/doc/deployment/JOGL-DEPLOYMENT.html#NativeJARFileNameConvention os.and.arch] &lt;br /&gt;
* module: gluegen, joal, jogl or jocl&lt;br /&gt;
&lt;br /&gt;
Now you can &#039;&#039;&#039;test&#039;&#039;&#039; the &#039;&#039;archive&#039;&#039; as described &lt;br /&gt;
in [[Jogamp Versioning and Releases#Runtime Version Check|runtime version check]]&lt;br /&gt;
and [[Jogamp Versioning and Releases#Runtime Debug Logs|runtime debug test]].&lt;br /&gt;
&lt;br /&gt;
If anything doesn&#039;t work as predicted, please follow our [[Jogl FAQ#Bugreports &amp;amp; Testing|bugreport guide]].&lt;br /&gt;
&lt;br /&gt;
While keeping the above directory structure as-is, you can go ahead and&lt;br /&gt;
* add the non-native JAR files to your CLASSPATH (IDE, manual, ..)&lt;br /&gt;
* attach the java-source files to the non-native JAR files (IDE)&lt;br /&gt;
&lt;br /&gt;
.. now you are set to start using JogAmp module in your project.&lt;br /&gt;
&lt;br /&gt;
The above is detailed in [[Setting_up_a_JogAmp_project_in_your_favorite_IDE#Eclipse_IDE_project|Eclipse Project]]&lt;br /&gt;
and [[Setting_up_a_JogAmp_project_in_your_favorite_IDE#Eclipse_IDE_user_library|Eclipse User Library]].&lt;br /&gt;
&lt;br /&gt;
= Downloading the latest aggregated autobuild =&lt;br /&gt;
&lt;br /&gt;
Got to [{{SERVER}}/deployment/archive/master/?C=M;O=D this page] and navigate into the first folder,&lt;br /&gt;
which shall be the latest &#039;&#039;aggregated autobuild&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Then navigate further down to &#039;&#039;&#039;archive&#039;&#039;&#039; and download the file &#039;&#039;&#039;jogamp-all-platforms.7z&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
For example, on &#039;&#039;&#039;13-Mar-2013 20:19 CET&#039;&#039;&#039;, the latest &#039;&#039;aggregated autobuild&#039;&#039; was:&lt;br /&gt;
&lt;br /&gt;
 [{{SERVER}}/deployment/archive/master/gluegen_646-joal_408-jogl_930-jocl_756/archive/jogamp-all-platforms.7z {{SERVER}}/deployment/archive/master/gluegen_646-joal_408-jogl_930-jocl_756/archive/jogamp-all-platforms.7z]&lt;br /&gt;
&lt;br /&gt;
Now you can continue [[#Using the 7z jogamp-all-platforms archive|here]].&lt;br /&gt;
&lt;br /&gt;
= Downloading the latest automatic build =&lt;br /&gt;
&lt;br /&gt;
For the latest automatic build, we have to download gluegen and jogl separately.&lt;br /&gt;
&lt;br /&gt;
First, go to [{{SERVER}}/deployment/autobuilds/master/?C=M;O=D this page] and click on the most recent &amp;lt;tt&amp;gt;gluegen-b*&amp;lt;/tt&amp;gt; directory. Then download one of these files for each platform you&#039;re developing on:&lt;br /&gt;
&lt;br /&gt;
: 32-bit Windows: &amp;lt;tt&amp;gt;gluegen-2.0-bvvv-20yymmdd-windows-i586.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 64-bit Windows: &amp;lt;tt&amp;gt;gluegen-2.0-bvvv-20yymmdd-windows-amd64.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 32/64-bit Mac OS X: &amp;lt;tt&amp;gt;gluegen-2.0-bvvv-20yymmdd-macosx-universal.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 32-bit Linux: &amp;lt;tt&amp;gt;gluegen-2.0-bvvv-20yymmdd-linux-i586.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 64-bit Linux: &amp;lt;tt&amp;gt;gluegen-2.0-bvvv-20yymmdd-linux-amd64.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 32-bit Solaris: &amp;lt;tt&amp;gt;gluegen-2.0-bvvv-20yymmdd-solaris-i586.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 64-bit Solaris: &amp;lt;tt&amp;gt;gluegen-2.0-bvvv-20yymmdd-solaris-amd64.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, go back to [{{SERVER}}/deployment/autobuilds/master/?C=M;O=D this page] and click on the most recent &amp;lt;tt&amp;gt;jogl-b*&amp;lt;/tt&amp;gt; directory. Then download one of these files for each platform you&#039;re developing on:&lt;br /&gt;
&lt;br /&gt;
: 32-bit Windows: &amp;lt;tt&amp;gt;jogl-2.0-bvvv-20yymmdd-windows-i586.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 64-bit Windows: &amp;lt;tt&amp;gt;jogl-2.0-bvvv-20yymmdd-windows-amd64.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 32/64-bit Mac OS X: &amp;lt;tt&amp;gt;jogl-2.0-bvvv-20yymmdd-macosx-universal.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 32-bit Linux: &amp;lt;tt&amp;gt;jogl-2.0-bvvv-20yymmdd-linux-i586.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 64-bit Linux: &amp;lt;tt&amp;gt;jogl-2.0-bvvv-20yymmdd-linux-amd64.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 32-bit Solaris: &amp;lt;tt&amp;gt;jogl-2.0-bvvv-20yymmdd-solaris-i586.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
: 64-bit Solaris: &amp;lt;tt&amp;gt;jogl-2.0-bvvv-20yymmdd-solaris-amd64.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that these automatic builds may not have passed all the regression tests. You can check the test results on the [https://jogamp.org/chuck/ build server] to make sure you&#039;re not downloading a broken build.&lt;br /&gt;
&lt;br /&gt;
== Native JARs vs. native library files ==&lt;br /&gt;
&lt;br /&gt;
JOGL uses native libraries to interface with each platform&#039;s OpenGL library. You can either download these native libraries wrapped up in JAR files (the &amp;quot;native JARs&amp;quot; option), or you can download them as separate &amp;lt;tt&amp;gt;.dll&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;.so&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;.jnilib&amp;lt;/tt&amp;gt; files (the &amp;quot;native library files&amp;quot; option).&lt;br /&gt;
&lt;br /&gt;
When using native JARs, JOGL automatically unzips the native JARs at startup into a temporary directory, then loads the resulting &amp;lt;tt&amp;gt;.dll&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;.so&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;.jnilib&amp;lt;/tt&amp;gt; files from there. When using native library files, JOGL just loads them directly from where they sit, with no unzipping.&lt;br /&gt;
&lt;br /&gt;
Using native JARs is usually easiest, since there are fewer files to manage and it allows different platforms&#039; native library files to coexist in the same directory. Only use the native library files directly if you need fine control over native library file placement or if your app doesn&#039;t have permissions to create temporary directories.&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;
== Unzipping the files ==&lt;br /&gt;
&lt;br /&gt;
Unzip all the downloaded files with [http://www.7-zip.org/ 7zip]. An unzipped file has this general directory structure:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;amp;lt;archive&amp;amp;gt;/&lt;br /&gt;
&amp;amp;lt;archive&amp;amp;gt;/jar/&lt;br /&gt;
&amp;amp;lt;archive&amp;amp;gt;/lib/&lt;br /&gt;
&amp;amp;lt;archive&amp;amp;gt;/&amp;amp;lt;module&amp;amp;gt;-java-src.zip*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you may copy the required JARs out of each &amp;lt;tt&amp;gt;jar&amp;lt;/tt&amp;gt; folder and the native library files (if you&#039;re using them) out of each &amp;lt;tt&amp;gt;lib&amp;lt;/tt&amp;gt; folder. For a full desktop installation using native JARs, here are the files you need. Note that the native JAR names are different for each platform, so you can use some or all of the native JARs together to create a multi-platform installation.&lt;br /&gt;
&lt;br /&gt;
{|cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot;|64-bit Windows&lt;br /&gt;
!align=&amp;quot;left&amp;quot;|64-bit Linux&lt;br /&gt;
!align=&amp;quot;left&amp;quot;|32/64-bit Mac&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;gluegen-rt.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-rt.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-rt.jar&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;jogl-all.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-all.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-all.jar&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;gluegen-java-src.zip&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-java-src.zip&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-java-src.zip&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;jogl-java-src.zip&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-java-src.zip&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-java-src.zip&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;gluegen-rt-natives-windows-amd64.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-rt-natives-linux-amd64.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-rt-natives-macosx-universal.jar&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;jogl-all-natives-windows-amd64.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-all-natives-linux-amd64.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-all-natives-macosx-universal.jar&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
{|cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot;|32-bit Windows&lt;br /&gt;
!align=&amp;quot;left&amp;quot;|32-bit Linux&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;gluegen-rt.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-rt.jar&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;jogl-all.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-all.jar&amp;lt;/tt&amp;gt;||&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;gluegen-java-src.zip&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-java-src.zip&amp;lt;/tt&amp;gt;||&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;jogl-java-src.zip&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-java-src.zip&amp;lt;/tt&amp;gt;||&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;gluegen-rt-natives-windows-i586.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-rt-natives-linux-i586.jar&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;jogl-all-natives-windows-i586.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-all-natives-linux-i586.jar&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
For a full desktop installation using native library files, here are the files you need. Note that the native library files have the same names for 32-bit and 64-bit platforms, so 32-bit and 64-bit platforms can&#039;t coexist in one installation.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot;|Windows&lt;br /&gt;
!align=&amp;quot;left&amp;quot;|Linux&lt;br /&gt;
!align=&amp;quot;left&amp;quot;|Mac&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;gluegen-rt.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-rt.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-rt.jar&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;jogl-all.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-all.jar&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-all.jar&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;gluegen-java-src.zip&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-java-src.zip&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;gluegen-java-src.zip&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;jogl-java-src.zip&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-java-src.zip&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;jogl-java-src.zip&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;gluegen-rt.dll&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;libgluegen-rt.so&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;libgluegen-rt.jnilib&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;jogl_desktop.dll&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;libjogl_desktop.so&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;libjogl_desktop.jnilib&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;nativewindow_awt.dll&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;libnativewindow_awt.so&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;libnativewindow_awt.jnilib&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;nativewindow_win32.dll&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;libnativewindow_x11.so&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;libnativewindow_macosx.jnilib&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;newt.dll&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;libnewt.so&amp;lt;/tt&amp;gt;||&amp;lt;tt&amp;gt;libnewt.jnilib&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Maven =&lt;br /&gt;
Alternatively, the Jogamp packages are available through Maven.&lt;br /&gt;
&lt;br /&gt;
See the [[Setting_up_a_JogAmp_project_in_your_favorite_IDE#Maven|maven instructions]] for a guide to using Jogamp in&lt;br /&gt;
Maven projects.&lt;br /&gt;
&lt;br /&gt;
= More information =&lt;br /&gt;
&lt;br /&gt;
JogAmp follows a [[Jogamp_Versioning_and_Releases#Release_Classification|release scheme]],&lt;br /&gt;
which describes the following locations to download the 7z archives from:&lt;br /&gt;
&lt;br /&gt;
* [{{SERVER}}/deployment/ Deployment Home]&lt;br /&gt;
** [{{SERVER}}/deployment/jogamp-current/archive/ Signed Release]&lt;br /&gt;
** [{{SERVER}}/deployment/jogamp-next/archive/ Signed Candidate]&lt;br /&gt;
** [{{SERVER}}/deployment/jogamp-next/v2.0-rc3archive/ Specific Version]&lt;br /&gt;
&lt;br /&gt;
[{{SERVER}}/jogl/doc/deployment/JOGL-DEPLOYMENT.html JOGL Deployment] describes the content of the 7z archive files.&lt;br /&gt;
&lt;br /&gt;
These installations contain all of JOGL. If you want to remove parts you don&#039;t use, see [{{SERVER}}/jogl/doc/deployment/JOGL-DEPLOYMENT.html JOGL Deployment] for more information.&lt;/div&gt;</summary>
		<author><name>Sgothel</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Main_Page&amp;diff=2241</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Main_Page&amp;diff=2241"/>
		<updated>2025-08-31T18:48:35Z</updated>

		<summary type="html">&lt;p&gt;Sgothel: &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;
* &#039;&#039;[[SW Tracking Report Feature Objectives Overview|Feature &amp;amp; Objectives]], [[SW Tracking Report Objectives undetermined release|tbd]], [[SW Tracking Report Objectives for the release 3.0.0|3.0.0]], [[SW Tracking Report Objectives for the release 2.7.0|2.7.0]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;[[SW Tracking Report Objectives for the release 2.6.0|2.6.0]] (last stable)&#039;&#039;&#039;, [[SW Tracking Report Objectives for the release 2.5.0|2.5.0]], [[SW Tracking Report Objectives for the release 2.4.0|2.4.0]], [[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/ GlueGen Java™ API-Doc]&lt;br /&gt;
* [{{SERVER}}/gluegen/doc/GlueGen_Mapping.html GlueGen Native Data &amp;amp; Function Mapping]&lt;br /&gt;
* [{{SERVER}}/gluegen/doc/manual/ GlueGen Manual]&lt;br /&gt;
* [{{SERVER}}/gluegen/doc/HowToBuild.html How To Build]&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;
*[{{SERVER}}/bugzilla/showdependencytree.cgi?id=1368&amp;amp;hide_resolved=0 Bugzilla Dependency Tree]&lt;br /&gt;
*[{{SERVER}}/bugzilla/show_bug.cgi?id=1368 Bugzilla Parent Entry]&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>Sgothel</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Jogamp_Versioning_and_Releases&amp;diff=2240</id>
		<title>Jogamp Versioning and Releases</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Jogamp_Versioning_and_Releases&amp;diff=2240"/>
		<updated>2025-08-31T18:41:06Z</updated>

		<summary type="html">&lt;p&gt;Sgothel: /* Releases */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== Semantic Version Numbers ==&lt;br /&gt;
&lt;br /&gt;
Given a version number MAJOR.MINOR.PATCH, increment the:&lt;br /&gt;
&lt;br /&gt;
* MAJOR version indicates major incompatible API changes,&lt;br /&gt;
* MINOR version indicates minor incompatible API changes, and&lt;br /&gt;
* PATCH version indicates backwards-compatible bug fixes or added backwards-compatible functionality, i.e. these versions are binary compatible and a drop-in replacement.&lt;br /&gt;
&lt;br /&gt;
Above semantics describe binary compatibility, &lt;br /&gt;
i.e. whether a new version can be used without recompilation (PATCH increment only).&lt;br /&gt;
&lt;br /&gt;
Above semantics differ from [http://semver.org/ Semantic Versioning] since our MINOR &lt;br /&gt;
change allows minor incompatible API changes.&lt;br /&gt;
&lt;br /&gt;
An example of a MAJOR incompatible API increment is JOGL 1.y.z -&amp;gt; 2.y.z,&lt;br /&gt;
where we thoroughly change the OO model, packaging, implementation or overall semantics.&lt;br /&gt;
&lt;br /&gt;
Upgrading to a MINOR incompatible API increment of JogAmp &lt;br /&gt;
shall assure users that the model has not changed and the differences are indeed minor.&lt;br /&gt;
&lt;br /&gt;
Hence a PATCH increment not only allows bugfixes but also &lt;br /&gt;
additional functionality, both backwards-compatible.&lt;br /&gt;
&lt;br /&gt;
Note that manual test results showed that &amp;lt;i&amp;gt;none&amp;lt;/i&amp;gt; of our 2.1 PATCH incrementing releases&lt;br /&gt;
were satisfying above semantics and hence incompatibilities could appear.&lt;br /&gt;
While this might be unlikely, the tests exposed at least removed protected fields or methods&lt;br /&gt;
at some uncommon places and hence compatibility was broken.&lt;br /&gt;
&lt;br /&gt;
From version 2.2.0 on, we incorporate [https://github.com/jeluard/semantic-versioning semver]&lt;br /&gt;
in our JogAmp junit tests to guarantee automated validation and proper version increments.&lt;br /&gt;
&lt;br /&gt;
See [{{SERVER}}/bugzilla/show_bug.cgi?id=1008 Bug 1008].&lt;br /&gt;
&lt;br /&gt;
== Releases ==&lt;br /&gt;
&lt;br /&gt;
* [[Release 2.6.0|2.6.0]], [[Release 2.5.0|2.5.0]], [[Release 2.4.0|2.4.0]]&lt;br /&gt;
* [[Release 2.3.2|2.3.2]], [[Release 2.3.1|2.3.1]], [[Release 2.3.0|2.3.0]]&lt;br /&gt;
* [[Release 2.2.4|2.2.4]], [[Release 2.2.3|2.2.3]], [[Release 2.2.2|2.2.2]], [[Release 2.2.1|2.2.1]], [[Release 2.2.0|2.2.0]]&lt;br /&gt;
* [[Release 2.1.5|2.1.5]], [[Release 2.1.4|2.1.4]], [[Release 2.1.3|2.1.3]], [[Release 2.1.2|2.1.2]], [[Release 2.1.1|2.1.1]], [[Release 2.1.0|2.1.0]]&lt;br /&gt;
* [[Release 2.0.2|2.0.2]]&lt;br /&gt;
** [[Release 2.0.2-rc12|2.0.2-rc12]],[[Release 2.0-rc11|2.0-rc11]],[[Release 2.0-rc10|2.0-rc10]], [[Release 2.0-rc9|2.0-rc9]], [[Release 2.0-rc8|2.0-rc8]], [[Release 2.0-rc7|2.0-rc7]], [[Release 2.0-rc6|2.0-rc6]], [[Release 2.0-rc5|2.0-rc5]], [[Release 2.0-rc4|2.0-rc4]], [[Release 2.0-rc3|2.0-rc3]], [[Release 2.0-rc2|2.0-rc2]], [[Release 2.0-rc1|2.0-rc1]]&lt;br /&gt;
&lt;br /&gt;
[[Android Packages]]&lt;br /&gt;
&lt;br /&gt;
=== Current Aliases ===&lt;br /&gt;
&lt;br /&gt;
* [http://jogamp.org/deployment/jogamp-current/ jogamp-current] -&amp;gt; [http://jogamp.org/deployment/v2.5.0/ v2.5.0]&lt;br /&gt;
* [http://jogamp.org/deployment/jogamp-next/ jogamp-next] -&amp;gt; [http://jogamp.org/deployment/v2.5.0/ v2.5.0]&lt;br /&gt;
* [http://jogamp.org/deployment/webstart/ webstart] -&amp;gt; [http://jogamp.org/deployment/v2.5.0/ v2.5.0]&lt;br /&gt;
* [http://jogamp.org/deployment/webstart-next/ webstart-next] -&amp;gt; [http://jogamp.org/deployment/v2.5.0/ v2.5.0]&lt;br /&gt;
&lt;br /&gt;
== Release Classification ==&lt;br /&gt;
&lt;br /&gt;
Releases follow the above mentioned [[#Version_Classification|versioning]] scheme.&lt;br /&gt;
&lt;br /&gt;
The following list is ordered from &amp;lt;i&amp;gt;stable and oldest&amp;lt;/i&amp;gt; to &amp;lt;i&amp;gt;experimental and newest&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== [{{SERVER}}/deployment/jogamp-current/ Signed Release] ===&lt;br /&gt;
* This is our current signed release, IE a manual promoted and signed autobuild.&lt;br /&gt;
* It is suitable for JNLP and Applets (with or without JNLP).&lt;br /&gt;
* This is the &amp;lt;b&amp;gt;most stable and recommended&amp;lt;/b&amp;gt; version.&lt;br /&gt;
* [{{SERVER}}/deployment/jogamp-current/archive/ Archive folder] containing [[#Release_and_Archived_Files|platform ZIP files]] for manual installation.&lt;br /&gt;
* [[Downloading and installing JOGL#Downloading the latest aggregated autobuild|this section]]&lt;br /&gt;
* See instructions for  [[Downloading and installing JOGL#Downloading the latest stable version|downloading and installing]].&lt;br /&gt;
&lt;br /&gt;
=== [{{SERVER}}/deployment/jogamp-next/ Signed Release Candidate] ===&lt;br /&gt;
* This is our signed release candidate, IE a manual promoted and signed autobuild.&lt;br /&gt;
* It is suitable for JNLP and Applets (with or without JNLP).&lt;br /&gt;
* [{{SERVER}}/deployment/jogamp-next/archive/ Platform ZIP archive&#039;s URL] for manual installation.&lt;br /&gt;
* [{{SERVER}}/deployment/jogamp-next/archive/ Archive folder] containing [[#Release_and_Archived_Files|platform ZIP files]] for manual installation.&lt;br /&gt;
* See instructions for  [[Downloading and installing JOGL#Downloading the latest stable version|downloading and installing]].&lt;br /&gt;
&lt;br /&gt;
=== [{{SERVER}}/deployment/v2.0-rc3/ Signed Release Specific Version] ===&lt;br /&gt;
* This is a specific signed release, IE a manual promoted autobuild.&lt;br /&gt;
* It is suitable for JNLP and Applets (with or without JNLP).&lt;br /&gt;
* [{{SERVER}}/deployment/v2.0-rc3/archive/ Archive folder] containing [[#Release_and_Archived_Files|platform ZIP files]] for manual installation.&lt;br /&gt;
* See instructions for  [[Downloading and installing JOGL#Downloading the latest stable version|downloading and installing]].&lt;br /&gt;
&lt;br /&gt;
===  [{{SERVER}}/deployment/archive/master/?C=M;O=D Latest Aggregated Autobuild] ===&lt;br /&gt;
* This is our latest aggregated autobuild, which we seem fit for broad testing and submitting a [[Jogl FAQ#Bugreports &amp;amp; Testing|bugreport]].&lt;br /&gt;
* It is not signed and hence not suitable for JNLP and Applets.&lt;br /&gt;
* See instructions for  [[Downloading and installing JOGL#Downloading the latest aggregated autobuild|downloading and installing]].&lt;br /&gt;
&lt;br /&gt;
=== [{{SERVER}}/deployment/autobuilds/ Autobuilds] ===&lt;br /&gt;
What others call &amp;lt;i&amp;gt;nightlies&amp;lt;/i&amp;gt;, we call it autobuild.&lt;br /&gt;
Autobuilds are provided by our [{{SERVER}}/chuck/job/jogl/ Jenkins build server]:&lt;br /&gt;
* For [{{SERVER}}/chuck/job/jogl/ each project build reports] are available:&lt;br /&gt;
** [{{SERVER}}/chuck/job/jogl/lastSuccessfulBuild/ Last Successful JOGL Build]&lt;br /&gt;
** [{{SERVER}}/chuck/job/jogl/476/ JOGL Build 476]&lt;br /&gt;
* They are [{{SERVER}}/chuck/job/jogl/476/changes#detail0 triggered by git commits] &lt;br /&gt;
* Here is a [{{SERVER}}/chuck/job/jogl/changes list of all JOGL changes].&lt;br /&gt;
* These builds are also tested on all supported platforms automatically with junit, see a [{{SERVER}}/chuck/job/jogl/label=win7-x86_64-nvida/lastCompletedBuild/testReport/ complete test report from one platform].&lt;br /&gt;
* [{{SERVER}}/deployment/autobuilds/master/jogl-b485-2011-09-20_08-30-36/ Autobuild URL] containing [[#Autobuild_Files|platform ZIP files]] for manual installation.&lt;br /&gt;
&lt;br /&gt;
=== [{{SERVER}}/deployment/archive/ Archived builds] ===&lt;br /&gt;
* Contains archived builds and releases.&lt;br /&gt;
* May be signed.&lt;br /&gt;
* [{{SERVER}}/deployment/archive/rc/gluegen_28-joal_17-jogl_41-jocl_25/archive/ archive URL] containing [[#Release_and_Archived_Files|platform ZIP files]] for manual installation.&lt;br /&gt;
&lt;br /&gt;
== Version Classification ==&lt;br /&gt;
&lt;br /&gt;
=== Version Fingerprint ===&lt;br /&gt;
&lt;br /&gt;
You can get the [[Jogl FAQ#Get the Source Code|get the source code]] via git, &lt;br /&gt;
hence all references of a JogAmp module version boils down to:&lt;br /&gt;
&lt;br /&gt;
* module base version&lt;br /&gt;
* git commit sha1 hash&lt;br /&gt;
* build number&lt;br /&gt;
* module OS and ARCH&lt;br /&gt;
&lt;br /&gt;
We construct a full version string as follows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;lt;module&amp;gt;-&amp;lt;base_version&amp;gt;-b&amp;lt;build_number&amp;gt;-&amp;lt;yyyymmdd&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== artifact.properties ===&lt;br /&gt;
&lt;br /&gt;
The version fingerprint is available in the &lt;br /&gt;
[{{SERVER}}/deployment/autobuilds/master/jogl-b485-2011-09-20_08-30-36/artifact.properties artifact.properties] file:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gluegen.build.branch=origin/master&lt;br /&gt;
gluegen.build.commit=3fec08a69de571cf2939e6028487faea8a23ccaa&lt;br /&gt;
gluegen.build.id=2013-11-01_05-57-23&lt;br /&gt;
gluegen.build.number=741&lt;br /&gt;
gluegen.build.version=2.1.2&lt;br /&gt;
jogl.build.branch=origin/master&lt;br /&gt;
jogl.build.commit=3ed74abaddb90cb537897b9928e923be50f7f99f&lt;br /&gt;
jogl.build.id=2013-11-01_19-08-47&lt;br /&gt;
jogl.build.number=1135&lt;br /&gt;
jogl.build.version=2.1.2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We deploy artifacts.properties in the online [{{SERVER}}/deployment/autobuilds/master/jogl-b485-2011-09-20_08-30-36/ build folder]&lt;br /&gt;
and within the platform ZIP archives.&lt;br /&gt;
&lt;br /&gt;
=== JAR Manifest ===&lt;br /&gt;
&lt;br /&gt;
The version fingerprint is also included within each JAR Manifest file,&lt;br /&gt;
where the Specification-Version equals the module base version&lt;br /&gt;
and the Implementation-Version equals the above mentioned full version string&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Manifest-Version: 1.0&lt;br /&gt;
Ant-Version: Apache Ant 1.8.2&lt;br /&gt;
Created-By: 1.7.0_45-b18 (Oracle Corporation)&lt;br /&gt;
Application-Name: Java Bindings for OpenGL&lt;br /&gt;
Specification-Title: Java Bindings for OpenGL API Specification&lt;br /&gt;
Specification-Version: 2.1&lt;br /&gt;
Specification-Vendor: JogAmp Community&lt;br /&gt;
Implementation-Title: Java Bindings for OpenGL Runtime Environment&lt;br /&gt;
Implementation-Version: 2.1.2&lt;br /&gt;
Implementation-Build: 2.1-b1135-20131101&lt;br /&gt;
Implementation-Branch: origin/master&lt;br /&gt;
Implementation-Commit: 3ed74abaddb90cb537897b9928e923be50f7f99f&lt;br /&gt;
Implementation-Vendor: JogAmp Community&lt;br /&gt;
Implementation-URL: http://jogamp.org/&lt;br /&gt;
Extension-Name: javax.media.opengl&lt;br /&gt;
Implementation-Vendor-Id: com.jogamp&lt;br /&gt;
Trusted-Library: true&lt;br /&gt;
Permissions: all-permissions&lt;br /&gt;
Codebase: *.jogamp.org&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each module has also a base version, like major and minor, ie 2.0,&lt;br /&gt;
which we may change to emphasize major feature and API changes.&lt;br /&gt;
&lt;br /&gt;
==== Runtime Version Check ====&lt;br /&gt;
&lt;br /&gt;
Each module has a build in [http://jogamp.org/deployment/jogamp-next/javadoc/gluegen/javadoc/com/jogamp/common/util/JogampVersion.html JogampVersion] specialization with a static &amp;lt;code&amp;gt;getInstance()&amp;lt;/code&amp;gt; method to access the singleton instance,&lt;br /&gt;
eg. for the [http://jogamp.org/deployment/jogamp-next/javadoc/gluegen/javadoc/com/jogamp/common/GlueGenVersion.html#getInstance%28%29 GlueGenVersion] or [http://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/com/jogamp/opengl/JoglVersion.html#getInstance%28%29 JoglVersion]. You may utilize the version information from within your application in a programmatic manner. For the latter you may find the [http://jogamp.org/deployment/jogamp-next/javadoc/gluegen/javadoc/com/jogamp/common/os/Platform.html Platform] information useful as well.&lt;br /&gt;
&lt;br /&gt;
Each module&#039;s [http://jogamp.org/deployment/jogamp-next/javadoc/gluegen/javadoc/com/jogamp/common/util/JogampVersion.html JogampVersion] specialization also contain a static main entry allowing you to retrieve the version information at runtime as described below.&lt;br /&gt;
&lt;br /&gt;
When invoked, ie via JOGL&#039;s platform ZIP file:&lt;br /&gt;
* sh etc/test.sh (Unixoid), or &lt;br /&gt;
* etc\test.bat (Windows)&lt;br /&gt;
you will see the full dump of the runtime platform and the above mentioned version footprint.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-----------------------------------------------------------------------------------------------------&lt;br /&gt;
Platform: LINUX / Linux 3.11.6-x64-k10-nlb-jau01 (3.11.6), amd64 (arch), GENERIC_ABI, 8 cores&lt;br /&gt;
MachineDescription: runtimeValidated true, littleEndian true, 32Bit false, primitive size / alignment:&lt;br /&gt;
  int8    1 / 1, int16   2 / 2&lt;br /&gt;
  int     4 / 4, long    8 / 8&lt;br /&gt;
  int32   4 / 4, int64   8 / 8&lt;br /&gt;
  float   4 / 4, double  8 / 8, ldouble 16 / 16&lt;br /&gt;
  pointer 8 / 8, page    4096&lt;br /&gt;
Platform: Java Version: 1.7.0_45 (1.7.0u45), VM: Java HotSpot(TM) 64-Bit Server VM, Runtime: Java(TM) SE Runtime Environment&lt;br /&gt;
Platform: Java Vendor: Oracle Corporation, http://java.oracle.com/, JavaSE: true, Java6: true, AWT enabled: true&lt;br /&gt;
-----------------------------------------------------------------------------------------------------&lt;br /&gt;
-----------------------------------------------------------------------------------------------------&lt;br /&gt;
Package: com.jogamp.common&lt;br /&gt;
Extension Name: com.jogamp.common&lt;br /&gt;
Specification Title: GlueGen Java Bindings Generator&lt;br /&gt;
Specification Vendor: JogAmp Community&lt;br /&gt;
Specification Version: 2.1&lt;br /&gt;
Implementation Title: GlueGen Run-Time&lt;br /&gt;
Implementation Vendor: JogAmp Community&lt;br /&gt;
Implementation Vendor ID: com.jogamp&lt;br /&gt;
Implementation URL: http://jogamp.org/&lt;br /&gt;
Implementation Version: 2.1.2&lt;br /&gt;
Implementation Build: 2.1-b741-20131101&lt;br /&gt;
Implementation Branch: origin/master&lt;br /&gt;
Implementation Commit: 3fec08a69de571cf2939e6028487faea8a23ccaa&lt;br /&gt;
-----------------------------------------------------------------------------------------------------&lt;br /&gt;
Package: javax.media.opengl&lt;br /&gt;
Extension Name: javax.media.opengl&lt;br /&gt;
Specification Title: Java Bindings for OpenGL API Specification&lt;br /&gt;
Specification Vendor: JogAmp Community&lt;br /&gt;
Specification Version: 2.1&lt;br /&gt;
Implementation Title: Java Bindings for OpenGL Runtime Environment&lt;br /&gt;
Implementation Vendor: JogAmp Community&lt;br /&gt;
Implementation Vendor ID: com.jogamp&lt;br /&gt;
Implementation URL: http://jogamp.org/&lt;br /&gt;
Implementation Version: 2.1.2&lt;br /&gt;
Implementation Build: 2.1-b1135-20131101&lt;br /&gt;
Implementation Branch: origin/master&lt;br /&gt;
Implementation Commit: 3ed74abaddb90cb537897b9928e923be50f7f99f&lt;br /&gt;
-----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
GLProfiles on device X11GraphicsDevice[type .x11, connection :0, unitID 0, handle 0x0, owner false, ResourceToolkitLock[obj 0x207fd4ec, isOwner false, &amp;lt;2873e29f, 50234978&amp;gt;[count 0, qsz 0, owner &amp;lt;NULL&amp;gt;]]]&lt;br /&gt;
    Natives&lt;br /&gt;
        GL4bc   true [4.4 (Compat profile, arb, ES2 compat, ES3 compat, FBO, hardware)]&lt;br /&gt;
        GL4 true [4.4 (Core profile, arb, ES2 compat, ES3 compat, FBO, hardware)]&lt;br /&gt;
        GLES3   false&lt;br /&gt;
        GL3bc   true [4.4 (Compat profile, arb, ES2 compat, ES3 compat, FBO, hardware)]&lt;br /&gt;
        GL3 true [4.4 (Core profile, arb, ES2 compat, ES3 compat, FBO, hardware)]&lt;br /&gt;
        GL2 true [4.4 (Compat profile, arb, ES2 compat, ES3 compat, FBO, hardware)]&lt;br /&gt;
        GLES2   true [2.0 (ES profile, ES2 compat, FBO, software)]&lt;br /&gt;
        GLES1   true [1.0 (ES profile, FP32 compat, software)]&lt;br /&gt;
        Count   7 / 8&lt;br /&gt;
    Common&lt;br /&gt;
        GL4ES3  true&lt;br /&gt;
        GL2GL3  true&lt;br /&gt;
        GL2ES2  true&lt;br /&gt;
        GL2ES1  true&lt;br /&gt;
    Mappings&lt;br /&gt;
        GL2ES2  GLProfile[GL2ES2/GL4.hw]&lt;br /&gt;
        GL2ES1  GLProfile[GL2ES1/GL4bc.hw]&lt;br /&gt;
        GL2 GLProfile[GL2/GL4bc.hw]&lt;br /&gt;
        GL4 GLProfile[GL4/GL4.hw]&lt;br /&gt;
        GL3 GLProfile[GL3/GL4.hw]&lt;br /&gt;
        GL4bc   GLProfile[GL4bc/GL4bc.hw]&lt;br /&gt;
        GLES2   GLProfile[GLES2/GLES2.sw]&lt;br /&gt;
        GLES1   GLProfile[GLES1/GLES1.sw]&lt;br /&gt;
        GL4ES3  GLProfile[GL4ES3/GL4.hw]&lt;br /&gt;
        GL2GL3  GLProfile[GL2GL3/GL4bc.hw]&lt;br /&gt;
        GL3bc   GLProfile[GL3bc/GL4bc.hw]&lt;br /&gt;
        default GLProfile[GL4bc/GL4bc.hw]&lt;br /&gt;
        Count   11 / 12&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Desktop Capabilities:&lt;br /&gt;
    GLCaps[glx vid 0x21, fbc 0x105: rgba 8/8/8/0, opaque, accum-rgba 16/16/16/16, dp/st/ms 24/8/0, dbl, mono  , hw, GLProfile[GL4bc/GL4bc.hw], on-scr[fbo, pbuffer, bitmap]]&lt;br /&gt;
    .....&lt;br /&gt;
&lt;br /&gt;
Requesting: GLCaps[rgba 8/8/8/0, opaque, accum-rgba 0/0/0/0, dp/st/ms 16/0/0, dbl, mono  , hw, GLProfile[GL4bc/GL4bc.hw], on-scr[.]]&lt;br /&gt;
-----------------------------------------------------------------------------------------------------&lt;br /&gt;
X11GraphicsDevice[type .x11, connection :0]:&lt;br /&gt;
    Natives&lt;br /&gt;
        GL4bc   true [4.4 (Compat profile, arb, ES2 compat, ES3 compat, FBO, hardware)]&lt;br /&gt;
        GL4 true [4.4 (Core profile, arb, ES2 compat, ES3 compat, FBO, hardware)]&lt;br /&gt;
        GLES3   false&lt;br /&gt;
        GL3bc   true [4.4 (Compat profile, arb, ES2 compat, ES3 compat, FBO, hardware)]&lt;br /&gt;
        GL3 true [4.4 (Core profile, arb, ES2 compat, ES3 compat, FBO, hardware)]&lt;br /&gt;
        GL2 true [4.4 (Compat profile, arb, ES2 compat, ES3 compat, FBO, hardware)]&lt;br /&gt;
        GLES2   true [2.0 (ES profile, ES2 compat, FBO, software)]&lt;br /&gt;
        GLES1   true [1.0 (ES profile, FP32 compat, software)]&lt;br /&gt;
        Count   7 / 8&lt;br /&gt;
    Common&lt;br /&gt;
        GL4ES3  true&lt;br /&gt;
        GL2GL3  true&lt;br /&gt;
        GL2ES2  true&lt;br /&gt;
        GL2ES1  true&lt;br /&gt;
    Mappings&lt;br /&gt;
        GL2ES2  GLProfile[GL2ES2/GL4.hw]&lt;br /&gt;
        GL2ES1  GLProfile[GL2ES1/GL4bc.hw]&lt;br /&gt;
        GL2 GLProfile[GL2/GL4bc.hw]&lt;br /&gt;
        GL4 GLProfile[GL4/GL4.hw]&lt;br /&gt;
        GL3 GLProfile[GL3/GL4.hw]&lt;br /&gt;
        GL4bc   GLProfile[GL4bc/GL4bc.hw]&lt;br /&gt;
        GLES2   GLProfile[GLES2/GLES2.sw]&lt;br /&gt;
        GLES1   GLProfile[GLES1/GLES1.sw]&lt;br /&gt;
        GL4ES3  GLProfile[GL4ES3/GL4.hw]&lt;br /&gt;
        GL2GL3  GLProfile[GL2GL3/GL4bc.hw]&lt;br /&gt;
        GL3bc   GLProfile[GL3bc/GL4bc.hw]&lt;br /&gt;
        default GLProfile[GL4bc/GL4bc.hw]&lt;br /&gt;
        Count   11 / 12&lt;br /&gt;
&lt;br /&gt;
GL Profile     GLProfile[GL4bc/GL4bc.hw]&lt;br /&gt;
GL Version     4.4 (Compat profile, arb, ES2 compat, ES3 compat, FBO, hardware) - 4.4.0 NVIDIA 331.13 [GL 4.4.0, vendor 331.13.0 (NVIDIA 331.13)]&lt;br /&gt;
Quirks         []&lt;br /&gt;
Impl. class    jogamp.opengl.gl4.GL4bcImpl&lt;br /&gt;
GL_VENDOR      NVIDIA Corporation&lt;br /&gt;
GL_RENDERER    GeForce GTX 660/PCIe/SSE2&lt;br /&gt;
GL_VERSION     4.4.0 NVIDIA 331.13&lt;br /&gt;
GLSL           true, has-compiler-func: true, version: 4.40 NVIDIA via Cg compiler / 4.40.0&lt;br /&gt;
GL FBO: basic true, full true&lt;br /&gt;
GL_EXTENSIONS  292&lt;br /&gt;
GLX_EXTENSIONS 28&lt;br /&gt;
-----------------------------------------------------------------------------------------------------&lt;br /&gt;
Requested: GLCaps[rgba 8/8/8/0, opaque, accum-rgba 0/0/0/0, dp/st/ms 16/0/0, dbl, mono  , hw, GLProfile[GL4bc/GL4bc.hw], on-scr[.]]&lt;br /&gt;
Chosen   : GLCaps[glx vid 0x27, fbc 0x10d: rgba 8/8/8/0, opaque, accum-rgba 16/16/16/16, dp/st/ms 24/0/0, dbl, mono  , hw, GLProfile[GL4bc/GL4bc.hw], on-scr[.]]&lt;br /&gt;
GL impl. class jogamp.opengl.gl4.GL4bcImpl&lt;br /&gt;
GL4ES3 retrieved, impl. class jogamp.opengl.gl4.GL4bcImpl&lt;br /&gt;
GL3 retrieved, impl. class jogamp.opengl.gl4.GL4bcImpl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The dump is hold in the file &amp;lt;pre&amp;gt;test.log&amp;lt;/pre&amp;gt; which you should send to us in case of a bugreport.&lt;br /&gt;
&lt;br /&gt;
===== Runtime Debug Logs =====&lt;br /&gt;
&lt;br /&gt;
You may also like to send us the debug version:&lt;br /&gt;
* sh etc/test_dbg.sh (Unixoid), or &lt;br /&gt;
* etc\test_dbg.bat (Windows)&lt;br /&gt;
which produces the file &amp;lt;pre&amp;gt;test_dbg.log&amp;lt;/pre&amp;gt; and should be send to us to complete the bugreport as well.&lt;br /&gt;
&lt;br /&gt;
==== Retrieve Release Version Tag from GIT Hash ====&lt;br /&gt;
&lt;br /&gt;
git-show-tags-of-commit.sh&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#! /bin/sh&lt;br /&gt;
&lt;br /&gt;
sha1=$1&lt;br /&gt;
shift&lt;br /&gt;
&lt;br /&gt;
git show-ref --tags -d | grep ^$sha1 | sed -e &#039;s,.* refs/tags/,,&#039; -e &#039;s/\^{}//&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
JOGL example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; git-show-tags-of-commit.sh 9ff0b0dafea2a03a915c97eb1513c39c27b6a7ae&lt;br /&gt;
v2.0-rc8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
GlueGen example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; git-show-tags-of-commit.sh 4ce601b38ca8418eddbe8cca4d531e6161fae26b&lt;br /&gt;
v2.0-rc7&lt;br /&gt;
v2.0-rc8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Maven ==&lt;br /&gt;
See the [[Setting_up_a_JogAmp_project_in_your_favorite_IDE#Maven|maven instructions]] for a guide to using Jogamp in&lt;br /&gt;
Maven projects.&lt;br /&gt;
&lt;br /&gt;
== Autobuild Files ==&lt;br /&gt;
[{{SERVER}}/deployment/autobuilds/master/jogl-b485-2011-09-20_08-30-36/ Autobuild Platform ZIP files] for each module&lt;br /&gt;
follow the [[#Version_Classification|versioning]] scheme plus contain the platform identifier [{{SERVER}}/jogl/doc/deployment/JOGL-DEPLOYMENT.html#NativeJARFileNameConvention OS and ARCH]:&lt;br /&gt;
&amp;lt;pre&amp;gt;   &lt;br /&gt;
   jogl-2.0-b210-20101110-linux-amd64.zip&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Release and Archived Files ==&lt;br /&gt;
The [{{SERVER}}/deployment/jogamp-current/archive/ release archive folder] &lt;br /&gt;
contains 7z archive files for each platform containing all modules, ie. &#039;&#039;jogamp-linux-&#039;&#039;&#039;os.and.arch&#039;&#039;&#039;.7z&#039;&#039;.&lt;br /&gt;
The &#039;&#039;&#039;os.and.arch&#039;&#039;&#039; refers to the&lt;br /&gt;
[{{SERVER}}/jogl/doc/deployment/JOGL-DEPLOYMENT.html#NativeJARFileNameConvention native file naming convention].&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
* &amp;lt;tt&amp;gt;jogamp-linux-amd64.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;jogamp-linux-i586.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;jogamp-windows-amd64.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;jogamp-windows-i586.7z&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The folder also contains the Java API document ZIP files:&lt;br /&gt;
* &amp;lt;tt&amp;gt;gluegen-javadoc.zip&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;jogl-javadoc.zip&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;jocl-javadoc.zip&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;joal-javadoc.zip&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sgothel</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Release_2.6.0&amp;diff=2239</id>
		<title>Release 2.6.0</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Release_2.6.0&amp;diff=2239"/>
		<updated>2025-08-31T18:34:16Z</updated>

		<summary type="html">&lt;p&gt;Sgothel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Git Tag v2.6.0&lt;br /&gt;
* [{{Server}}/git/?p=gluegen.git;a=tag;h=refs/tags/v2.6.0 gluegen]&lt;br /&gt;
* [{{Server}}/git/?p=joal.git;a=tag;h=refs/tags/v2.6.0 joal]&lt;br /&gt;
* [{{Server}}/git/?p=jogl.git;a=tag;h=refs/tags/v2.6.0 jogl]&lt;br /&gt;
* [{{Server}}/git/?p=jocl.git;a=tag;h=refs/tags/v2.6.0 jocl]&lt;br /&gt;
&lt;br /&gt;
Information&lt;br /&gt;
* [{{SERVER}}/gluegen/doc/JogAmpPlatforms-2.6.0.html Supported Platforms]&lt;br /&gt;
* [[SW Tracking Report Objectives for the release 2.6.0|Roadmap Release 2.6.0]]&lt;br /&gt;
* [{{SERVER}}/bugzilla//show_bug.cgi?id=1512 Release 2.6.0 Bugzilla Entry]&lt;br /&gt;
* [{{SERVER}}/bugzilla/buglist.cgi?list_id=2822&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.6.0 Complete Bugzilla List of Version 2.6.0]&lt;br /&gt;
* [https://jausoft.com/blog/2025/08/27/jogamp-2-6-0-release-coming-up Blog entry w/ video]&lt;br /&gt;
&lt;br /&gt;
General Artifacts&lt;br /&gt;
* [{{Server}}/deployment/v2.6.0/ Main entry, signed release]&lt;br /&gt;
* [{{Server}}/deployment/v2.6.0/fat/ Fat jar files including sources]&lt;br /&gt;
* [{{Server}}/deployment/v2.6.0/apk/ Android APK files including jogl-demos-fat-android-&amp;lt;arch&amp;gt;.apk to test]&lt;br /&gt;
* [{{Server}}/deployment/v2.6.0/archive/ Sources, ChangeLogs, Platform 7z Files, test results, ..]&lt;br /&gt;
&lt;br /&gt;
Maven Artifacts&lt;br /&gt;
* version 2.6.0&lt;br /&gt;
* repo-url https://jogamp.org/deployment/maven/&lt;br /&gt;
&lt;br /&gt;
CI Build Information:&lt;br /&gt;
* [{{Server}}/chuck/view/fwd/job/gluegen/987/ gluegen]&lt;br /&gt;
* [{{Server}}/chuck/view/fwd/job/joal/698/ joal]&lt;br /&gt;
* [{{Server}}/chuck/view/fwd/job/jogl/1548/ jogl]&lt;br /&gt;
* [{{Server}}/chuck/view/fwd/job/jocl/1191/ jocl]&lt;br /&gt;
&lt;br /&gt;
[{{Server}}/deployment/v2.6.0/log/all.artifact.properties.sorted Detailed Version Information]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gluegen.build.branch=origin/master&lt;br /&gt;
gluegen.build.commit=c06493e448332ace78721f5dfc3718c863783a12&lt;br /&gt;
gluegen.build.id=987&lt;br /&gt;
gluegen.build.number=987&lt;br /&gt;
gluegen.build.version=2.6.0&lt;br /&gt;
joal.build.branch=origin/master&lt;br /&gt;
joal.build.commit=a16d1e631091a3eb27f6f10b7e7d279df6b3e8e2&lt;br /&gt;
joal.build.id=698&lt;br /&gt;
joal.build.number=698&lt;br /&gt;
joal.build.version=2.6.0&lt;br /&gt;
joal-demos.build.branch=origin/master&lt;br /&gt;
joal-demos.build.commit=62cbae51663091db2984229abfc7d78b32cb99b5&lt;br /&gt;
joal-demos.build.id=554&lt;br /&gt;
joal-demos.build.number=554&lt;br /&gt;
jocl.build.branch=origin/master&lt;br /&gt;
jocl.build.commit=6d9649249b40e1ac880288bbad144649170092df&lt;br /&gt;
jocl.build.id=1191&lt;br /&gt;
jocl.build.number=1191&lt;br /&gt;
jocl.build.version=2.6.0&lt;br /&gt;
jocl-demos.build.branch=origin/master&lt;br /&gt;
jocl-demos.build.commit=03bc23b87d44b779b30022c19ee6cdfd16a5fd11&lt;br /&gt;
jocl-demos.build.id=1064&lt;br /&gt;
jocl-demos.build.number=1064&lt;br /&gt;
jogl.build.branch=origin/master&lt;br /&gt;
jogl.build.commit=f5964604d3e940c07c3e6af884f06b4eceb08dd4&lt;br /&gt;
jogl.build.id=1548&lt;br /&gt;
jogl.build.number=1548&lt;br /&gt;
jogl.build.version=2.6.0&lt;br /&gt;
jogl-demos.build.branch=origin/master&lt;br /&gt;
jogl-demos.build.commit=a2d87f82a81ff87555d09131fae638a9b8dc6dd7&lt;br /&gt;
jogl-demos.build.id=527&lt;br /&gt;
jogl-demos.build.number=527&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sgothel</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Release_2.6.0&amp;diff=2238</id>
		<title>Release 2.6.0</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Release_2.6.0&amp;diff=2238"/>
		<updated>2025-08-31T18:33:11Z</updated>

		<summary type="html">&lt;p&gt;Sgothel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Git Tag v2.6.0&lt;br /&gt;
* [{{Server}}/git/?p=gluegen.git;a=tag;h=refs/tags/v2.6.0 gluegen]&lt;br /&gt;
* [{{Server}}/git/?p=joal.git;a=tag;h=refs/tags/v2.6.0 joal]&lt;br /&gt;
* [{{Server}}/git/?p=jogl.git;a=tag;h=refs/tags/v2.6.0 jogl]&lt;br /&gt;
* [{{Server}}/git/?p=jocl.git;a=tag;h=refs/tags/v2.6.0 jocl]&lt;br /&gt;
&lt;br /&gt;
Information&lt;br /&gt;
* [{{SERVER}}/gluegen/doc/JogAmpPlatforms-2.6.0.html Supported Platforms]&lt;br /&gt;
* [[SW Tracking Report Objectives for the release 2.6.0|Roadmap Release 2.6.0]]&lt;br /&gt;
* [{{SERVER}}/bugzilla//show_bug.cgi?id=1512 Release 2.6.0 Bugzilla Entry]&lt;br /&gt;
* [{{SERVER}}/bugzilla/buglist.cgi?list_id=2822&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.6.0 Complete Bugzilla List of Version 2.6.0]&lt;br /&gt;
* [https://jausoft.com/blog/2025/08/27/jogamp-2-6-0-release-coming-up Blog entry w/ video]&lt;br /&gt;
&lt;br /&gt;
General Artifacts&lt;br /&gt;
* [{{Server}}/deployment/v2.6.0/ Main entry, signed release]&lt;br /&gt;
* [{{Server}}/deployment/v2.6.0/fat/ Fat jar files including sources]&lt;br /&gt;
* [{{Server}}/deployment/v2.6.0/apk/ Android APK files including jogl-demos-fat-android-&amp;lt;arch&amp;gt;.apk to test]&lt;br /&gt;
* [{{Server}}/deployment/v2.6.0/archive/ Sources, ChangeLogs, Platform 7z Files, test results, ..]&lt;br /&gt;
&lt;br /&gt;
Maven Artifacts&lt;br /&gt;
* version 2.6.0&lt;br /&gt;
* repo-url https://www.jogamp.org/deployment/maven/&lt;br /&gt;
&lt;br /&gt;
CI Build Information:&lt;br /&gt;
* [{{Server}}/chuck/view/fwd/job/gluegen/987/ gluegen]&lt;br /&gt;
* [{{Server}}/chuck/view/fwd/job/joal/698/ joal]&lt;br /&gt;
* [{{Server}}/chuck/view/fwd/job/jogl/1548/ jogl]&lt;br /&gt;
* [{{Server}}/chuck/view/fwd/job/jocl/1191/ jocl]&lt;br /&gt;
&lt;br /&gt;
[{{Server}}/deployment/v2.6.0/log/all.artifact.properties.sorted Detailed Version Information]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gluegen.build.branch=origin/master&lt;br /&gt;
gluegen.build.commit=c06493e448332ace78721f5dfc3718c863783a12&lt;br /&gt;
gluegen.build.id=987&lt;br /&gt;
gluegen.build.number=987&lt;br /&gt;
gluegen.build.version=2.6.0&lt;br /&gt;
joal.build.branch=origin/master&lt;br /&gt;
joal.build.commit=a16d1e631091a3eb27f6f10b7e7d279df6b3e8e2&lt;br /&gt;
joal.build.id=698&lt;br /&gt;
joal.build.number=698&lt;br /&gt;
joal.build.version=2.6.0&lt;br /&gt;
joal-demos.build.branch=origin/master&lt;br /&gt;
joal-demos.build.commit=62cbae51663091db2984229abfc7d78b32cb99b5&lt;br /&gt;
joal-demos.build.id=554&lt;br /&gt;
joal-demos.build.number=554&lt;br /&gt;
jocl.build.branch=origin/master&lt;br /&gt;
jocl.build.commit=6d9649249b40e1ac880288bbad144649170092df&lt;br /&gt;
jocl.build.id=1191&lt;br /&gt;
jocl.build.number=1191&lt;br /&gt;
jocl.build.version=2.6.0&lt;br /&gt;
jocl-demos.build.branch=origin/master&lt;br /&gt;
jocl-demos.build.commit=03bc23b87d44b779b30022c19ee6cdfd16a5fd11&lt;br /&gt;
jocl-demos.build.id=1064&lt;br /&gt;
jocl-demos.build.number=1064&lt;br /&gt;
jogl.build.branch=origin/master&lt;br /&gt;
jogl.build.commit=f5964604d3e940c07c3e6af884f06b4eceb08dd4&lt;br /&gt;
jogl.build.id=1548&lt;br /&gt;
jogl.build.number=1548&lt;br /&gt;
jogl.build.version=2.6.0&lt;br /&gt;
jogl-demos.build.branch=origin/master&lt;br /&gt;
jogl-demos.build.commit=a2d87f82a81ff87555d09131fae638a9b8dc6dd7&lt;br /&gt;
jogl-demos.build.id=527&lt;br /&gt;
jogl-demos.build.number=527&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sgothel</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Release_2.6.0&amp;diff=2237</id>
		<title>Release 2.6.0</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Release_2.6.0&amp;diff=2237"/>
		<updated>2025-08-31T15:43:05Z</updated>

		<summary type="html">&lt;p&gt;Sgothel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Git Tag v2.6.0&lt;br /&gt;
* [{{Server}}/git/?p=gluegen.git;a=tag;h=refs/tags/v2.6.0 gluegen]&lt;br /&gt;
* [{{Server}}/git/?p=joal.git;a=tag;h=refs/tags/v2.6.0 joal]&lt;br /&gt;
* [{{Server}}/git/?p=jogl.git;a=tag;h=refs/tags/v2.6.0 jogl]&lt;br /&gt;
* [{{Server}}/git/?p=jocl.git;a=tag;h=refs/tags/v2.6.0 jocl]&lt;br /&gt;
&lt;br /&gt;
Information&lt;br /&gt;
* [{{SERVER}}/gluegen/doc/JogAmpPlatforms-2.6.0.html Supported Platforms]&lt;br /&gt;
* [[SW Tracking Report Objectives for the release 2.6.0|Roadmap Release 2.6.0]]&lt;br /&gt;
* [{{SERVER}}/bugzilla//show_bug.cgi?id=1512 Release 2.6.0 Bugzilla Entry]&lt;br /&gt;
* [{{SERVER}}/bugzilla/buglist.cgi?list_id=2822&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.6.0 Complete Bugzilla List of Version 2.6.0]&lt;br /&gt;
* [https://jausoft.com/blog/2025/08/27/jogamp-2-6-0-release-coming-up Blog entry w/ video]&lt;br /&gt;
&lt;br /&gt;
General Artifacts&lt;br /&gt;
* [{{Server}}/deployment/v2.6.0/ Main entry, signed release]&lt;br /&gt;
* [{{Server}}/deployment/v2.6.0/fat/ Fat jar files including sources]&lt;br /&gt;
* [{{Server}}/deployment/v2.6.0/apk/ Android APK files including jogl-demos-fat-android-&amp;lt;arch&amp;gt;.apk to test]&lt;br /&gt;
* [{{Server}}/deployment/v2.6.0/archive/ Sources, ChangeLogs, Platform 7z Files, test results, ..]&lt;br /&gt;
&lt;br /&gt;
Maven Artifacts&lt;br /&gt;
* version 2.6.0&lt;br /&gt;
* repo-url http://www.jogamp.org/deployment/maven/&lt;br /&gt;
&lt;br /&gt;
CI Build Information:&lt;br /&gt;
* [{{Server}}/chuck/view/fwd/job/gluegen/987/ gluegen]&lt;br /&gt;
* [{{Server}}/chuck/view/fwd/job/joal/698/ joal]&lt;br /&gt;
* [{{Server}}/chuck/view/fwd/job/jogl/1548/ jogl]&lt;br /&gt;
* [{{Server}}/chuck/view/fwd/job/jocl/1191/ jocl]&lt;br /&gt;
&lt;br /&gt;
[{{Server}}/deployment/v2.6.0/log/all.artifact.properties.sorted Detailed Version Information]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gluegen.build.branch=origin/master&lt;br /&gt;
gluegen.build.commit=c06493e448332ace78721f5dfc3718c863783a12&lt;br /&gt;
gluegen.build.id=987&lt;br /&gt;
gluegen.build.number=987&lt;br /&gt;
gluegen.build.version=2.6.0&lt;br /&gt;
joal.build.branch=origin/master&lt;br /&gt;
joal.build.commit=a16d1e631091a3eb27f6f10b7e7d279df6b3e8e2&lt;br /&gt;
joal.build.id=698&lt;br /&gt;
joal.build.number=698&lt;br /&gt;
joal.build.version=2.6.0&lt;br /&gt;
joal-demos.build.branch=origin/master&lt;br /&gt;
joal-demos.build.commit=62cbae51663091db2984229abfc7d78b32cb99b5&lt;br /&gt;
joal-demos.build.id=554&lt;br /&gt;
joal-demos.build.number=554&lt;br /&gt;
jocl.build.branch=origin/master&lt;br /&gt;
jocl.build.commit=6d9649249b40e1ac880288bbad144649170092df&lt;br /&gt;
jocl.build.id=1191&lt;br /&gt;
jocl.build.number=1191&lt;br /&gt;
jocl.build.version=2.6.0&lt;br /&gt;
jocl-demos.build.branch=origin/master&lt;br /&gt;
jocl-demos.build.commit=03bc23b87d44b779b30022c19ee6cdfd16a5fd11&lt;br /&gt;
jocl-demos.build.id=1064&lt;br /&gt;
jocl-demos.build.number=1064&lt;br /&gt;
jogl.build.branch=origin/master&lt;br /&gt;
jogl.build.commit=f5964604d3e940c07c3e6af884f06b4eceb08dd4&lt;br /&gt;
jogl.build.id=1548&lt;br /&gt;
jogl.build.number=1548&lt;br /&gt;
jogl.build.version=2.6.0&lt;br /&gt;
jogl-demos.build.branch=origin/master&lt;br /&gt;
jogl-demos.build.commit=a2d87f82a81ff87555d09131fae638a9b8dc6dd7&lt;br /&gt;
jogl-demos.build.id=527&lt;br /&gt;
jogl-demos.build.number=527&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sgothel</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Release_2.6.0&amp;diff=2236</id>
		<title>Release 2.6.0</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Release_2.6.0&amp;diff=2236"/>
		<updated>2025-08-31T02:39:35Z</updated>

		<summary type="html">&lt;p&gt;Sgothel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Git Tag v2.6.0&lt;br /&gt;
* [{{Server}}/git/?p=gluegen.git;a=tag;h=refs/tags/v2.6.0 gluegen]&lt;br /&gt;
* [{{Server}}/git/?p=joal.git;a=tag;h=refs/tags/v2.6.0 joal]&lt;br /&gt;
* [{{Server}}/git/?p=jogl.git;a=tag;h=refs/tags/v2.6.0 jogl]&lt;br /&gt;
* [{{Server}}/git/?p=jocl.git;a=tag;h=refs/tags/v2.6.0 jocl]&lt;br /&gt;
&lt;br /&gt;
Information&lt;br /&gt;
* [{{SERVER}}/gluegen/doc/JogAmpPlatforms-2.6.0.html Supported Platforms]&lt;br /&gt;
* [[SW Tracking Report Objectives for the release 2.6.0|Roadmap Release 2.6.0]]&lt;br /&gt;
* [{{SERVER}}/bugzilla//show_bug.cgi?id=1512 Release 2.6.0 Bugzilla Entry]&lt;br /&gt;
* [{{SERVER}}/bugzilla/buglist.cgi?list_id=2822&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.6.0 Complete Bugzilla List of Version 2.6.0]&lt;br /&gt;
* [https://jausoft.com/blog/2025/08/27/jogamp-2-6-0-release-coming-up Blog entry w/ video]&lt;br /&gt;
&lt;br /&gt;
General Artifacts&lt;br /&gt;
* [{{Server}}/deployment/v2.6.0/ Main entry, signed release]&lt;br /&gt;
* [{{Server}}/deployment/v2.6.0/fat/ Fat jar files including sources]&lt;br /&gt;
* [{{Server}}/deployment/v2.6.0/apk/ Android APK files including jogl-demos-fat-android-&amp;lt;arch&amp;gt;.apk to test]&lt;br /&gt;
* [{{Server}}/deployment/v2.6.0/archive/ Sources, ChangeLogs, Platform 7z Files, test results, ..]&lt;br /&gt;
&lt;br /&gt;
Maven Artifacts&lt;br /&gt;
* version 2.6.0&lt;br /&gt;
* repo-url http://www.jogamp.org/deployment/maven/&lt;br /&gt;
&lt;br /&gt;
CI Build Information:&lt;br /&gt;
* [{{Server}}/chuck/view/fwd/job/gluegen/987/ gluegen]&lt;br /&gt;
* [{{Server}}/chuck/view/fwd/job/joal/698/ joal]&lt;br /&gt;
* [{{Server}}/chuck/view/fwd/job/jogl/1548/ jogl]&lt;br /&gt;
* [{{Server}}/chuck/view/fwd/job/jocl/1191/ jocl]&lt;br /&gt;
&lt;br /&gt;
[{{Server}}/deployment/v2.6.0/log/all.artifact.properties.sorted Detailed Version Information]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gluegen.build.branch=origin/master&lt;br /&gt;
gluegen.build.commit=c06493e448332ace78721f5dfc3718c863783a12&lt;br /&gt;
gluegen.build.id=987&lt;br /&gt;
gluegen.build.number=987&lt;br /&gt;
gluegen.build.sha.classes=5201b95b2924bbac09519a922e7e7a26930f928ebc7ee0666c442d4a127ddbb5&lt;br /&gt;
gluegen.build.sha.natives=28de07778748b1c36e45b596563830181a3032ae507e09b8a68a68fbb0b7eef8&lt;br /&gt;
gluegen.build.sha.natives=44aaf0af1599ea491b947dd445fb9749b1c7a921daffbb529688836d8b8efd08&lt;br /&gt;
gluegen.build.sha.natives=8255743fd43ce87d89470d6a81176cf1188fe889a053427eaaaa9b4d889baa9d&lt;br /&gt;
gluegen.build.sha.natives=8f26171638c833b314f23c94c5880d5e86489e42d6534e1277c8d6d1fb8f1a90&lt;br /&gt;
gluegen.build.sha.natives=c1296426ba7cfb0d9dc7080878b74ece275ccf54e6091a117e639f88e2dc1926&lt;br /&gt;
gluegen.build.sha.natives=f46936374e6016170ae1400fb081a5609c38c997fb6dd619c1eea29c371be64c&lt;br /&gt;
gluegen.build.sha.sources=d7d4d9b4ac2337edb70516467403b2f7931567a436932f29399d72e65a91802a&lt;br /&gt;
gluegen.build.sha.sources=dd837463de04c023b9ca611f42095276b47f1e5cbd0d0ce97f5f91a427f07fb6&lt;br /&gt;
gluegen.build.version=2.6.0&lt;br /&gt;
joal.build.branch=origin/master&lt;br /&gt;
joal.build.commit=a16d1e631091a3eb27f6f10b7e7d279df6b3e8e2&lt;br /&gt;
joal.build.id=698&lt;br /&gt;
joal.build.number=698&lt;br /&gt;
joal.build.version=2.6.0&lt;br /&gt;
joal-demos.build.branch=origin/master&lt;br /&gt;
joal-demos.build.commit=62cbae51663091db2984229abfc7d78b32cb99b5&lt;br /&gt;
joal-demos.build.id=554&lt;br /&gt;
joal-demos.build.number=554&lt;br /&gt;
jocl.build.branch=origin/master&lt;br /&gt;
jocl.build.commit=6d9649249b40e1ac880288bbad144649170092df&lt;br /&gt;
jocl.build.id=1191&lt;br /&gt;
jocl.build.number=1191&lt;br /&gt;
jocl.build.version=2.6.0&lt;br /&gt;
jocl-demos.build.branch=origin/master&lt;br /&gt;
jocl-demos.build.commit=03bc23b87d44b779b30022c19ee6cdfd16a5fd11&lt;br /&gt;
jocl-demos.build.id=1064&lt;br /&gt;
jocl-demos.build.number=1064&lt;br /&gt;
jogl.build.branch=origin/master&lt;br /&gt;
jogl.build.commit=f5964604d3e940c07c3e6af884f06b4eceb08dd4&lt;br /&gt;
jogl.build.id=1548&lt;br /&gt;
jogl.build.number=1548&lt;br /&gt;
jogl.build.version=2.6.0&lt;br /&gt;
jogl-demos.build.branch=origin/master&lt;br /&gt;
jogl-demos.build.commit=a2d87f82a81ff87555d09131fae638a9b8dc6dd7&lt;br /&gt;
jogl-demos.build.id=527&lt;br /&gt;
jogl-demos.build.number=527&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sgothel</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Android_Packages&amp;diff=2235</id>
		<title>Android Packages</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Android_Packages&amp;diff=2235"/>
		<updated>2025-08-31T02:22:25Z</updated>

		<summary type="html">&lt;p&gt;Sgothel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Direct download and installation of our Android Packages =&lt;br /&gt;
&lt;br /&gt;
[http://jogamp.org/deployment/jogamp-current/apk Latest APK files location]&lt;br /&gt;
&lt;br /&gt;
You may need to uninstall previous installed versions first!&lt;br /&gt;
&lt;br /&gt;
== Single Fat Application Method ==&lt;br /&gt;
A fat demo APK &#039;&#039;jogl-demos-fat-android-${arch}.apk&#039;&#039; resides inside the [http://jogamp.org/deployment/jogamp-current/apk APK release folder] and can be directly installed and tested on your device w/ developer mode enabled.&lt;br /&gt;
&lt;br /&gt;
User are encouraged to merge the &#039;&#039;&amp;lt;module&amp;gt;-all-android-&amp;lt;arch&amp;gt;.apk&#039;&#039; or jar files with their own application.&lt;br /&gt;
&lt;br /&gt;
== Launcher Method ==&lt;br /&gt;
The following APKs must be installed to complete a JogAmp installation:&lt;br /&gt;
* [{{Server}}/deployment/jogamp-current/apk/jogamp-android-launcher.apk Launcher]&lt;br /&gt;
* ARM 32-bit &amp;gt;= armv6&lt;br /&gt;
** [{{Server}}/deployment/jogamp-current/apk/gluegen-rt-android-armv6.apk GlueGen]&lt;br /&gt;
** [{{Server}}/deployment/jogamp-current/apk/joal-android-armv6.apk JOAL]&lt;br /&gt;
** [{{Server}}/deployment/jogamp-current/apk/jogl-all-android-armv6.apk JOGL]&lt;br /&gt;
* ARM 64-bit &amp;gt;= aarch64&lt;br /&gt;
** [{{Server}}/deployment/jogamp-current/apk/gluegen-rt-android-aarch64.apk GlueGen]&lt;br /&gt;
** [{{Server}}/deployment/jogamp-current/apk/joal-android-aarch64.apk JOAL]&lt;br /&gt;
** [{{Server}}/deployment/jogamp-current/apk/jogl-all-android-aarch64.apk JOGL]&lt;br /&gt;
            &lt;br /&gt;
The following demo APK should be installed:&lt;br /&gt;
* [{{Server}}/deployment/jogamp-current/apk/joal-test-android.apk JOAL Tests]&lt;br /&gt;
* [{{Server}}/deployment/jogamp-current/apk/jogl-test-android.apk JOGL Tests]&lt;br /&gt;
&lt;br /&gt;
= Download and installation via &#039;&#039;Google Play&#039;&#039;  =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; These versions are currently not maintained and are older versions! &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The following APKs must be installed to complete a JogAmp installation:&lt;br /&gt;
* [https://play.google.com/store/apps/details?id=jogamp.android.launcher Launcher]&lt;br /&gt;
* [https://play.google.com/store/apps/details?id=com.jogamp.common GlueGen]&lt;br /&gt;
* [https://play.google.com/store/apps/details?id=com.jogamp.openal JOAL]&lt;br /&gt;
* [https://play.google.com/store/apps/details?id=javax.media.opengl JOGL]&lt;br /&gt;
            &lt;br /&gt;
The following demo APK should be installed:&lt;br /&gt;
* [https://play.google.com/store/apps/details?id=com.jogamp.opengl.test JOAL Tests]&lt;br /&gt;
* [https://play.google.com/store/apps/details?id=com.jogamp.opengl.test JOGL Tests]&lt;/div&gt;</summary>
		<author><name>Sgothel</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Release_2.6.0&amp;diff=2234</id>
		<title>Release 2.6.0</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Release_2.6.0&amp;diff=2234"/>
		<updated>2025-08-31T02:07:22Z</updated>

		<summary type="html">&lt;p&gt;Sgothel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Git Tag v2.6.0&lt;br /&gt;
* [{{Server}}/git/?p=gluegen.git;a=tag;h=refs/tags/v2.6.0 gluegen]&lt;br /&gt;
* [{{Server}}/git/?p=joal.git;a=tag;h=refs/tags/v2.6.0 joal]&lt;br /&gt;
* [{{Server}}/git/?p=jogl.git;a=tag;h=refs/tags/v2.6.0 jogl]&lt;br /&gt;
* [{{Server}}/git/?p=jocl.git;a=tag;h=refs/tags/v2.6.0 jocl]&lt;br /&gt;
&lt;br /&gt;
Information&lt;br /&gt;
* [{{SERVER}}/gluegen/doc/JogAmpPlatforms-2.6.0.html Supported Platforms]&lt;br /&gt;
* [[SW Tracking Report Objectives for the release 2.6.0|Roadmap Release 2.6.0]]&lt;br /&gt;
* [{{SERVER}}/bugzilla//show_bug.cgi?id=1512 Release 2.6.0 Bugzilla Entry]&lt;br /&gt;
* [{{SERVER}}/bugzilla/buglist.cgi?list_id=2822&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.6.0 Complete Bugzilla List of Version 2.6.0]&lt;br /&gt;
&lt;br /&gt;
General Artifacts&lt;br /&gt;
* [{{Server}}/deployment/v2.6.0/ Main entry, signed release]&lt;br /&gt;
* [{{Server}}/deployment/v2.6.0/fat/ Fat jar files including sources]&lt;br /&gt;
* [{{Server}}/deployment/v2.6.0/apk/ Android APK files including jogl-demos-fat-android-&amp;lt;arch&amp;gt;.apk to test]&lt;br /&gt;
* [{{Server}}/deployment/v2.6.0/archive/ Sources, ChangeLogs, Platform 7z Files, test results, ..]&lt;br /&gt;
&lt;br /&gt;
Maven Artifacts&lt;br /&gt;
* version 2.6.0&lt;br /&gt;
* repo-url http://www.jogamp.org/deployment/maven/&lt;br /&gt;
&lt;br /&gt;
CI Build Information:&lt;br /&gt;
* [{{Server}}/chuck/view/fwd/job/gluegen/987/ gluegen]&lt;br /&gt;
* [{{Server}}/chuck/view/fwd/job/joal/698/ joal]&lt;br /&gt;
* [{{Server}}/chuck/view/fwd/job/jogl/1548/ jogl]&lt;br /&gt;
* [{{Server}}/chuck/view/fwd/job/jocl/1191/ jocl]&lt;br /&gt;
&lt;br /&gt;
[{{Server}}/deployment/v2.6.0/log/all.artifact.properties.sorted Detailed Version Information]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gluegen.build.branch=origin/master&lt;br /&gt;
gluegen.build.commit=c06493e448332ace78721f5dfc3718c863783a12&lt;br /&gt;
gluegen.build.id=987&lt;br /&gt;
gluegen.build.number=987&lt;br /&gt;
gluegen.build.sha.classes=5201b95b2924bbac09519a922e7e7a26930f928ebc7ee0666c442d4a127ddbb5&lt;br /&gt;
gluegen.build.sha.natives=28de07778748b1c36e45b596563830181a3032ae507e09b8a68a68fbb0b7eef8&lt;br /&gt;
gluegen.build.sha.natives=44aaf0af1599ea491b947dd445fb9749b1c7a921daffbb529688836d8b8efd08&lt;br /&gt;
gluegen.build.sha.natives=8255743fd43ce87d89470d6a81176cf1188fe889a053427eaaaa9b4d889baa9d&lt;br /&gt;
gluegen.build.sha.natives=8f26171638c833b314f23c94c5880d5e86489e42d6534e1277c8d6d1fb8f1a90&lt;br /&gt;
gluegen.build.sha.natives=c1296426ba7cfb0d9dc7080878b74ece275ccf54e6091a117e639f88e2dc1926&lt;br /&gt;
gluegen.build.sha.natives=f46936374e6016170ae1400fb081a5609c38c997fb6dd619c1eea29c371be64c&lt;br /&gt;
gluegen.build.sha.sources=d7d4d9b4ac2337edb70516467403b2f7931567a436932f29399d72e65a91802a&lt;br /&gt;
gluegen.build.sha.sources=dd837463de04c023b9ca611f42095276b47f1e5cbd0d0ce97f5f91a427f07fb6&lt;br /&gt;
gluegen.build.version=2.6.0&lt;br /&gt;
joal.build.branch=origin/master&lt;br /&gt;
joal.build.commit=a16d1e631091a3eb27f6f10b7e7d279df6b3e8e2&lt;br /&gt;
joal.build.id=698&lt;br /&gt;
joal.build.number=698&lt;br /&gt;
joal.build.version=2.6.0&lt;br /&gt;
joal-demos.build.branch=origin/master&lt;br /&gt;
joal-demos.build.commit=62cbae51663091db2984229abfc7d78b32cb99b5&lt;br /&gt;
joal-demos.build.id=554&lt;br /&gt;
joal-demos.build.number=554&lt;br /&gt;
jocl.build.branch=origin/master&lt;br /&gt;
jocl.build.commit=6d9649249b40e1ac880288bbad144649170092df&lt;br /&gt;
jocl.build.id=1191&lt;br /&gt;
jocl.build.number=1191&lt;br /&gt;
jocl.build.version=2.6.0&lt;br /&gt;
jocl-demos.build.branch=origin/master&lt;br /&gt;
jocl-demos.build.commit=03bc23b87d44b779b30022c19ee6cdfd16a5fd11&lt;br /&gt;
jocl-demos.build.id=1064&lt;br /&gt;
jocl-demos.build.number=1064&lt;br /&gt;
jogl.build.branch=origin/master&lt;br /&gt;
jogl.build.commit=f5964604d3e940c07c3e6af884f06b4eceb08dd4&lt;br /&gt;
jogl.build.id=1548&lt;br /&gt;
jogl.build.number=1548&lt;br /&gt;
jogl.build.version=2.6.0&lt;br /&gt;
jogl-demos.build.branch=origin/master&lt;br /&gt;
jogl-demos.build.commit=a2d87f82a81ff87555d09131fae638a9b8dc6dd7&lt;br /&gt;
jogl-demos.build.id=527&lt;br /&gt;
jogl-demos.build.number=527&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sgothel</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=SW_Tracking_Report_Objectives_for_the_release_2.6.0&amp;diff=2233</id>
		<title>SW Tracking Report Objectives for the release 2.6.0</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=SW_Tracking_Report_Objectives_for_the_release_2.6.0&amp;diff=2233"/>
		<updated>2025-08-31T01:58:00Z</updated>

		<summary type="html">&lt;p&gt;Sgothel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;List started on 2023-07-xx, concluding [[SW Tracking Report Objectives for the release 2.5.0|Release 2.5.0]] -  &#039;&#039;&#039;Closed 2025-08-21&#039;&#039;&#039; - continuation @ [[SW Tracking Report Objectives for the release 2.7.0|Release 2.7.0]].&lt;br /&gt;
&lt;br /&gt;
* [{{SERVER}}/gluegen/doc/JogAmpPlatforms-2.6.0.html Supported Platforms]&lt;br /&gt;
* [[Release 2.6.0|Release 2.6.0 Page]]&lt;br /&gt;
* [{{SERVER}}/bugzilla//show_bug.cgi?id=1512 Release 2.6.0 Bugzilla Entry]&lt;br /&gt;
* [{{SERVER}}/bugzilla/buglist.cgi?list_id=2822&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.6.0 Complete Bugzilla List of Version 2.6.0]&lt;br /&gt;
&lt;br /&gt;
= Features =&lt;br /&gt;
&lt;br /&gt;
== Features to be classified for this release ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;status&amp;quot;:[&amp;quot;UNCONFIRMED&amp;quot;],&lt;br /&gt;
        &amp;quot;version&amp;quot;:&amp;quot;2.6.0&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,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;
== Features to implement for this release ==&lt;br /&gt;
&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;],&lt;br /&gt;
        &amp;quot;version&amp;quot;:&amp;quot;2.6.0&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,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;
== Features already implemented for this release ==&lt;br /&gt;
&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;version&amp;quot;:&amp;quot;2.6.0&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,product,component,priority,severity,status,resolution,summary&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Bugs =&lt;br /&gt;
&lt;br /&gt;
== Bugs to be classified for this release ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;status&amp;quot;:[&amp;quot;UNCONFIRMED&amp;quot;],&lt;br /&gt;
        &amp;quot;version&amp;quot;:&amp;quot;2.6.0&amp;quot;,&lt;br /&gt;
        &amp;quot;cf_type&amp;quot;:[&amp;quot;---&amp;quot;, &amp;quot;DEFECT&amp;quot;],&lt;br /&gt;
        &amp;quot;include_fields&amp;quot;:&amp;quot;id,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;
== Bugs to fix for this release ==&lt;br /&gt;
&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;],&lt;br /&gt;
        &amp;quot;version&amp;quot;:&amp;quot;2.6.0&amp;quot;,&lt;br /&gt;
        &amp;quot;cf_type&amp;quot;:[&amp;quot;---&amp;quot;, &amp;quot;DEFECT&amp;quot;],&lt;br /&gt;
        &amp;quot;include_fields&amp;quot;:&amp;quot;id,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;
== Bugs already fixed for this release ==&lt;br /&gt;
&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;version&amp;quot;:&amp;quot;2.6.0&amp;quot;,&lt;br /&gt;
        &amp;quot;cf_type&amp;quot;:[&amp;quot;---&amp;quot;, &amp;quot;DEFECT&amp;quot;],&lt;br /&gt;
        &amp;quot;include_fields&amp;quot;:&amp;quot;id,product,component,priority,severity,status,resolution,summary&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sgothel</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Release_2.6.0&amp;diff=2232</id>
		<title>Release 2.6.0</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Release_2.6.0&amp;diff=2232"/>
		<updated>2025-08-31T01:54:46Z</updated>

		<summary type="html">&lt;p&gt;Sgothel: Created page with &amp;quot;Git Tag v2.6.0 * [{{Server}}/git/?p=gluegen.git;a=tag;h=refs/tags/v2.6.0 gluegen] * [{{Server}}/git/?p=joal.git;a=tag;h=refs/tags/v2.6.0 joal] * [{{Server}}/git/?p=jogl.git;a=tag;h=refs/tags/v2.6.0 jogl] * [{{Server}}/git/?p=jocl.git;a=tag;h=refs/tags/v2.6.0 jocl]  Information * [{{SERVER}}/gluegen/doc/JogAmpPlatforms-2.6.0.html Supported Platforms] * Roadmap Release 2.6.0 * [{{SERVER}}/bugzilla//show_bug.cgi?id=151...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Git Tag v2.6.0&lt;br /&gt;
* [{{Server}}/git/?p=gluegen.git;a=tag;h=refs/tags/v2.6.0 gluegen]&lt;br /&gt;
* [{{Server}}/git/?p=joal.git;a=tag;h=refs/tags/v2.6.0 joal]&lt;br /&gt;
* [{{Server}}/git/?p=jogl.git;a=tag;h=refs/tags/v2.6.0 jogl]&lt;br /&gt;
* [{{Server}}/git/?p=jocl.git;a=tag;h=refs/tags/v2.6.0 jocl]&lt;br /&gt;
&lt;br /&gt;
Information&lt;br /&gt;
* [{{SERVER}}/gluegen/doc/JogAmpPlatforms-2.6.0.html Supported Platforms]&lt;br /&gt;
* [[SW Tracking Report Objectives for the release 2.6.0|Roadmap Release 2.6.0]]&lt;br /&gt;
* [{{SERVER}}/bugzilla//show_bug.cgi?id=1512 Release 2.6.0 Bugzilla Entry]&lt;br /&gt;
* [{{SERVER}}/bugzilla/buglist.cgi?list_id=2822&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.6.0 Complete Bugzilla List of Version 2.6.0]&lt;br /&gt;
&lt;br /&gt;
General Artifacts&lt;br /&gt;
* [{{Server}}/deployment/v2.6.0/ Main entry, signed release]&lt;br /&gt;
* [{{Server}}/deployment/v2.6.0/fat/ Fat jar files including sources]&lt;br /&gt;
* [{{Server}}/deployment/v2.6.0/archive/ Sources, ChangeLogs, Platform 7z Files, test results, ..]&lt;br /&gt;
&lt;br /&gt;
Maven Artifacts&lt;br /&gt;
* version 2.6.0&lt;br /&gt;
* repo-url http://www.jogamp.org/deployment/maven/&lt;br /&gt;
&lt;br /&gt;
CI Build Information:&lt;br /&gt;
* [{{Server}}/chuck/view/fwd/job/gluegen/987/ gluegen]&lt;br /&gt;
* [{{Server}}/chuck/view/fwd/job/joal/698/ joal]&lt;br /&gt;
* [{{Server}}/chuck/view/fwd/job/jogl/1548/ jogl]&lt;br /&gt;
* [{{Server}}/chuck/view/fwd/job/jocl/1191/ jocl]&lt;br /&gt;
&lt;br /&gt;
[{{Server}}/deployment/v2.6.0/log/all.artifact.properties.sorted Detailed Version Information]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gluegen.build.branch=origin/master&lt;br /&gt;
gluegen.build.commit=c06493e448332ace78721f5dfc3718c863783a12&lt;br /&gt;
gluegen.build.id=987&lt;br /&gt;
gluegen.build.number=987&lt;br /&gt;
gluegen.build.sha.classes=5201b95b2924bbac09519a922e7e7a26930f928ebc7ee0666c442d4a127ddbb5&lt;br /&gt;
gluegen.build.sha.natives=28de07778748b1c36e45b596563830181a3032ae507e09b8a68a68fbb0b7eef8&lt;br /&gt;
gluegen.build.sha.natives=44aaf0af1599ea491b947dd445fb9749b1c7a921daffbb529688836d8b8efd08&lt;br /&gt;
gluegen.build.sha.natives=8255743fd43ce87d89470d6a81176cf1188fe889a053427eaaaa9b4d889baa9d&lt;br /&gt;
gluegen.build.sha.natives=8f26171638c833b314f23c94c5880d5e86489e42d6534e1277c8d6d1fb8f1a90&lt;br /&gt;
gluegen.build.sha.natives=c1296426ba7cfb0d9dc7080878b74ece275ccf54e6091a117e639f88e2dc1926&lt;br /&gt;
gluegen.build.sha.natives=f46936374e6016170ae1400fb081a5609c38c997fb6dd619c1eea29c371be64c&lt;br /&gt;
gluegen.build.sha.sources=d7d4d9b4ac2337edb70516467403b2f7931567a436932f29399d72e65a91802a&lt;br /&gt;
gluegen.build.sha.sources=dd837463de04c023b9ca611f42095276b47f1e5cbd0d0ce97f5f91a427f07fb6&lt;br /&gt;
gluegen.build.version=2.6.0&lt;br /&gt;
joal.build.branch=origin/master&lt;br /&gt;
joal.build.commit=a16d1e631091a3eb27f6f10b7e7d279df6b3e8e2&lt;br /&gt;
joal.build.id=698&lt;br /&gt;
joal.build.number=698&lt;br /&gt;
joal.build.version=2.6.0&lt;br /&gt;
joal-demos.build.branch=origin/master&lt;br /&gt;
joal-demos.build.commit=62cbae51663091db2984229abfc7d78b32cb99b5&lt;br /&gt;
joal-demos.build.id=554&lt;br /&gt;
joal-demos.build.number=554&lt;br /&gt;
jocl.build.branch=origin/master&lt;br /&gt;
jocl.build.commit=6d9649249b40e1ac880288bbad144649170092df&lt;br /&gt;
jocl.build.id=1191&lt;br /&gt;
jocl.build.number=1191&lt;br /&gt;
jocl.build.version=2.6.0&lt;br /&gt;
jocl-demos.build.branch=origin/master&lt;br /&gt;
jocl-demos.build.commit=03bc23b87d44b779b30022c19ee6cdfd16a5fd11&lt;br /&gt;
jocl-demos.build.id=1064&lt;br /&gt;
jocl-demos.build.number=1064&lt;br /&gt;
jogl.build.branch=origin/master&lt;br /&gt;
jogl.build.commit=f5964604d3e940c07c3e6af884f06b4eceb08dd4&lt;br /&gt;
jogl.build.id=1548&lt;br /&gt;
jogl.build.number=1548&lt;br /&gt;
jogl.build.version=2.6.0&lt;br /&gt;
jogl-demos.build.branch=origin/master&lt;br /&gt;
jogl-demos.build.commit=a2d87f82a81ff87555d09131fae638a9b8dc6dd7&lt;br /&gt;
jogl-demos.build.id=527&lt;br /&gt;
jogl-demos.build.number=527&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sgothel</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=SW_Tracking_Report_Objectives_for_the_release_2.6.0&amp;diff=2231</id>
		<title>SW Tracking Report Objectives for the release 2.6.0</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=SW_Tracking_Report_Objectives_for_the_release_2.6.0&amp;diff=2231"/>
		<updated>2025-08-27T14:51:20Z</updated>

		<summary type="html">&lt;p&gt;Sgothel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;List started on 2023-07-xx, concluding [[SW Tracking Report Objectives for the release 2.5.0|Release 2.5.0]] -  &#039;&#039;&#039;In Progress&#039;&#039;&#039; - continuation @ [[SW Tracking Report Objectives for the release 2.7.0|Release 2.7.0]].&lt;br /&gt;
&lt;br /&gt;
* [{{SERVER}}/gluegen/doc/JogAmpPlatforms-2.6.0.html Supported Platforms]&lt;br /&gt;
* [{{SERVER}}/bugzilla//show_bug.cgi?id=1512 Release 2.6.0 Entry]&lt;br /&gt;
* [{{SERVER}}/bugzilla/buglist.cgi?list_id=2822&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.6.0 Complete Bugzilla List of Version 2.6.0]&lt;br /&gt;
&lt;br /&gt;
Warning: WIP&lt;br /&gt;
&lt;br /&gt;
= Features =&lt;br /&gt;
&lt;br /&gt;
== Features to be classified for this release ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;status&amp;quot;:[&amp;quot;UNCONFIRMED&amp;quot;],&lt;br /&gt;
        &amp;quot;version&amp;quot;:&amp;quot;2.6.0&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,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;
== Features to implement for this release ==&lt;br /&gt;
&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;],&lt;br /&gt;
        &amp;quot;version&amp;quot;:&amp;quot;2.6.0&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,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;
== Features already implemented for this release ==&lt;br /&gt;
&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;version&amp;quot;:&amp;quot;2.6.0&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,product,component,priority,severity,status,resolution,summary&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Bugs =&lt;br /&gt;
&lt;br /&gt;
== Bugs to be classified for this release ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;status&amp;quot;:[&amp;quot;UNCONFIRMED&amp;quot;],&lt;br /&gt;
        &amp;quot;version&amp;quot;:&amp;quot;2.6.0&amp;quot;,&lt;br /&gt;
        &amp;quot;cf_type&amp;quot;:[&amp;quot;---&amp;quot;, &amp;quot;DEFECT&amp;quot;],&lt;br /&gt;
        &amp;quot;include_fields&amp;quot;:&amp;quot;id,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;
== Bugs to fix for this release ==&lt;br /&gt;
&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;],&lt;br /&gt;
        &amp;quot;version&amp;quot;:&amp;quot;2.6.0&amp;quot;,&lt;br /&gt;
        &amp;quot;cf_type&amp;quot;:[&amp;quot;---&amp;quot;, &amp;quot;DEFECT&amp;quot;],&lt;br /&gt;
        &amp;quot;include_fields&amp;quot;:&amp;quot;id,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;
== Bugs already fixed for this release ==&lt;br /&gt;
&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;version&amp;quot;:&amp;quot;2.6.0&amp;quot;,&lt;br /&gt;
        &amp;quot;cf_type&amp;quot;:[&amp;quot;---&amp;quot;, &amp;quot;DEFECT&amp;quot;],&lt;br /&gt;
        &amp;quot;include_fields&amp;quot;:&amp;quot;id,product,component,priority,severity,status,resolution,summary&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sgothel</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=SW_Tracking_Report_Objectives_for_the_release_2.6.0&amp;diff=2229</id>
		<title>SW Tracking Report Objectives for the release 2.6.0</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=SW_Tracking_Report_Objectives_for_the_release_2.6.0&amp;diff=2229"/>
		<updated>2025-08-23T19:06:52Z</updated>

		<summary type="html">&lt;p&gt;Sgothel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;List started on 2023-07-xx, concluding [[SW Tracking Report Objectives for the release 2.5.0|Release 2.5.0]] -  &#039;&#039;&#039;In Progress&#039;&#039;&#039; - continuation @ [[SW Tracking Report Objectives for the release 2.7.0|Release 2.7.0]].&lt;br /&gt;
&lt;br /&gt;
* [{{SERVER}}/bugzilla//show_bug.cgi?id=1512 Release 2.6.0 Entry]&lt;br /&gt;
* [{{SERVER}}/bugzilla/buglist.cgi?list_id=2822&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.6.0 Complete Bugzilla List of Version 2.6.0]&lt;br /&gt;
&lt;br /&gt;
Warning: WIP&lt;br /&gt;
&lt;br /&gt;
= Features =&lt;br /&gt;
&lt;br /&gt;
== Features to be classified for this release ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;status&amp;quot;:[&amp;quot;UNCONFIRMED&amp;quot;],&lt;br /&gt;
        &amp;quot;version&amp;quot;:&amp;quot;2.6.0&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,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;
== Features to implement for this release ==&lt;br /&gt;
&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;],&lt;br /&gt;
        &amp;quot;version&amp;quot;:&amp;quot;2.6.0&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,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;
== Features already implemented for this release ==&lt;br /&gt;
&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;version&amp;quot;:&amp;quot;2.6.0&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,product,component,priority,severity,status,resolution,summary&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Bugs =&lt;br /&gt;
&lt;br /&gt;
== Bugs to be classified for this release ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;status&amp;quot;:[&amp;quot;UNCONFIRMED&amp;quot;],&lt;br /&gt;
        &amp;quot;version&amp;quot;:&amp;quot;2.6.0&amp;quot;,&lt;br /&gt;
        &amp;quot;cf_type&amp;quot;:[&amp;quot;---&amp;quot;, &amp;quot;DEFECT&amp;quot;],&lt;br /&gt;
        &amp;quot;include_fields&amp;quot;:&amp;quot;id,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;
== Bugs to fix for this release ==&lt;br /&gt;
&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;],&lt;br /&gt;
        &amp;quot;version&amp;quot;:&amp;quot;2.6.0&amp;quot;,&lt;br /&gt;
        &amp;quot;cf_type&amp;quot;:[&amp;quot;---&amp;quot;, &amp;quot;DEFECT&amp;quot;],&lt;br /&gt;
        &amp;quot;include_fields&amp;quot;:&amp;quot;id,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;
== Bugs already fixed for this release ==&lt;br /&gt;
&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;version&amp;quot;:&amp;quot;2.6.0&amp;quot;,&lt;br /&gt;
        &amp;quot;cf_type&amp;quot;:[&amp;quot;---&amp;quot;, &amp;quot;DEFECT&amp;quot;],&lt;br /&gt;
        &amp;quot;include_fields&amp;quot;:&amp;quot;id,product,component,priority,severity,status,resolution,summary&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sgothel</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=SW_Tracking_Report_Objectives_for_the_release_2.7.0&amp;diff=2228</id>
		<title>SW Tracking Report Objectives for the release 2.7.0</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=SW_Tracking_Report_Objectives_for_the_release_2.7.0&amp;diff=2228"/>
		<updated>2025-06-21T10:01:33Z</updated>

		<summary type="html">&lt;p&gt;Sgothel: Created page with &amp;quot;List started on 2025-06-21, concluding Release 2.6.0 -  &amp;#039;&amp;#039;&amp;#039;TBD&amp;#039;&amp;#039;&amp;#039; - continuation @ Release 3.0.0.  [{{SERVER}}/bugzilla/buglist.cgi?list_id=2822&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.7.0 Complete Bugzilla List of Version 2.7.0]  Warning: W...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;List started on 2025-06-21, concluding [[SW Tracking Report Objectives for the release 2.6.0|Release 2.6.0]] -  &#039;&#039;&#039;TBD&#039;&#039;&#039; - continuation @ [[SW Tracking Report Objectives for the release 3.0.0|Release 3.0.0]].&lt;br /&gt;
&lt;br /&gt;
[{{SERVER}}/bugzilla/buglist.cgi?list_id=2822&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.7.0 Complete Bugzilla List of Version 2.7.0]&lt;br /&gt;
&lt;br /&gt;
Warning: WIP&lt;br /&gt;
&lt;br /&gt;
= Features =&lt;br /&gt;
&lt;br /&gt;
== Features to be classified for this release ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;status&amp;quot;:[&amp;quot;UNCONFIRMED&amp;quot;],&lt;br /&gt;
        &amp;quot;version&amp;quot;:&amp;quot;2.7.0&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,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;
== Features to implement for this release ==&lt;br /&gt;
&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;],&lt;br /&gt;
        &amp;quot;version&amp;quot;:&amp;quot;2.7.0&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,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;
== Features already implemented for this release ==&lt;br /&gt;
&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;version&amp;quot;:&amp;quot;2.7.0&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,product,component,priority,severity,status,resolution,summary&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Bugs =&lt;br /&gt;
&lt;br /&gt;
== Bugs to be classified for this release ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;status&amp;quot;:[&amp;quot;UNCONFIRMED&amp;quot;],&lt;br /&gt;
        &amp;quot;version&amp;quot;:&amp;quot;2.7.0&amp;quot;,&lt;br /&gt;
        &amp;quot;cf_type&amp;quot;:[&amp;quot;---&amp;quot;, &amp;quot;DEFECT&amp;quot;],&lt;br /&gt;
        &amp;quot;include_fields&amp;quot;:&amp;quot;id,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;
== Bugs to fix for this release ==&lt;br /&gt;
&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;],&lt;br /&gt;
        &amp;quot;version&amp;quot;:&amp;quot;2.7.0&amp;quot;,&lt;br /&gt;
        &amp;quot;cf_type&amp;quot;:[&amp;quot;---&amp;quot;, &amp;quot;DEFECT&amp;quot;],&lt;br /&gt;
        &amp;quot;include_fields&amp;quot;:&amp;quot;id,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;
== Bugs already fixed for this release ==&lt;br /&gt;
&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;version&amp;quot;:&amp;quot;2.7.0&amp;quot;,&lt;br /&gt;
        &amp;quot;cf_type&amp;quot;:[&amp;quot;---&amp;quot;, &amp;quot;DEFECT&amp;quot;],&lt;br /&gt;
        &amp;quot;include_fields&amp;quot;:&amp;quot;id,product,component,priority,severity,status,resolution,summary&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sgothel</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=SW_Tracking_Report_Objectives_for_the_release_2.6.0&amp;diff=2227</id>
		<title>SW Tracking Report Objectives for the release 2.6.0</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=SW_Tracking_Report_Objectives_for_the_release_2.6.0&amp;diff=2227"/>
		<updated>2025-06-21T09:59:51Z</updated>

		<summary type="html">&lt;p&gt;Sgothel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;List started on 2023-07-xx, concluding [[SW Tracking Report Objectives for the release 2.5.0|Release 2.5.0]] -  &#039;&#039;&#039;In Progress&#039;&#039;&#039; - continuation @ [[SW Tracking Report Objectives for the release 2.7.0|Release 2.7.0]].&lt;br /&gt;
&lt;br /&gt;
[{{SERVER}}/bugzilla/buglist.cgi?list_id=2822&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.6.0 Complete Bugzilla List of Version 2.6.0]&lt;br /&gt;
&lt;br /&gt;
Warning: WIP&lt;br /&gt;
&lt;br /&gt;
= Features =&lt;br /&gt;
&lt;br /&gt;
== Features to be classified for this release ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;status&amp;quot;:[&amp;quot;UNCONFIRMED&amp;quot;],&lt;br /&gt;
        &amp;quot;version&amp;quot;:&amp;quot;2.6.0&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,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;
== Features to implement for this release ==&lt;br /&gt;
&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;],&lt;br /&gt;
        &amp;quot;version&amp;quot;:&amp;quot;2.6.0&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,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;
== Features already implemented for this release ==&lt;br /&gt;
&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;version&amp;quot;:&amp;quot;2.6.0&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,product,component,priority,severity,status,resolution,summary&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Bugs =&lt;br /&gt;
&lt;br /&gt;
== Bugs to be classified for this release ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bugzilla&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;status&amp;quot;:[&amp;quot;UNCONFIRMED&amp;quot;],&lt;br /&gt;
        &amp;quot;version&amp;quot;:&amp;quot;2.6.0&amp;quot;,&lt;br /&gt;
        &amp;quot;cf_type&amp;quot;:[&amp;quot;---&amp;quot;, &amp;quot;DEFECT&amp;quot;],&lt;br /&gt;
        &amp;quot;include_fields&amp;quot;:&amp;quot;id,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;
== Bugs to fix for this release ==&lt;br /&gt;
&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;],&lt;br /&gt;
        &amp;quot;version&amp;quot;:&amp;quot;2.6.0&amp;quot;,&lt;br /&gt;
        &amp;quot;cf_type&amp;quot;:[&amp;quot;---&amp;quot;, &amp;quot;DEFECT&amp;quot;],&lt;br /&gt;
        &amp;quot;include_fields&amp;quot;:&amp;quot;id,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;
== Bugs already fixed for this release ==&lt;br /&gt;
&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;version&amp;quot;:&amp;quot;2.6.0&amp;quot;,&lt;br /&gt;
        &amp;quot;cf_type&amp;quot;:[&amp;quot;---&amp;quot;, &amp;quot;DEFECT&amp;quot;],&lt;br /&gt;
        &amp;quot;include_fields&amp;quot;:&amp;quot;id,product,component,priority,severity,status,resolution,summary&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/bugzilla&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sgothel</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=Main_Page&amp;diff=2226</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://jogamp.org/wiki/index.php?title=Main_Page&amp;diff=2226"/>
		<updated>2025-06-21T09:59:13Z</updated>

		<summary type="html">&lt;p&gt;Sgothel: &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;
* &#039;&#039;[[SW Tracking Report Feature Objectives Overview|Feature &amp;amp; Objectives]], [[SW Tracking Report Objectives undetermined release|tbd]], [[SW Tracking Report Objectives for the release 3.0.0|3.0.0]], [[SW Tracking Report Objectives for the release 2.7.0|2.7.0]], [[SW Tracking Report Objectives for the release 2.6.0|2.6.0]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;[[SW Tracking Report Objectives for the release 2.5.0|2.5.0]] (last stable)&#039;&#039;&#039;, [[SW Tracking Report Objectives for the release 2.4.0|2.4.0]], [[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/ GlueGen Java™ API-Doc]&lt;br /&gt;
* [{{SERVER}}/gluegen/doc/GlueGen_Mapping.html GlueGen Native Data &amp;amp; Function Mapping]&lt;br /&gt;
* [{{SERVER}}/gluegen/doc/manual/ GlueGen Manual]&lt;br /&gt;
* [{{SERVER}}/gluegen/doc/HowToBuild.html How To Build]&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;
*[{{SERVER}}/bugzilla/showdependencytree.cgi?id=1368&amp;amp;hide_resolved=0 Bugzilla Dependency Tree]&lt;br /&gt;
*[{{SERVER}}/bugzilla/show_bug.cgi?id=1368 Bugzilla Parent Entry]&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>Sgothel</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=WebAssembly_(wasm)_Target_Platform&amp;diff=2225</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=2225"/>
		<updated>2025-05-27T20:50:54Z</updated>

		<summary type="html">&lt;p&gt;Sgothel: &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, &lt;br /&gt;
but is not producing a wasm target for the wasm (browser) runtime.&lt;br /&gt;
* [https://www.graalvm.org/latest/reference-manual/wasm/ GraalVM + wasm]&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;
&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>Sgothel</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=WebAssembly_(wasm)_Target_Platform&amp;diff=2224</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=2224"/>
		<updated>2025-05-27T18:11:37Z</updated>

		<summary type="html">&lt;p&gt;Sgothel: /* Initial C++/wasm Evaluation */&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://jausoft.com/cgit/cs_class/gfxbox2.git/about/ gfxbox2 C++/wasm evaluation]&lt;br /&gt;
* [https://emscripten.org/ emscripten]&lt;br /&gt;
* [https://webassembly.org/ WebAssembly]&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;
&#039;&#039;&#039;Project [https://jausoft.com/cgit/gamp.git/about/ Gamp]&#039;&#039;&#039; has been created to address Graph and GraphUI, implemented in C++ to be utilized natively and [https://jausoft.com/cgit/gamp.git/about/#online-webassembly-examples within a browser] via WebAssembly.&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;
= 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, &lt;br /&gt;
but is not producing a wasm target for the wasm (browser) runtime.&lt;br /&gt;
* [https://www.graalvm.org/latest/reference-manual/wasm/ GraalVM + wasm]&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;
&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>Sgothel</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=WebAssembly_(wasm)_Target_Platform&amp;diff=2223</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=2223"/>
		<updated>2024-04-04T06:35:12Z</updated>

		<summary type="html">&lt;p&gt;Sgothel: /* Java Support */&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://jausoft.com/cgit/cs_class/gfxbox2.git/about/ gfxbox2 C++/wasm evaluation]&lt;br /&gt;
* [https://emscripten.org/ emscripten]&lt;br /&gt;
* [https://webassembly.org/ WebAssembly]&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 40-60% slower 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;
= 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, &lt;br /&gt;
but is not producing a wasm target for the wasm (browser) runtime.&lt;br /&gt;
* [https://www.graalvm.org/latest/reference-manual/wasm/ GraalVM + wasm]&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;
&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>Sgothel</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=WebAssembly_(wasm)_Target_Platform&amp;diff=2222</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=2222"/>
		<updated>2024-04-04T06:29:52Z</updated>

		<summary type="html">&lt;p&gt;Sgothel: /* Java Support */&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://jausoft.com/cgit/cs_class/gfxbox2.git/about/ gfxbox2 C++/wasm evaluation]&lt;br /&gt;
* [https://emscripten.org/ emscripten]&lt;br /&gt;
* [https://webassembly.org/ WebAssembly]&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 40-60% slower 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;
= 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 very 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, &lt;br /&gt;
but is not producing a wasm target for the wasm (browser) runtime.&lt;br /&gt;
* [https://www.graalvm.org/latest/reference-manual/wasm/ GraalVM + wasm]&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;
&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>Sgothel</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=WebAssembly_(wasm)_Target_Platform&amp;diff=2221</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=2221"/>
		<updated>2024-04-04T06:24:28Z</updated>

		<summary type="html">&lt;p&gt;Sgothel: /* Java Support */&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://jausoft.com/cgit/cs_class/gfxbox2.git/about/ gfxbox2 C++/wasm evaluation]&lt;br /&gt;
* [https://emscripten.org/ emscripten]&lt;br /&gt;
* [https://webassembly.org/ WebAssembly]&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 40-60% slower 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;
= Java Support =&lt;br /&gt;
Java bytecode compiler to wasm including some &#039;&#039;runtime envelop&#039;&#039; &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;
* [https://github.com/google/j2cl/blob/master/docs/getting-started-j2wasm.md J2wasm] within [https://github.com/google/j2cl J2CL] emits very 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;
&lt;br /&gt;
== GraalVM ==&lt;br /&gt;
GraalVM experimentally hosts wasm only, &lt;br /&gt;
but is not producing a wasm target for the wasm (browser) runtime.&lt;br /&gt;
* [https://www.graalvm.org/latest/reference-manual/wasm/ GraalVM + wasm]&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;
&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>Sgothel</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=WebAssembly_(wasm)_Target_Platform&amp;diff=2220</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=2220"/>
		<updated>2024-04-04T06:20:40Z</updated>

		<summary type="html">&lt;p&gt;Sgothel: &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://jausoft.com/cgit/cs_class/gfxbox2.git/about/ gfxbox2 C++/wasm evaluation]&lt;br /&gt;
* [https://emscripten.org/ emscripten]&lt;br /&gt;
* [https://webassembly.org/ WebAssembly]&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 40-60% slower 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;
= Java Support =&lt;br /&gt;
Java bytecode compiler to wasm including some &#039;&#039;runtime envelop&#039;&#039; &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;
* [https://github.com/google/j2cl/blob/master/docs/getting-started-j2wasm.md J2wasm] within [[https://github.com/google/j2cl J2CL] emits very 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;
&lt;br /&gt;
== GraalVM ==&lt;br /&gt;
GraalVM experimentally hosts wasm only, &lt;br /&gt;
but is not producing a wasm target for the wasm (browser) runtime.&lt;br /&gt;
* [https://www.graalvm.org/latest/reference-manual/wasm/ GraalVM + wasm]&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;
&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>Sgothel</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=SW_Tracking_Report_Feature_Objectives_Overview&amp;diff=2219</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=2219"/>
		<updated>2024-04-04T06:11:59Z</updated>

		<summary type="html">&lt;p&gt;Sgothel: &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;
== OpenJDK Compatibility / Integration ==&lt;br /&gt;
&lt;br /&gt;
Objectives should be to allow seamless integration into&lt;br /&gt;
OpenJDK&#039;s deployment and JVM launch methods.&lt;br /&gt;
&lt;br /&gt;
A dual JAR file to be used with and without modules is desired, &lt;br /&gt;
however it seems that certain JAR options are not available with this&lt;br /&gt;
configuration if our classes are not build as modules itself.&lt;br /&gt;
&lt;br /&gt;
An optional [https://jogamp.org/bugzilla/show_bug.cgi?id=1505#c0 JVM Launch Pad (JLP)] might be helpful,&lt;br /&gt;
even though it instructs further complexity and is not helping&lt;br /&gt;
with a vanilla OpenJDK deployment.&lt;br /&gt;
&lt;br /&gt;
=== OpenJDK &amp;gt;= 11 ===&lt;br /&gt;
&lt;br /&gt;
See [https://jogamp.org/bugzilla/show_bug.cgi?id=1404 Bug 1404]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;JVM Commandline Parameter&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Current used &#039;add-opens&#039; in my JogAmp test scripts for Java &amp;gt;= 11,&lt;br /&gt;
covering all AWT utilization including background erase is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--add-opens java.desktop/sun.awt=ALL-UNNAMED &lt;br /&gt;
--add-opens java.desktop/sun.awt.windows=ALL-UNNAMED &lt;br /&gt;
--add-opens java.desktop/sun.java2d=ALL-UNNAMED&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OpenJDK &amp;gt;= 2x ===&lt;br /&gt;
&lt;br /&gt;
See [https://jogamp.org/bugzilla/show_bug.cgi?id=1505 Bug 1505]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;JVM Commandline Parameter&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Current used &#039;add-opens&#039; in my JogAmp test scripts for Java &amp;gt;= 23,&lt;br /&gt;
covering all AWT utilization including background erase is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--add-opens java.desktop/sun.awt=ALL-UNNAMED &lt;br /&gt;
--add-opens java.desktop/sun.awt.windows=ALL-UNNAMED &lt;br /&gt;
--add-opens java.desktop/sun.java2d=ALL-UNNAMED&lt;br /&gt;
--TO_BE_DETERMINED&lt;br /&gt;
&amp;lt;/pre&amp;gt;&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;
= WebAssembly (wasm) Target Platform =&lt;br /&gt;
See [[WebAssembly (wasm) Target Platform]]&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;
= 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;
= 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>Sgothel</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=WebAssembly_(wasm)_Target_Platform&amp;diff=2218</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=2218"/>
		<updated>2024-04-04T06:10:11Z</updated>

		<summary type="html">&lt;p&gt;Sgothel: &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://jausoft.com/cgit/cs_class/gfxbox2.git/about/ gfxbox2 C++/wasm evaluation]&lt;br /&gt;
* [https://emscripten.org/ emscripten]&lt;br /&gt;
* [https://webassembly.org/ WebAssembly]&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 40-60% slower 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;
= Java Support =&lt;br /&gt;
Java bytecode compiler to wasm including some &#039;&#039;runtime envelop&#039;&#039; &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 experimentally hosts wasm only, &lt;br /&gt;
but is not producing a wasm target for the wasm (browser) runtime.&lt;br /&gt;
&lt;br /&gt;
* [https://www.graalvm.org/latest/reference-manual/wasm/ GraalVM + wasm]&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;
&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>Sgothel</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=WebAssembly_(wasm)_Target_Platform&amp;diff=2217</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=2217"/>
		<updated>2024-04-04T06:09:34Z</updated>

		<summary type="html">&lt;p&gt;Sgothel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= WebAssembly (wasm) Target Platform =&lt;br /&gt;
&lt;br /&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://jausoft.com/cgit/cs_class/gfxbox2.git/about/ gfxbox2 C++/wasm evaluation]&lt;br /&gt;
* [https://emscripten.org/ emscripten]&lt;br /&gt;
* [https://webassembly.org/ WebAssembly]&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 40-60% slower 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;
= Java Support =&lt;br /&gt;
Java bytecode compiler to wasm including some &#039;&#039;runtime envelop&#039;&#039; &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 experimentally hosts wasm only, &lt;br /&gt;
but is not producing a wasm target for the wasm (browser) runtime.&lt;br /&gt;
&lt;br /&gt;
* [https://www.graalvm.org/latest/reference-manual/wasm/ GraalVM + wasm]&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;
&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>Sgothel</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=WebAssembly_(wasm)_Target_Platform&amp;diff=2216</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=2216"/>
		<updated>2024-04-04T06:08:47Z</updated>

		<summary type="html">&lt;p&gt;Sgothel: Created page with &amp;quot;= WebAssembly (wasm) Target Platform =  Extracted from Feature &amp;amp; Objectives.  == Overview == See [https://jogamp.org/bugzilla//show_bug.cgi?id=1506 Bug 1506] describing this feature.  Since Java Applets are not more supported within browser or by OpenJDK for years, it may seems feasible to evaluate the WebAssembly target running within e.g. web browser nowadays.  An initial evaluation on small C++ projects using the emsc...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= WebAssembly (wasm) Target Platform =&lt;br /&gt;
&lt;br /&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://jausoft.com/cgit/cs_class/gfxbox2.git/about/ gfxbox2 C++/wasm evaluation]&lt;br /&gt;
* [https://emscripten.org/ emscripten]&lt;br /&gt;
* [https://webassembly.org/ WebAssembly]&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 40-60% slower 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;
== Java Support ==&lt;br /&gt;
Java bytecode compiler to wasm including some &#039;&#039;runtime envelop&#039;&#039; &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 experimentally hosts wasm only, &lt;br /&gt;
but is not producing a wasm target for the wasm (browser) runtime.&lt;br /&gt;
&lt;br /&gt;
* [https://www.graalvm.org/latest/reference-manual/wasm/ GraalVM + wasm]&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;
&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>Sgothel</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=SW_Tracking_Report_Feature_Objectives_Overview&amp;diff=2215</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=2215"/>
		<updated>2024-04-03T04:34:13Z</updated>

		<summary type="html">&lt;p&gt;Sgothel: /* Java Support */&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;
== OpenJDK Compatibility / Integration ==&lt;br /&gt;
&lt;br /&gt;
Objectives should be to allow seamless integration into&lt;br /&gt;
OpenJDK&#039;s deployment and JVM launch methods.&lt;br /&gt;
&lt;br /&gt;
A dual JAR file to be used with and without modules is desired, &lt;br /&gt;
however it seems that certain JAR options are not available with this&lt;br /&gt;
configuration if our classes are not build as modules itself.&lt;br /&gt;
&lt;br /&gt;
An optional [https://jogamp.org/bugzilla/show_bug.cgi?id=1505#c0 JVM Launch Pad (JLP)] might be helpful,&lt;br /&gt;
even though it instructs further complexity and is not helping&lt;br /&gt;
with a vanilla OpenJDK deployment.&lt;br /&gt;
&lt;br /&gt;
=== OpenJDK &amp;gt;= 11 ===&lt;br /&gt;
&lt;br /&gt;
See [https://jogamp.org/bugzilla/show_bug.cgi?id=1404 Bug 1404]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;JVM Commandline Parameter&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Current used &#039;add-opens&#039; in my JogAmp test scripts for Java &amp;gt;= 11,&lt;br /&gt;
covering all AWT utilization including background erase is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--add-opens java.desktop/sun.awt=ALL-UNNAMED &lt;br /&gt;
--add-opens java.desktop/sun.awt.windows=ALL-UNNAMED &lt;br /&gt;
--add-opens java.desktop/sun.java2d=ALL-UNNAMED&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OpenJDK &amp;gt;= 2x ===&lt;br /&gt;
&lt;br /&gt;
See [https://jogamp.org/bugzilla/show_bug.cgi?id=1505 Bug 1505]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;JVM Commandline Parameter&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Current used &#039;add-opens&#039; in my JogAmp test scripts for Java &amp;gt;= 23,&lt;br /&gt;
covering all AWT utilization including background erase is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--add-opens java.desktop/sun.awt=ALL-UNNAMED &lt;br /&gt;
--add-opens java.desktop/sun.awt.windows=ALL-UNNAMED &lt;br /&gt;
--add-opens java.desktop/sun.java2d=ALL-UNNAMED&lt;br /&gt;
--TO_BE_DETERMINED&lt;br /&gt;
&amp;lt;/pre&amp;gt;&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;
= WebAssembly (wasm) Target Platform =&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://jausoft.com/cgit/cs_class/gfxbox2.git/about/ gfxbox2 C++/wasm evaluation]&lt;br /&gt;
* [https://emscripten.org/ emscripten]&lt;br /&gt;
* [https://webassembly.org/ WebAssembly]&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 40-60% slower 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;
== Java Support ==&lt;br /&gt;
Java bytecode compiler to wasm including some &#039;&#039;runtime envelop&#039;&#039; &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 experimentally hosts wasm only, &lt;br /&gt;
but is not producing a wasm target for the wasm (browser) runtime.&lt;br /&gt;
&lt;br /&gt;
* [https://www.graalvm.org/latest/reference-manual/wasm/ GraalVM + wasm]&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;
&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;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;
= 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;
= 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>Sgothel</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=SW_Tracking_Report_Feature_Objectives_Overview&amp;diff=2214</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=2214"/>
		<updated>2024-04-03T04:34:01Z</updated>

		<summary type="html">&lt;p&gt;Sgothel: /* Java Support */&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;
== OpenJDK Compatibility / Integration ==&lt;br /&gt;
&lt;br /&gt;
Objectives should be to allow seamless integration into&lt;br /&gt;
OpenJDK&#039;s deployment and JVM launch methods.&lt;br /&gt;
&lt;br /&gt;
A dual JAR file to be used with and without modules is desired, &lt;br /&gt;
however it seems that certain JAR options are not available with this&lt;br /&gt;
configuration if our classes are not build as modules itself.&lt;br /&gt;
&lt;br /&gt;
An optional [https://jogamp.org/bugzilla/show_bug.cgi?id=1505#c0 JVM Launch Pad (JLP)] might be helpful,&lt;br /&gt;
even though it instructs further complexity and is not helping&lt;br /&gt;
with a vanilla OpenJDK deployment.&lt;br /&gt;
&lt;br /&gt;
=== OpenJDK &amp;gt;= 11 ===&lt;br /&gt;
&lt;br /&gt;
See [https://jogamp.org/bugzilla/show_bug.cgi?id=1404 Bug 1404]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;JVM Commandline Parameter&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Current used &#039;add-opens&#039; in my JogAmp test scripts for Java &amp;gt;= 11,&lt;br /&gt;
covering all AWT utilization including background erase is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--add-opens java.desktop/sun.awt=ALL-UNNAMED &lt;br /&gt;
--add-opens java.desktop/sun.awt.windows=ALL-UNNAMED &lt;br /&gt;
--add-opens java.desktop/sun.java2d=ALL-UNNAMED&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OpenJDK &amp;gt;= 2x ===&lt;br /&gt;
&lt;br /&gt;
See [https://jogamp.org/bugzilla/show_bug.cgi?id=1505 Bug 1505]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;JVM Commandline Parameter&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Current used &#039;add-opens&#039; in my JogAmp test scripts for Java &amp;gt;= 23,&lt;br /&gt;
covering all AWT utilization including background erase is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--add-opens java.desktop/sun.awt=ALL-UNNAMED &lt;br /&gt;
--add-opens java.desktop/sun.awt.windows=ALL-UNNAMED &lt;br /&gt;
--add-opens java.desktop/sun.java2d=ALL-UNNAMED&lt;br /&gt;
--TO_BE_DETERMINED&lt;br /&gt;
&amp;lt;/pre&amp;gt;&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;
= WebAssembly (wasm) Target Platform =&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://jausoft.com/cgit/cs_class/gfxbox2.git/about/ gfxbox2 C++/wasm evaluation]&lt;br /&gt;
* [https://emscripten.org/ emscripten]&lt;br /&gt;
* [https://webassembly.org/ WebAssembly]&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 40-60% slower 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;
== Java Support ==&lt;br /&gt;
Java bytecode compiler to wasm including some &#039;&#039;runtime envelop&#039;&#039; &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 experimentally hosts wasm only, &lt;br /&gt;
but is not producing a wasm target for the wasm (browser) runtime.&lt;br /&gt;
&lt;br /&gt;
* [https://www.graalvm.org/latest/reference-manual/wasm/ GraalVM + wasm]&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;
&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;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;
= 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;
= 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>Sgothel</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=SW_Tracking_Report_Feature_Objectives_Overview&amp;diff=2213</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=2213"/>
		<updated>2024-04-03T04:32:05Z</updated>

		<summary type="html">&lt;p&gt;Sgothel: /* Java Support */&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;
== OpenJDK Compatibility / Integration ==&lt;br /&gt;
&lt;br /&gt;
Objectives should be to allow seamless integration into&lt;br /&gt;
OpenJDK&#039;s deployment and JVM launch methods.&lt;br /&gt;
&lt;br /&gt;
A dual JAR file to be used with and without modules is desired, &lt;br /&gt;
however it seems that certain JAR options are not available with this&lt;br /&gt;
configuration if our classes are not build as modules itself.&lt;br /&gt;
&lt;br /&gt;
An optional [https://jogamp.org/bugzilla/show_bug.cgi?id=1505#c0 JVM Launch Pad (JLP)] might be helpful,&lt;br /&gt;
even though it instructs further complexity and is not helping&lt;br /&gt;
with a vanilla OpenJDK deployment.&lt;br /&gt;
&lt;br /&gt;
=== OpenJDK &amp;gt;= 11 ===&lt;br /&gt;
&lt;br /&gt;
See [https://jogamp.org/bugzilla/show_bug.cgi?id=1404 Bug 1404]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;JVM Commandline Parameter&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Current used &#039;add-opens&#039; in my JogAmp test scripts for Java &amp;gt;= 11,&lt;br /&gt;
covering all AWT utilization including background erase is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--add-opens java.desktop/sun.awt=ALL-UNNAMED &lt;br /&gt;
--add-opens java.desktop/sun.awt.windows=ALL-UNNAMED &lt;br /&gt;
--add-opens java.desktop/sun.java2d=ALL-UNNAMED&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OpenJDK &amp;gt;= 2x ===&lt;br /&gt;
&lt;br /&gt;
See [https://jogamp.org/bugzilla/show_bug.cgi?id=1505 Bug 1505]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;JVM Commandline Parameter&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Current used &#039;add-opens&#039; in my JogAmp test scripts for Java &amp;gt;= 23,&lt;br /&gt;
covering all AWT utilization including background erase is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--add-opens java.desktop/sun.awt=ALL-UNNAMED &lt;br /&gt;
--add-opens java.desktop/sun.awt.windows=ALL-UNNAMED &lt;br /&gt;
--add-opens java.desktop/sun.java2d=ALL-UNNAMED&lt;br /&gt;
--TO_BE_DETERMINED&lt;br /&gt;
&amp;lt;/pre&amp;gt;&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;
= WebAssembly (wasm) Target Platform =&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://jausoft.com/cgit/cs_class/gfxbox2.git/about/ gfxbox2 C++/wasm evaluation]&lt;br /&gt;
* [https://emscripten.org/ emscripten]&lt;br /&gt;
* [https://webassembly.org/ WebAssembly]&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 40-60% slower 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;
== Java Support ==&lt;br /&gt;
Java bytecode compiler to wasm including some &#039;&#039;runtime envelop&#039;&#039; &lt;br /&gt;
* [https://github.com/konsoletyper/teavm TeaVM]&lt;br /&gt;
* [https://github.com/i-net-software/JWebAssembly JWebAssembly]&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 experimentally hosts wasm only, &lt;br /&gt;
but is not producing a wasm target for the wasm (browser) runtime.&lt;br /&gt;
&lt;br /&gt;
* [https://www.graalvm.org/latest/reference-manual/wasm/ GraalVM + wasm]&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;
&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;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;
= 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;
= 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>Sgothel</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=SW_Tracking_Report_Feature_Objectives_Overview&amp;diff=2212</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=2212"/>
		<updated>2024-04-03T04:17:36Z</updated>

		<summary type="html">&lt;p&gt;Sgothel: /* Java Support */&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;
== OpenJDK Compatibility / Integration ==&lt;br /&gt;
&lt;br /&gt;
Objectives should be to allow seamless integration into&lt;br /&gt;
OpenJDK&#039;s deployment and JVM launch methods.&lt;br /&gt;
&lt;br /&gt;
A dual JAR file to be used with and without modules is desired, &lt;br /&gt;
however it seems that certain JAR options are not available with this&lt;br /&gt;
configuration if our classes are not build as modules itself.&lt;br /&gt;
&lt;br /&gt;
An optional [https://jogamp.org/bugzilla/show_bug.cgi?id=1505#c0 JVM Launch Pad (JLP)] might be helpful,&lt;br /&gt;
even though it instructs further complexity and is not helping&lt;br /&gt;
with a vanilla OpenJDK deployment.&lt;br /&gt;
&lt;br /&gt;
=== OpenJDK &amp;gt;= 11 ===&lt;br /&gt;
&lt;br /&gt;
See [https://jogamp.org/bugzilla/show_bug.cgi?id=1404 Bug 1404]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;JVM Commandline Parameter&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Current used &#039;add-opens&#039; in my JogAmp test scripts for Java &amp;gt;= 11,&lt;br /&gt;
covering all AWT utilization including background erase is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--add-opens java.desktop/sun.awt=ALL-UNNAMED &lt;br /&gt;
--add-opens java.desktop/sun.awt.windows=ALL-UNNAMED &lt;br /&gt;
--add-opens java.desktop/sun.java2d=ALL-UNNAMED&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OpenJDK &amp;gt;= 2x ===&lt;br /&gt;
&lt;br /&gt;
See [https://jogamp.org/bugzilla/show_bug.cgi?id=1505 Bug 1505]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;JVM Commandline Parameter&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Current used &#039;add-opens&#039; in my JogAmp test scripts for Java &amp;gt;= 23,&lt;br /&gt;
covering all AWT utilization including background erase is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--add-opens java.desktop/sun.awt=ALL-UNNAMED &lt;br /&gt;
--add-opens java.desktop/sun.awt.windows=ALL-UNNAMED &lt;br /&gt;
--add-opens java.desktop/sun.java2d=ALL-UNNAMED&lt;br /&gt;
--TO_BE_DETERMINED&lt;br /&gt;
&amp;lt;/pre&amp;gt;&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;
= WebAssembly (wasm) Target Platform =&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://jausoft.com/cgit/cs_class/gfxbox2.git/about/ gfxbox2 C++/wasm evaluation]&lt;br /&gt;
* [https://emscripten.org/ emscripten]&lt;br /&gt;
* [https://webassembly.org/ WebAssembly]&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 40-60% slower 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;
== Java Support ==&lt;br /&gt;
Java support for the WebAssembly target are claimed by&lt;br /&gt;
* [https://github.com/i-net-software/JWebAssembly JWebAssembly]&lt;br /&gt;
* [https://github.com/konsoletyper/teavm TeaVM]&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 experimentally hosts wasm only, &lt;br /&gt;
but is not producing a wasm target for the wasm (browser) runtime.&lt;br /&gt;
&lt;br /&gt;
* [https://www.graalvm.org/latest/reference-manual/wasm/ GraalVM + wasm]&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;
&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;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;
= 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;
= 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>Sgothel</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=SW_Tracking_Report_Feature_Objectives_Overview&amp;diff=2211</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=2211"/>
		<updated>2024-04-03T04:11:19Z</updated>

		<summary type="html">&lt;p&gt;Sgothel: /* Java Support */&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;
== OpenJDK Compatibility / Integration ==&lt;br /&gt;
&lt;br /&gt;
Objectives should be to allow seamless integration into&lt;br /&gt;
OpenJDK&#039;s deployment and JVM launch methods.&lt;br /&gt;
&lt;br /&gt;
A dual JAR file to be used with and without modules is desired, &lt;br /&gt;
however it seems that certain JAR options are not available with this&lt;br /&gt;
configuration if our classes are not build as modules itself.&lt;br /&gt;
&lt;br /&gt;
An optional [https://jogamp.org/bugzilla/show_bug.cgi?id=1505#c0 JVM Launch Pad (JLP)] might be helpful,&lt;br /&gt;
even though it instructs further complexity and is not helping&lt;br /&gt;
with a vanilla OpenJDK deployment.&lt;br /&gt;
&lt;br /&gt;
=== OpenJDK &amp;gt;= 11 ===&lt;br /&gt;
&lt;br /&gt;
See [https://jogamp.org/bugzilla/show_bug.cgi?id=1404 Bug 1404]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;JVM Commandline Parameter&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Current used &#039;add-opens&#039; in my JogAmp test scripts for Java &amp;gt;= 11,&lt;br /&gt;
covering all AWT utilization including background erase is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--add-opens java.desktop/sun.awt=ALL-UNNAMED &lt;br /&gt;
--add-opens java.desktop/sun.awt.windows=ALL-UNNAMED &lt;br /&gt;
--add-opens java.desktop/sun.java2d=ALL-UNNAMED&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OpenJDK &amp;gt;= 2x ===&lt;br /&gt;
&lt;br /&gt;
See [https://jogamp.org/bugzilla/show_bug.cgi?id=1505 Bug 1505]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;JVM Commandline Parameter&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Current used &#039;add-opens&#039; in my JogAmp test scripts for Java &amp;gt;= 23,&lt;br /&gt;
covering all AWT utilization including background erase is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--add-opens java.desktop/sun.awt=ALL-UNNAMED &lt;br /&gt;
--add-opens java.desktop/sun.awt.windows=ALL-UNNAMED &lt;br /&gt;
--add-opens java.desktop/sun.java2d=ALL-UNNAMED&lt;br /&gt;
--TO_BE_DETERMINED&lt;br /&gt;
&amp;lt;/pre&amp;gt;&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;
= WebAssembly (wasm) Target Platform =&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://jausoft.com/cgit/cs_class/gfxbox2.git/about/ gfxbox2 C++/wasm evaluation]&lt;br /&gt;
* [https://emscripten.org/ emscripten]&lt;br /&gt;
* [https://webassembly.org/ WebAssembly]&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 40-60% slower 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;
== Java Support ==&lt;br /&gt;
Java support for the WebAssembly target are claimed to be supported by&lt;br /&gt;
* [https://github.com/i-net-software/JWebAssembly JWebAssembly]&lt;br /&gt;
* [https://github.com/konsoletyper/teavm TeaVM]&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 experimentally hosts wasm only, &lt;br /&gt;
but is not producing a wasm target for the wasm (browser) runtime.&lt;br /&gt;
&lt;br /&gt;
* [https://www.graalvm.org/latest/reference-manual/wasm/ GraalVM + wasm]&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;
&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;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;
= 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;
= 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>Sgothel</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=SW_Tracking_Report_Feature_Objectives_Overview&amp;diff=2210</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=2210"/>
		<updated>2024-04-03T04:06:57Z</updated>

		<summary type="html">&lt;p&gt;Sgothel: /* WebAssembly (wasm) Target Platform */&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;
== OpenJDK Compatibility / Integration ==&lt;br /&gt;
&lt;br /&gt;
Objectives should be to allow seamless integration into&lt;br /&gt;
OpenJDK&#039;s deployment and JVM launch methods.&lt;br /&gt;
&lt;br /&gt;
A dual JAR file to be used with and without modules is desired, &lt;br /&gt;
however it seems that certain JAR options are not available with this&lt;br /&gt;
configuration if our classes are not build as modules itself.&lt;br /&gt;
&lt;br /&gt;
An optional [https://jogamp.org/bugzilla/show_bug.cgi?id=1505#c0 JVM Launch Pad (JLP)] might be helpful,&lt;br /&gt;
even though it instructs further complexity and is not helping&lt;br /&gt;
with a vanilla OpenJDK deployment.&lt;br /&gt;
&lt;br /&gt;
=== OpenJDK &amp;gt;= 11 ===&lt;br /&gt;
&lt;br /&gt;
See [https://jogamp.org/bugzilla/show_bug.cgi?id=1404 Bug 1404]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;JVM Commandline Parameter&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Current used &#039;add-opens&#039; in my JogAmp test scripts for Java &amp;gt;= 11,&lt;br /&gt;
covering all AWT utilization including background erase is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--add-opens java.desktop/sun.awt=ALL-UNNAMED &lt;br /&gt;
--add-opens java.desktop/sun.awt.windows=ALL-UNNAMED &lt;br /&gt;
--add-opens java.desktop/sun.java2d=ALL-UNNAMED&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OpenJDK &amp;gt;= 2x ===&lt;br /&gt;
&lt;br /&gt;
See [https://jogamp.org/bugzilla/show_bug.cgi?id=1505 Bug 1505]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;JVM Commandline Parameter&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Current used &#039;add-opens&#039; in my JogAmp test scripts for Java &amp;gt;= 23,&lt;br /&gt;
covering all AWT utilization including background erase is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--add-opens java.desktop/sun.awt=ALL-UNNAMED &lt;br /&gt;
--add-opens java.desktop/sun.awt.windows=ALL-UNNAMED &lt;br /&gt;
--add-opens java.desktop/sun.java2d=ALL-UNNAMED&lt;br /&gt;
--TO_BE_DETERMINED&lt;br /&gt;
&amp;lt;/pre&amp;gt;&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;
= WebAssembly (wasm) Target Platform =&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://jausoft.com/cgit/cs_class/gfxbox2.git/about/ gfxbox2 C++/wasm evaluation]&lt;br /&gt;
* [https://emscripten.org/ emscripten]&lt;br /&gt;
* [https://webassembly.org/ WebAssembly]&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 40-60% slower 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;
== Java Support ==&lt;br /&gt;
Java support for the WebAssembly target are claimed to be supported by&lt;br /&gt;
* [https://github.com/i-net-software/JWebAssembly JWebAssembly]&lt;br /&gt;
* [https://github.com/konsoletyper/teavm TeaVM]&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 is (only) hosting wasm&lt;br /&gt;
GraalVM experimentally hosts wasm only, &lt;br /&gt;
but is not producing a wasm target for the wasm (browser) runtime.&lt;br /&gt;
&lt;br /&gt;
* [https://www.graalvm.org/latest/reference-manual/wasm/ GraalVM + wasm]&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;
&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;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;
= 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;
= 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>Sgothel</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=SW_Tracking_Report_Feature_Objectives_Overview&amp;diff=2209</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=2209"/>
		<updated>2024-04-03T03:49:34Z</updated>

		<summary type="html">&lt;p&gt;Sgothel: /* Initial C++/wasm Evaluation */&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;
== OpenJDK Compatibility / Integration ==&lt;br /&gt;
&lt;br /&gt;
Objectives should be to allow seamless integration into&lt;br /&gt;
OpenJDK&#039;s deployment and JVM launch methods.&lt;br /&gt;
&lt;br /&gt;
A dual JAR file to be used with and without modules is desired, &lt;br /&gt;
however it seems that certain JAR options are not available with this&lt;br /&gt;
configuration if our classes are not build as modules itself.&lt;br /&gt;
&lt;br /&gt;
An optional [https://jogamp.org/bugzilla/show_bug.cgi?id=1505#c0 JVM Launch Pad (JLP)] might be helpful,&lt;br /&gt;
even though it instructs further complexity and is not helping&lt;br /&gt;
with a vanilla OpenJDK deployment.&lt;br /&gt;
&lt;br /&gt;
=== OpenJDK &amp;gt;= 11 ===&lt;br /&gt;
&lt;br /&gt;
See [https://jogamp.org/bugzilla/show_bug.cgi?id=1404 Bug 1404]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;JVM Commandline Parameter&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Current used &#039;add-opens&#039; in my JogAmp test scripts for Java &amp;gt;= 11,&lt;br /&gt;
covering all AWT utilization including background erase is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--add-opens java.desktop/sun.awt=ALL-UNNAMED &lt;br /&gt;
--add-opens java.desktop/sun.awt.windows=ALL-UNNAMED &lt;br /&gt;
--add-opens java.desktop/sun.java2d=ALL-UNNAMED&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OpenJDK &amp;gt;= 2x ===&lt;br /&gt;
&lt;br /&gt;
See [https://jogamp.org/bugzilla/show_bug.cgi?id=1505 Bug 1505]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;JVM Commandline Parameter&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Current used &#039;add-opens&#039; in my JogAmp test scripts for Java &amp;gt;= 23,&lt;br /&gt;
covering all AWT utilization including background erase is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--add-opens java.desktop/sun.awt=ALL-UNNAMED &lt;br /&gt;
--add-opens java.desktop/sun.awt.windows=ALL-UNNAMED &lt;br /&gt;
--add-opens java.desktop/sun.java2d=ALL-UNNAMED&lt;br /&gt;
--TO_BE_DETERMINED&lt;br /&gt;
&amp;lt;/pre&amp;gt;&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;
= WebAssembly (wasm) Target Platform =&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://jausoft.com/cgit/cs_class/gfxbox2.git/about/ gfxbox2 C++/wasm evaluation]&lt;br /&gt;
* [https://emscripten.org/ emscripten]&lt;br /&gt;
* [https://webassembly.org/ WebAssembly]&lt;br /&gt;
&lt;br /&gt;
== Java Support ==&lt;br /&gt;
Java support for the WebAssembly target are claimed to be supported by&lt;br /&gt;
* [https://github.com/i-net-software/JWebAssembly JWebAssembly]&lt;br /&gt;
* [https://github.com/konsoletyper/teavm TeaVM]&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 is (only) hosting wasm&lt;br /&gt;
GraalVM experimentally hosts wasm only, &lt;br /&gt;
but is not producing a wasm target for the wasm (browser) runtime.&lt;br /&gt;
&lt;br /&gt;
* [https://www.graalvm.org/latest/reference-manual/wasm/ GraalVM + wasm]&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;
&lt;br /&gt;
== Initial C++/wasm Evaluation ==&lt;br /&gt;
For once, 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 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, besides aforementioned limitations.&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;
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;
One might want to evaluate this Java target platform as well before recoding the whole application.&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;
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;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;
= 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;
= 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>Sgothel</name></author>
	</entry>
	<entry>
		<id>https://jogamp.org/wiki/index.php?title=SW_Tracking_Report_Feature_Objectives_Overview&amp;diff=2208</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=2208"/>
		<updated>2024-04-03T03:38:21Z</updated>

		<summary type="html">&lt;p&gt;Sgothel: /* Java Support */&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;
== OpenJDK Compatibility / Integration ==&lt;br /&gt;
&lt;br /&gt;
Objectives should be to allow seamless integration into&lt;br /&gt;
OpenJDK&#039;s deployment and JVM launch methods.&lt;br /&gt;
&lt;br /&gt;
A dual JAR file to be used with and without modules is desired, &lt;br /&gt;
however it seems that certain JAR options are not available with this&lt;br /&gt;
configuration if our classes are not build as modules itself.&lt;br /&gt;
&lt;br /&gt;
An optional [https://jogamp.org/bugzilla/show_bug.cgi?id=1505#c0 JVM Launch Pad (JLP)] might be helpful,&lt;br /&gt;
even though it instructs further complexity and is not helping&lt;br /&gt;
with a vanilla OpenJDK deployment.&lt;br /&gt;
&lt;br /&gt;
=== OpenJDK &amp;gt;= 11 ===&lt;br /&gt;
&lt;br /&gt;
See [https://jogamp.org/bugzilla/show_bug.cgi?id=1404 Bug 1404]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;JVM Commandline Parameter&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Current used &#039;add-opens&#039; in my JogAmp test scripts for Java &amp;gt;= 11,&lt;br /&gt;
covering all AWT utilization including background erase is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--add-opens java.desktop/sun.awt=ALL-UNNAMED &lt;br /&gt;
--add-opens java.desktop/sun.awt.windows=ALL-UNNAMED &lt;br /&gt;
--add-opens java.desktop/sun.java2d=ALL-UNNAMED&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OpenJDK &amp;gt;= 2x ===&lt;br /&gt;
&lt;br /&gt;
See [https://jogamp.org/bugzilla/show_bug.cgi?id=1505 Bug 1505]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;JVM Commandline Parameter&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Current used &#039;add-opens&#039; in my JogAmp test scripts for Java &amp;gt;= 23,&lt;br /&gt;
covering all AWT utilization including background erase is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--add-opens java.desktop/sun.awt=ALL-UNNAMED &lt;br /&gt;
--add-opens java.desktop/sun.awt.windows=ALL-UNNAMED &lt;br /&gt;
--add-opens java.desktop/sun.java2d=ALL-UNNAMED&lt;br /&gt;
--TO_BE_DETERMINED&lt;br /&gt;
&amp;lt;/pre&amp;gt;&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;
= WebAssembly (wasm) Target Platform =&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://jausoft.com/cgit/cs_class/gfxbox2.git/about/ gfxbox2 C++/wasm evaluation]&lt;br /&gt;
* [https://emscripten.org/ emscripten]&lt;br /&gt;
* [https://webassembly.org/ WebAssembly]&lt;br /&gt;
&lt;br /&gt;
== Java Support ==&lt;br /&gt;
Java support for the WebAssembly target are claimed to be supported by&lt;br /&gt;
* [https://github.com/i-net-software/JWebAssembly JWebAssembly]&lt;br /&gt;
* [https://github.com/konsoletyper/teavm TeaVM]&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 is (only) hosting wasm&lt;br /&gt;
GraalVM experimentally hosts wasm only, &lt;br /&gt;
but is not producing a wasm target for the wasm (browser) runtime.&lt;br /&gt;
&lt;br /&gt;
* [https://www.graalvm.org/latest/reference-manual/wasm/ GraalVM + wasm]&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;
&lt;br /&gt;
== Initial C++/wasm Evaluation ==&lt;br /&gt;
For once, the wasm target is comparable to Java bytecode but the virtual machine might not be as performant, efficient or flexible. The lack of hassle free native threads and 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, besides aforementioned limitations.&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.&lt;br /&gt;
&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 not technical reasoning.&lt;br /&gt;
&lt;br /&gt;
GraalVM seems to support the wasm target, hence one might want to evaluate this Java target platform as well before recoding the whole application.&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;
Hopefully this technology will mature and be maintained for the years to come.&lt;br /&gt;
&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;
= 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;
= 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>Sgothel</name></author>
	</entry>
</feed>