SW Tracking Report Feature Objectives Overview and Maven: Difference between pages

From JogampWiki
(Difference between pages)
Jump to navigation Jump to search
No edit summary
 
 
Line 1: Line 1:
This list exposes building blocks
__TOC__
for potential use and business case scenarios
using Java & JogAmp on Desktop and Embedded Devices.


Notably [[#Graph_UI|Graph UI]] could be of interest here?
JogAmp now contains support for Maven. As of <tt>2.0-rc11</tt>, packages are pushed to
[http://search.maven.org/#search|ga|1|jogamp Maven Central].


Also see [[Completed Features Objectives]] ...
= Add dependencies on the correct packages =


== High DPI ==
If you don't know which packages you want, you almost certainly want to use the
<tt>jogl-all-main</tt> and <tt>gluegen-rt-main</tt> packages, as these automatically
set up the correct dependencies on the native jar files for all platforms.


;Parent Main Node
As an example, if your project uses JOGL <tt>2.3.1</tt>:
: [{{SERVER}}/bugzilla/showdependencytree.cgi?id=1373&hide_resolved=0 Dependency Tree]
<bugzilla>
    {
        "id":["1373", "1374", "1322"],
        "include_fields":"id,version,product,component,priority,severity,status,summary"
    }
</bugzilla>


;Children blocking Parent
<pre>
<bugzilla>
  <dependencies>
     {
     <dependency>
        "blocks":["1373", "1374", "1322"],
      <groupId>org.jogamp.gluegen</groupId>
        "include_fields":"id,version,product,component,priority,severity,status,summary"
      <artifactId>gluegen-rt-main</artifactId>
     }
      <version>2.3.1</version>
</bugzilla>
    </dependency>
     <dependency>
      <groupId>org.jogamp.jogl</groupId>
      <artifactId>jogl-all-main</artifactId>
      <version>2.3.1</version>
    </dependency>
  </dependencies>
</pre>


= Graph =
Maven will pull all of the dependencies the next time you attempt to build the project.


== Graph UI ==
Additionally, for <tt>joal</tt> and <tt>jocl</tt> support:


''Graph UI'' is meant to be an immersive UI within the 3D scene including text and UI objects,
<pre>
including user interaction.
  <dependencies>
    <dependency>
      <groupId>org.jogamp.jocl</groupId>
      <artifactId>jocl-main</artifactId>
      <version>2.3.1</version>
    </dependency>
    <dependency>
      <groupId>org.jogamp.joal</groupId>
      <artifactId>joal-main</artifactId>
      <version>2.3.1</version>
    </dependency>
  </dependencies>
</pre>


This would allow an application to utilize one viewport or window,
An example project is available in the <tt>maven</tt> subdirectory of the <tt>jogl-demos</tt> project
exposing the scene including the UI w/o the need for any external toolkit.
[http://jogamp.org/git/?p=jogl-demos.git;a=tree;f=maven].


Think of an integrated QT or OpenJFX in your 2D/3D application
= Package details =
working on desktop and embedded devices even w/o any windowing system on top
of a plain console [{{SERVER}}/bugzilla/show_bug.cgi?id=1156  DRM/GBM as support by JOGL(EGL) and NEWT].


Early examples from 2012 are available in these videos around the [https://youtu.be/7mBi7psP7VM?t=165 2:45 minute mark]
For each JogAmp project, there are essentially two packages published: One contains the main compiled
and here [https://youtu.be/4gWStKCioi8?t=16 at the 16s mark].
jar files and any associated native library jar files, and the other simply contains <i>dependencies</i>
on those files. Using <tt>jogl-all</tt> and <tt>jogl-all-main</tt> as the example, the <tt>jogl-all</tt>
package in the jogamp.org test repository:


Notably the ''Graph Curve Rendering'' is almost complete, as well as our own user input including gesture detection within NEWT.
http://jogamp.org/deployment/maven/org/jogamp/jogl/jogl-all/2.3.1/


;Parent Main Node
Note that there are many native jar files attached to the main package. However, if you were to use
: [{{SERVER}}/bugzilla/showdependencytree.cgi?id=803&hide_resolved=0 Dependency Tree]
the following dependency in your own project:
: [{{SERVER}}/bugzilla/buglist.cgi?bug_status=UNCONFIRMED&bug_status=CONFIRMED&bug_status=IN_PROGRESS&bug_status=RESOLVED&bug_status=VERIFIED&columnlist=product%2Ccomponent%2Cassigned_to%2Cbug_status%2Cresolution%2Cversion%2Cshort_desc%2Cchangeddate&component=core&component=Plugin&list_id=2265&product=GraphUI&query_format=advanced&resolution=---&resolution=FIXED&resolution=INVALID&resolution=WONTFIX&resolution=DUPLICATE&resolution=WORKSFORME&resolution=MOVED All GraphUI]
<bugzilla>
    {
        "id":["803"],
        "include_fields":"id,version,product,component,priority,severity,status,summary"
    }
</bugzilla>


;Children blocking Parent
<pre>
<bugzilla>
  <dependency>
     {
     <groupId>org.jogamp.jogl</groupId>
        "blocks":["803"],
    <artifactId>jogl-all</artifactId>
        "include_fields":"id,version,product,component,priority,severity,status,summary"
    <version>2.3.1</version>
    }
  </dependency>
</bugzilla>
</pre>


;All of Product ''graphui''
Maven would download <tt>jogl-all-2.3.1.jar</tt> but would completely ignore all of the other
<bugzilla>
native jar files. Why? The reason for this is that the native jar files are uploaded as extra artifacts
    {
to the <tt>jogl-all</tt> package and are, in a manner of speaking, not really considered to be part of
        "product":"graphui",
the package where dependencies are concerned. The POM for the <tt>jogl-all-main</tt> package adds
        "include_fields":"id,version,product,component,priority,severity,status,summary"
explicit dependencies on all of the extra artifacts in the <tt>jogl-all</tt> package:
    }
</bugzilla>


== Jogl / Graph ==
http://jogamp.org/deployment/maven/org/jogamp/jogl/jogl-all-main/2.3.1/jogl-all-main-2.3.1.pom


[{{SERVER}}/bugzilla/showdependencytree.cgi?id=1064&hide_resolved=0 Dependency Tree Graph Font Issues]
So, when you add a dependency on <tt>jogl-all-main</tt> in your own project, the native jar files of
<tt>jogl-all</tt> are brought in as transitive dependencies and everything works as expected.


[{{SERVER}}/bugzilla/buglist.cgi?bug_status=UNCONFIRMED&bug_status=CONFIRMED&bug_status=IN_PROGRESS&bug_status=RESOLVED&bug_status=VERIFIED&columnlist=product%2Ccomponent%2Cassigned_to%2Cbug_status%2Cresolution%2Cversion%2Cshort_desc%2Cchangeddate&component=graph&list_id=2264&product=Jogl&query_format=advanced&resolution=---&resolution=FIXED&resolution=INVALID&resolution=WONTFIX&resolution=DUPLICATE&resolution=WORKSFORME&resolution=MOVED All Jogl Graph]
= Available packages =


<bugzilla>
{|
    {
|Group ID
        "product":"jogl",
|Artifact ID
        "component":"graph",
|Since
        "include_fields":"id,version,product,component,priority,severity,status,summary"
|Description
    }
|-
</bugzilla>
|org.jogamp.gluegen
|gluegen-rt-android
|2.0.2-rc12
|GlueGen runtime code and native libraries (Android)
|-
|org.jogamp.gluegen
|gluegen-rt-main
|2.0-rc11
|Meta-package for automatic dependency resolution for the GlueGen runtime
|-
|org.jogamp.gluegen
|gluegen-rt
|2.0-rc11
|GlueGen runtime code and native libraries
|-
|org.jogamp.gluegen
|gluegen
|2.0-rc11
|GlueGen non-runtime code and native libraries (and atomic jars)
|-
|org.jogamp.joal
|joal-main
|2.0-rc11
|Meta-package for automatic dependency resolution for JOAL
|-
|org.jogamp.joal
|joal
|2.0-rc11
|JOAL code and native libraries
|-
|org.jogamp.joal
|joal-android
|2.2.0
|JOAL Android runtime
|-
|org.jogamp.jocl
|jocl-main
|2.0-rc11
|Meta-package for automatic dependency resolution for JOCL
|-
|org.jogamp.jocl
|jocl-android
|2.2.0
|JOCL Android runtime
|-
|org.jogamp.jocl
|jocl
|2.0-rc11
|JOCL code and native libraries
|-
|org.jogamp.jogl
|jogl-all-main
|2.0-rc11
|Meta-package for automatic dependency resolution for JOGL
|-
|org.jogamp.jogl
|jogl-all
|2.0-rc11
|JOGL code and native libraries
|-
|org.jogamp.jogl
|jogl-android
|2.0.2-rc12
|JOGL code and native libraries (Android)
|-
|org.jogamp.jogl
|jogl-android-main
|2.2.0
|Meta-package for automatic dependency resolution for JOGL (Android)
|-
|org.jogamp.jogl
|jogl-mobile-main
|2.0-rc11
|Meta-package for automatic dependency resolution for JOGL (mobile)
|-
|org.jogamp.jogl
|jogl-mobile
|2.0-rc11
|JOGL mobile code and native libraries (without AWT)
|-
|org.jogamp.jogl
|jogl-noawt-main
|2.0-rc11
|Meta-package for automatic dependency resolution for JOGL (without AWT)
|-
|org.jogamp.jogl
|jogl-noawt
|2.0-rc11
|JOGL code and native libraries (without AWT)
|-
|org.jogamp.jogl
|jogl
|2.0.2
|JOGL atomic jar files
|-
|org.jogamp.jogl
|nativewindow
|2.0.2
|Native window drivers for NEWT (atomic jars)
|-
|org.jogamp.jogl
|nativewindow-main
|2.2.0
|Native window drivers for NEWT (atomic frontend)
|-
|org.jogamp.jogl
|newt
|2.0.2
|NEWT code and native libraries (atomic jars)
|-
|org.jogamp.jogl
|newt-main
|2.2.0
|NEWT code and native libraries (atomic frontend)
|-
|org.jogamp.jogl
|occulusvr
|2.2.0
|JOGL code and native libraries (Oculus VR atomic jar files)
|-
|}


= OpenJFX =
= Atomic jar files (optional) =


[https://jogamp.org/bugzilla//show_bug.cgi?id=607#c20 Bug report 607] describes different ways to either
The so-called <i>atomic</i> jar files are provided as attachments to the <tt>jogl</tt>, <tt>newt</tt>,
* enhance external rendering via JOGL into an OpenJFX UI elements, or
<tt>nativewindow</tt> and <tt>gluegen</tt> packages. As an example, to depend only on the Linux AMD64
* to replace OpenJFX's Glass w/ NEWT and Prism's OpenGL coding with JOGL
native jar files, on X11, using only the core of <tt>jogl</tt> and the native window toolkit in your
own projects, use the following dependencies:


= NEWT =
<pre>
  <dependency>
    <groupId>org.jogamp.gluegen-rt</groupId>
    <artifactId>jogl</artifactId>
    <version>2.3.1</version>
  </dependency>
  <dependency>
    <groupId>org.jogamp.gluegen-rt</groupId>
    <artifactId>jogl</artifactId>
    <version>2.3.1</version>
    <classifier>natives-linux-amd64</classifier>
  </dependency>
  <dependency>
    <groupId>org.jogamp.jogl</groupId>
    <artifactId>jogl</artifactId>
    <version>2.3.1</version>
    <classifier>core</classifier>
  </dependency>
  <dependency>
    <groupId>org.jogamp.jogl</groupId>
    <artifactId>jogl</artifactId>
    <version>2.3.1</version>
    <classifier>natives-linux-amd64</classifier>
  </dependency>
  <dependency>
    <groupId>org.jogamp.jogl</groupId>
    <artifactId>jogl</artifactId>
    <version>2.3.1</version>
    <classifier>os-x11</classifier>
  </dependency>
  <dependency>
    <groupId>org.jogamp.jogl</groupId>
    <artifactId>jogl</artifactId>
    <version>2.3.1</version>
    <classifier>os-x11</classifier>
  </dependency>
  <dependency>
    <groupId>org.jogamp.jogl</groupId>
    <artifactId>newt</artifactId>
    <version>2.3.1</version>
    <classifier>driver-x11</classifier>
  </dependency>
  <dependency>
    <groupId>org.jogamp.jogl</groupId>
    <artifactId>newt</artifactId>
    <version>2.3.1</version>
    <classifier>core</classifier>
  </dependency>
  <dependency>
    <groupId>org.jogamp.jogl</groupId>
    <artifactId>newt</artifactId>
    <version>2.3.1</version>
    <classifier>natives-linux-amd64</classifier>
  </dependency>
  <dependency>
    <groupId>org.jogamp.jogl</groupId>
    <artifactId>nativewindow</artifactId>
    <version>2.3.1</version>
    <classifier>core</classifier>
  </dependency>
  <dependency>
    <groupId>org.jogamp.jogl</groupId>
    <artifactId>nativewindow</artifactId>
    <version>2.3.1</version>
    <classifier>natives-linux-amd64</classifier>
  </dependency>
  <dependency>
    <groupId>org.jogamp.jogl</groupId>
    <artifactId>nativewindow</artifactId>
    <version>2.3.1</version>
    <classifier>driver-x11</classifier>
  </dependency>
</pre>


* [{{SERVER}}/bugzilla/showdependencytree.cgi?id=807&hide_resolved=0 Dependency Tree NEWT Input Devices]
Note that the choice of which atomic jars are required is really outside of the scope of this
* [{{SERVER}}/bugzilla/showdependencytree.cgi?id=814&hide_resolved=0 Dependency Tree NEWT Pointer Event]
documentation. It's recommended that you browse the packages in question to see which jar
files are available. It's <i>not</i> recommended to depend on platform-specific jar files
in the manner shown above unless there's an extremely good reason to do so; to do otherwise
harms portability for no good reason!


<bugzilla>
= The jogamp.org test repository (optional) =
    {
        "product":["newt","jinput"],
        "version":["2.5.0","3.0.0","tbd"],
        "cf_type":"FEATURE",
        "include_fields":"id,version,product,component,priority,severity,status,summary"
    }
</bugzilla>


= Vulkan  =
Bleeding edge, experimental packages will continue to be made available from the
[http://jogamp.org/deployment/maven Jogamp Test Repository]. Most users won't need this, but
it can be used by adding a new profile in your <tt>~/.m2/settings.xml</tt> file that specifies
the repository:


<bugzilla>
<pre>
    {
  <?xml version="1.0" encoding="UTF-8"?>
        "component":"vulkan",
  <settings
        "cf_type":"FEATURE",
    xmlns="http://maven.apache.org/SETTINGS/1.0.0"  
        "include_fields":"id,version,product,component,priority,severity,status,summary"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
     }
    xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
</bugzilla>
    <profiles>
      <profile>
        <id>jogamp</id>
        <repositories>
          <repository>
            <id>jogamp-remote</id>
            <name>jogamp test mirror</name>
            <url>https://www.jogamp.org/deployment/maven/</url>
            <layout>default</layout>
          </repository>
        </repositories>
      </profile>
    </profiles>
    <activeProfiles>
      <activeProfile>jogamp</activeProfile>
     </activeProfiles>
  </settings>
</pre>


= Video Encoding/Decoding & Player =
Maven will then check this repository for packages in addition to Maven Central when resolving dependencies.


Across our releases, we supported video encoding and decoding (with a player)
'''''Please note that packages on the jogamp test repository are subject to unannounced changes at any moment and may break existing code at any time! Do not use for production code!'''''
based on either FFmpeg or Android's library as [https://youtu.be/4gWStKCioi8?t=132 shown in this clip at 2:12 min mark].


Goal would be to
= Android =
* Update general ffmpeg video decoding support
* Enhance ffmpeg video encoding support
* Potentially add better control about video-frame to framebuffer control for editing software


See [https://jogamp.org/bugzilla//buglist.cgi?bug_status=__open__&component=video&list_id=3053&product=Jogl related buglist]
There is a [[Maven_And_Android|separate page]] documenting one method of producing packages that work on both Android and ordinary
desktop Java.


<bugzilla>
= Producing a fat jar =
    {
        "component":"video",
        "include_fields":"id,version,product,component,priority,severity,status,summary"
    }
</bugzilla>


= iOS Enhancements =
See [[JogAmp_JAR_File_Handling#Maven_Assembly_Plugin|JAR File Handling]].
 
Early iOS support has been demonstrated in 2019
* [https://jausoft.com/blog/2019/06/17/jogamp-ios-arm64-bring-up/ iOS Arm64 bring-up]
* [https://jausoft.com/blog/2019/06/23/jogamp-ios-arm64-port-first-visuals/ iOS Arm64 Port: First Visuals]
* [https://jausoft.com/blog/2019/07/08/jogamp-ios-arm64-port-newt/ iOS Arm64 Port: NEWT]
 
Enhancing this port would allow to use JogAmp in a similar fashion as on Android,
but using an OpenJDK iOS build.
 
= [[SCC Overview|Source Certification Contract (SCC)]] =
 
[{{SERVER}}/bugzilla/showdependencytree.cgi?id=1368&hide_resolved=0 Dependency Tree]
 
[{{SERVER}}/bugzilla/show_bug.cgi?id=1368 Root Parent Entry]
 
<bugzilla>
    {
        "id":["1368", "1369"],
        "include_fields":"id,version,product,component,priority,severity,status,summary"
    }
</bugzilla>
 
= Misc =
 
<!-- bugzilla>
    {
        "product"!=["graphui","newt"],
        "component"!=["graph","vulkan"],
        "version":["2.5.0","3.0.0","tbd"],
        "cf_type":"FEATURE",
        "include_fields":"id,version,product,component,priority,severity,status,summary"
    }
</bugzilla-->
 
<bugzilla>
    {
        "version":["2.5.0","3.0.0","tbd"],
        "cf_type":"FEATURE",
        "include_fields":"id,version,product,component,priority,severity,status,summary"
    }
</bugzilla>

Revision as of 14:09, 14 February 2023

JogAmp now contains support for Maven. As of 2.0-rc11, packages are pushed to Maven Central.

Add dependencies on the correct packages

If you don't know which packages you want, you almost certainly want to use the jogl-all-main and gluegen-rt-main packages, as these automatically set up the correct dependencies on the native jar files for all platforms.

As an example, if your project uses JOGL 2.3.1:

  <dependencies>
    <dependency>
      <groupId>org.jogamp.gluegen</groupId>
      <artifactId>gluegen-rt-main</artifactId>
      <version>2.3.1</version>
    </dependency>
    <dependency>
      <groupId>org.jogamp.jogl</groupId>
      <artifactId>jogl-all-main</artifactId>
      <version>2.3.1</version>
    </dependency>
  </dependencies>

Maven will pull all of the dependencies the next time you attempt to build the project.

Additionally, for joal and jocl support:

  <dependencies>
    <dependency>
      <groupId>org.jogamp.jocl</groupId>
      <artifactId>jocl-main</artifactId>
      <version>2.3.1</version>
    </dependency>
    <dependency>
      <groupId>org.jogamp.joal</groupId>
      <artifactId>joal-main</artifactId>
      <version>2.3.1</version>
    </dependency>
  </dependencies>

An example project is available in the maven subdirectory of the jogl-demos project [1].

Package details

For each JogAmp project, there are essentially two packages published: One contains the main compiled jar files and any associated native library jar files, and the other simply contains dependencies on those files. Using jogl-all and jogl-all-main as the example, the jogl-all package in the jogamp.org test repository:

http://jogamp.org/deployment/maven/org/jogamp/jogl/jogl-all/2.3.1/

Note that there are many native jar files attached to the main package. However, if you were to use the following dependency in your own project:

  <dependency>
    <groupId>org.jogamp.jogl</groupId>
    <artifactId>jogl-all</artifactId>
    <version>2.3.1</version>
  </dependency>

Maven would download jogl-all-2.3.1.jar but would completely ignore all of the other native jar files. Why? The reason for this is that the native jar files are uploaded as extra artifacts to the jogl-all package and are, in a manner of speaking, not really considered to be part of the package where dependencies are concerned. The POM for the jogl-all-main package adds explicit dependencies on all of the extra artifacts in the jogl-all package:

http://jogamp.org/deployment/maven/org/jogamp/jogl/jogl-all-main/2.3.1/jogl-all-main-2.3.1.pom

So, when you add a dependency on jogl-all-main in your own project, the native jar files of jogl-all are brought in as transitive dependencies and everything works as expected.

Available packages

Group ID Artifact ID Since Description
org.jogamp.gluegen gluegen-rt-android 2.0.2-rc12 GlueGen runtime code and native libraries (Android)
org.jogamp.gluegen gluegen-rt-main 2.0-rc11 Meta-package for automatic dependency resolution for the GlueGen runtime
org.jogamp.gluegen gluegen-rt 2.0-rc11 GlueGen runtime code and native libraries
org.jogamp.gluegen gluegen 2.0-rc11 GlueGen non-runtime code and native libraries (and atomic jars)
org.jogamp.joal joal-main 2.0-rc11 Meta-package for automatic dependency resolution for JOAL
org.jogamp.joal joal 2.0-rc11 JOAL code and native libraries
org.jogamp.joal joal-android 2.2.0 JOAL Android runtime
org.jogamp.jocl jocl-main 2.0-rc11 Meta-package for automatic dependency resolution for JOCL
org.jogamp.jocl jocl-android 2.2.0 JOCL Android runtime
org.jogamp.jocl jocl 2.0-rc11 JOCL code and native libraries
org.jogamp.jogl jogl-all-main 2.0-rc11 Meta-package for automatic dependency resolution for JOGL
org.jogamp.jogl jogl-all 2.0-rc11 JOGL code and native libraries
org.jogamp.jogl jogl-android 2.0.2-rc12 JOGL code and native libraries (Android)
org.jogamp.jogl jogl-android-main 2.2.0 Meta-package for automatic dependency resolution for JOGL (Android)
org.jogamp.jogl jogl-mobile-main 2.0-rc11 Meta-package for automatic dependency resolution for JOGL (mobile)
org.jogamp.jogl jogl-mobile 2.0-rc11 JOGL mobile code and native libraries (without AWT)
org.jogamp.jogl jogl-noawt-main 2.0-rc11 Meta-package for automatic dependency resolution for JOGL (without AWT)
org.jogamp.jogl jogl-noawt 2.0-rc11 JOGL code and native libraries (without AWT)
org.jogamp.jogl jogl 2.0.2 JOGL atomic jar files
org.jogamp.jogl nativewindow 2.0.2 Native window drivers for NEWT (atomic jars)
org.jogamp.jogl nativewindow-main 2.2.0 Native window drivers for NEWT (atomic frontend)
org.jogamp.jogl newt 2.0.2 NEWT code and native libraries (atomic jars)
org.jogamp.jogl newt-main 2.2.0 NEWT code and native libraries (atomic frontend)
org.jogamp.jogl occulusvr 2.2.0 JOGL code and native libraries (Oculus VR atomic jar files)

Atomic jar files (optional)

The so-called atomic jar files are provided as attachments to the jogl, newt, nativewindow and gluegen packages. As an example, to depend only on the Linux AMD64 native jar files, on X11, using only the core of jogl and the native window toolkit in your own projects, use the following dependencies:

  <dependency>
    <groupId>org.jogamp.gluegen-rt</groupId>
    <artifactId>jogl</artifactId>
    <version>2.3.1</version>
  </dependency>
  <dependency>
    <groupId>org.jogamp.gluegen-rt</groupId>
    <artifactId>jogl</artifactId>
    <version>2.3.1</version>
    <classifier>natives-linux-amd64</classifier>
  </dependency>
  <dependency>
    <groupId>org.jogamp.jogl</groupId>
    <artifactId>jogl</artifactId>
    <version>2.3.1</version>
    <classifier>core</classifier>
  </dependency>
  <dependency>
    <groupId>org.jogamp.jogl</groupId>
    <artifactId>jogl</artifactId>
    <version>2.3.1</version>
    <classifier>natives-linux-amd64</classifier>
  </dependency>
  <dependency>
    <groupId>org.jogamp.jogl</groupId>
    <artifactId>jogl</artifactId>
    <version>2.3.1</version>
    <classifier>os-x11</classifier>
  </dependency>
  <dependency>
    <groupId>org.jogamp.jogl</groupId>
    <artifactId>jogl</artifactId>
    <version>2.3.1</version>
    <classifier>os-x11</classifier>
  </dependency>
  <dependency>
    <groupId>org.jogamp.jogl</groupId>
    <artifactId>newt</artifactId>
    <version>2.3.1</version>
    <classifier>driver-x11</classifier>
  </dependency>
  <dependency>
    <groupId>org.jogamp.jogl</groupId>
    <artifactId>newt</artifactId>
    <version>2.3.1</version>
    <classifier>core</classifier>
  </dependency>
  <dependency>
    <groupId>org.jogamp.jogl</groupId>
    <artifactId>newt</artifactId>
    <version>2.3.1</version>
    <classifier>natives-linux-amd64</classifier>
  </dependency>
  <dependency>
    <groupId>org.jogamp.jogl</groupId>
    <artifactId>nativewindow</artifactId>
    <version>2.3.1</version>
    <classifier>core</classifier>
  </dependency>
  <dependency>
    <groupId>org.jogamp.jogl</groupId>
    <artifactId>nativewindow</artifactId>
    <version>2.3.1</version>
    <classifier>natives-linux-amd64</classifier>
  </dependency>
  <dependency>
    <groupId>org.jogamp.jogl</groupId>
    <artifactId>nativewindow</artifactId>
    <version>2.3.1</version>
    <classifier>driver-x11</classifier>
  </dependency>

Note that the choice of which atomic jars are required is really outside of the scope of this documentation. It's recommended that you browse the packages in question to see which jar files are available. It's not recommended to depend on platform-specific jar files in the manner shown above unless there's an extremely good reason to do so; to do otherwise harms portability for no good reason!

The jogamp.org test repository (optional)

Bleeding edge, experimental packages will continue to be made available from the Jogamp Test Repository. Most users won't need this, but it can be used by adding a new profile in your ~/.m2/settings.xml file that specifies the repository:

  <?xml version="1.0" encoding="UTF-8"?>
  <settings
    xmlns="http://maven.apache.org/SETTINGS/1.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
    <profiles>
      <profile>
        <id>jogamp</id>
        <repositories>
          <repository>
            <id>jogamp-remote</id>
            <name>jogamp test mirror</name>
            <url>https://www.jogamp.org/deployment/maven/</url>
            <layout>default</layout>
          </repository>
        </repositories>
      </profile>
    </profiles>
    <activeProfiles>
      <activeProfile>jogamp</activeProfile>
    </activeProfiles>
  </settings>

Maven will then check this repository for packages in addition to Maven Central when resolving dependencies.

Please note that packages on the jogamp test repository are subject to unannounced changes at any moment and may break existing code at any time! Do not use for production code!

Android

There is a separate page documenting one method of producing packages that work on both Android and ordinary desktop Java.

Producing a fat jar

See JAR File Handling.