diff --git a/src/java.base/share/classes/java/lang/CharSequence.java b/src/java.base/share/classes/java/lang/CharSequence.java
index da0cb0d4e30..0701098df8c 100644
--- a/src/java.base/share/classes/java/lang/CharSequence.java
+++ b/src/java.base/share/classes/java/lang/CharSequence.java
@@ -73,7 +73,7 @@ public interface CharSequence {
      * indexing.
      *
      * <p>If the {@code char} value specified by the index is a
-     * <a href="{@docRoot}/java.base/java/lang/Character.html#unicode">surrogate</a>, the surrogate
+     * {@linkplain java.lang.Character##unicode surrogate}, the surrogate
      * value is returned.
      *
      * @param   index   the index of the {@code char} value to be returned
@@ -132,9 +132,9 @@ public interface CharSequence {
 
     /**
      * Returns a stream of {@code int} zero-extending the {@code char} values
-     * from this sequence.  Any char which maps to a <a
-     * href="{@docRoot}/java.base/java/lang/Character.html#unicode">surrogate code
-     * point</a> is passed through uninterpreted.
+     * from this sequence.  Any char which maps to a
+     * {@linkplain java.lang.Character##unicode surrogate code point} is
+     * passed through uninterpreted.
      *
      * <p>The stream binds to this sequence when the terminal stream operation
      * commences (specifically, for mutable sequences the spliterator for the
diff --git a/src/java.base/share/classes/java/lang/Class.java b/src/java.base/share/classes/java/lang/Class.java
index 0d8f5b14952..e0742272835 100644
--- a/src/java.base/share/classes/java/lang/Class.java
+++ b/src/java.base/share/classes/java/lang/Class.java
@@ -827,9 +827,8 @@ public final class Class<T> implements java.io.Serializable,
      *
      * @jls 13.1 The Form of a Binary
      * @jvms 4.1 The {@code ClassFile} Structure
-     * @see <a
-     * href="{@docRoot}/java.base/java/lang/reflect/package-summary.html#LanguageJvmModel">Java
-     * programming language and JVM modeling in core reflection</a>
+     * @see java.lang.reflect##LanguageJvmModel Java
+     * programming language and JVM modeling in core reflection
      * @since 1.5
      */
     public boolean isSynthetic() {
@@ -1314,9 +1313,8 @@ public final class Class<T> implements java.io.Serializable,
      * @return the {@code int} representing the modifiers for this class
      * @see     java.lang.reflect.Modifier
      * @see #accessFlags()
-     * @see <a
-     * href="{@docRoot}/java.base/java/lang/reflect/package-summary.html#LanguageJvmModel">Java
-     * programming language and JVM modeling in core reflection</a>
+     * @see java.lang.reflect##LanguageJvmModel Java
+     * programming language and JVM modeling in core reflection
      * @since 1.1
      * @jls 8.1.1 Class Modifiers
      * @jls 9.1.1. Interface Modifiers
@@ -2579,9 +2577,8 @@ public final class Class<T> implements java.io.Serializable,
      *
      * @jls 8.2 Class Members
      * @jls 8.4 Method Declarations
-     * @see <a
-     * href="{@docRoot}/java.base/java/lang/reflect/package-summary.html#LanguageJvmModel">Java
-     * programming language and JVM modeling in core reflection</a>
+     * @see java.lang.reflect##LanguageJvmModel Java
+     * programming language and JVM modeling in core reflection
      * @since 1.1
      */
     @CallerSensitive
diff --git a/src/java.base/share/classes/java/lang/Comparable.java b/src/java.base/share/classes/java/lang/Comparable.java
index 334c515f610..16dd5a35d53 100644
--- a/src/java.base/share/classes/java/lang/Comparable.java
+++ b/src/java.base/share/classes/java/lang/Comparable.java
@@ -93,8 +93,7 @@ import java.util.*;
  * the quotient of the {@code compareTo} method are the same.
  *
  * <p>This interface is a member of the
- * <a href="{@docRoot}/java.base/java/util/package-summary.html#CollectionsFramework">
- * Java Collections Framework</a>.
+ * {@linkplain java.util##CollectionsFramework Java Collections Framework}.
  *
  * @param <T> the type of objects that this object may be compared to
  *
diff --git a/src/java.base/share/classes/java/lang/Enum.java b/src/java.base/share/classes/java/lang/Enum.java
index 55926fc3a40..d9145a3bc3e 100644
--- a/src/java.base/share/classes/java/lang/Enum.java
+++ b/src/java.base/share/classes/java/lang/Enum.java
@@ -300,7 +300,7 @@ public abstract class Enum<E extends Enum<E>>
     }
 
     /**
-     * A <a href="{@docRoot}/java.base/java/lang/constant/package-summary.html#nominal">nominal descriptor</a> for an
+     * A {@linkplain java.lang.constant##nominal nominal descriptor} for an
      * {@code enum} constant.
      *
      * @param <E> the type of the enum constant
diff --git a/src/java.base/share/classes/java/lang/String.java b/src/java.base/share/classes/java/lang/String.java
index 9c9997b2508..cd884a6b6f0 100644
--- a/src/java.base/share/classes/java/lang/String.java
+++ b/src/java.base/share/classes/java/lang/String.java
@@ -4070,9 +4070,8 @@ public final class String
 
     /**
      * Returns a stream of {@code int} zero-extending the {@code char} values
-     * from this sequence.  Any char which maps to a <a
-     * href="{@docRoot}/java.base/java/lang/Character.html#unicode">surrogate code
-     * point</a> is passed through uninterpreted.
+     * from this sequence.  Any char which maps to a {@linkplain Character##unicode
+     * surrogate code point} is passed through uninterpreted.
      *
      * @return an IntStream of char values from this sequence
      * @since 9
diff --git a/src/java.base/share/classes/java/lang/UnsupportedOperationException.java b/src/java.base/share/classes/java/lang/UnsupportedOperationException.java
index 8fd0ede6252..d655dc65992 100644
--- a/src/java.base/share/classes/java/lang/UnsupportedOperationException.java
+++ b/src/java.base/share/classes/java/lang/UnsupportedOperationException.java
@@ -29,8 +29,7 @@ package java.lang;
  * Thrown to indicate that the requested operation is not supported.<p>
  *
  * This class is a member of the
- * <a href="{@docRoot}/java.base/java/util/package-summary.html#CollectionsFramework">
- * Java Collections Framework</a>.
+ * {@linkplain java.util##CollectionsFramework Java Collections Framework}.
  *
  * @author  Josh Bloch
  * @since   1.2
diff --git a/src/java.base/share/classes/java/lang/invoke/VarHandle.java b/src/java.base/share/classes/java/lang/invoke/VarHandle.java
index 3ba9de4ac29..82559fcdec0 100644
--- a/src/java.base/share/classes/java/lang/invoke/VarHandle.java
+++ b/src/java.base/share/classes/java/lang/invoke/VarHandle.java
@@ -2281,7 +2281,7 @@ public abstract sealed class VarHandle implements Constable
     }
 
     /**
-     * A <a href="{@docRoot}/java.base/java/lang/constant/package-summary.html#nominal">nominal descriptor</a> for a
+     * A {@linkplain java.lang.constant##nominal nominal descriptor} for a
      * {@link VarHandle} constant.
      *
      * @since 12
diff --git a/src/java.base/share/classes/java/lang/module/Configuration.java b/src/java.base/share/classes/java/lang/module/Configuration.java
index ae2fc730069..b93420c290b 100644
--- a/src/java.base/share/classes/java/lang/module/Configuration.java
+++ b/src/java.base/share/classes/java/lang/module/Configuration.java
@@ -47,9 +47,8 @@ import jdk.internal.module.ModuleTarget;
 import jdk.internal.vm.annotation.Stable;
 
 /**
- * A configuration that is the result of <a href="package-summary.html#resolution">
- * resolution</a> or resolution with
- * <a href="{@docRoot}/java.base/java/lang/module/Configuration.html#service-binding">service binding</a>.
+ * A configuration that is the result of {@linkplain java.lang.module##resolution
+ * resolution} or resolution with {@linkplain ##service-binding service binding}.
  *
  * <p> A configuration encapsulates the <em>readability graph</em> that is the
  * output of resolution. A readability graph is a directed graph whose vertices
diff --git a/src/java.base/share/classes/java/lang/reflect/Constructor.java b/src/java.base/share/classes/java/lang/reflect/Constructor.java
index 4f384953e29..5cf9308e534 100644
--- a/src/java.base/share/classes/java/lang/reflect/Constructor.java
+++ b/src/java.base/share/classes/java/lang/reflect/Constructor.java
@@ -516,9 +516,8 @@ public final class Constructor<T> extends Executable {
      * @jls 13.1 The Form of a Binary
      * @jvms 4.6 Methods
      * @since 1.5
-     * @see <a
-     * href="{@docRoot}/java.base/java/lang/reflect/package-summary.html#LanguageJvmModel">Java
-     * programming language and JVM modeling in core reflection</a>
+     * @see java.lang.reflect##LanguageJvmModel Java programming
+     * language and JVM modeling in core reflection
      */
     @Override
     public boolean isSynthetic() {
diff --git a/src/java.base/share/classes/java/lang/reflect/Executable.java b/src/java.base/share/classes/java/lang/reflect/Executable.java
index dcf4bfafe25..193fc13d36b 100644
--- a/src/java.base/share/classes/java/lang/reflect/Executable.java
+++ b/src/java.base/share/classes/java/lang/reflect/Executable.java
@@ -279,9 +279,8 @@ public abstract sealed class Executable extends AccessibleObject
      * underlying executable takes no parameters.  Note that the
      * constructors of some inner classes may have an implicitly
      * declared parameter in addition to explicitly declared ones.
-     * Also note that as a <a
-     * href="{@docRoot}/java.base/java/lang/reflect/package-summary.html#LanguageJvmModel">modeling
-     * artifact</a>, the number of returned parameters can differ
+     * Also note that as a {@linkplain java.lang.reflect##LanguageJvmModel
+     * modeling artifact}, the number of returned parameters can differ
      * depending on whether or not generic information is present. If
      * generic information is present, only parameters explicitly
      * present in the source will be returned; if generic information
diff --git a/src/java.base/share/classes/java/lang/reflect/Field.java b/src/java.base/share/classes/java/lang/reflect/Field.java
index 602f72e4a35..367f5bd36d2 100644
--- a/src/java.base/share/classes/java/lang/reflect/Field.java
+++ b/src/java.base/share/classes/java/lang/reflect/Field.java
@@ -243,9 +243,8 @@ class Field extends AccessibleObject implements Member {
      * @return true if and only if this field is a synthetic
      * field as defined by the Java Language Specification.
      * @since 1.5
-     * @see <a
-     * href="{@docRoot}/java.base/java/lang/reflect/package-summary.html#LanguageJvmModel">Java
-     * programming language and JVM modeling in core reflection</a>
+     * @see java.lang.reflect##LanguageJvmModel Java programming
+     * language and JVM modeling in core reflection
      */
     public boolean isSynthetic() {
         return Modifier.isSynthetic(getModifiers());
diff --git a/src/java.base/share/classes/java/lang/reflect/Method.java b/src/java.base/share/classes/java/lang/reflect/Method.java
index 0a62be40240..e96c202bc02 100644
--- a/src/java.base/share/classes/java/lang/reflect/Method.java
+++ b/src/java.base/share/classes/java/lang/reflect/Method.java
@@ -653,9 +653,8 @@ public final class Method extends Executable {
      * @jls 8.4.8.3 Requirements in Overriding and Hiding
      * @jls 15.12.4.5 Create Frame, Synchronize, Transfer Control
      * @jvms 4.6 Methods
-     * @see <a
-     * href="{@docRoot}/java.base/java/lang/reflect/package-summary.html#LanguageJvmModel">Java
-     * programming language and JVM modeling in core reflection</a>
+     * @see java.lang.reflect##LanguageJvmModel Java programming
+     * language and JVM modeling in core reflection
      */
     public boolean isBridge() {
         return (getModifiers() & Modifier.BRIDGE) != 0;
@@ -675,9 +674,8 @@ public final class Method extends Executable {
      * {@inheritDoc}
      * @jls 13.1 The Form of a Binary
      * @jvms 4.6 Methods
-     * @see <a
-     * href="{@docRoot}/java.base/java/lang/reflect/package-summary.html#LanguageJvmModel">Java
-     * programming language and JVM modeling in core reflection</a>
+     * @see java.lang.reflect##LanguageJvmModel Java programming
+     * language and JVM modeling in core reflection
      * @since 1.5
      */
     @Override
diff --git a/src/java.base/share/classes/java/lang/reflect/Parameter.java b/src/java.base/share/classes/java/lang/reflect/Parameter.java
index eac02001294..6bd2776a04a 100644
--- a/src/java.base/share/classes/java/lang/reflect/Parameter.java
+++ b/src/java.base/share/classes/java/lang/reflect/Parameter.java
@@ -154,9 +154,8 @@ public final class Parameter implements AnnotatedElement {
      * the parameter represented by this object}
      *
      * @jls 8.4.1 Formal Parameters
-     * @see <a
-     * href="{@docRoot}/java.base/java/lang/reflect/package-summary.html#LanguageJvmModel">Java
-     * programming language and JVM modeling in core reflection</a>
+     * @see java.lang.reflect##LanguageJvmModel Java programming
+     * language and JVM modeling in core reflection
      */
     public int getModifiers() {
         return modifiers;
@@ -276,9 +275,8 @@ public final class Parameter implements AnnotatedElement {
      * construct as defined by
      * <cite>The Java Language Specification</cite>.
      * @jls 13.1 The Form of a Binary
-     * @see <a
-     * href="{@docRoot}/java.base/java/lang/reflect/package-summary.html#LanguageJvmModel">Java
-     * programming language and JVM modeling in core reflection</a>
+     * @see java.lang.reflect##LanguageJvmModel Java programming
+     * language and JVM modeling in core reflection
      */
     public boolean isSynthetic() {
         return Modifier.isSynthetic(getModifiers());
diff --git a/src/java.base/share/classes/java/net/spi/InetAddressResolverProvider.java b/src/java.base/share/classes/java/net/spi/InetAddressResolverProvider.java
index 6dff033ffc8..5a8f8b2f359 100644
--- a/src/java.base/share/classes/java/net/spi/InetAddressResolverProvider.java
+++ b/src/java.base/share/classes/java/net/spi/InetAddressResolverProvider.java
@@ -41,10 +41,9 @@ import java.util.ServiceLoader;
  *
  * <p> A given invocation of the Java virtual machine maintains a single
  * system-wide resolver instance, which is used by
- * <a href="{@docRoot}/java.base/java/net/InetAddress.html#host-name-resolution">
- * InetAddress</a>. It is set after the VM is fully initialized and when an
- * invocation of a method in {@link InetAddress} class triggers the first lookup
- * operation.
+ * {@linkplain java.net.InetAddress##host-name-resolution InetAddress}.
+ * It is set after the VM is fully initialized and when an invocation of a
+ * method in {@link InetAddress} class triggers the first lookup operation.
  *
  * <p id="system-wide-resolver"> A resolver provider is located and loaded by
  * {@link InetAddress} to create the system-wide resolver as follows:
@@ -60,8 +59,8 @@ import java.util.ServiceLoader;
  *      method. The returned {@code InetAddressResolver} will be set as the
  *      system-wide resolver.
  *  <li>If the previous step fails to find any resolver provider the
- *      <a href="{@docRoot}/java.base/java/net/InetAddress.html#built-in-resolver">
- *      built-in resolver</a> will be set as the system-wide resolver.
+ *      {@linkplain java.net.InetAddress##built-in-resolver built-in resolver}
+ *      will be set as the system-wide resolver.
  * </ol>
  *
  * <p> If instantiating a custom resolver from a provider discovered in
diff --git a/src/java.base/share/classes/java/util/Arrays.java b/src/java.base/share/classes/java/util/Arrays.java
index 8c7dbccc4a1..70a6fdfcc10 100644
--- a/src/java.base/share/classes/java/util/Arrays.java
+++ b/src/java.base/share/classes/java/util/Arrays.java
@@ -64,8 +64,7 @@ import java.util.stream.StreamSupport;
  * a MergeSort, but it does have to be <i>stable</i>.)
  *
  * <p>This class is a member of the
- * <a href="{@docRoot}/java.base/java/util/package-summary.html#CollectionsFramework">
- * Java Collections Framework</a>.
+ * {@linkplain java.util##CollectionsFramework Java Collections Framework}.
  *
  * @author Josh Bloch
  * @author Neal Gafter
diff --git a/src/java.base/share/classes/java/util/concurrent/BlockingDeque.java b/src/java.base/share/classes/java/util/concurrent/BlockingDeque.java
index 8043510b375..97c507ece4d 100644
--- a/src/java.base/share/classes/java/util/concurrent/BlockingDeque.java
+++ b/src/java.base/share/classes/java/util/concurrent/BlockingDeque.java
@@ -188,8 +188,7 @@ import java.util.NoSuchElementException;
  * the {@code BlockingDeque} in another thread.
  *
  * <p>This interface is a member of the
- * <a href="{@docRoot}/java.base/java/util/package-summary.html#CollectionsFramework">
- * Java Collections Framework</a>.
+ * {@linkplain java.util##CollectionsFramework Java Collections Framework}.
  *
  * @since 1.6
  * @author Doug Lea
@@ -399,9 +398,9 @@ public interface BlockingDeque<E> extends BlockingQueue<E>, Deque<E> {
      * @return {@code true} if an element was removed as a result of this call
      * @throws ClassCastException if the class of the specified element
      *         is incompatible with this deque
-     * (<a href="{@docRoot}/java.base/java/util/Collection.html#optional-restrictions">optional</a>)
+     * ({@linkplain java.util.Collection##optional-restrictions optional})
      * @throws NullPointerException if the specified element is null
-     * (<a href="{@docRoot}/java.base/java/util/Collection.html#optional-restrictions">optional</a>)
+     * ({@linkplain java.util.Collection##optional-restrictions optional})
      */
     boolean removeFirstOccurrence(Object o);
 
@@ -417,9 +416,9 @@ public interface BlockingDeque<E> extends BlockingQueue<E>, Deque<E> {
      * @return {@code true} if an element was removed as a result of this call
      * @throws ClassCastException if the class of the specified element
      *         is incompatible with this deque
-     * (<a href="{@docRoot}/java.base/java/util/Collection.html#optional-restrictions">optional</a>)
+     * ({@linkplain java.util.Collection##optional-restrictions optional})
      * @throws NullPointerException if the specified element is null
-     * (<a href="{@docRoot}/java.base/java/util/Collection.html#optional-restrictions">optional</a>)
+     * ({@linkplain java.util.Collection##optional-restrictions optional})
      */
     boolean removeLastOccurrence(Object o);
 
@@ -594,9 +593,9 @@ public interface BlockingDeque<E> extends BlockingQueue<E>, Deque<E> {
      * @return {@code true} if this deque changed as a result of the call
      * @throws ClassCastException if the class of the specified element
      *         is incompatible with this deque
-     * (<a href="{@docRoot}/java.base/java/util/Collection.html#optional-restrictions">optional</a>)
+     * ({@linkplain java.util.Collection##optional-restrictions optional})
      * @throws NullPointerException if the specified element is null
-     * (<a href="{@docRoot}/java.base/java/util/Collection.html#optional-restrictions">optional</a>)
+     * ({@linkplain java.util.Collection##optional-restrictions optional})
      */
     boolean remove(Object o);
 
@@ -609,9 +608,9 @@ public interface BlockingDeque<E> extends BlockingQueue<E>, Deque<E> {
      * @return {@code true} if this deque contains the specified element
      * @throws ClassCastException if the class of the specified element
      *         is incompatible with this deque
-     * (<a href="{@docRoot}/java.base/java/util/Collection.html#optional-restrictions">optional</a>)
+     * ({@linkplain java.util.Collection##optional-restrictions optional})
      * @throws NullPointerException if the specified element is null
-     * (<a href="{@docRoot}/java.base/java/util/Collection.html#optional-restrictions">optional</a>)
+     * ({@linkplain java.util.Collection##optional-restrictions optional})
      */
     boolean contains(Object o);
 
diff --git a/src/java.base/share/classes/java/util/concurrent/BlockingQueue.java b/src/java.base/share/classes/java/util/concurrent/BlockingQueue.java
index ec7593ddad6..75fa5dfe773 100644
--- a/src/java.base/share/classes/java/util/concurrent/BlockingQueue.java
+++ b/src/java.base/share/classes/java/util/concurrent/BlockingQueue.java
@@ -169,8 +169,7 @@ import java.util.Queue;
  * the {@code BlockingQueue} in another thread.
  *
  * <p>This interface is a member of the
- * <a href="{@docRoot}/java.base/java/util/package-summary.html#CollectionsFramework">
- * Java Collections Framework</a>.
+ * {@linkplain java.util##CollectionsFramework Java Collections Framework}.
  *
  * @since 1.5
  * @author Doug Lea
@@ -302,9 +301,9 @@ public interface BlockingQueue<E> extends Queue<E> {
      * @return {@code true} if this queue changed as a result of the call
      * @throws ClassCastException if the class of the specified element
      *         is incompatible with this queue
-     * (<a href="{@docRoot}/java.base/java/util/Collection.html#optional-restrictions">optional</a>)
+     * ({@linkplain java.util.Collection##optional-restrictions optional})
      * @throws NullPointerException if the specified element is null
-     * (<a href="{@docRoot}/java.base/java/util/Collection.html#optional-restrictions">optional</a>)
+     * ({@linkplain java.util.Collection##optional-restrictions optional})
      */
     boolean remove(Object o);
 
@@ -317,9 +316,9 @@ public interface BlockingQueue<E> extends Queue<E> {
      * @return {@code true} if this queue contains the specified element
      * @throws ClassCastException if the class of the specified element
      *         is incompatible with this queue
-     * (<a href="{@docRoot}/java.base/java/util/Collection.html#optional-restrictions">optional</a>)
+     * ({@linkplain java.util.Collection##optional-restrictions optional})
      * @throws NullPointerException if the specified element is null
-     * (<a href="{@docRoot}/java.base/java/util/Collection.html#optional-restrictions">optional</a>)
+     * ({@linkplain java.util.Collection##optional-restrictions optional})
      */
     boolean contains(Object o);
 
