4 削除されたAPI

この項では、JDK 11からJDK 26までの各リリースで削除されたJava SE APIについて詳しく説明します。

jdeprscan --release 26 -l --for-removalを実行して、JDK 26で削除対象としてマークされているAPIのリストを取得します。

ノート:

jdeprscanツールは、JDK 9以降で使用可能です。以前のJDKバージョンから非推奨APIのリストを印刷する場合は、リリース番号を対応するリリース・バージョンに置き換えます。

Java SE 26で削除されたAPIおよび非推奨になったAPI

削除されたAPI

JDK 26では、次のAPIが削除されました:

パッケージ

java.applet

インタフェース

java.applet.AppletContext
java.applet.AppletStub
java.applet.AudioClip
java.beans.AppletInitializer 

クラス

java.applet.Applet
javax.swing.JApplet 

メソッド

java.beans.Beans.instantiate(ClassLoader,String,BeanContext,AppletInitializer)
java.lang.Thread.stop
java.net.DatagramSocketImpl.getTTL
java.net.DatagramSocketImpl.setTTL
java.net.MulticastSocket.getTTL
java.net.MulticastSocket.send
java.net.MulticastSocket.setTTL
javax.imageio.spi.ServiceRegistry.finalize
javax.imageio.stream.FileCacheImageInputStream.finalize
javax.imageio.stream.FileImageInputStream.finalize
javax.imageio.stream.FileImageOutputStream.finalize
javax.imageio.stream.ImageInputStreamImpl.finalize
javax.imageio.stream.MemoryCacheImageInputStream.finalize
javax.management.modelmbean.DescriptorSupport.toXMLString
javax.swing.RepaintManager.addDirtyRegion

例外

javax.management.modelmbean.XMLParseException

コンストラクタ

javax.management.modelmbean.DescriptorSupport.<init>()

削除が提案されているAPI

次のAPIは、将来のJDKリリースでの削除が提案されています:

パッケージ

java.beans.beancontext

インタフェース

java.beans.beancontext.BeanContext
java.beans.beancontext.BeanContextChild
java.beans.beancontext.BeanContextChildComponentProxy
java.beans.beancontext.BeanContextContainerProxy
java.beans.beancontext.BeanContextMembershipListener
java.beans.beancontext.BeanContextProxy
java.beans.beancontext.BeanContextServiceProvider
java.beans.beancontext.BeanContextServiceProviderBeanInfo
java.beans.beancontext.BeanContextServiceRevokedListener
java.beans.beancontext.BeanContextServices
java.beans.beancontext.BeanContextServicesListener
java.security.Certificate
java.security.DomainCombiner
java.security.Policy.Parameters

クラス

java.awt.AWTPermission 
java.beans.beancontext.BeanContextChildSupport 
java.beans.beancontext.BeanContextEvent 
java.beans.beancontext.BeanContextMembershipEvent 
java.beans.beancontext.BeanContextServiceAvailableEvent 
java.beans.beancontext.BeanContextServiceRevokedEvent 
java.beans.beancontext.BeanContextServicesSupport 
java.beans.beancontext.BeanContextSupport 
java.io.FilePermission 
java.io.SerializablePermission 
java.lang.RuntimePermission 
java.lang.SecurityManager 
java.lang.management.ManagementPermission 
java.lang.reflect.ReflectPermission 
java.net.NetPermission 
java.net.URLPermission 
java.nio.file.LinkPermission 
java.rmi.RMISecurityManager 
java.security.AccessControlContext 
java.security.AccessController 
java.security.Identity 
java.security.IdentityScope 
java.security.Policy 
java.security.PolicySpi 
java.security.SecurityPermission 
java.security.Signer 
java.security.UnresolvedPermission 
java.util.PropertyPermission 
java.util.logging.LoggingPermission 
javax.management.MBeanPermission 
javax.management.MBeanServerPermission 
javax.management.MBeanTrustPermission 
javax.management.remote.SubjectDelegationPermission 
javax.net.ssl.SSLPermission 
javax.security.auth.AuthPermission 
javax.security.auth.PrivateCredentialPermission 
javax.security.auth.SubjectDomainCombiner 
javax.security.auth.kerberos.DelegationPermission 
javax.security.cert.Certificate 
javax.security.cert.X509Certificate 
javax.security.auth.kerberos.ServicePermission 
javax.sound.sampled.AudioPermission 
javax.swing.plaf.basic.BasicMenuItemUI.MouseInputHandler 
javax.swing.plaf.basic.BasicScrollPaneUI.HSBChangeListener 
javax.swing.plaf.basic.BasicScrollPaneUI.PropertyChangeHandler 
javax.swing.plaf.basic.BasicScrollPaneUI.ViewportChangeHandler 
javax.swing.plaf.basic.BasicScrollPaneUI.VSBChangeListener 
java.net.SocketPermission
java.sql.SQLPermission

