Posted by
gouessej on
Dec 03, 2015; 12:01am
URL: https://forum.jogamp.org/Java-3D-Use-Maven-to-build-and-publish-Maven-artifacts-tp4035555p4035870.html
Hi
Manu wrote
Sorry guys, i didn't follow recent discussions in the forum, but why on earth, do you really need to change package names???
This would prevent to easily switch between previous Java 3D implementations

At first, we aren't allowed to use "javax" in our package names, what we did was illegal. We had to relocate the packages in JogAmp too.
Secondly, there are still recurring problems of name clashes under OS X, i.e an obsolete version of Java3D (1.3?) bundled with OS X is loaded in priority as an extension and there is no clean solution to solve this problem. All solutions except packages relocation are over-complicated and/or not reliable enough and/or difficult to maintain and/or have some nasty side effects:
- setting java.ext.dirs to "" breaks NIO 2
- we can't use Java 1.9 on very old Macs
- using some custom class loaders wouldn't work in some cases (containers & web servers?)
- modifying the class path at runtime would rely on some private APIs subject to changes
Thirdly, there is a new "security" feature driving harder to delete the obsolete libraries installed by default in OS X 10.11. If you can't skip those craps, it's hopeless, Java3D (1.3?) just crashes.
There is no other solution than changing the package names. The extension mechanism has been removed from Java in Java 1.9 but tons of people still use Java 1.8 and Java 1.7.
I understand the annoyance for you as you use both Java3D 1.5.2 and Java3D 1.6.0. However, there are only a very few contributors on Java3D, we can't maintain several versions of Java3D and it would be a bad idea anyway as it wouldn't solve the problem of name clash.
I don't want to bother anybody but I'd like to drop Java 1.6 support because there are still some people who want to use Java3D with Apple JRE whereas it's deprecated, no longer maintained and buggy. I can keep Java 1.6 support but Apple JRE will remain officially not supported. When a bug in AWT affects Java3D, if it occurs only with Apple JRE, I have no access to its code, I have no way to work around it.
Virtual Box only sees the Microsoft GDI renderer which supports only OpenGL 1.1 whereas Java3D has never supported immediate mode, it's based on retained mode since the very beginning. Supporting immediate mode would require to rewrite a huge part of the pipeline and numerous features wouldn't be supported, it's not worth it. I'm sure that it's possible to setup Virtual Box to see the real OpenGL driver provided by the official GPU manufacturer, it would solve your problem.
There is still a bug in Parallels, it's up to its maintainers to fix it, it doesn't come from JOGL. We already filled a bug against Parallels but they have done nothing as far as I know.
The previous Java3D implementations are unmaintained.
I'm sorry but I'm a bit surprised by your reaction ("why on earth", "???") as we explained a lot here why this change is required. Apple machines are designed to be difficult to repair and to become obsolete earlier than personal computers, I can still run JOGL on some PCs bought in 2004. As far as I know, OpenJDK on PowerPC supports Java 1.7 but JOGL 2 doesn't support OS X 10.4 and it's up to Apple to allow upgrades to more recent versions of OS X or not.
I do my best, I spent a lot of time in looking for another solution. I'm tired and a bit upset. We discussed a lot about this problem, I don't like breaking things. PowerPC G4 is still well supported under Debian, Ubuntu and Linux Mint.