The line "private GL2 gl = GLContextManager.getInstance().getOpenGLContext().getGL();" illustrates my warning, you mustn't store a GL instance that way, you mustn't store it into a field. You must get it from the GLEventListener or from GLContext.getCurrentGL(). When you store a GL instance into a field, you take the risk of using it when it's no longer valid, on the wrong thread or on the good thread but not when the OpenGL context is current. I don't want to make you believe that this source code is correct.
By the way, don't use indirect NIO buffers, rather create direct NIO buffers when you want to pass them to JOGL (otherwise, it will have to make the conversion under the hood anyway but it will increase the memory footprint because the indirect NIO buffers will still occupy some memory on the Java heap while the direct NIO buffers will occupy some memory on the native heap).
Thanks for your answer.
Sorry for the misunderstood, I'm not requesting assistance related to the unofficial tutorials, but just some help/suggestions in order to learn and fix my issue.
So followings your suggestions, I have removed the reference to the GL2 and now retrieve it thanks to the GLContext created in my main Window. In addition, IndirectBuffres switch to DirectBuffer.
Finally, I raised the Following Excpetion :
com.jogamp.opengl.GLException: Thread[main,5,main] glGetError() returned the following error codes after a call to glVertexAttribPointer(<int> 0x1, <int> 0x2, <int> 0x1406, <boolean> false, <int> 0x641E, <long> 15378): GL_INVALID_VALUE ( 1281 0x501),
at com.jogamp.opengl.DebugGL4bc.writeGLError(DebugGL4bc.java:31803) ~[jogl-all.jar:2.3.2]
at com.jogamp.opengl.DebugGL4bc.glVertexAttribPointer(DebugGL4bc.java:30516) ~[jogl-all.jar:2.3.2]