例外

java.lang.ThreadDeath
java.security.AccessControlException 
java.util.zip.ZipError 
javax.security.cert.CertificateEncodingException 
javax.security.cert.CertificateException 
javax.security.cert.CertificateExpiredException 
javax.security.cert.CertificateNotYetValidException 
javax.security.cert.CertificateParsingException 

メソッド

java.awt.Graphics.finalize 
java.awt.PrintJob.finalize 
java.awt.Window.getWarningString 
java.beans.Beans.instantiate(ClassLoader,String,BeanContext) 
java.io.ObjectOutputStream.PutField.write 
java.lang.Enum.finalize 
java.lang.Object.finalize 
java.lang.Runtime.runFinalization 
java.lang.System.getSecurityManager 
java.lang.System.runFinalization 
java.lang.System.setSecurityManager 
java.lang.Thread.checkAccess 
java.lang.ThreadGroup.checkAccess 
java.lang.ThreadGroup.destroy 
java.lang.ThreadGroup.isDaemon 
java.lang.ThreadGroup.isDestroyed 
java.lang.ThreadGroup.setDaemon 
java.net.HttpURLConnection.getPermission 
java.net.URLConnection.getPermission 
java.util.concurrent.Executors.privilegedCallable 
java.util.concurrent.Executors.privilegedCallableUsingCurrentClassLoader 
java.util.concurrent.Executors.privilegedThreadFactory 
java.util.concurrent.ThreadPoolExecutor.finalize 
java.util.logging.LogManager.checkAccess 
javax.management.remote.JMXConnector.getMBeanServerConnection 
javax.net.ssl.HandshakeCompletedEvent.getPeerCertificateChain 
javax.net.ssl.SSLSession.getPeerCertificateChain 
javax.security.auth.Subject.doAs(Subject,PrivilegedAction) 
javax.security.auth.Subject.doAs(Subject,PrivilegedExceptionAction) 
javax.security.auth.Subject.doAsPrivileged(Subject,PrivilegedAction,AccessControlContext) 
javax.security.auth.Subject.doAsPrivileged(Subject,PrivilegedExceptionAction,AccessControlContext) 
javax.security.auth.Subject.getSubject 
javax.swing.JInternalFrame.getWarningString 
javax.swing.plaf.basic.BasicDirectoryModel.intervalAdded 
javax.swing.plaf.basic.BasicDirectoryModel.intervalRemoved 
javax.swing.plaf.basic.BasicDirectoryModel.lt 
javax.swing.plaf.basic.BasicToolBarUI.createFloatingFrame 
java.lang.classfile.Signature.ClassTypeSig.of
java.net.ServerSocket.setPerformancePreferences
java.net.Socket.setPerformancePreferences
java.net.SocketImpl.setPerformancePreferences
 

コンストラクタ

java.net.Socket.<init>(InetAddress,int,Boolean)
java.net.Socket.<init>(String,int,Boolean)
javax.management.relation.RoleStatus.<init>()

潜在的な代替手段など、非推奨の詳細は、非推奨のAPIの項を参照してください。

Java SE 25で削除されたAPI

メソッド

javax.swing.plaf.synth.SynthLookAndFeel.load 

コンストラクタ

javax.swing.plaf.basic.BasicSliderUI.BasicSliderUI.<init>()

Java SE 24で削除されたAPI

フィールド

java.awt.Window.warningString 
javax.naming.Context.APPLET

Java SE 23で削除されたAPI

クラス

javax.management.loading.MLet
javax.management.loading.MLetContent
javax.management.loading.MLetMBean
javax.management.loading.PrivateMLet

メソッド

java.lang.Thread.resume
java.lang.Thread.suspend
java.lang.ThreadGroup.resume
java.lang.ThreadGroup.stop
java.lang.ThreadGroup.suspend

Java SE 22で削除されたAPI

メソッド

java.lang.Thread.countStackFrames

Java SE 21で削除されたAPI

クラス

java.lang.Compiler
javax.management.remote.rmi.RMIIIOPServerImpl

メソッド

java.lang.ThreadGroup.allowThreadSuspension(boolean)

Java SE 20で削除されたAPI

このリリースで削除されたAPIはありません。

Java SE 19で削除されたAPI

このリリースで削除されたAPIはありません。

Java SE 18で削除されたAPI

メソッド

 
          java.awt.color.ICC_Profile.finalize()
          java.awt.image.ColorModel.finalize()
          java.awt.image.IndexColorModel.finalize()
           

Java SE 17で削除されたAPI

パッケージ

java.rmi.activation ()          

