Login  Register

Re: JogAmp 'Jbeil' RC Build 2.4.0-rc-20200202

Posted by Sven Gothel on Feb 04, 2020; 12:04am
URL: https://forum.jogamp.org/JogAmp-Jbeil-RC-Build-2-4-0-rc-20200202-tp4040323p4040329.html

On 2/3/20 6:31 PM, Manu [via jogamp] wrote:

> Hi,
>
> I updated the special version of Sweet Home 3D 6.2 JAR Executable with JOGL
> 2.4.0-rc-20200202 (available here
> <http://www.sweethome3d.com/downloads/SweetHome3D-6.2-jogl-2.4.0-rc-20200202.jar> -
> 25.7 MB), and successfully tested it under the following Java / OS combinations:
> - OpenJDK 13.0.1 / Windows 10 64 bit
> - Oracle Java 10.0.2 / Windows 10 64 bit
> - Oracle Java 8u121 / Windows 10 64 bit
> - Oracle Java 8u131 / Windows XP *32* bit
> - OpenJDK 13.0.1 / macOS 10.15
> - Oracle Java 8u202 / macOS 10.15
> - OpenJDK 13.0.1 / macOS 10.14
> - Oracle Java 8u202 / macOS 10.14
> - Oracle Java 8u144 / macOS 10.10
> - OpenJDK 13.0.1 / Ubuntu 18 64 bit
> - OpenJDK 11.0.2 / Ubuntu 18 64 bit
> - Oracle Java 8u202 / Ubuntu 18 64 bit
> - OpenJDK 1.8.0_232 / Ubuntu 16 *32* bit
>

Excellent, thank you Emmanuel for testing on these platforms!

> Feel free to test it under other combinations (just check that the
> /About/ dialog displays Java 3D 1.6.1 which is bound to JOGL 2.4.0 RC 20200202).
>
> I also tested it with Java 6u45 but it couldn't run, because JOGL seems to
> have been compiled with Java 1.8 target. Is there a good reason to drop Java
> 1.6 target? Do you really need the features of Java 7/8?

It is especially hard for me to cut off previous systems.
Yes indeed, a decision that I don't make lightly.

As of today, we probably don't yet use (much) of Java > 6 features (if at all).

However, we are forced to produce Java 8 bytecode and classfiles
<https://en.wikipedia.org/wiki/Java_class_file#General_layout>,
in particular compatibility with
'Java SE 8 = 52' and Java8-RT minimum version only.

This is due to Bug 1363 "Java 11+ Compatibility (Remove Warnings, Build and Run)"
of ours <https://jogamp.org/bugzilla//show_bug.cgi?id=1363>.

Java-11's javac is no more capable to produce bytecode/classfiles < 'Java SE
8', this is the lowest version.

Also see
<https://jogamp.org/cgit/gluegen.git/tree/make/jogamp-env.xml?id=6e98be1a1bc819b47e2cc52eb35d23a7489fdf1b>,
where I elaborate on this compatibility and made the decision in June 2019.
This was debated here and otherwise..

Before bringing up Java>=11 compatibility and hence dropping Java<8
in June 2019, I was especially resistant to this move as I avoid dropping
platforms
by design. While researching for Bug 1363, i realized that
- OpenJDK 1.8 was around for 3 years already and well supported

- OpenJDK 9 (1.9) also supported more mobile platforms,
  like iOS and Android.

- Android's 'JIT' does support Java 8 bytecode/etc to a certain degree
  for more than 3 years.

It is probably hard to find a currently supported VM,
being restricted to Java < 8.

Also please note that while I performed Bug 1363 and related
task like Android update (Bug 1417
<https://jogamp.org/bugzilla//show_bug.cgi?id=1417>)
I focused on backward compatibility whenever possible.

I avoided dropping pre Java-9 or pre Java-11 API hooks etc
as much as possible.

HOWEVER, if anybody dares to take up the task to at least maintain
source code compatible with Java 6 - we can talk about it.
This would require to set up one build system
supporting Java 6 using a maintained toolchain.

Thank you

~Sven