We've had numerous discussions before regarding supporting Oracle Java on Mac, and the 2.0 pre-releases have been providing a separate package to support Oracle Java. Unfortunately, however, it has come to light that the performance of the TurboVNC Viewer under Java 1.7 and later is much much less than it was under Apple's Java 1.6, due to the omission of the Quartz-accelerated Java 2D blitter (not sure why that never made it into Oracle Java-- maybe licensing issues.) Java 1.7 and later only allow OpenGL drawing on Macs, and the way this is implemented makes things considerably slower, particularly when dealing with non-3D VNC workloads. I was able to improve performance considerably with OpenGL blitting by using a BGRA BufferedImage as the back buffer instead of BGRX (when using BGRX, the blitter has to enable OpenGL pixel transforms to set the alpha components to opaque, and this often causes the graphics driver to use an unaccelerated glDrawPixels() path.) However, the overall performance for 2D app workloads is still something like 20x slower with Java 1.7+ vs. Java 1.6, and for 3D apps, it's still about 3x slower.
I've contacted the Oracle developers who seem to be on top of these issues-- namely the ones who mention having a new solution for Java 9 that's supposed to improve this: http://mail.openjdk.java.net/pipermail/2d-dev/2014-October/004870.html but my own testing with the latest Java 9 snapshot build shows no difference. At the moment, my best course of action seems to be downplaying the Java 1.7+ support and recommending that users still use Apple Java 1.6 whenever possible. Given that Apple Java 1.6 can be installed concurrently with a more recent Java plugin (so basically, you have Java 1.6 installed for using TurboVNC as a standalone app, but Oracle Java 1.7+ is used by your browser), this seems doable. However, the slower Java would be used for Java Web Start, which is not a good thing. I'm hoping someone may have some ideas or knowledge that might help simplify this problem. I know some of you are using Java 1.7+ with TurboVNC already, which is what prompted me to create a separate package to support the Oracle flavor. I just don't like having to apologize for that package or to recommend that people use an older release of Java that's not really supported anymore in order to achieve decent performance. Options at the moment seem to be: (1) Keep things like they were in TurboVNC 1.2.x-- provide a standalone package only for Apple Java 1.6 and make that a system requirement for running the standalone TurboVNC Viewer app. Apple Java 1.6 still works on more recent systems, but it isn't being actively maintained anymore. (2) Provide a standalone package for Oracle Java 1.7+ as well, like we've been doing for the 2.0 pre-releases, but downplay that package and explain in the documentation why it won't perform as well. (3) Bundle a custom JRE build in the Mac app-- but AFAIK, you can only (legally) do that with OpenJDK, which doesn't have the Quartz-accelerated blitter. ------------------------------------------------------------------------------ Dive into the World of Parallel Programming. The Go Parallel Website, sponsored by Intel and developed in partnership with Slashdot Media, is your hub for all things parallel software development, from weekly thought leadership blogs to news, videos, case studies, tutorials and more. Take a look and join the conversation now. http://goparallel.sourceforge.net/ _______________________________________________ TurboVNC-Users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/turbovnc-users