クラス


          java.rmi.activation.Activatable () 
          java.rmi.activation.ActivationDesc () 
          java.rmi.activation.ActivationGroup () 
          java.rmi.activation.ActivationGroup_Stub () 
          java.rmi.activation.ActivationGroupDesc () 
          java.rmi.activation.ActivationGroupID () 
          java.rmi.activation.ActivationID () 
          java.rmi.activation.ActivationInstantiator () 
          java.rmi.activation.ActivationMonitor () 
          java.rmi.activation.ActivationSystem () 
          java.rmi.activation.Activator () 

Java SE 16で削除されたAPI

コンストラクタ

javax.tools.ToolProvider.<init>()          

Java SE 15で削除されたAPI

次のAPIはJava SE 15で削除されました。

フィールド

java.management.rmi.RMIConnectorServer.CREDENTIAL_TYPES      

コンストラクタ

java.lang.invoke.ConstantBootstraps.<init> 
    java.lang.reflect.Modifier.<init>          

Java SE 14で削除されたAPI

次のAPIはJava SE 14で削除されました。

パッケージ
java.security.acl      

インタフェース

java.security.acl.Acl
java.security.acl.AclEntry
java.security.acl.Group
java.security.acl.Owner
java.security.acl.Permission
java.util.jar.Pack200.Packer    
java.util.jar.Pack200.Unpacker            
クラス
java.util.jar.Pack200      

Java SE 13で削除されたAPI

Java SE 13では、次のAPIが削除されました。これら両方のAPIは非推奨であり、JDK 9で削除対象としてマークされています。どちらもJVM固有のトレース・メカニズムによって置き換えられています。JVMTMツール・インタフェース仕様を参照してください

java.lang.Runtime.traceInstructions(boolean)      
java.lang.Runtime.traceMethodCalls(boolean)

Java SE 12で削除されたAPI

Java SE 12では、次のAPIが削除されました。

            java.io.FileInputStream.finalize()      
            java.io.FileOutputStream.finalize()       
            java.util.zip.Deflater.finalize()       
            java.util.zip.Inflater.finalize()      
            java.util.zip.ZipFile.finalize()      

JDK 11で削除されたAPI

JDK 11では、次のAPIが削除されました。これらのAPIの多くは以前のリリースで非推奨となり、新しいAPIで置き換えられています。

javax.security.auth.Policy 
java.lang.Runtime.runFinalizersOnExit(boolean)
java.lang.SecurityManager.checkAwtEventQueueAccess() 
java.lang.SecurityManager.checkMemberAccess(java.lang.Class,int)
java.lang.SecurityManager.checkSystemClipboardAccess()
java.lang.SecurityManager.checkTopLevelWindow(java.lang.Object)
java.lang.System.runFinalizersOnExit(boolean)
java.lang.Thread.destroy()
java.lang.Thread.stop(java.lang.Throwable)

JDK 10で削除されたAPI

JDK 10では、次の共通DOM APIが削除されました。

com.sun.java.browser.plugin2.DOM
sun.plugin.dom.DOMObject

JDK 9で削除されたAPI

JDK 10およびJDK 9リリースから削除された重要なAPIの一部を次に示します。

java.* APIの削除

Javaチームは下位互換性にコミットしています。アプリケーションがJDK 8で動作する場合、外部使用を意図したサポートされているAPIを使用しているかぎり、JDK 9以降のリリースでも動作します。

これには、次のものが含まれます:

  • JCP標準、java.*javax.*
  • JDK固有のAPI、一部のcom.sun.*、一部のjdk.*

サポートされていたAPIがJDKから削除されることもありますが、必ず予告があります。コードが非推奨のAPIを使用しているかどうかを確認するには、静的分析ツールjdeprscanを実行します。

JDK 9で削除されたjava.* APIには、以前に非推奨となった、java.util.logging.LogManagerおよびjava.util.jar.Pack200パッケージの次のメソッドが含まれます。

java.util.logging.LogManager.addPropertyChangeListener
java.util.logging.LogManager.removePropertyChangeListener
java.util.jar.Pack200.Packer.addPropertyChangeListener
java.util.jar.Pack200.Packer.removePropertyChangeListener
java.util.jar.Pack200.Unpacker.addPropertyChangeListener
java.util.jar.Pack200.Unpacker.removePropertyChangeListener

sun.miscおよびsun.reflect APIからの削除および削除予定

java.* APIとは異なり、ほとんどすべてのsun.* APIはサポートされていないJDK内部APIであり、いつでもなくなる可能性があります。

一部のsun.* APIがJDK 9で削除されました。注意が必要な点として、sun.misc.BASE64Encoderおよびsun.misc.BASE64Decoderが削除されています。かわりに、JDK 8で追加された、サポートされているjava.util.Base64クラスを使用してください。

