JDK-6695848 : Must break compile-time dependencies to enable ports to other operating systems
  • Type: Bug
  • Component: deploy
  • Sub-Component: plugin
  • Affected Version: 6u10
  • Priority: P3
  • Status: Closed
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2008-04-30
  • Updated: 2010-09-08
  • Resolved: 2008-06-16
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
6u10 b24Fixed
In order to increase adoption of the new Java Plug-In, it is essential that it be rapidly ported to as many platforms as possible as quickly as possible. Currently there are certain compile-time dependencies that must be broken in order to achieve better portability of the sources.

SUGGESTED FIX http://sa.sfbay.sun.com/projects/deployment_data/6u10/6695848.2

EVALUATION To facilitate rapid adoption of the new Java Plug-In, it must be easily portable to other operating systems. Currently there are several compile-time and algorithmic depenencies that prevent this. The following changes have therefore been made: - Compile-time dependencies on the old plug-in's AppletViewer and related classes have been removed. - References to the old plug-in's sun.plugin.viewer.context.PluginAppletContext and sun.plugin.viewer.context.PluginBeansContext classes from the BrowserService interface, which is implemented by the new plug-in, have been removed, their types instead raised to java.lang.Object. Downcasts have been introduced at the call sites. These dependencies will go away with the old plug-in anyway, as the concepts are not used in the new plug-in. - The "reload" functionality of the gray box painter's error panel has been factored out to allow separate implementation for the old and new plug-ins. (The current code in the workspace does not work for the case of the new plug-in and has never worked -- this was not noticed until now.) - The code from JarCacheUtil.verifyJarVersions(), which was incorrectly specialized for the old plug-in, has been pulled into the old plug-in's AppletViewer class. - The code in the JVMParameters class which parses and comprehends the boot class path has been changed to look for a specific list of jars rather than try to infer things based on a predefined notion of the default boot class path for the JVM, which is OS- and vendor-specific. - Some errors in the C code for the Unix plug-in port (where C functions did not return values, etc.) have been corrected, as well as an unnecessary dependence in console.c removed. - Some additional performance traces were inserted into Applet2Environment for better diagnosability of initial bringup. - The failure case in MessagePassingExecutionContext.getProxyList() was changed to ease initial porting. - Extraneous debugging printouts were removed. - Error checking was added to the AbstractPlugin.cpp native code to avoid browser crashes in failure situations. - Explicit references to the EmbeddedFrame class in PluginMain have been eschewed in favor of direct references to the new plug-in's PluginEmbeddedFrame concept to allow ports the flexibility of not subclassing sun.awt.EmbeddedFrame.