HotJava Applet Compatibility
This page briefly describes the guarantees we give about
upward compatibility --
running applets without recompilation in future releases of
HotJava.
Java Versioning Support
Java
is a late-bound, dynamic language. All methods,
variables, and classes are resolved dynamically the first time
they are used. Instance variables and methods can be added to
classes without recompiling any of the code that uses the class. This makes
Java much less susceptible to API changes than statically linked
languages such as C and C++.
We have been coding in Java since 1991 and the language is stable.
Both the
language specification
and the
binary class specification
are finished and stable. Any extensions of these specifications will be made
so that older classes will be upward compatible.
1.0Alpha1 to 1.0Alpha2 Compatibility
Alpha1 applets are upward compatible with the Alpha2 release of
HotJava. This means that most applets developed and compiled with the
Alpha1 release will run in the Alpha2 browser without recompilation.
Note that we changed the language name from "O.A.K." to "Java",
which has affected some APIs. We have managed to maintain upward
compatibility despite these changes. The interpreter and the class
loader automatically upgrade Alpha1 applets to use the new naming
scheme.
We have also made changes to some APIs. The components exposed to
Alpha1 applets have remained stable so that simple applets compiled
for the Alpha1 release continue to work in the Alpha3 browser.
1.0Alpha2 to 1.0Alpha3 Compatibility
Both Alpha1 and Alpha2 applets are upward compatible with the Alpha3
release of HotJava.
This means that most applets developed and compiled with the
Alpha1 or Alpha2 release will run in the Alpha3 browser without recompilation.
Many Alpha3 applets are downward compatible with the Alpha2 release of HotJava.
However, your applet won't run under Alpha2 if it uses classes or methods
that were added in Alpha3.
In particular, applets that rely on double-buffering won't run under Alpha2.
The Changes Since the Last Release
document describes how to write code that uses double-buffering if it's
available, but also works when double-buffering isn't available.
1.0Alpha3 to Beta Compatibility
We are committed to keeping the impact of API changes to a
minimum. However, we do NOT guarantee complete upward
compatibility between the Alpha3 and Beta releases. We reserve
the right to make changes that will break upward compatibility.
We hope to make some major improvements and simplifications to
the HotJava APIs in the Beta release. This will unfortunately
mean that some or all Alpha3 applets will not run in the Beta release browser
without recompilation.
This is the bottom line with regards to upward compatibility
of Alpha3 applets:
- Very simple Alpha3 applets may continue to
work in the Beta release.
- Most Alpha3 applets will have to be recompiled to
work with the Beta release.
- Some APIs used by Alpha3 applets will be extended and some
code modifications will be required.
- Alpha1 applets will have to be recompiled
and are likely to require code modifications.
There are certain things that you should avoid when
writing Applets.
Please stick to the APIs defined in the
Applet
class. Don't assume that the Applet's
item
field will be available in future releases.
Don't rely on APIs that are not documented.
Anticipated Changes Between 1.0Alpha3 and Beta
We intend to implement a model-view architecture that will allow the
same page to be visible in more than one window. Simple applets won't
be affected; they will simply be asked to paint once in each window in
which they are visible.
The applet API will be extended to allow applets to use the
model-view architecture. Applets will be able to have a "view" part as
well as a "model" part. Alpha3 applets are equivalent to the "model"
part of Beta applets.
The
AWT
(Abstract Window Toolkit) will be greatly
improved. The graphics API will be extended, the interface to image
manipulation will be improved, more components will be added, etc.
The APIs for
audio
are likely to change. They
will be updated to support more than one audio format.
This list is by no means complete. We hope to extend and improve the
HotJava functionality in many ways that won't affect applets
directly.
Upward Compatibility After the Beta Release
We are fully committed to supporting the Beta release applet APIs
indefinitely. We realize that the stability of the APIs in a widely
distributed system like HotJava is of crucial importance to its
success.
Send your comments or questions to java@java.sun.com