これらのAPIを使用している場合、サポートされている代替機能に移行することを考慮してください。
  • sun.misc.Unsafe

    このクラスの多くのメソッドの機能は変数ハンドルを使用することで実現できます。『JEP 193: Variable Handles』を参照してください。

  • sun.reflect.Reflection::getCallerClass(int)

    かわりにスタックウォーキングAPIを使用します。『JEP 259: Stack-Walking API』を参照してください。

『JEP 260: Encapsulate Most Internal APIs』を参照してください。

java.awt.peerはアクセス不可

java.awt.peerおよびjava.awt.dnd.peerパッケージはJDK 9以降ではアクセスできません。このパッケージはjava.*ネームスペースにありますが、Java SE APIの一部であったことはありません。

これらのパッケージで定義されている型を参照するJava SE APIのすべてのメソッドが、JDK 9から削除されています。これらのパッケージで定義された型をこれまで受け付けたり返していたメソッドを呼び出すコードは、コンパイルや実行ができなくなりました。

java.awt.peerクラスの一般的な使用方法は2種類です。これらは次のように修正してください。
  • ピアがまだ設定されているかどうかを調べるには:
    if (component.getPeer() != null) { .. }
    これをJDK 1.1 APIのComponent.isDisplayable()で置き換えてください。
    public boolean isDisplayable() {
    	return getPeer() != null;
  • コンポーネントが軽量かどうかをテストするには:
    if (component.getPeer() instanceof LightweightPeer) ..
    これをJDK 1.2 APIのComponent.isLightweight()で置き換えてください。
    public boolean isLightweight() {
    	return getPeer() instanceof LightweightPeer;

com.sun.image.codec.jpegパッケージの削除

非標準パッケージcom.sun.image.codec.jpegは削除されました。かわりにJava Image I/O APIを使用してください。

com.sun.image.codec.jpegパッケージは、JPEG形式のイメージ・ファイルのロードおよび保存を制御する非標準の方法としてJDK 1.2で追加されました。プラットフォーム仕様の一部となったことはありません。

JDK 1.4においてJava Image I/O APIが標準APIとして追加され、これはjavax.imageioパッケージにあります。これは選択されたイメージ形式のロードと保存を制御するための標準メカニズムを提供するもので、Java SE準拠のすべての実装においてJava Image I/O仕様に基づいてJPEGをサポートする必要があります。

コンパクト・プロファイルのツール・サポートの削除

JDK 9以降では、事前定義されたプロファイルに依存することなく、Javaランタイム・イメージ内のモジュールのサブセットに対してアプリケーションをビルドおよび実行できます。

SE 8で導入されたプロファイルは、Java SEプラットフォームAPIのサブセットを定義します。これにより、ストレージ容量が制限されているデバイス上でJavaランタイムの静的サイズを削減できます。JDK 8のツールでは、compact1compact2およびcompact3の3つのプロファイルをサポートしています。各プロファイルのAPI構成については、JDK 8のドキュメントの詳細なプロファイル構成およびAPIリファレンスに関する項を参照してください。

JDK 8では、javacおよびjavaコマンドを実行する際に-profileオプションを使用してプロファイルを指定します。JDK 9以降では、-profileオプションはjavacにおいて--release 8オプションとの組合せでのみサポートされ、javaではサポートされません。

JDK 9以降のリリースでは、コンパイルおよび実行時に使用されるモジュールを選択できます。新しい--limit-modulesオプションでモジュールを指定することで、コンパクト・プロファイル内にある同じAPIを取得できます。このオプションは、次の例に示すとおりjavacコマンドとjavaコマンドの両方でサポートされています。

javac --limit-modules java.base,java.logging MyApp.java
java --limit-modules java.base,java.logging MyApp
Java SE 8の各プロファイルで指定されているパッケージは、次のモジュール・セットにより集合的にエクスポートされます。
  • compact1プロファイル: java.basejava.loggingjava.scripting

  • compact2プロファイル: java.basejava.loggingjava.scriptingjava.rmijava.sqljava.xml

  • compact3プロファイル: java.basejava.loggingjava.scriptingjava.rmijava.sqljava.xmljava.compilerjava.instrumentjava.managementjava.namingjava.prefsjava.security.jgssjava.security.sasljava.sql.rowsetjava.xml.crypto

jdepsツールを使用して、ソース・コードで使用されているJavaパッケージの静的分析を実行できます。これにより、アプリケーションを実行するのに必要なモジュールのセットがわかります。たとえばこれまでcompact3プロファイルを使用していた場合、アプリケーションのビルド時にモジュールのセット全体を含める必要はないことが考えられます。Java Development Kitツール仕様jdepsに関する項を参照してください。

『JEP 200: The Modular JDK』を参照してください。