JogAmp @ FOSDEM 2013 Free Java DevRoom

xerxes // Feb 6, 2013 1:57:46 PM

I have just returned from FOSDEM where we Julen Gouesse, Sven Gothel and Xerxes Rånby presented a JogAmp freejava love talk with some live demonstrations running hardware accelerated on x86 laptop, android/meego phone/tables and GNU/LInux systems such as the AC100 and RaspberryPi.
Slides, Video and Teaser from the JogAmp FOSDEM freejava love talk are now online:

If you want to design a game then we recommend you to use JogAmp indirect through a game engine library such as libgdx or JMonkeyEngine 3. We have a forum thread inside the JogAmp community where we work on improving engine support for embedded devices such as the Raspberry Pi using said engines. By using a game engine will get you up to speed developing professional games that can be run across all devices and formfactors.
The video and teaser recordings also includes footage of the JMonkeyEngine 3 JOGL 2 backend initialized by Julien Gouesse that we for time reason never managed to show during the strict 40min talk and live demo at FOSDEM.

Inside the FOSDEM talk we ran the open-source libgdx game pax-britannica using the new libgdx JogAmp JOGL 2 port initialized by Julien Gouesse in combination with the new hardfloat fixed CACAO ARM JVM found in the new IcedTea 6 1.12 release on the Raspberry Pi.
we also ran the JogAmp Jake2 port, a port done by Sven Gothel, using the armhf JamVM from IcedTea 7 on the ac100.
Both opensource games of course rocked running using freejava!
The point that we wanted to show is that if you start to use the dedicated love using the media accelerator found in all new devices your java applications rendering will run *equally* fast regardless of the JVM implementation, since the rendering is then performed by the GPU instead of the CPU.

For demonstation purposes: I had to extend the libgdx backend with a custom mouse pointer in order for otherwise touchscreen oriented games such as pax-britannica to work on the Raspberry Pi from console, the reason why this is needed is because there is no highlevel compositing windowmanager running on the RaspPi adding the overlay mousepointer for you like what you are custom to see when running desktop applications using X11. This libgdx RaspberryPi mouse pointer branch allowed me to test all touch oriented libgdx games and demos from console using a mouse input device.

