Java Dependency Analysis Tool Java Dependency Analysis Tool OpenJDK Wiki (original) (raw)

Unsupported API (not for use)

Supported APIs (please use instead)

Note

core-libs

protected java.lang.ClassLoader::defineClass method

java.lang.invoke.MethodHandles.Lookup::defineClass @since 9

Frameworks may use java.lang.invoke.MethodHandles::privateLookupIn to obtain a Lookup object with the permission to access the private members a target class in a different module if the framework is granted with deep reflection access to the target class.

sun.io

java.nio.charsets @since 1.4

sun.misc.BASE64Decoder, sun.misc.BASE64Encoder,
com.sun.org.apache.xml.internal.security.utils.Base64

java.util.Base64 @since 8

See http://openjdk.java.net/jeps/135

sun.misc.ClassLoaderUtil

java.net.URLClassLoader.close() @since 7

sun.misc.Cleaner

java.lang.ref.PhantomReference @since 1.2

JDK-6417205 may help with the resource issues that can arise when mapped byte buffers are not unmapped in a timely manner. Libraries accessing sun.misc.Cleaner have to be fixed as direct byte buffer no longer uses sun.misc.Cleaner class; instead jdk.internal.misc.Cleaner.

See JDK-6685587 and JDK-4724038

sun.misc.Service

java.util.ServiceLoader @since 1.6

sun.misc.Timer

java.util.Timer @since 1.3

sun.misc.Unsafe

java.lang.invoke.VarHandle since 9

java.lang.invoke.MethodHandles.Lookup::defineClass @since 9

java.lang.invoke.MethodHandles.Lookup::defineHiddenClass @since 15

java.lang.invoke.MethodHandles.Lookup::ensureInitialized @since 15

sun.misc.Unsafe consists of a number of use cases. The following features are identified to provide support in the future releases:

See also

sun.reflect.Reflection.getCallerClass

java.lang.StackWalker::getCallerClass @since 9

See JDK-8043814 (Stack Walking API)

sun.util.calendar.ZoneInfo

java.util.TimeZone or java.time API @since 8

security-libs

sun.security.action.*

java.security.PrivilegedAction to call System.getProperty or other action @since 1.1

AccessController.doPrivileged(
(PrivilegedAction) () -> System.getProperty(key));

sun.security.krb5.*

Some provided in com.sun.security.jgss

javax.security.auth.kerkeros.EncryptionKey @since 1.9

javax.security.auth.kerkeros.KerberosCredMessage @since 1.9

javax.security.auth.kerberos.KerberosTicket.getSessionKey() @since 1.9

If internal classes are used to get the session key of Krb5Context, we now have ExtendedGSSContext for this purpose.

JDK-8043071 resolved in JDK 9 b25

sun.security.util.SecurityConstants

java.lang.RuntimePermission, java.net.NetPermission, or specific Permission class @since 1.1

sun.security.util.HostnameChecker

javax.net.ssl.SSLParameters.setEndpointIdentificationAlgorithm("HTTPS"
or "LDAPS") can be used to enabled hostname checking during handshaking
javax.net.ssl.HttpsURLConnection.setHostnameVerifier() can be
customized hostname verifier rules for URL operations.

See also JDK-7192189 RFE to support the new endpoint identification.

sun.security.x509.*

javax.security.auth.x500.X500Principal @since 1.4

JDK-8056174 defines jdk.security.jarsigner.JarSigner API in JDK 9. This API can also be used to generate self-signed certificates.

com.sun.org.apache.xml.internal.security

javax.xml.crypto @since 1.6

com.sun.net.ssl.**

javax.net.ssl @since 1.4

security provider implementation class such as

java.security.Security.getProvider(NAME) @since 1.3

where NAME is the security provider name such as "SUN", "SunJCE".

In general, you should avoid depending on a specific provider as it may not be available on other Java implementations. See Oracle security providers documentation for more rationale.

sun.security.provider.PolicyFile() or sun.security.provider.PolicyFile(URL)

java.security.Policy.getInstance("JavaPolicy", new java.security.URIParameter(uri)); @since 1.6

client-libs

java.awt.peer and java.awt.dnd.peer

Instead of doing:

if (c.getPeer() != null) { .. }

could be replaced with:

if (c.isDisplayable()) { ... }

To test if a component has a LightweightPeer, use:

public boolean isLightweight() ; @since 1.2

To obtain the color model of the component comes from the peer, instead of doing:

java.awt.peer.* and java.awt.dnd.peer.* types are encapsulated.

API reference to java.awt.peer.* and java.awt.dnd.peer.* types are removed in JDK 9. See JDK-8037739 and awt-dev discussion

com.sun.image.codec.jpeg.**

sun.awt.image.codec

javax.imageio @since 1.4

See JDK-6527962

com.apple.eawt

java.awt.Desktop @since 9

Seehttp://openjdk.java.net/jeps/272

JDBC

com.sun.rowset.**

javax.sql.rowset.RowSetProvider @since 7

JAXP

org.w3c.dom.{html, css, stylesheets}

org.w3c.dom.{html, css, stylesheets} APIs are JDK supported APIs @since 9.

JDK-8042244 resolved in JDK 9 b62

org.w3c.dom.xpath

org.w3c.dom.xpath API is now JDK supported API @since 9

JDK-8042244 resolved in JDK 9 b62

JDK-8054196 for XPath support any API resolved in JDK 9 b49

com.sun.org.apache.xml.internal.resolver.**

javax.xml.catalog @since 9

See JDK-8023732 (XML Catalog API)

org.relaxng.datatype

org.relaxng.** will be repackaged in JDK 9. Users should include the org.relaxng.** types in the classpath.

See JDK-8061466

Others

com.sun.tools.javac.**

javax.tools, javax.lang.model @since 1.6 com.sun.source.* @since 1.6

com.sun.tools.javac.Main is a supported API.

jdk.nashorn.internal.ir.**

JEP 236 Parser API for Nashorn

JDK-8048176 (Nashorn Parser API) resolved in JDK 9 b55