There are number of places where FX desktop runtime uses Class.forName() to lookup for possibly missing classes.
Class.forName() may be VERY expensive in case of applet as it forces to load and open all known jars
and as last resort it will also check applet codebase for availability of class file.
Even if runtime and app jar are already cached.
E.g. Mac users and jdk 5 users do not have all of platform classes available.
We need to revisit all of Class.forName usages to see if class can be missing there.
Most typical cases are:
1) If Class.forName() is used to detect version of JRE (like in the com.sun.javafx.tk.Toolkit or caspian.Utils.fx)
then replace it use of helper class ....
2) If class for name is used to JRE class that might be internal or optional then replace
Class.forName(name) with Class.forName(name, true, null) to lookup using bootstrap loader only
Examples:
PerformanceTrackerImpl.java
3) Lookup of javafx-related class, such as prism or org.jdesktop.applet.util.JNLPAppletLauncher
Not sure what can be done here but hopefully these are mostly present.
4) LiveConnectBridgeImpl.install() should be used only if plugin2 is available (and plugin2 classes shoulds be on classpath)
Otherwise it tries to load InvocationDelegate (base class) and it might be not available in the platform
5) loading services such as
META-INF/services/javax.xml.parsers.SAXParserFactory
(have not looked what can be done here yet)
To avoid getting into this situation again i suggest to add Helper class that can be used to proxy requests to Class.foName() that will
be used to print out stack traces if class lookup had failed. We should prohibit direct use of Class.forName() as on older JRE (or Mac) we have no easy way to find out who had requested this class and every missing class lookup will hurt performance.
At very least following classes are referenced in the test log from Arindram:
java.awt.MultipleGradientPaint
java.awt.LinearGradientPaint
sun.awt.AWTAccessor
com.sun.java.swing.SwingUtilities3
com.sun.java.browser.plugin2.liveconnect.v1.InvocationDelegate
java.util.ServiceLoader (not sure where this one is loaded from)
META-INF/services/javax.xml.parsers.SAXParserFactory
Here is the all occurences of Class.forName() in the runtime classes:
./decora-d3d/src/com/sun/scenario/effect/impl/hw/d3d/NativeLibLoader.java: Class jnlpAppletLauncherClass = Class.forName("org.jdesktop.applet.util.JNLPAppletLauncher");
./decora-demo/src/decora/demo/DemoApplet.java: Class c = Class.forName(getParameter("demo.classname"));
./decora-j2d/src/com/sun/scenario/effect/impl/j2d/J2DRenderer.java: isJava6 = (Class.forName("java.awt.LinearGradientPaint") != null);
./decora-j2d/src/com/sun/scenario/effect/impl/j2d/J2DRenderer.java: klass = Class.forName(rootPkg + ".impl.j2d.J2D" + name + "Peer");
./decora-j2d/src/com/sun/scenario/effect/impl/j2d/J2DSWRenderer.java: Class klass = Class.forName(rootPkg + ".impl.sw.java.JSWRendererDelegate");
./decora-j2d/src/com/sun/scenario/effect/impl/j2d/J2DSWRenderer.java: Class klass = Class.forName(rootPkg + ".impl.sw.sse.SSERendererDelegate");
./decora-j2d/src/com/sun/scenario/effect/impl/j2d/J2DSWRenderer.java: Class klass = Class.forName(klassName);
./decora-j2d-jogl/src/com/sun/scenario/effect/impl/j2d/jogl/JOGLRenderer.java: Class klass = Class.forName(rootPkg + ".impl.j2d.jogl.JOGL" + name + "Peer");
./decora-j2d-rsl/src/com/sun/scenario/effect/impl/j2d/rsl/RSLRenderer.java: Class klass = Class.forName("com.sun.opengl.impl.Java2D");
./decora-j2d-rsl/src/com/sun/scenario/effect/impl/j2d/rsl/RSLRenderer.java: Class klass = Class.forName(prefix + "RendererDelegate");
./decora-j2d-rsl/src/com/sun/scenario/effect/impl/j2d/rsl/RSLRenderer.java: klass = Class.forName(prefix + "RendererDelegate");
./decora-j2d-rsl/src/com/sun/scenario/effect/impl/j2d/rsl/RSLRenderer.java: Class klass = Class.forName("sun.java2d.d3d.D3DSurfaceData");
./decora-j2d-rsl/src/com/sun/scenario/effect/impl/j2d/rsl/RSLRenderer.java: Class klass = Class.forName(rootPkg + ".impl.j2d.rsl.RSL" + name + "Peer");
./decora-prism/src/com/sun/scenario/effect/impl/prism/PrRenderer.java: Class klass = Class.forName(rootPkg + ".impl.prism.Pr" + name + "Peer");
./decora-prism/src/com/sun/scenario/effect/impl/prism/PrRenderer.java: klass = Class.forName(name);
./decora-runtime/src/com/sun/scenario/effect/impl/Renderer.java: Class.forName(rootPkg + ".impl.prism.PrRenderer");
./decora-runtime/src/com/sun/scenario/effect/impl/Renderer.java: Class klass = Class.forName(rootPkg + ".impl.j2d.rsl.RSLRenderer");
./decora-runtime/src/com/sun/scenario/effect/impl/Renderer.java: Class klass = Class.forName(rootPkg + ".impl.j2d.jogl.JOGLRenderer");
./decora-runtime/src/com/sun/scenario/effect/impl/Renderer.java: Class klass = Class.forName(rootPkg + ".impl.prism.PrRenderer");
./decora-runtime/src/com/sun/scenario/effect/impl/Renderer.java: Class klass = Class.forName(rootPkg + ".impl.j2d.J2DSWRenderer");
./decora-runtime/src/com/sun/scenario/effect/impl/Renderer.java: Class klass = Class.forName(rootPkg + ".impl.j2d.J2DSWRenderer");
./decora-sse/src/com/sun/scenario/effect/impl/sw/sse/NativeLibLoader.java: Class jnlpAppletLauncherClass = Class.forName("org.jdesktop.applet.util.JNLPAppletLauncher");
./eula/build/gensrc/com/sun/javafx/eula/EulaImpl.java: Class.forName("javax.jnlp.BasicService");
./eula/build/gensrc/com/sun/javafx/eula/EulaImpl.java: Class klass = Class.forName("org.jdesktop.applet.util.JNLPAppletLauncher");
./eula/build/gensrc/com/sun/javafx/eula/NativeLibLoader.java: Class jnlpAppletLauncherClass = Class.forName("org.jdesktop.applet.util.JNLPAppletLauncher");
./eula/src/com/sun/javafx/eula/EulaImpl.java: Class.forName("javax.jnlp.BasicService");
./eula/src/com/sun/javafx/eula/EulaImpl.java: Class klass = Class.forName("org.jdesktop.applet.util.JNLPAppletLauncher");
./eula/src/com/sun/javafx/eula/NativeLibLoader.java: Class jnlpAppletLauncherClass = Class.forName("org.jdesktop.applet.util.JNLPAppletLauncher");
./javafx-anim/src/com/sun/scenario/Settings.java: Class mt = Class.forName("com.sun.scenario.animation.MasterTimer");
./javafx-iio-macosx/src/com/sun/javafx/iio/NativeLibLoader.java: Class jnlpAppletLauncherClass = Class.forName("org.jdesktop.applet.util.JNLPAppletLauncher");
./javafx-sg-swing/src/com/sun/embeddedswing/EmbeddedEventQueue.java: Class.forName("java.util.concurrent.Callable");
./javafx-sg-swing/src/com/sun/embeddedswing/EmbeddedEventQueue.java: Class.forName("com.sun.java.swing.SwingUtilities3");
./javafx-sg-swing/src/com/sun/embeddedswing/EmbeddedPeer.java: Class.forName("java.awt.print.PrinterGraphics");
./javafx-sg-swing/src/com/sun/embeddedswing/SwingGlueLayer.java: repaintManagerClass = Class.forName("javax.swing.RepaintManager");
./javafx-sg-swing/src/com/sun/embeddedswing/SwingGlueLayer.java: Class.forName("com.sun.java.swing.SwingUtilities3");
./javafx-sg-swing/src/com/sun/scenario/scenegraph/JSGPanel.java: tmpClass = Class.forName("com.sun.java.swing.SwingUtilities3");
./javafx-sg-swing/src/com/sun/scenario/scenegraph/SGText.java: return Class.forName("sun.java2d.SunGraphics2D");
./javafx-sg-swing/src/com/sun/scenario/scenegraph/SGText.java: return Class.forName("sun.java2d.SurfaceData");
./javafx-ui-common/src/com/sun/javafx/perf/PerformanceTrackerImpl.java: Class plc = Class.forName("sun.misc.PerformanceLogger");
./javafx-ui-common/src/com/sun/javafx/runtime/provider/GUIRuntimeProvider.java: Class.forName("com.sun.javafx.runtime.DefaultSystemProperties");
./javafx-ui-common/src/com/sun/javafx/runtime/provider/GUIRuntimeProvider.java: Object toolkit = Class.forName("com.sun.javafx.tk.Toolkit").getMethod("getToolkit").invoke(null);
./javafx-ui-common/src/com/sun/javafx/runtime/provider/GUIRuntimeProvider.java: Object toolkit = Class.forName("com.sun.javafx.tk.Toolkit").getMethod("getToolkit").invoke(null);
./javafx-ui-common/src/com/sun/javafx/runtime/provider/GUIRuntimeProvider.java: Object toolkit = Class.forName("com.sun.javafx.tk.Toolkit").getMethod("getToolkit").invoke(null);
./javafx-ui-common/src/com/sun/stylesheet/PropertyManager.java:// Class.forName("org.jdesktop.animation.timing.Animator");
./javafx-ui-common/src/com/sun/stylesheet/javafx/ObjectLiteralConverter.java: return Class.forName(s + className);
./javafx-ui-common/src/com/sun/stylesheet/types/PrimitiveConverter.java: return Class.forName(s + className);
./javafx-ui-desktop/src/com/sun/javafx/svgpath/util/io/Messages.java: return Class.forName(s);
./javafx-ui-desktop/src/com/sun/javafx/tk/desktop/AWTFontUtils.java: Class.forName("sun.font.FontDesignMetrics");
./javafx-ui-desktop/src/com/sun/javafx/tk/desktop/AWTFontUtils.java: fontMgrCls = Class.forName("sun.font.FontUtilities");
./javafx-ui-desktop/src/com/sun/javafx/tk/desktop/AWTFontUtils.java: fontMgrCls = Class.forName("sun.font.FontManager");
./javafx-ui-desktop/src/com/sun/javafx/tk/desktop/AWTImageLoader.java: klass = Class.forName("com.sun.javafx.iio.NativeImageLoader");
./javafx-ui-desktop/src/com/sun/javafx/tk/desktop/JUtil.java: Class clazz = Class.forName("java.awt.LinearGradientPaint");
./javafx-ui-desktop/src/com/sun/javafx/util/CrossDomainXML.java: desktopConnectionClass = Class.forName("com.sun.javafx.io.http.desktop.DesktopConnection");
./javafx-ui-desktop/src/com/sun/javafx/util/Platform.java: Class.forName("com.sun.deploy.net.CrossDomainXML");
./javafx-ui-swing/src/com/sun/javafx/tk/swing/FullScreenManager.java: Class c = Class.forName("sun.awt.AWTAccessor");
./javafx-ui-swing/src/com/sun/javafx/tk/swing/Gradients.java: Class.forName("java.awt.MultipleGradientPaint");
./javafx-ui-swing/src/com/sun/javafx/tk/swing/Gradients.java: cycleMethod = Class.forName("java.awt.MultipleGradientPaint$CycleMethod");
./javafx-ui-swing/src/com/sun/javafx/tk/swing/Gradients.java: Class cls = Class.forName("java.awt.LinearGradientPaint");
./javafx-ui-swing/src/com/sun/javafx/tk/swing/Gradients.java: cycleMethod = Class.forName("java.awt.MultipleGradientPaint$CycleMethod");
./javafx-ui-swing/src/com/sun/javafx/tk/swing/Gradients.java: Class cls = Class.forName("java.awt.RadialGradientPaint");
./javafx-ui-swing/src/com/sun/javafx/tk/swing/WindowImpl.java: c = Class.forName("com.sun.awt.AWTUtilities");
./javafx-ui-swing/src/com/sun/javafx/tk/swing/WindowImpl.java: c = Class.forName("com.sun.awt.AWTUtilities");
./javafx-ui-swing/src/com/sun/javafx/tk/swing/WindowImpl.java: Class c = Class.forName("com.sun.awt.AWTUtilities");
./prism-common/src/com/sun/prism/GraphicsPipeline.java: Class klass = Class.forName("com.sun.prism.d3d.D3DPipeline");
./prism-common/src/com/sun/prism/GraphicsPipeline.java: Class klass = Class.forName("com.sun.prism.es2.ES2Pipeline");
./prism-common/src/com/sun/prism/tk/PrismToolkitImpl.java: Class klass = Class.forName(className);
./prism-d3d/src/com/sun/prism/d3d/D3DResourceFactory.java: Class klass = Class.forName("com.sun.prism.shader." + name + "_Loader");
./prism-d3d/src/com/sun/prism/d3d/NativeLibLoader.java: Class jnlpAppletLauncherClass = Class.forName("org.jdesktop.applet.util.JNLPAppletLauncher");
./prism-es2/src/com/sun/prism/es2/ES2ResourceFactory.java: Class klass = Class.forName("com.sun.prism.shader." + name + "_Loader");
./javafx-ui-common/src/com/sun/javafx/tk/Toolkit.fx: TOOLKIT = Class.forName(java.lang.System.getProperty("javafx.toolkit")).newInstance() as Toolkit;
./javafx-ui-common/src/com/sun/javafx/tk/Toolkit.fx: TOOLKIT = Class.forName("com.sun.javafx.tk.swing.SwingToolkit").newInstance() as Toolkit;
./javafx-ui-common/src/com/sun/stylesheet/javafx/FXObjectStyleSupport.fx: Class cls = Class.forName(type);
./javafx-ui-controls/src/com/sun/javafx/scene/control/caspian/Utils.fx: Class.forName("sun.font.FontDesignMetrics");
./javafx-ui-desktop/src/com/sun/javafx/tk/desktop/AWTFontLoader.fx: var ta = Class.forName("java.awt.font.TextAttribute");
./javafx-ui-prism/src/com/sun/javafx/tk/prism/PrismFontLoader.fx: var ta = Class.forName("java.awt.font.TextAttribute");
./javafx-ui-swing/src/com/sun/javafx/runtime/adapter/AppletStartupRoutine.fx: var stageClass:Class = Class.forName(stageClassName);
./javafx-ui-swing/src/com/sun/javafx/tk/swing/SwingToolkit.fx: java.lang.Class.forName("java.awt.Dialog$ModalityType");
./javafx-ui-swing/src/com/sun/javafx/tk/swing/SwingToolkit.fx: var eula = Class.forName("com.sun.javafx.eula.EulaImpl").newInstance() as Eula;
Class.forName() may be VERY expensive in case of applet as it forces to load and open all known jars
and as last resort it will also check applet codebase for availability of class file.
Even if runtime and app jar are already cached.
E.g. Mac users and jdk 5 users do not have all of platform classes available.
We need to revisit all of Class.forName usages to see if class can be missing there.
Most typical cases are:
1) If Class.forName() is used to detect version of JRE (like in the com.sun.javafx.tk.Toolkit or caspian.Utils.fx)
then replace it use of helper class ....
2) If class for name is used to JRE class that might be internal or optional then replace
Class.forName(name) with Class.forName(name, true, null) to lookup using bootstrap loader only
Examples:
PerformanceTrackerImpl.java
3) Lookup of javafx-related class, such as prism or org.jdesktop.applet.util.JNLPAppletLauncher
Not sure what can be done here but hopefully these are mostly present.
4) LiveConnectBridgeImpl.install() should be used only if plugin2 is available (and plugin2 classes shoulds be on classpath)
Otherwise it tries to load InvocationDelegate (base class) and it might be not available in the platform
5) loading services such as
META-INF/services/javax.xml.parsers.SAXParserFactory
(have not looked what can be done here yet)
To avoid getting into this situation again i suggest to add Helper class that can be used to proxy requests to Class.foName() that will
be used to print out stack traces if class lookup had failed. We should prohibit direct use of Class.forName() as on older JRE (or Mac) we have no easy way to find out who had requested this class and every missing class lookup will hurt performance.
At very least following classes are referenced in the test log from Arindram:
java.awt.MultipleGradientPaint
java.awt.LinearGradientPaint
sun.awt.AWTAccessor
com.sun.java.swing.SwingUtilities3
com.sun.java.browser.plugin2.liveconnect.v1.InvocationDelegate
java.util.ServiceLoader (not sure where this one is loaded from)
META-INF/services/javax.xml.parsers.SAXParserFactory
Here is the all occurences of Class.forName() in the runtime classes:
./decora-d3d/src/com/sun/scenario/effect/impl/hw/d3d/NativeLibLoader.java: Class jnlpAppletLauncherClass = Class.forName("org.jdesktop.applet.util.JNLPAppletLauncher");
./decora-demo/src/decora/demo/DemoApplet.java: Class c = Class.forName(getParameter("demo.classname"));
./decora-j2d/src/com/sun/scenario/effect/impl/j2d/J2DRenderer.java: isJava6 = (Class.forName("java.awt.LinearGradientPaint") != null);
./decora-j2d/src/com/sun/scenario/effect/impl/j2d/J2DRenderer.java: klass = Class.forName(rootPkg + ".impl.j2d.J2D" + name + "Peer");
./decora-j2d/src/com/sun/scenario/effect/impl/j2d/J2DSWRenderer.java: Class klass = Class.forName(rootPkg + ".impl.sw.java.JSWRendererDelegate");
./decora-j2d/src/com/sun/scenario/effect/impl/j2d/J2DSWRenderer.java: Class klass = Class.forName(rootPkg + ".impl.sw.sse.SSERendererDelegate");
./decora-j2d/src/com/sun/scenario/effect/impl/j2d/J2DSWRenderer.java: Class klass = Class.forName(klassName);
./decora-j2d-jogl/src/com/sun/scenario/effect/impl/j2d/jogl/JOGLRenderer.java: Class klass = Class.forName(rootPkg + ".impl.j2d.jogl.JOGL" + name + "Peer");
./decora-j2d-rsl/src/com/sun/scenario/effect/impl/j2d/rsl/RSLRenderer.java: Class klass = Class.forName("com.sun.opengl.impl.Java2D");
./decora-j2d-rsl/src/com/sun/scenario/effect/impl/j2d/rsl/RSLRenderer.java: Class klass = Class.forName(prefix + "RendererDelegate");
./decora-j2d-rsl/src/com/sun/scenario/effect/impl/j2d/rsl/RSLRenderer.java: klass = Class.forName(prefix + "RendererDelegate");
./decora-j2d-rsl/src/com/sun/scenario/effect/impl/j2d/rsl/RSLRenderer.java: Class klass = Class.forName("sun.java2d.d3d.D3DSurfaceData");
./decora-j2d-rsl/src/com/sun/scenario/effect/impl/j2d/rsl/RSLRenderer.java: Class klass = Class.forName(rootPkg + ".impl.j2d.rsl.RSL" + name + "Peer");
./decora-prism/src/com/sun/scenario/effect/impl/prism/PrRenderer.java: Class klass = Class.forName(rootPkg + ".impl.prism.Pr" + name + "Peer");
./decora-prism/src/com/sun/scenario/effect/impl/prism/PrRenderer.java: klass = Class.forName(name);
./decora-runtime/src/com/sun/scenario/effect/impl/Renderer.java: Class.forName(rootPkg + ".impl.prism.PrRenderer");
./decora-runtime/src/com/sun/scenario/effect/impl/Renderer.java: Class klass = Class.forName(rootPkg + ".impl.j2d.rsl.RSLRenderer");
./decora-runtime/src/com/sun/scenario/effect/impl/Renderer.java: Class klass = Class.forName(rootPkg + ".impl.j2d.jogl.JOGLRenderer");
./decora-runtime/src/com/sun/scenario/effect/impl/Renderer.java: Class klass = Class.forName(rootPkg + ".impl.prism.PrRenderer");
./decora-runtime/src/com/sun/scenario/effect/impl/Renderer.java: Class klass = Class.forName(rootPkg + ".impl.j2d.J2DSWRenderer");
./decora-runtime/src/com/sun/scenario/effect/impl/Renderer.java: Class klass = Class.forName(rootPkg + ".impl.j2d.J2DSWRenderer");
./decora-sse/src/com/sun/scenario/effect/impl/sw/sse/NativeLibLoader.java: Class jnlpAppletLauncherClass = Class.forName("org.jdesktop.applet.util.JNLPAppletLauncher");
./eula/build/gensrc/com/sun/javafx/eula/EulaImpl.java: Class.forName("javax.jnlp.BasicService");
./eula/build/gensrc/com/sun/javafx/eula/EulaImpl.java: Class klass = Class.forName("org.jdesktop.applet.util.JNLPAppletLauncher");
./eula/build/gensrc/com/sun/javafx/eula/NativeLibLoader.java: Class jnlpAppletLauncherClass = Class.forName("org.jdesktop.applet.util.JNLPAppletLauncher");
./eula/src/com/sun/javafx/eula/EulaImpl.java: Class.forName("javax.jnlp.BasicService");
./eula/src/com/sun/javafx/eula/EulaImpl.java: Class klass = Class.forName("org.jdesktop.applet.util.JNLPAppletLauncher");
./eula/src/com/sun/javafx/eula/NativeLibLoader.java: Class jnlpAppletLauncherClass = Class.forName("org.jdesktop.applet.util.JNLPAppletLauncher");
./javafx-anim/src/com/sun/scenario/Settings.java: Class mt = Class.forName("com.sun.scenario.animation.MasterTimer");
./javafx-iio-macosx/src/com/sun/javafx/iio/NativeLibLoader.java: Class jnlpAppletLauncherClass = Class.forName("org.jdesktop.applet.util.JNLPAppletLauncher");
./javafx-sg-swing/src/com/sun/embeddedswing/EmbeddedEventQueue.java: Class.forName("java.util.concurrent.Callable");
./javafx-sg-swing/src/com/sun/embeddedswing/EmbeddedEventQueue.java: Class.forName("com.sun.java.swing.SwingUtilities3");
./javafx-sg-swing/src/com/sun/embeddedswing/EmbeddedPeer.java: Class.forName("java.awt.print.PrinterGraphics");
./javafx-sg-swing/src/com/sun/embeddedswing/SwingGlueLayer.java: repaintManagerClass = Class.forName("javax.swing.RepaintManager");
./javafx-sg-swing/src/com/sun/embeddedswing/SwingGlueLayer.java: Class.forName("com.sun.java.swing.SwingUtilities3");
./javafx-sg-swing/src/com/sun/scenario/scenegraph/JSGPanel.java: tmpClass = Class.forName("com.sun.java.swing.SwingUtilities3");
./javafx-sg-swing/src/com/sun/scenario/scenegraph/SGText.java: return Class.forName("sun.java2d.SunGraphics2D");
./javafx-sg-swing/src/com/sun/scenario/scenegraph/SGText.java: return Class.forName("sun.java2d.SurfaceData");
./javafx-ui-common/src/com/sun/javafx/perf/PerformanceTrackerImpl.java: Class plc = Class.forName("sun.misc.PerformanceLogger");
./javafx-ui-common/src/com/sun/javafx/runtime/provider/GUIRuntimeProvider.java: Class.forName("com.sun.javafx.runtime.DefaultSystemProperties");
./javafx-ui-common/src/com/sun/javafx/runtime/provider/GUIRuntimeProvider.java: Object toolkit = Class.forName("com.sun.javafx.tk.Toolkit").getMethod("getToolkit").invoke(null);
./javafx-ui-common/src/com/sun/javafx/runtime/provider/GUIRuntimeProvider.java: Object toolkit = Class.forName("com.sun.javafx.tk.Toolkit").getMethod("getToolkit").invoke(null);
./javafx-ui-common/src/com/sun/javafx/runtime/provider/GUIRuntimeProvider.java: Object toolkit = Class.forName("com.sun.javafx.tk.Toolkit").getMethod("getToolkit").invoke(null);
./javafx-ui-common/src/com/sun/stylesheet/PropertyManager.java:// Class.forName("org.jdesktop.animation.timing.Animator");
./javafx-ui-common/src/com/sun/stylesheet/javafx/ObjectLiteralConverter.java: return Class.forName(s + className);
./javafx-ui-common/src/com/sun/stylesheet/types/PrimitiveConverter.java: return Class.forName(s + className);
./javafx-ui-desktop/src/com/sun/javafx/svgpath/util/io/Messages.java: return Class.forName(s);
./javafx-ui-desktop/src/com/sun/javafx/tk/desktop/AWTFontUtils.java: Class.forName("sun.font.FontDesignMetrics");
./javafx-ui-desktop/src/com/sun/javafx/tk/desktop/AWTFontUtils.java: fontMgrCls = Class.forName("sun.font.FontUtilities");
./javafx-ui-desktop/src/com/sun/javafx/tk/desktop/AWTFontUtils.java: fontMgrCls = Class.forName("sun.font.FontManager");
./javafx-ui-desktop/src/com/sun/javafx/tk/desktop/AWTImageLoader.java: klass = Class.forName("com.sun.javafx.iio.NativeImageLoader");
./javafx-ui-desktop/src/com/sun/javafx/tk/desktop/JUtil.java: Class clazz = Class.forName("java.awt.LinearGradientPaint");
./javafx-ui-desktop/src/com/sun/javafx/util/CrossDomainXML.java: desktopConnectionClass = Class.forName("com.sun.javafx.io.http.desktop.DesktopConnection");
./javafx-ui-desktop/src/com/sun/javafx/util/Platform.java: Class.forName("com.sun.deploy.net.CrossDomainXML");
./javafx-ui-swing/src/com/sun/javafx/tk/swing/FullScreenManager.java: Class c = Class.forName("sun.awt.AWTAccessor");
./javafx-ui-swing/src/com/sun/javafx/tk/swing/Gradients.java: Class.forName("java.awt.MultipleGradientPaint");
./javafx-ui-swing/src/com/sun/javafx/tk/swing/Gradients.java: cycleMethod = Class.forName("java.awt.MultipleGradientPaint$CycleMethod");
./javafx-ui-swing/src/com/sun/javafx/tk/swing/Gradients.java: Class cls = Class.forName("java.awt.LinearGradientPaint");
./javafx-ui-swing/src/com/sun/javafx/tk/swing/Gradients.java: cycleMethod = Class.forName("java.awt.MultipleGradientPaint$CycleMethod");
./javafx-ui-swing/src/com/sun/javafx/tk/swing/Gradients.java: Class cls = Class.forName("java.awt.RadialGradientPaint");
./javafx-ui-swing/src/com/sun/javafx/tk/swing/WindowImpl.java: c = Class.forName("com.sun.awt.AWTUtilities");
./javafx-ui-swing/src/com/sun/javafx/tk/swing/WindowImpl.java: c = Class.forName("com.sun.awt.AWTUtilities");
./javafx-ui-swing/src/com/sun/javafx/tk/swing/WindowImpl.java: Class c = Class.forName("com.sun.awt.AWTUtilities");
./prism-common/src/com/sun/prism/GraphicsPipeline.java: Class klass = Class.forName("com.sun.prism.d3d.D3DPipeline");
./prism-common/src/com/sun/prism/GraphicsPipeline.java: Class klass = Class.forName("com.sun.prism.es2.ES2Pipeline");
./prism-common/src/com/sun/prism/tk/PrismToolkitImpl.java: Class klass = Class.forName(className);
./prism-d3d/src/com/sun/prism/d3d/D3DResourceFactory.java: Class klass = Class.forName("com.sun.prism.shader." + name + "_Loader");
./prism-d3d/src/com/sun/prism/d3d/NativeLibLoader.java: Class jnlpAppletLauncherClass = Class.forName("org.jdesktop.applet.util.JNLPAppletLauncher");
./prism-es2/src/com/sun/prism/es2/ES2ResourceFactory.java: Class klass = Class.forName("com.sun.prism.shader." + name + "_Loader");
./javafx-ui-common/src/com/sun/javafx/tk/Toolkit.fx: TOOLKIT = Class.forName(java.lang.System.getProperty("javafx.toolkit")).newInstance() as Toolkit;
./javafx-ui-common/src/com/sun/javafx/tk/Toolkit.fx: TOOLKIT = Class.forName("com.sun.javafx.tk.swing.SwingToolkit").newInstance() as Toolkit;
./javafx-ui-common/src/com/sun/stylesheet/javafx/FXObjectStyleSupport.fx: Class cls = Class.forName(type);
./javafx-ui-controls/src/com/sun/javafx/scene/control/caspian/Utils.fx: Class.forName("sun.font.FontDesignMetrics");
./javafx-ui-desktop/src/com/sun/javafx/tk/desktop/AWTFontLoader.fx: var ta = Class.forName("java.awt.font.TextAttribute");
./javafx-ui-prism/src/com/sun/javafx/tk/prism/PrismFontLoader.fx: var ta = Class.forName("java.awt.font.TextAttribute");
./javafx-ui-swing/src/com/sun/javafx/runtime/adapter/AppletStartupRoutine.fx: var stageClass:Class = Class.forName(stageClassName);
./javafx-ui-swing/src/com/sun/javafx/tk/swing/SwingToolkit.fx: java.lang.Class.forName("java.awt.Dialog$ModalityType");
./javafx-ui-swing/src/com/sun/javafx/tk/swing/SwingToolkit.fx: var eula = Class.forName("com.sun.javafx.eula.EulaImpl").newInstance() as Eula;