While we know that compilation of custom JVM can be tricky I have prepared a RaspberryPi armhf CACAO that you can use as an drop in replacement into any OpenJDK 6 installation (/usr/lib/jvm/java-6-openjdk-armhf/jre/lib/arm/server/ This was built using the IcedTea 6 1.12 release from inside a Raspbian chroot.
For JamVM simply install the openjdk-7-jdk package and run it using java -jamvm its already built and packaged by the Raspbian team and work great! The new CACAO armhf is found here:

The Raspberry Pi Rasbian armhf distribution have now packaged IcedTea 6 1.12.1 and included it in the distribution, this means that you can test the new armhf CACAO JVM and JamVM JVM by simply installing the openjdk-6-jdk package.

sudo apt-get update
sudo apt-get install openjdk-6-jdk
java -jamvm -version
java -cacao -version

Also a great KUDOS for Qun, our dear camera-woman!

Cheers and enjoy the love!
On behalf of the JogAmp community - Xerxes

The JogAmp community now maintains JOGL and Java3D

xerxes // Nov 10, 2012 11:06:36 PM

2008: Sun Microsystems invested heavily into using hardware acceleration on mobile devices using JOGL. This was the foundation to get JavaFX 1.3 running across devices. Video of James Gosling, Ken Russell and Sven Gothel on stage at JavaOne 2008 keynote
Ken Russel later wrote his last Sun blog-post that covers the technology demonstrated in this first OpenGL ES 2 JOGL demonstration:
Later during the same year Sven Gothel demonstrated hardware accelerated OpenMAX video decoding on the same Tegra 1 mobile device using the new re-architectured JOGL 2 with stellar mobile support:

2009: The core members of the JOGL and Java3D team left Sun before Oracle took over and forked JOGL.,21516.0.html

2010: The JogAmp community was created.

2011: Oracle Gives up on Java3D (and JOGL) for RIA (Webstart and Applets)
The Oracle decision to remove all signed Java3D and JOGL builds from their servers, and hence break all existing online Java3D/JOGL applications using the SUN/Oracle builds, this have only been mentioned by Oracle inside the support forum.
Fortunately JOGL and Java3D was originally released under a BSD license so it was possible for the community to keep-on maintaining the bindings and provide JogAmp signed builds.

2012: Oracle work on flushing out its own use of JOGL in JavaFX by removing jogl-prism. Oracle no longer give programmers direct access to OpenGL using their APIs.
Oracle announced during JavaOne 2012 that Oracle would like to get help from the community to port JavaFX to new platforms under the OpenJFX project. Surely the community can help by re-implement jogl-prism and adding raw JOGL support into OpenJFX to ease future OpenJFX porting efforts.

JOGL v2 is actively maintained by the JogAmp community.

JOGL v2 now runs on the latest GPU cores and work on top of any JVM. JOGL v2 contains its own platform independent NEWT windowing toolkit. NEWT applications targeting the GL2ES2 or GL2ES1 profile, both using a common subset of OpenGL and ES calls, can be deployed across different platforms and devices from desktop to mobile without code change. - Documentation, slides, and videorecording from the latest live JogAmp demonstrations

Java3D is now also maintained by some members of the JogAmp community.
hharrison now maintain Java3D on github
Julien Gouesse: Java 3D est de retour [Java 3D is back]

JogAmp @ SIGGRAPH 2012

Sven // Jun 20, 2012 11:37:27 PM

Dear Team & Users,

it’s crunchtime ..

JogAmp will have it’s annual BOF @ SIGGRAPH 2012.

If you are around, we hope you have a chance to to attend
and meet w/ us.

Afterwards we may like to dine & wine together, if possible.

JogAmp: 2D/3D & Multimedia Across Devices

Tuesday, 7 August 3:30 pm - 5:00 pm

JogAmp provides OpenGL and OpenCL across devices using Java. Showcasing font,
UI and video, high-level API utilization (Ardor3D, Java3D, etc.), and
applications on Android, Linux, Window, OSX, and Solaris.

JogAmp Community

To document our planning, we have set-up
Bug 530
Wiki Page


If you have contributions for our BOF,
please don’t be shy and come forward.

We would like you to present it.
If you cannot attend personally, you can have us showing your content.
You will be referenced of course.


Please reply to in forum.

Cheers, Sven

JogAmp Release v2.0-rc9 / Wiki ..

Sven // Jun 20, 2012 10:05:30 PM

Today the v2.0-rc9 release has been notified w/ details.

Mostly contains stabilization and bug fixes no new features.

Android ARM-v7a APKs are included this time,
next market update is targeted w/ the next release.

… comment on the forum.

Besides, some wiki pages got updated.

Jogl/JogAmp Status Update ..

Sven // Apr 19, 2012 9:26:50 PM

Last weeks the new video streaming feature GLMediaPlayer
was added for Android and machines w/ Libav/FFmpeg pre-installed.

We produced a presentation video showcasing JogAmp’s objectives:

Jogl/JogAmp on the Web, Desktop and Mobile 2012

RC6 is now underway, I still have to add some supplied patches and walk through the buglist though.
However, this time I have to complete this task until tomorrow regardless whether I could complete the bug walk or not.

Cheers, Sven

Jogl/JogAmp RC6 Beta / Linux Armv7 Builds

Sven // Feb 28, 2012 3:05:42 AM

Besides adding proper Mac OS X support (10.5.8 – 10.7.*, incl. OpenJDK7),
OpenGL 4.2 and latest EGL, ES1 and ES2 extension updates and lot’s of stabilization’s,
Xerxes Rånby and myself worked on a proper Linux ARMv7 support.
Both were able to test on Omap4 (Pandaboard ES), Tegra2 (AC100), where Xerxes also tested on other machines, eg. Nokia N9 MeeGo.

Even though GlueGen and JOGL in general support EGL and ES1/ES2 since 2008 incl. the GL profile selection,
we figured we need better support for multiple GL implementations on one platform, Mesa3D software and the hardware EGL/ES ones.
Without tweaking your default configuration, JOGL chooses the right implementation for the desired profile,
e.g. hardware accelerate GLES2 for the desired common GL2ES2 profile on your mobile device, even though Mesa is installed.

Besides tiny big fixes and workarounds the biggest amount of work was to attach the Linux ARMv7 job to Jenkins.
We use a cross-compile and cross-test environment, where the build host cross-compiles and makes the Pandaboard ES
fetch the artifacts via rsync and execute the tests. Later the build host pulls the results and forwards them to the Jenkins master.

All JogAmp modules are now build for Linux-Armv7,
a test release is made available here.
You may like to try the test Applets.
Note: This week RC6 will be released under the usual location and the above test URL will cease to exist.

I dared to test browser support via OpenJDK and the IcedTea Plugin,
and for some reason .. it just works 🙂

Please feel welcome to join the discussion.

JOGL on Linux-ARMv7-Omap4

JOGL on Linux-ARMv7-Omap4

JogAmp Release v2.0-rc4

Sven // Dec 2, 2011 9:56:56 AM

After tons of bug fixes and Mac OS X, Solaris and Android platform support
we finally have v2.0-rc4.

Besides many important bug fixes this release supports
Mac OS X 10.6.4 and 10.7.

The Applet browser plugin is also enhanced and validated
on all platforms for FF, Chrome, Safari and IE where supported.


We have to thank each other for our ongoing support,
bug reports, inspiration and pushing for results.

Thank you.


The following aliasing of URL location has been made,
ie. all are aligned to v2.0-rc4 for now.

  • v2.0-rc4 -> archive/rc/v2.0-rc4
  • jogamp-current -> v2.0-rc4
  • jogamp-next -> v2.0-rc4
  • webstart -> v2.0-rc4
  • webstart-next -> v2.0-rc4

Developer downloads at:

Git repositories have been tagged w/ v2.0-rc4.


Planned for RC5 so far:


  • Maven2 integration (I know .. a bit late it is already)
  • Mobile/Android autobuilds / release
  • More bugfixes
  • Update the graph package


Please join the discussion in our forum.

You may like to comment on this release here.

Cheers, Sven

JOGL Test Statistics (Linux, Windows and OS X)

Sven // Oct 14, 2011 12:27:02 AM

To conclude my today series of blog entries, I thought it might be a good idea to show our automatic test statistics.

Here are the latest good and failed test charts for all platforms:

Test Stats 20111013 All

Test Stats 20111013 All - Errors Only

Test Stats 20111013 All - Failure Chart

And finally the progress on OS X with all tests included:

Test OS X 20111013 Overview

Test OS X 20111013 Count

Test OS X 20111013 Runtime

Besides adding running all unit tests to OSX, we also made sure that it’s performance is now equal to the other platforms, ie. around 4 minutes runtime for all tests.

But be aware that these features will be promoted to the next release RC4,
so you would need to wait or use the autobuilds, see Downloading the latest automatic build.

Jogl OS X Port is Nigh :)

