> From: "Michael P. McCutcheon" <[EMAIL PROTECTED]>
> ... I'm confused about using the com.sun.j3d.*
> classes.  It seems that these are not supported given that the documentation
> says the following:
>
> "In general, writing java programs that rely on sun.* is risky: they are not
> portable, and are not supported."
>
> However, I just bought two books, Java3D API Jump Start, and Essential
> Java3D Fast, and they both reference the com.sun.j3d classes from cover to
> cover.  I have heard that other books are this way as well.

There is a difference between the com.sun.* utilities and the sun.* internal
classes.   The com.sun packages are external and supported, the sun.* packages
are internal and unsupported.

Sun has made the com.sun packages as a supported set of utilities for Java 3D.
While they are not a part of the Java 3D specification (which defines the
essential functionality for Java 3D implementations), the utilities provide
useful functionality and a stable API.  If the utilities are changed or extended
in a future release, the changes will be backwards compatible so that programs
that used the old versions will still work.  For example, Java 3D 1.1 included
utility packages for picking.  Java 3D 1.2 had much improved picking
functionality in a new interface, but the old 1.1 packages are still included
for backwards compatiblity.  Bugs can be filed against the utilities, and the
utilities are part of the standard installation.  For that reason, I considered
the utilities as part of the API for the "Java 3D API Jump-Start".

The sun.* packages are internal implementation classes.  They are included in
the JDK for use by the JDK APIs, but they are not guaranteed to be supported in
future releases.  Typically, the sun.* classes are functionality that is not yet
supported in an offical API.  For example, a common use of the sun.* packages is
for image encoding.  Some of the Java 3D community code for screen capture uses
the sun.* packages to encode screen images into JPG files.  The problem with
unsupported interfaces is exactly as you note:

> "In general, writing java programs that rely on sun.* is risky: they are not
> portable, and are not supported."

A future release of the JDK may change or eliminate these packages.  In the case
of image operators, the better choice is to use the Java Advanced Imaging (JAI),
API which is the supported interface for the image functionality in the sun.*
packages.

Please use the com.sun.* packages.  They are a powerful addition to the API.  If
you find bugs, report them. Try to avoid using the sun.* packages, instead look
for supported APIs like JAI instead.

Doug Gehringer
Sun Microsystems

===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff JAVA3D-INTEREST".  For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".

Reply via email to