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.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