# 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 extends java.security.DEREncodable> S decode(java.io.InputStream, java.lang.Class<S>) throws java.io.IOException;
   - public <S extends java.security.DEREncodable> S decode(java.lang.String, java.lang.Class<S>);
   - 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 extends java.security.BinaryEncodable> S decode(java.io.InputStream, java.lang.Class<S>) throws java.io.IOException;
   + public <S extends java.security.BinaryEncodable> S decode(java.lang.String, java.lang.Class<S>);
   + 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<E> 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 <E> java.util.Set<E> ofLazy(java.util.Set<? extends E>, java.util.function.Predicate<? super E>);
java.util.concurrent.StructuredTaskScope
   - public interface java.util.concurrent.StructuredTaskScope<T, R> extends java.lang.AutoCloseable {
   + public interface java.util.concurrent.StructuredTaskScope<T, R, R_X extends java.lang.Throwable> extends java.lang.AutoCloseable {
   - public abstract R join() throws java.lang.InterruptedException;
   - public static <T, R> java.util.concurrent.StructuredTaskScope<T, R> open(java.util.concurrent.StructuredTaskScope$Joiner<? super T, ? extends R>);
   - public static <T, R> java.util.concurrent.StructuredTaskScope<T, R> open(java.util.concurrent.StructuredTaskScope$Joiner<? super T, ? extends R>, java.util.function.UnaryOperator<java.util.concurrent.StructuredTaskScope$Configuration>);
   - public static <T> java.util.concurrent.StructuredTaskScope<T, java.lang.Void> open();
   + public abstract R join() throws R_X, java.lang.InterruptedException;
   + public static <T, R, R_X extends java.lang.Throwable> java.util.concurrent.StructuredTaskScope<T, R, R_X> open(java.util.concurrent.StructuredTaskScope$Joiner<? super T, ? extends R, R_X>);
   + public static <T, R, R_X extends java.lang.Throwable> java.util.concurrent.StructuredTaskScope<T, R, R_X> open(java.util.concurrent.StructuredTaskScope$Joiner<? super T, ? extends R, R_X>, java.util.function.UnaryOperator<java.util.concurrent.StructuredTaskScope$Configuration>);
   + public static <T> java.util.concurrent.StructuredTaskScope<T, java.lang.Void, java.util.concurrent.ExecutionException> open();
   + public static <T> java.util.concurrent.StructuredTaskScope<T, java.lang.Void, java.util.concurrent.ExecutionException> open(java.util.function.UnaryOperator<java.util.concurrent.StructuredTaskScope$Configuration>);
java.util.concurrent.StructuredTaskScope$Joiner
   - public interface java.util.concurrent.StructuredTaskScope$Joiner<T, R> {
   + public interface java.util.concurrent.StructuredTaskScope$Joiner<T, R, R_X extends java.lang.Throwable> {
   - public abstract R result() throws java.lang.Throwable;
   - public default void onTimeout();
   - public static <T> java.util.concurrent.StructuredTaskScope$Joiner<T, T> anySuccessfulOrThrow();
   - public static <T> java.util.concurrent.StructuredTaskScope$Joiner<T, java.lang.Void> awaitAll();
   - public static <T> java.util.concurrent.StructuredTaskScope$Joiner<T, java.lang.Void> awaitAllSuccessfulOrThrow();
   - public static <T> java.util.concurrent.StructuredTaskScope$Joiner<T, java.util.List<T>> allSuccessfulOrThrow();
   - public static <T> java.util.concurrent.StructuredTaskScope$Joiner<T, java.util.List<java.util.concurrent.StructuredTaskScope$Subtask<T>>> allUntil(java.util.function.Predicate<java.util.concurrent.StructuredTaskScope$Subtask<T>>);
   + public abstract R result() throws R_X;
   + public abstract R timeout() throws R_X;
   + public static <T, R_X extends java.lang.Throwable> java.util.concurrent.StructuredTaskScope$Joiner<T, T, R_X> anySuccessfulOrThrow(java.util.function.Function<java.lang.Throwable, R_X>);
   + public static <T, R_X extends java.lang.Throwable> java.util.concurrent.StructuredTaskScope$Joiner<T, java.lang.Void, R_X> awaitAllSuccessfulOrThrow(java.util.function.Function<java.lang.Throwable, R_X>);
   + public static <T, R_X extends java.lang.Throwable> java.util.concurrent.StructuredTaskScope$Joiner<T, java.util.List<T>, R_X> allSuccessfulOrThrow(java.util.function.Function<java.lang.Throwable, R_X>);
   + public static <T> java.util.concurrent.StructuredTaskScope$Joiner<T, T, java.util.concurrent.ExecutionException> anySuccessfulOrThrow();
   + public static <T> java.util.concurrent.StructuredTaskScope$Joiner<T, java.lang.Void, java.util.concurrent.ExecutionException> awaitAllSuccessfulOrThrow();
   + public static <T> java.util.concurrent.StructuredTaskScope$Joiner<T, java.util.List<T>, java.util.concurrent.ExecutionException> allSuccessfulOrThrow();
   + public static <T> java.util.concurrent.StructuredTaskScope$Joiner<T, java.util.List<java.util.concurrent.StructuredTaskScope$Subtask<T>>, java.lang.RuntimeException> allUntil(java.util.function.Predicate<? super java.util.concurrent.StructuredTaskScope$Subtask<T>>);
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<? extends com.sun.source.doctree.DocTree>, javax.lang.model.element.Element, java.net.URI);
jdk.jfr.events.ContainerMemoryUsageEvent
   + public long hostMemoryUsage;