Sven // Oct 13, 2011 11:48:16 PM

Since the mouse features were to easy to add and my Android vacation should take a bit longer, our OS X port was a good candidate to burn some hours I don’t have.

What should work for OS X by now:

  • NEWT Top-Level Windowing
  • NEWT Child Window w/ NEWT Parent
  • NEWT Child Window w/ AWT Parent
  • JOGL incl. shared context
  • NEWT works w/ AWT enabled JVM out of the box
  • Method to execute a Runnable on the MainThread
  • The new native Jar loading facility (Application, Applet, Webstart)

The window positioning code was a torture, since the AWT components are not top-level on OS X. Hence we have to calculation the proper screen size position in bottom-left coordination space, even when resizing the window.
Maybe there are still some glitches in case of a NEWT child within an AWT floating Container, but most cases work fine.

Shared or offscreen context destruction was another issue.
We have to run this task on the MainThread, otherwise we experienced a ~10s freeze.

Btw our MainThread semantics have been simplified a lot.
On OS X, it just launches the user main class in a new thread while continuing as the NSApp MainThread.
In short, it is no more required when using an AWT enabled JVM, since it already launches as the NSApp MainThread.

After a few more cleanups, I will prepare the next release and test our new native Jar loading mechanism
and Applets in general.

But be aware that these features will be promoted to the next release RC4,
so you would need to wait or use the autobuilds, see Downloading the latest automatic build.

Note on the side: Motivation for the OS X port was not my liking of the platform, which I don’t, but to just complete our platform independent solution. Hence having NEWT working well on OS X is mandatory here.