
#JAVA MAC OS X LOOK AND FEEL CODE#
Whilst easily fitting into the existing framework the new code is much more modern in its use of graphics hardware, making use of shaders rather than a fixed function pipeline.

We created a substantial amount of new internal implementation code to use the Metal framework, just as we already had for the other platform-specific APIs.

(The name has nothing to do with the Swing “Metal” Look and Feel that is just a coincidence.) Metal is the new macOS platform API for such rendering, replacing the deprecated OpenGL API.
#JAVA MAC OS X LOOK AND FEEL SOFTWARE#
These platform-specific APIs typically offer much better performance than software rendering, and generally off-load the CPU. Internally, Java 2D can use software rendering plus a blit to the screen or it can use a platform-specific API, such as X11/Xrender on Linux, Direct3D on Windows, or OpenGL on macOS. Most graphical Java applications are written using the Swing UI toolkit, which renders via the Java 2D API. For the Java 2D API, this is generally the case with some exceptions. Java 2D on macOS is completely reliant on OpenGL for its internal rendering pipeline, so a new pipeline implementation is needed.Īpple claims that the Metal framework, their replacement for OpenGL, has superior performance. Two major factors motivate the introduction of a new Metal-based rendering pipeline on macOS:Īpple deprecated the OpenGL rendering library in macOS 10.14, in September 2018. It is not a goal to add any new Java or JDK APIs. It is not a goal to remove or disable the existing OpenGL pipeline.

Provide performance as good or better than the OpenGL pipeline in select real applications and benchmarks.Ĭreate a clean architecture that fits into the existing Java 2D pipeline model.Ĭo-exist with the OpenGL pipeline until it is obsolete. Provide a fully functional rendering pipeline for the Java 2D API that uses the macOS Metal framework.īe ready in the event Apple removes the deprecated OpenGL API from a future version of macOS.Įnsure transparency of the new pipeline to Java applications.Įnsure functional parity of the implementation with the existing OpenGL pipeline. Implement a Java 2D internal rendering pipeline for macOS using the Apple Metal API as alternative to the existing pipeline, which uses the deprecated Apple OpenGL API.
