# Public API removed/added/changed between JDK 26 and 27 (javap -public of every exported class; internal packages skipped) ## public classes removed java.security.DEREncodable java.util.concurrent.StructuredTaskScope$FailedException java.util.concurrent.StructuredTaskScope$TimeoutException ## public classes added com.sun.source.tree.VarTypeTree java.security.BinaryEncodable java.time.format.DateTimeFormatterPatternProvider java.util.concurrent.StructuredTaskScope$CancelledByTimeoutException javax.crypto.CryptoException ## public class changes com.sun.source.tree.Tree$Kind + public static final com.sun.source.tree.Tree$Kind VAR_TYPE; com.sun.source.tree.TreeVisitor + public abstract R visitVarType(com.sun.source.tree.VarTypeTree, P); com.sun.source.util.DocSourcePositions - public abstract long getEndPosition(com.sun.source.tree.CompilationUnitTree, com.sun.source.doctree.DocCommentTree, com.sun.source.doctree.DocTree); - public abstract long getStartPosition(com.sun.source.tree.CompilationUnitTree, com.sun.source.doctree.DocCommentTree, com.sun.source.doctree.DocTree); + public abstract long getEndPosition(com.sun.source.doctree.DocCommentTree, com.sun.source.doctree.DocTree); + public abstract long getStartPosition(com.sun.source.doctree.DocCommentTree, com.sun.source.doctree.DocTree); + public default long getEndPosition(com.sun.source.tree.CompilationUnitTree, com.sun.source.doctree.DocCommentTree, com.sun.source.doctree.DocTree); + public default long getStartPosition(com.sun.source.tree.CompilationUnitTree, com.sun.source.doctree.DocCommentTree, com.sun.source.doctree.DocTree); com.sun.source.util.SimpleTreeVisitor + public R visitVarType(com.sun.source.tree.VarTypeTree, P); com.sun.source.util.SourcePositions - public abstract long getEndPosition(com.sun.source.tree.CompilationUnitTree, com.sun.source.tree.Tree); - public abstract long getStartPosition(com.sun.source.tree.CompilationUnitTree, com.sun.source.tree.Tree); + public abstract long getEndPosition(com.sun.source.tree.Tree); + public abstract long getStartPosition(com.sun.source.tree.Tree); + public default long getEndPosition(com.sun.source.tree.CompilationUnitTree, com.sun.source.tree.Tree); + public default long getStartPosition(com.sun.source.tree.CompilationUnitTree, com.sun.source.tree.Tree); com.sun.source.util.TreeScanner + public R visitVarType(com.sun.source.tree.VarTypeTree, P); java.awt.KeyboardFocusManager - public static java.awt.KeyboardFocusManager getCurrentKeyboardFocusManager(); + public static synchronized java.awt.KeyboardFocusManager getCurrentKeyboardFocusManager(); java.awt.geom.Arc2D + public java.awt.Rectangle getBounds(); java.lang.LazyConstant - public abstract T orElse(T); - public abstract boolean isInitialized(); java.lang.Math + public static double acosh(double); + public static double asinh(double); + public static double atanh(double); java.lang.StrictMath + public static double acosh(double); + public static double asinh(double); + public static double atanh(double); java.lang.String + public int encodedLength(java.nio.charset.Charset); java.lang.classfile.ClassFile + public static final int JAVA_27_VERSION; java.lang.classfile.instruction.IncrementInstruction + public static java.lang.classfile.instruction.IncrementInstruction of(java.lang.classfile.Opcode, int, int); java.lang.foreign.MemorySegment + public abstract java.lang.String getString(long, java.nio.charset.Charset, long); + public static long copy(java.lang.String, java.nio.charset.Charset, int, java.lang.foreign.MemorySegment, long, int); java.lang.foreign.SegmentAllocator + public default java.lang.foreign.MemorySegment allocateFrom(java.lang.String, java.nio.charset.Charset, int, int); java.lang.reflect.ClassFileFormatVersion + public static final java.lang.reflect.ClassFileFormatVersion RELEASE_27; java.lang.reflect.Executable - public abstract java.lang.String toGenericString(); + public java.lang.String toGenericString(); java.math.BigDecimal + public java.math.BigDecimal rootn(int, java.math.MathContext); java.security.AsymmetricKey - public interface java.security.AsymmetricKey extends java.security.Key,java.security.DEREncodable { + public interface java.security.AsymmetricKey extends java.security.Key,java.security.BinaryEncodable { java.security.KeyPair - public final class java.security.KeyPair implements java.io.Serializable,java.security.DEREncodable { + public final class java.security.KeyPair implements java.io.Serializable,java.security.BinaryEncodable { java.security.KeyStore + public final java.time.Instant getCreationInstant(java.lang.String) throws java.security.KeyStoreException; java.security.KeyStoreSpi + public java.time.Instant engineGetCreationInstant(java.lang.String); java.security.PEM - public final class java.security.PEM extends java.lang.Record implements java.security.DEREncodable { + public final class java.security.PEM implements java.security.BinaryEncodable { - public final boolean equals(java.lang.Object); - public final byte[] decode(); - public final int hashCode(); - public final java.lang.String toString(); - public java.lang.String content(); + public byte[] content(); + public byte[] decode(); + public java.lang.String toString(); + public java.security.PEM(java.lang.String, byte[]); + public java.security.PEM(java.lang.String, byte[], byte[]); java.security.PEMDecoder - public S decode(java.io.InputStream, java.lang.Class) throws java.io.IOException; - public S decode(java.lang.String, java.lang.Class); - public java.security.DEREncodable decode(java.io.InputStream) throws java.io.IOException; - public java.security.DEREncodable decode(java.lang.String); - public java.security.PEMDecoder withFactory(java.security.Provider); + public S decode(java.io.InputStream, java.lang.Class) throws java.io.IOException; + public S decode(java.lang.String, java.lang.Class); + public java.security.BinaryEncodable decode(java.io.InputStream) throws java.io.IOException; + public java.security.BinaryEncodable decode(java.lang.String); + public java.security.PEMDecoder withFactoriesOf(java.security.Provider); java.security.PEMEncoder - public byte[] encode(java.security.DEREncodable); - public java.lang.String encodeToString(java.security.DEREncodable); + public byte[] encode(java.security.BinaryEncodable); + public java.lang.String encodeToString(java.security.BinaryEncodable); java.security.cert.X509CRL - public abstract class java.security.cert.X509CRL extends java.security.cert.CRL implements java.security.cert.X509Extension,java.security.DEREncodable { + public abstract class java.security.cert.X509CRL extends java.security.cert.CRL implements java.security.cert.X509Extension,java.security.BinaryEncodable { java.security.cert.X509Certificate - public abstract class java.security.cert.X509Certificate extends java.security.cert.Certificate implements java.security.cert.X509Extension,java.security.DEREncodable { + public abstract class java.security.cert.X509Certificate extends java.security.cert.Certificate implements java.security.cert.X509Extension,java.security.BinaryEncodable { java.security.spec.PKCS8EncodedKeySpec - public class java.security.spec.PKCS8EncodedKeySpec extends java.security.spec.EncodedKeySpec implements java.security.DEREncodable { + public class java.security.spec.PKCS8EncodedKeySpec extends java.security.spec.EncodedKeySpec implements java.security.BinaryEncodable { java.security.spec.X509EncodedKeySpec - public class java.security.spec.X509EncodedKeySpec extends java.security.spec.EncodedKeySpec implements java.security.DEREncodable { + public class java.security.spec.X509EncodedKeySpec extends java.security.spec.EncodedKeySpec implements java.security.BinaryEncodable { java.util.EnumSet + public java.util.Spliterator spliterator(); java.util.Locale - public final java.lang.String getDisplayCountry(); - public final java.lang.String getDisplayLanguage(); - public final java.lang.String getDisplayName(); - public final java.lang.String getDisplayVariant(); + public java.lang.String getDisplayCountry(); + public java.lang.String getDisplayLanguage(); + public java.lang.String getDisplayName(); + public java.lang.String getDisplayVariant(); java.util.Set + public static java.util.Set ofLazy(java.util.Set, java.util.function.Predicate); java.util.concurrent.StructuredTaskScope - public interface java.util.concurrent.StructuredTaskScope extends java.lang.AutoCloseable { + public interface java.util.concurrent.StructuredTaskScope extends java.lang.AutoCloseable { - public abstract R join() throws java.lang.InterruptedException; - public static java.util.concurrent.StructuredTaskScope open(java.util.concurrent.StructuredTaskScope$Joiner); - public static java.util.concurrent.StructuredTaskScope open(java.util.concurrent.StructuredTaskScope$Joiner, java.util.function.UnaryOperator); - public static java.util.concurrent.StructuredTaskScope open(); + public abstract R join() throws R_X, java.lang.InterruptedException; + public static java.util.concurrent.StructuredTaskScope open(java.util.concurrent.StructuredTaskScope$Joiner); + public static java.util.concurrent.StructuredTaskScope open(java.util.concurrent.StructuredTaskScope$Joiner, java.util.function.UnaryOperator); + public static java.util.concurrent.StructuredTaskScope open(); + public static java.util.concurrent.StructuredTaskScope open(java.util.function.UnaryOperator); java.util.concurrent.StructuredTaskScope$Joiner - public interface java.util.concurrent.StructuredTaskScope$Joiner { + public interface java.util.concurrent.StructuredTaskScope$Joiner { - public abstract R result() throws java.lang.Throwable; - public default void onTimeout(); - public static java.util.concurrent.StructuredTaskScope$Joiner anySuccessfulOrThrow(); - public static java.util.concurrent.StructuredTaskScope$Joiner awaitAll(); - public static java.util.concurrent.StructuredTaskScope$Joiner awaitAllSuccessfulOrThrow(); - public static java.util.concurrent.StructuredTaskScope$Joiner> allSuccessfulOrThrow(); - public static java.util.concurrent.StructuredTaskScope$Joiner>> allUntil(java.util.function.Predicate>); + public abstract R result() throws R_X; + public abstract R timeout() throws R_X; + public static java.util.concurrent.StructuredTaskScope$Joiner anySuccessfulOrThrow(java.util.function.Function); + public static java.util.concurrent.StructuredTaskScope$Joiner awaitAllSuccessfulOrThrow(java.util.function.Function); + public static java.util.concurrent.StructuredTaskScope$Joiner, R_X> allSuccessfulOrThrow(java.util.function.Function); + public static java.util.concurrent.StructuredTaskScope$Joiner anySuccessfulOrThrow(); + public static java.util.concurrent.StructuredTaskScope$Joiner awaitAllSuccessfulOrThrow(); + public static java.util.concurrent.StructuredTaskScope$Joiner, java.util.concurrent.ExecutionException> allSuccessfulOrThrow(); + public static java.util.concurrent.StructuredTaskScope$Joiner>, java.lang.RuntimeException> allUntil(java.util.function.Predicate>); javax.crypto.EncryptedPrivateKeyInfo - public class javax.crypto.EncryptedPrivateKeyInfo implements java.security.DEREncodable { + public class javax.crypto.EncryptedPrivateKeyInfo implements java.security.BinaryEncodable { - public java.security.KeyPair getKeyPair(java.security.Key, java.security.Provider) throws java.security.NoSuchAlgorithmException, java.security.InvalidKeyException; - public java.security.PrivateKey getKey(java.security.Key, java.security.Provider) throws java.security.NoSuchAlgorithmException, java.security.InvalidKeyException; - public static javax.crypto.EncryptedPrivateKeyInfo encrypt(java.security.DEREncodable, char[]); - public static javax.crypto.EncryptedPrivateKeyInfo encrypt(java.security.DEREncodable, char[], java.lang.String, java.security.spec.AlgorithmParameterSpec, java.security.Provider); - public static javax.crypto.EncryptedPrivateKeyInfo encrypt(java.security.DEREncodable, java.security.Key, java.lang.String, java.security.spec.AlgorithmParameterSpec, java.security.Provider, java.security.SecureRandom); + public java.security.KeyPair getKeyPair(java.security.Key) throws java.security.NoSuchAlgorithmException, java.security.InvalidKeyException; + public java.security.PrivateKey getKey(java.security.Key) throws java.security.NoSuchAlgorithmException, java.security.InvalidKeyException; + public static javax.crypto.EncryptedPrivateKeyInfo encrypt(java.security.BinaryEncodable, char[]); + public static javax.crypto.EncryptedPrivateKeyInfo encrypt(java.security.BinaryEncodable, char[], java.lang.String, java.security.spec.AlgorithmParameterSpec, java.security.Provider); + public static javax.crypto.EncryptedPrivateKeyInfo encrypt(java.security.BinaryEncodable, java.security.Key, java.lang.String, java.security.spec.AlgorithmParameterSpec, java.security.Provider, java.security.SecureRandom); javax.lang.model.SourceVersion + public static final javax.lang.model.SourceVersion RELEASE_27; javax.swing.JEditorPane$JEditorPaneAccessibleHypertextSupport + public void changedUpdate(javax.swing.event.DocumentEvent); + public void insertUpdate(javax.swing.event.DocumentEvent); + public void removeUpdate(javax.swing.event.DocumentEvent); jdk.incubator.vector.VectorOperators - public abstract class jdk.incubator.vector.VectorOperators { + public final class jdk.incubator.vector.VectorOperators { jdk.javadoc.doclet.Taglet + public default java.lang.String toString(java.util.List, javax.lang.model.element.Element, java.net.URI); jdk.jfr.events.ContainerMemoryUsageEvent + public long hostMemoryUsage;