diff --git a/api/src/main/java/javax/json/EmptyArray.java b/api/src/main/java/jakarta/json/EmptyArray.java
similarity index 98%
rename from api/src/main/java/javax/json/EmptyArray.java
rename to api/src/main/java/jakarta/json/EmptyArray.java
index 405aa23..1f4d741 100644
--- a/api/src/main/java/javax/json/EmptyArray.java
+++ b/api/src/main/java/jakarta/json/EmptyArray.java
@@ -14,7 +14,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package javax.json;
+package jakarta.json;
 
 import java.io.Serializable;
 import java.util.AbstractList;
diff --git a/api/src/main/java/javax/json/EmptyObject.java b/api/src/main/java/jakarta/json/EmptyObject.java
similarity index 98%
rename from api/src/main/java/javax/json/EmptyObject.java
rename to api/src/main/java/jakarta/json/EmptyObject.java
index 9e5750a..1e58252 100644
--- a/api/src/main/java/javax/json/EmptyObject.java
+++ b/api/src/main/java/jakarta/json/EmptyObject.java
@@ -14,7 +14,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package javax.json;
+package jakarta.json;
 
 import java.io.Serializable;
 import java.util.AbstractMap;
diff --git a/api/src/main/java/javax/json/Json.java b/api/src/main/java/jakarta/json/Json.java
similarity index 98%
rename from api/src/main/java/javax/json/Json.java
rename to api/src/main/java/jakarta/json/Json.java
index b6eb79e..1649c2c 100644
--- a/api/src/main/java/javax/json/Json.java
+++ b/api/src/main/java/jakarta/json/Json.java
@@ -14,7 +14,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package javax.json;
+package jakarta.json;
 
 import java.io.InputStream;
 import java.io.OutputStream;
@@ -25,11 +25,11 @@
 import java.util.Collection;
 import java.util.Map;
 import java.util.Optional;
-import javax.json.spi.JsonProvider;
-import javax.json.stream.JsonGenerator;
-import javax.json.stream.JsonGeneratorFactory;
-import javax.json.stream.JsonParser;
-import javax.json.stream.JsonParserFactory;
+import jakarta.json.spi.JsonProvider;
+import jakarta.json.stream.JsonGenerator;
+import jakarta.json.stream.JsonGeneratorFactory;
+import jakarta.json.stream.JsonParser;
+import jakarta.json.stream.JsonParserFactory;
 
 /**
  * Factory class for creating JSON processing objects.
diff --git a/api/src/main/java/javax/json/JsonArray.java b/api/src/main/java/jakarta/json/JsonArray.java
similarity index 98%
rename from api/src/main/java/javax/json/JsonArray.java
rename to api/src/main/java/jakarta/json/JsonArray.java
index a7bfae4..49f3fbd 100644
--- a/api/src/main/java/javax/json/JsonArray.java
+++ b/api/src/main/java/jakarta/json/JsonArray.java
@@ -14,7 +14,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package javax.json;
+package jakarta.json;
 
 import java.util.List;
 import java.util.function.Function;
@@ -195,7 +195,7 @@
     /**
      * Returns the {@code String} value of {@code JsonString} at the specified
      * position in this JSON array values. If {@code JsonString} is found,
-     * its {@link javax.json.JsonString#getString()} is returned. Otherwise,
+     * its {@link jakarta.json.JsonString#getString()} is returned. Otherwise,
      * the specified default value is returned.
      *
      * @param index index of the {@code JsonString} value
@@ -221,7 +221,7 @@
     /**
      * Returns the int value of the {@code JsonNumber} at the specified position. 
      * If the value at that position is a {@code JsonNumber},
-     * this method returns {@link javax.json.JsonNumber#intValue()}. Otherwise
+     * this method returns {@link jakarta.json.JsonNumber#intValue()}. Otherwise
      * this method returns the specified default value.
      *
      * @param index index of the {@code JsonNumber} value
diff --git a/api/src/main/java/javax/json/JsonArrayBuilder.java b/api/src/main/java/jakarta/json/JsonArrayBuilder.java
similarity index 99%
rename from api/src/main/java/javax/json/JsonArrayBuilder.java
rename to api/src/main/java/jakarta/json/JsonArrayBuilder.java
index 9c980b6..63bd229 100644
--- a/api/src/main/java/javax/json/JsonArrayBuilder.java
+++ b/api/src/main/java/jakarta/json/JsonArrayBuilder.java
@@ -14,7 +14,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package javax.json;
+package jakarta.json;
 
 import java.math.BigDecimal;
 import java.math.BigInteger;
@@ -28,7 +28,7 @@
  * <p>Methods in this class can be chained to perform multiple values to
  * the array.</p>
  *
- * <p>The class {@link javax.json.Json} contains methods to create the builder
+ * <p>The class {@link jakarta.json.Json} contains methods to create the builder
  * object. The example code below shows how to build an empty {@code JsonArray}
  * instance.
  * <pre>
diff --git a/api/src/main/java/javax/json/JsonBuilderFactory.java b/api/src/main/java/jakarta/json/JsonBuilderFactory.java
similarity index 99%
rename from api/src/main/java/javax/json/JsonBuilderFactory.java
rename to api/src/main/java/jakarta/json/JsonBuilderFactory.java
index fa67eae..264145c 100644
--- a/api/src/main/java/javax/json/JsonBuilderFactory.java
+++ b/api/src/main/java/jakarta/json/JsonBuilderFactory.java
@@ -14,7 +14,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package javax.json;
+package jakarta.json;
 
 import java.util.Collection;
 import java.util.Map;
diff --git a/api/src/main/java/javax/json/JsonException.java b/api/src/main/java/jakarta/json/JsonException.java
similarity index 98%
rename from api/src/main/java/javax/json/JsonException.java
rename to api/src/main/java/jakarta/json/JsonException.java
index 75da5b5..341f8c0 100644
--- a/api/src/main/java/javax/json/JsonException.java
+++ b/api/src/main/java/jakarta/json/JsonException.java
@@ -14,7 +14,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package javax.json;
+package jakarta.json;
 
 /**
  * <code>JsonException</code> indicates that some exception happened during
diff --git a/api/src/main/java/javax/json/JsonMergePatch.java b/api/src/main/java/jakarta/json/JsonMergePatch.java
similarity index 98%
rename from api/src/main/java/javax/json/JsonMergePatch.java
rename to api/src/main/java/jakarta/json/JsonMergePatch.java
index 0801278..98806ae 100644
--- a/api/src/main/java/javax/json/JsonMergePatch.java
+++ b/api/src/main/java/jakarta/json/JsonMergePatch.java
@@ -14,7 +14,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package javax.json;
+package jakarta.json;
 
 /**
  * <p>This interface represents an implementation of a JSON Merge Patch
diff --git a/api/src/main/java/javax/json/JsonNumber.java b/api/src/main/java/jakarta/json/JsonNumber.java
similarity index 99%
rename from api/src/main/java/javax/json/JsonNumber.java
rename to api/src/main/java/jakarta/json/JsonNumber.java
index 6173c8f..bd0e7a2 100644
--- a/api/src/main/java/javax/json/JsonNumber.java
+++ b/api/src/main/java/jakarta/json/JsonNumber.java
@@ -14,7 +14,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package javax.json;
+package jakarta.json;
 
 import java.math.BigDecimal;
 import java.math.BigInteger;
diff --git a/api/src/main/java/javax/json/JsonObject.java b/api/src/main/java/jakarta/json/JsonObject.java
similarity index 97%
rename from api/src/main/java/javax/json/JsonObject.java
rename to api/src/main/java/jakarta/json/JsonObject.java
index 704243c..f99fb7e 100644
--- a/api/src/main/java/javax/json/JsonObject.java
+++ b/api/src/main/java/jakarta/json/JsonObject.java
@@ -14,7 +14,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package javax.json;
+package jakarta.json;
 
 import java.util.Map;
 
@@ -171,7 +171,7 @@
     /**
      * Returns the string value of the associated {@code JsonString} mapping
      * for the specified name. If {@code JsonString} is found, then its
-     * {@link javax.json.JsonString#getString()} is returned. Otherwise,
+     * {@link jakarta.json.JsonString#getString()} is returned. Otherwise,
      * the specified default value is returned.
      *
      * @param name whose associated value is to be returned as String
@@ -197,7 +197,7 @@
     /**
      * Returns the int value of the associated {@code JsonNumber} mapping
      * for the specified name. If {@code JsonNumber} is found, then its
-     * {@link javax.json.JsonNumber#intValue()} is returned. Otherwise,
+     * {@link jakarta.json.JsonNumber#intValue()} is returned. Otherwise,
      * the specified default value is returned.
      *
      * @param name whose associated value is to be returned as int
diff --git a/api/src/main/java/javax/json/JsonObjectBuilder.java b/api/src/main/java/jakarta/json/JsonObjectBuilder.java
similarity index 98%
rename from api/src/main/java/javax/json/JsonObjectBuilder.java
rename to api/src/main/java/jakarta/json/JsonObjectBuilder.java
index 16a54cd..bf43c17 100644
--- a/api/src/main/java/javax/json/JsonObjectBuilder.java
+++ b/api/src/main/java/jakarta/json/JsonObjectBuilder.java
@@ -14,7 +14,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package javax.json;
+package jakarta.json;
 
 import java.math.BigDecimal;
 import java.math.BigInteger;
@@ -26,7 +26,7 @@
  * The methods in this class can be chained to add multiple name/value pairs
  * to the object.
  *
- * <p>The class {@link javax.json.Json} contains methods to create the builder
+ * <p>The class {@link jakarta.json.Json} contains methods to create the builder
  * object. The example code below shows how to build an empty {@code JsonObject}
  * instance.
  * <pre>
diff --git a/api/src/main/java/javax/json/JsonPatch.java b/api/src/main/java/jakarta/json/JsonPatch.java
similarity index 99%
rename from api/src/main/java/javax/json/JsonPatch.java
rename to api/src/main/java/jakarta/json/JsonPatch.java
index 6cbaa94..32c306f 100644
--- a/api/src/main/java/javax/json/JsonPatch.java
+++ b/api/src/main/java/jakarta/json/JsonPatch.java
@@ -14,7 +14,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package javax.json;
+package jakarta.json;
 
 /**
  * <p>This interface represents an immutable implementation of a JSON Patch
diff --git a/api/src/main/java/javax/json/JsonPatchBuilder.java b/api/src/main/java/jakarta/json/JsonPatchBuilder.java
similarity index 99%
rename from api/src/main/java/javax/json/JsonPatchBuilder.java
rename to api/src/main/java/jakarta/json/JsonPatchBuilder.java
index 333f781..5454314 100644
--- a/api/src/main/java/javax/json/JsonPatchBuilder.java
+++ b/api/src/main/java/jakarta/json/JsonPatchBuilder.java
@@ -14,7 +14,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package javax.json;
+package jakarta.json;
 
 /**
  * A builder for constructing a JSON Patch as defined by
diff --git a/api/src/main/java/javax/json/JsonPointer.java b/api/src/main/java/jakarta/json/JsonPointer.java
similarity index 99%
rename from api/src/main/java/javax/json/JsonPointer.java
rename to api/src/main/java/jakarta/json/JsonPointer.java
index 0d07c41..9e4b378 100644
--- a/api/src/main/java/javax/json/JsonPointer.java
+++ b/api/src/main/java/jakarta/json/JsonPointer.java
@@ -14,7 +14,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package javax.json;
+package jakarta.json;
 
 /**
  * <p>This interface represents an immutable implementation of a JSON Pointer
diff --git a/api/src/main/java/javax/json/JsonReader.java b/api/src/main/java/jakarta/json/JsonReader.java
similarity index 91%
rename from api/src/main/java/javax/json/JsonReader.java
rename to api/src/main/java/jakarta/json/JsonReader.java
index 99c1240..a4f5fb7 100644
--- a/api/src/main/java/javax/json/JsonReader.java
+++ b/api/src/main/java/jakarta/json/JsonReader.java
@@ -14,7 +14,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package javax.json;
+package jakarta.json;
 
 import java.io.Closeable;
 
@@ -22,7 +22,7 @@
  * Reads a JSON {@link JsonObject object} or an {@link JsonArray array}
  * structure from an input source.
  *
- * <p>The class {@link javax.json.Json} contains methods to create readers from
+ * <p>The class {@link jakarta.json.Json} contains methods to create readers from
  * input sources ({@link java.io.InputStream} and {@link java.io.Reader}).
  *
  * <p>
@@ -61,7 +61,7 @@
      * @throws JsonException if a JSON object or array cannot
      *     be created due to i/o error (IOException would be
      * cause of JsonException)
-     * @throws javax.json.stream.JsonParsingException if a JSON object or array
+     * @throws jakarta.json.stream.JsonParsingException if a JSON object or array
      *     cannot be created due to incorrect representation
      * @throws IllegalStateException if read, readObject, readArray,
      *     readValue or close method is already called
@@ -77,7 +77,7 @@
      * @throws JsonException if a JSON object cannot
      *     be created due to i/o error (IOException would be
      *     cause of JsonException)
-     * @throws javax.json.stream.JsonParsingException if a JSON object cannot
+     * @throws jakarta.json.stream.JsonParsingException if a JSON object cannot
      *     be created due to incorrect representation
      * @throws IllegalStateException if read, readObject, readArray,
      *     readValue or close method is already called
@@ -93,7 +93,7 @@
      * @throws JsonException if a JSON array cannot
      *     be created due to i/o error (IOException would be
      *     cause of JsonException)
-     * @throws javax.json.stream.JsonParsingException if a JSON array cannot
+     * @throws jakarta.json.stream.JsonParsingException if a JSON array cannot
      *     be created due to incorrect representation
      * @throws IllegalStateException if read, readObject, readArray,
      *     readValue or close method is already called
@@ -109,7 +109,7 @@
      * @throws JsonException if a JSON value
      *     be created due to i/o error (IOException would be
      *     cause of JsonException)
-     * @throws javax.json.stream.JsonParsingException if a JSON value
+     * @throws jakarta.json.stream.JsonParsingException if a JSON value
      *     cannot be created due to incorrect representation
      * @throws IllegalStateException if read, readObject, readArray,
      *     readValue or close method is already called
diff --git a/api/src/main/java/javax/json/JsonReaderFactory.java b/api/src/main/java/jakarta/json/JsonReaderFactory.java
similarity index 94%
rename from api/src/main/java/javax/json/JsonReaderFactory.java
rename to api/src/main/java/jakarta/json/JsonReaderFactory.java
index 4a4f0fb..c481a3f 100644
--- a/api/src/main/java/javax/json/JsonReaderFactory.java
+++ b/api/src/main/java/jakarta/json/JsonReaderFactory.java
@@ -14,7 +14,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package javax.json;
+package jakarta.json;
 
 import java.io.InputStream;
 import java.io.Reader;
@@ -22,12 +22,12 @@
 import java.util.Map;
 
 /**
- * Factory to create {@link javax.json.JsonReader} instances. If a factory
+ * Factory to create {@link jakarta.json.JsonReader} instances. If a factory
  * instance is configured with some configuration, that would be
  * used to configure the created reader instances.
  *
  * <p>
- * {@link javax.json.JsonReader} can also be created using {@link Json}'s
+ * {@link jakarta.json.JsonReader} can also be created using {@link Json}'s
  * {@code createReader} methods. If multiple reader instances are created,
  * then creating them using a reader factory is preferred.
  *
diff --git a/api/src/main/java/javax/json/JsonString.java b/api/src/main/java/jakarta/json/JsonString.java
similarity index 98%
rename from api/src/main/java/javax/json/JsonString.java
rename to api/src/main/java/jakarta/json/JsonString.java
index 6f341c4..d37e1d0 100644
--- a/api/src/main/java/javax/json/JsonString.java
+++ b/api/src/main/java/jakarta/json/JsonString.java
@@ -14,7 +14,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package javax.json;
+package jakarta.json;
 
 /**
  * An immutable JSON string value.
diff --git a/api/src/main/java/javax/json/JsonStructure.java b/api/src/main/java/jakarta/json/JsonStructure.java
similarity index 98%
rename from api/src/main/java/javax/json/JsonStructure.java
rename to api/src/main/java/jakarta/json/JsonStructure.java
index 6dc9a77..1df5d99 100644
--- a/api/src/main/java/javax/json/JsonStructure.java
+++ b/api/src/main/java/jakarta/json/JsonStructure.java
@@ -14,7 +14,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package javax.json;
+package jakarta.json;
 
 /**
  * Super type for the two structured types in JSON ({@link JsonObject object}s
diff --git a/api/src/main/java/javax/json/JsonValue.java b/api/src/main/java/jakarta/json/JsonValue.java
similarity index 99%
rename from api/src/main/java/javax/json/JsonValue.java
rename to api/src/main/java/jakarta/json/JsonValue.java
index c4968e0..76decf5 100644
--- a/api/src/main/java/javax/json/JsonValue.java
+++ b/api/src/main/java/jakarta/json/JsonValue.java
@@ -14,7 +14,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package javax.json;
+package jakarta.json;
 
 /**
  * <code>JsonValue</code> represents an immutable JSON value.
diff --git a/api/src/main/java/javax/json/JsonValueImpl.java b/api/src/main/java/jakarta/json/JsonValueImpl.java
similarity index 98%
rename from api/src/main/java/javax/json/JsonValueImpl.java
rename to api/src/main/java/jakarta/json/JsonValueImpl.java
index 1a4a2e4..468386f 100644
--- a/api/src/main/java/javax/json/JsonValueImpl.java
+++ b/api/src/main/java/jakarta/json/JsonValueImpl.java
@@ -14,7 +14,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package javax.json;
+package jakarta.json;
 
 import java.io.Serializable;
 
diff --git a/api/src/main/java/javax/json/JsonWriter.java b/api/src/main/java/jakarta/json/JsonWriter.java
similarity index 97%
rename from api/src/main/java/javax/json/JsonWriter.java
rename to api/src/main/java/jakarta/json/JsonWriter.java
index 16bfd6f..59c55c8 100644
--- a/api/src/main/java/javax/json/JsonWriter.java
+++ b/api/src/main/java/jakarta/json/JsonWriter.java
@@ -14,7 +14,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package javax.json;
+package jakarta.json;
 
 import java.io.Closeable;
 
@@ -22,7 +22,7 @@
  * Writes a JSON {@link JsonObject object} or {@link JsonArray array} structure
  * to an output source.
  *
- * <p>The class {@link javax.json.Json} contains methods to create writers from
+ * <p>The class {@link jakarta.json.Json} contains methods to create writers from
  * output sources ({@link java.io.OutputStream} and {@link java.io.Writer}).
  *
  * <p>
diff --git a/api/src/main/java/javax/json/JsonWriterFactory.java b/api/src/main/java/jakarta/json/JsonWriterFactory.java
similarity index 94%
rename from api/src/main/java/javax/json/JsonWriterFactory.java
rename to api/src/main/java/jakarta/json/JsonWriterFactory.java
index 540721e..faf0e2c 100644
--- a/api/src/main/java/javax/json/JsonWriterFactory.java
+++ b/api/src/main/java/jakarta/json/JsonWriterFactory.java
@@ -14,7 +14,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package javax.json;
+package jakarta.json;
 
 import java.io.OutputStream;
 import java.io.Writer;
@@ -22,12 +22,12 @@
 import java.util.Map;
 
 /**
- * Factory to create {@link javax.json.JsonWriter} instances. If a factory
+ * Factory to create {@link jakarta.json.JsonWriter} instances. If a factory
  * instance is configured with some configuration, that would be
  * used to configure the created writer instances.
  *
  * <p>
- * {@link javax.json.JsonWriter} can also be created using {@link Json}'s
+ * {@link jakarta.json.JsonWriter} can also be created using {@link Json}'s
  * {@code createWriter} methods. If multiple writer instances are created,
  * then creating them using a writer factory is preferred.
  *
diff --git a/api/src/main/java/javax/json/package-info.java b/api/src/main/java/jakarta/json/package-info.java
similarity index 77%
rename from api/src/main/java/javax/json/package-info.java
rename to api/src/main/java/jakarta/json/package-info.java
index e79212c..dc9e7c3 100644
--- a/api/src/main/java/javax/json/package-info.java
+++ b/api/src/main/java/jakarta/json/package-info.java
@@ -19,21 +19,21 @@
  *
  * <p>The object model API is a high-level API that provides immutable object
  * models for JSON object and array structures. These JSON structures are
- * represented as object models using the Java types {@link javax.json.JsonObject}
- * and {@link javax.json.JsonArray}. The interface {@code javax.json.JsonObject} provides
+ * represented as object models using the Java types {@link jakarta.json.JsonObject}
+ * and {@link jakarta.json.JsonArray}. The interface {@code jakarta.json.JsonObject} provides
  * a {@link java.util.Map} view to access the unordered collection of zero or
  * more name/value pairs from the model. Similarly, the interface
  * {@code JsonArray} provides a {@link java.util.List} view to access the
  * ordered sequence of zero or more values from the model.
  *
  * <p>The object model API uses builder patterns to create and modify
- * these object models. The classes {@link javax.json.JsonObjectBuilder} and 
- * {@link javax.json.JsonArrayBuilder} provide methods to create and modify models
+ * these object models. The classes {@link jakarta.json.JsonObjectBuilder} and 
+ * {@link jakarta.json.JsonArrayBuilder} provide methods to create and modify models
  * of type {@code JsonObject} and {@code JsonArray} respectively.
  *
  * <p>These object models can also be created from an input source using
- * the class {@link javax.json.JsonReader}. Similarly, these object models
- * can be written to an output source using the class {@link javax.json.JsonWriter}.
+ * the class {@link jakarta.json.JsonReader}. Similarly, these object models
+ * can be written to an output source using the class {@link jakarta.json.JsonWriter}.
  * <p>
  * This package includes several classes that implement other JSON related
  * standards: <a href="http://tools.ietf.org/html/rfc6901">JSON Pointer</a>,
@@ -42,4 +42,4 @@
  * They can be used to retrieve, transform or manipulate values in an
  * object model.
  */
-package javax.json;
+package jakarta.json;
diff --git a/api/src/main/java/javax/json/spi/JsonProvider.java b/api/src/main/java/jakarta/json/spi/JsonProvider.java
similarity index 98%
rename from api/src/main/java/javax/json/spi/JsonProvider.java
rename to api/src/main/java/jakarta/json/spi/JsonProvider.java
index f1ac7c8..96aebc6 100644
--- a/api/src/main/java/javax/json/spi/JsonProvider.java
+++ b/api/src/main/java/jakarta/json/spi/JsonProvider.java
@@ -14,13 +14,13 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package javax.json.spi;
+package jakarta.json.spi;
 
-import javax.json.*;
-import javax.json.stream.JsonGenerator;
-import javax.json.stream.JsonGeneratorFactory;
-import javax.json.stream.JsonParser;
-import javax.json.stream.JsonParserFactory;
+import jakarta.json.*;
+import jakarta.json.stream.JsonGenerator;
+import jakarta.json.stream.JsonGeneratorFactory;
+import jakarta.json.stream.JsonParser;
+import jakarta.json.stream.JsonParserFactory;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.io.Reader;
diff --git a/api/src/main/java/javax/json/spi/package-info.java b/api/src/main/java/jakarta/json/spi/package-info.java
similarity index 92%
rename from api/src/main/java/javax/json/spi/package-info.java
rename to api/src/main/java/jakarta/json/spi/package-info.java
index 83e41e0..545b4cf 100644
--- a/api/src/main/java/javax/json/spi/package-info.java
+++ b/api/src/main/java/jakarta/json/spi/package-info.java
@@ -18,7 +18,7 @@
  * Service Provider Interface (SPI) to plug in implementations for
  * JSON processing objects.
  *
- * <p> {@link javax.json.spi.JsonProvider JsonProvider} is an abstract class 
+ * <p> {@link jakarta.json.spi.JsonProvider JsonProvider} is an abstract class 
  * that provides a service for creating JSON processing instances.
  * A <i>service provider</i> for {@code JsonProvider} provides an 
  * specific implementation by subclassing and implementing the methods in
@@ -29,4 +29,4 @@
  *
  * @since JSON Processing 1.0
  */
-package javax.json.spi;
+package jakarta.json.spi;
diff --git a/api/src/main/java/javax/json/stream/JsonCollectors.java b/api/src/main/java/jakarta/json/stream/JsonCollectors.java
similarity index 96%
rename from api/src/main/java/javax/json/stream/JsonCollectors.java
rename to api/src/main/java/jakarta/json/stream/JsonCollectors.java
index 4cbf2e4..11ee6cd 100644
--- a/api/src/main/java/javax/json/stream/JsonCollectors.java
+++ b/api/src/main/java/jakarta/json/stream/JsonCollectors.java
@@ -14,7 +14,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package javax.json.stream;
+package jakarta.json.stream;
 
 import java.util.Map;
 import java.util.HashMap;
@@ -23,13 +23,13 @@
 import java.util.function.Function;
 import java.util.function.BiConsumer;
 
-import javax.json.Json;
-import javax.json.JsonArray;
-import javax.json.JsonArrayBuilder;
-import javax.json.JsonObject;
-import javax.json.JsonObjectBuilder;
-import javax.json.JsonValue;
-import javax.json.JsonException;
+import jakarta.json.Json;
+import jakarta.json.JsonArray;
+import jakarta.json.JsonArrayBuilder;
+import jakarta.json.JsonObject;
+import jakarta.json.JsonObjectBuilder;
+import jakarta.json.JsonValue;
+import jakarta.json.JsonException;
 
 /**
  * This class contains some implementations of {@code java.util.stream.Collector} for accumulating
diff --git a/api/src/main/java/javax/json/stream/JsonGenerationException.java b/api/src/main/java/jakarta/json/stream/JsonGenerationException.java
similarity index 96%
rename from api/src/main/java/javax/json/stream/JsonGenerationException.java
rename to api/src/main/java/jakarta/json/stream/JsonGenerationException.java
index b77d929..f544526 100644
--- a/api/src/main/java/javax/json/stream/JsonGenerationException.java
+++ b/api/src/main/java/jakarta/json/stream/JsonGenerationException.java
@@ -14,9 +14,9 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package javax.json.stream;
+package jakarta.json.stream;
 
-import javax.json.JsonException;
+import jakarta.json.JsonException;
 
 /**
  * {@code JsonGenerationException} indicates an incorrect JSON is
diff --git a/api/src/main/java/javax/json/stream/JsonGenerator.java b/api/src/main/java/jakarta/json/stream/JsonGenerator.java
similarity index 88%
rename from api/src/main/java/javax/json/stream/JsonGenerator.java
rename to api/src/main/java/jakarta/json/stream/JsonGenerator.java
index 1c309c2..0987c15 100644
--- a/api/src/main/java/javax/json/stream/JsonGenerator.java
+++ b/api/src/main/java/jakarta/json/stream/JsonGenerator.java
@@ -14,9 +14,9 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package javax.json.stream;
+package jakarta.json.stream;
 
-import javax.json.JsonValue;
+import jakarta.json.JsonValue;
 import java.io.Closeable;
 import java.io.Flushable;
 import java.math.BigDecimal;
@@ -24,7 +24,7 @@
 
 /**
  * Writes JSON data to an output source in a streaming way. The class
- * {@link javax.json.Json} contains methods to create generators for character
+ * {@link jakarta.json.Json} contains methods to create generators for character
  * or output streams ({@link java.io.Writer} and {@link java.io.OutputStream}).
  *
  * <p>
@@ -134,7 +134,7 @@
  * The generated JSON text must strictly conform to the grammar defined in
  * <a href="http://www.ietf.org/rfc/rfc7159.txt">RFC 7159</a>.
  *
- * @see javax.json.Json
+ * @see jakarta.json.Json
  * @see JsonGeneratorFactory
  */
 public interface JsonGenerator extends Flushable, /*Auto*/Closeable {
@@ -143,7 +143,7 @@
      * must support this property. The value of the property could be
      * be anything.
      */
-    String PRETTY_PRINTING = "javax.json.stream.JsonGenerator.prettyPrinting" ;
+    String PRETTY_PRINTING = "jakarta.json.stream.JsonGenerator.prettyPrinting" ;
 
     /**
      * Writes the JSON start object character. It starts a new child object
@@ -153,7 +153,7 @@
      * no context.
      *
      * @return this generator
-     * @throws javax.json.JsonException if an i/o error occurs (IOException
+     * @throws jakarta.json.JsonException if an i/o error occurs (IOException
      * would be cause of JsonException)
      * @throws JsonGenerationException if this method is called within an
      *      object context or if it is called more than once in no context.
@@ -167,7 +167,7 @@
      *
      * @param name a name within the JSON name/object pair to be written
      * @return this generator
-     * @throws javax.json.JsonException if an i/o error occurs (IOException
+     * @throws jakarta.json.JsonException if an i/o error occurs (IOException
      * would be cause of JsonException)
      * @throws JsonGenerationException if this method is not called within an
      *     object context
@@ -183,7 +183,7 @@
      *
      * @param name name of json field
      * @return this generator
-     * @throws javax.json.JsonException if an i/o error occurs (IOException
+     * @throws jakarta.json.JsonException if an i/o error occurs (IOException
      * would be cause of JsonException)
      * @throws JsonGenerationException if this method is not called within an
      *     object context
@@ -200,7 +200,7 @@
      * no context.
      *
      * @return this generator
-     * @throws javax.json.JsonException if an i/o error occurs (IOException
+     * @throws jakarta.json.JsonException if an i/o error occurs (IOException
      * would be cause of JsonException)
      * @throws JsonGenerationException if this method is called within an
      *      object context or if called more than once in no context
@@ -214,7 +214,7 @@
      *
      * @param name a name within the JSON name/array pair to be written
      * @return this generator
-     * @throws javax.json.JsonException if an i/o error occurs (IOException
+     * @throws jakarta.json.JsonException if an i/o error occurs (IOException
      * would be cause of JsonException)
      * @throws JsonGenerationException if this method is not called within
      *      an object context
@@ -229,7 +229,7 @@
      * @param value a value in the JSON name/value pair to be written in
      *             current JSON object
      * @return this generator
-     * @throws javax.json.JsonException if an i/o error occurs (IOException
+     * @throws jakarta.json.JsonException if an i/o error occurs (IOException
      * would be cause of JsonException)
      * @throws JsonGenerationException if this method is not called within an
      *      object context
@@ -245,7 +245,7 @@
      * @param value a value in the JSON name/string pair to be written in
      *             current JSON object
      * @return this generator
-     * @throws javax.json.JsonException if an i/o error occurs (IOException
+     * @throws jakarta.json.JsonException if an i/o error occurs (IOException
      * would be cause of JsonException)
      * @throws JsonGenerationException if this method is not called within an
      *      object context
@@ -263,7 +263,7 @@
      * @param value a value in the JSON name/number pair to be written in
      *             current JSON object
      * @return this generator
-     * @throws javax.json.JsonException if an i/o error occurs (IOException
+     * @throws jakarta.json.JsonException if an i/o error occurs (IOException
      * would be cause of JsonException)
      * @throws JsonGenerationException if this method is not called within an
      *      object context.
@@ -280,7 +280,7 @@
      * @param value a value in the JSON name/number pair to be written in
      *             current JSON object
      * @return this generator
-     * @throws javax.json.JsonException if an i/o error occurs (IOException
+     * @throws jakarta.json.JsonException if an i/o error occurs (IOException
      * would be cause of JsonException)
      * @throws JsonGenerationException if this method is not called within an
      *      object context.
@@ -298,7 +298,7 @@
      * @param value a value in the JSON name/number pair to be written in
      *             current JSON object
      * @return this generator
-     * @throws javax.json.JsonException if an i/o error occurs (IOException
+     * @throws jakarta.json.JsonException if an i/o error occurs (IOException
      * would be cause of JsonException)
      * @throws JsonGenerationException if this method is not called within an
      *      object context.
@@ -316,7 +316,7 @@
      * @param value a value in the JSON name/number pair to be written in
      *             current JSON object
      * @return this generator
-     * @throws javax.json.JsonException if an i/o error occurs (IOException
+     * @throws jakarta.json.JsonException if an i/o error occurs (IOException
      * would be cause of JsonException)
      * @throws JsonGenerationException if this method is not called within an
      *      object context.
@@ -334,7 +334,7 @@
      * @param value a value in the JSON name/number pair to be written in
      *             current JSON object
      * @return this generator
-     * @throws javax.json.JsonException if an i/o error occurs (IOException
+     * @throws jakarta.json.JsonException if an i/o error occurs (IOException
      * would be cause of JsonException)
      * @throws NumberFormatException if the value is Not-a-Number (NaN) or infinity.
      * @throws JsonGenerationException if this method is not called within an
@@ -352,7 +352,7 @@
      * @param value a value in the JSON name/boolean pair to be written in
      *             current JSON object
      * @return this generator
-     * @throws javax.json.JsonException if an i/o error occurs (IOException
+     * @throws jakarta.json.JsonException if an i/o error occurs (IOException
      * would be cause of JsonException)
      * @throws JsonGenerationException if this method is not called within an
      *      object context.
@@ -366,7 +366,7 @@
      * @param name a name in the JSON name/null pair to be written in
      *             current JSON object
      * @return this generator
-     * @throws javax.json.JsonException if an i/o error occurs (IOException
+     * @throws jakarta.json.JsonException if an i/o error occurs (IOException
      * would be cause of JsonException)
      * @throws JsonGenerationException if this method is not called within an
      *      object context
@@ -382,7 +382,7 @@
      * If parent context is field context, it is closed.
      *
      * @return this generator
-     * @throws javax.json.JsonException if an i/o error occurs (IOException
+     * @throws jakarta.json.JsonException if an i/o error occurs (IOException
      * would be cause of JsonException)
      * @throws JsonGenerationException if this method is called in no context.
      */
@@ -394,7 +394,7 @@
      *
      * @param value a value to be written in current JSON array
      * @return this generator
-     * @throws javax.json.JsonException if an i/o error occurs (IOException
+     * @throws jakarta.json.JsonException if an i/o error occurs (IOException
      * would be cause of JsonException)
      * @throws JsonGenerationException if this method is not called within an
      *      array or root context.
@@ -407,7 +407,7 @@
      *
      * @param value a value to be written in current JSON array
      * @return this generator
-     * @throws javax.json.JsonException if an i/o error occurs (IOException
+     * @throws jakarta.json.JsonException if an i/o error occurs (IOException
      * would be cause of JsonException)
      * @throws JsonGenerationException if this method is not called within an
      *      array or root context.
@@ -421,12 +421,12 @@
      *
      * @param value a value to be written in current JSON array
      * @return this generator
-     * @throws javax.json.JsonException if an i/o error occurs (IOException
+     * @throws jakarta.json.JsonException if an i/o error occurs (IOException
      * would be cause of JsonException)
      * @throws JsonGenerationException if this method is not called within an
      *      array or root context.
      *
-     * @see javax.json.JsonNumber
+     * @see jakarta.json.JsonNumber
      */
     JsonGenerator write(BigDecimal value);
 
@@ -437,12 +437,12 @@
      *
      * @param value a value to be written in current JSON array
      * @return this generator.
-     * @throws javax.json.JsonException if an i/o error occurs (IOException
+     * @throws jakarta.json.JsonException if an i/o error occurs (IOException
      * would be cause of JsonException)
      * @throws JsonGenerationException if this method is not called within an
      *      array or root context.
      *
-     * @see javax.json.JsonNumber
+     * @see jakarta.json.JsonNumber
      */
     JsonGenerator write(BigInteger value);
 
@@ -453,7 +453,7 @@
      *
      * @param value a value to be written in current JSON array
      * @return this generator
-     * @throws javax.json.JsonException if an i/o error occurs (IOException
+     * @throws jakarta.json.JsonException if an i/o error occurs (IOException
      * would be cause of JsonException)
      * @throws JsonGenerationException if this method is not called within an
      *      array or root context.
@@ -467,7 +467,7 @@
      *
      * @param value a value to be written in current JSON array
      * @return this generator
-     * @throws javax.json.JsonException if an i/o error occurs (IOException
+     * @throws jakarta.json.JsonException if an i/o error occurs (IOException
      * would be cause of JsonException)
      * @throws JsonGenerationException if this method is not called within an
      *      array or root context.
@@ -481,7 +481,7 @@
      *
      * @param value a value to be written in current JSON array
      * @return this generator
-     * @throws javax.json.JsonException if an i/o error occurs (IOException
+     * @throws jakarta.json.JsonException if an i/o error occurs (IOException
      * would be cause of JsonException)
      * @throws JsonGenerationException if this method is not called within an
      *      array or root context.
@@ -496,7 +496,7 @@
      *
      * @param value a {@code boolean} value
      * @return this generator
-     * @throws javax.json.JsonException if an i/o error occurs (IOException
+     * @throws jakarta.json.JsonException if an i/o error occurs (IOException
      * would be cause of JsonException)
      * @throws JsonGenerationException if this method is not called within an
      *      array or root context.
@@ -507,7 +507,7 @@
      * Writes a JSON null value within the current array, field or root context.
      *
      * @return this generator
-     * @throws javax.json.JsonException if an i/o error occurs (IOException
+     * @throws jakarta.json.JsonException if an i/o error occurs (IOException
      * would be cause of JsonException)
      * @throws JsonGenerationException if this method is not called within an
      *      array or root context.
@@ -518,7 +518,7 @@
      * Closes this generator and frees any resources associated with it.
      * This method closes the underlying output source.
      *
-     * @throws javax.json.JsonException if an i/o error occurs (IOException
+     * @throws jakarta.json.JsonException if an i/o error occurs (IOException
      * would be cause of JsonException)
      * @throws JsonGenerationException if an incomplete JSON is generated
      */
@@ -530,7 +530,7 @@
      * any characters in a buffer, writes them immediately to the underlying
      * output source before flushing it.
      *
-     * @throws javax.json.JsonException if an i/o error occurs (IOException
+     * @throws jakarta.json.JsonException if an i/o error occurs (IOException
      * would be cause of JsonException)
      */
     @Override
diff --git a/api/src/main/java/javax/json/stream/JsonGeneratorFactory.java b/api/src/main/java/jakarta/json/stream/JsonGeneratorFactory.java
similarity index 96%
rename from api/src/main/java/javax/json/stream/JsonGeneratorFactory.java
rename to api/src/main/java/jakarta/json/stream/JsonGeneratorFactory.java
index 83b01ad..c91d0a6 100644
--- a/api/src/main/java/javax/json/stream/JsonGeneratorFactory.java
+++ b/api/src/main/java/jakarta/json/stream/JsonGeneratorFactory.java
@@ -14,7 +14,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package javax.json.stream;
+package jakarta.json.stream;
 
 import java.io.OutputStream;
 import java.io.Writer;
@@ -27,7 +27,7 @@
  * to all generator instances created using that factory instance.
  *
  * <p>
- * The class {@link javax.json.Json Json} also provides methods to create
+ * The class {@link jakarta.json.Json Json} also provides methods to create
  * {@link JsonGenerator} instances, but using {@code JsonGeneratorFactory} is
  * preferred when creating multiple generator instances as shown in the
  * following example:
diff --git a/api/src/main/java/javax/json/stream/JsonLocation.java b/api/src/main/java/jakarta/json/stream/JsonLocation.java
similarity index 95%
rename from api/src/main/java/javax/json/stream/JsonLocation.java
rename to api/src/main/java/jakarta/json/stream/JsonLocation.java
index 6f0c12c..98375b6 100644
--- a/api/src/main/java/javax/json/stream/JsonLocation.java
+++ b/api/src/main/java/jakarta/json/stream/JsonLocation.java
@@ -14,7 +14,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package javax.json.stream;
+package jakarta.json.stream;
 
 /**
  * Provides the location information of a JSON event in an input source. The
@@ -25,7 +25,7 @@
  * example, a provider may only report line numbers. Also, there may not be any
  * location information for an input source. For example, if a
  * {@code JsonParser} is created using
- * {@link javax.json.JsonArray JsonArray} input source, all the methods in
+ * {@link jakarta.json.JsonArray JsonArray} input source, all the methods in
  * this class return -1.
  * @see JsonParser
  * @see JsonParsingException
diff --git a/api/src/main/java/javax/json/stream/JsonParser.java b/api/src/main/java/jakarta/json/stream/JsonParser.java
similarity index 97%
rename from api/src/main/java/javax/json/stream/JsonParser.java
rename to api/src/main/java/jakarta/json/stream/JsonParser.java
index 67e5aec..934cfaa 100644
--- a/api/src/main/java/javax/json/stream/JsonParser.java
+++ b/api/src/main/java/jakarta/json/stream/JsonParser.java
@@ -14,7 +14,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package javax.json.stream;
+package jakarta.json.stream;
 
 
 import java.io.Closeable;
@@ -22,16 +22,16 @@
 import java.util.stream.Stream;
 import java.util.Map;
 
-import javax.json.JsonValue;
-import javax.json.JsonObject;
-import javax.json.JsonArray;
+import jakarta.json.JsonValue;
+import jakarta.json.JsonObject;
+import jakarta.json.JsonArray;
 
 /**
  * Provides forward, read-only access to JSON data in a streaming way. This
  * is the most efficient way for reading JSON data.
  * This is the only way to parse and process JSON data that are too big to be loaded in memory.
  * <p>The class
- * {@link javax.json.Json} contains methods to create parsers from input
+ * {@link jakarta.json.Json} contains methods to create parsers from input
  * sources ({@link java.io.InputStream} and {@link java.io.Reader}).
  *
  * <p>
@@ -166,7 +166,7 @@
  * }
  * </code></pre>
  *
- * @see javax.json.Json
+ * @see jakarta.json.Json
  * @see JsonParserFactory
  */
 public interface JsonParser extends /*Auto*/Closeable {
@@ -232,7 +232,7 @@
      * {@code false} if the parser reaches the end of the JSON text.
      *
      * @return {@code true} if there are more parsing states.
-     * @throws javax.json.JsonException if an i/o error occurs (IOException
+     * @throws jakarta.json.JsonException if an i/o error occurs (IOException
      * would be cause of JsonException)
      * @throws JsonParsingException if the parser encounters invalid JSON
      * when advancing to next state.
@@ -242,7 +242,7 @@
     /**
      * Returns the event for the next parsing state.
      *
-     * @throws javax.json.JsonException if an i/o error occurs (IOException
+     * @throws jakarta.json.JsonException if an i/o error occurs (IOException
      * would be cause of JsonException)
      * @throws JsonParsingException if the parser encounters invalid JSON
      * when advancing to next state.
@@ -479,7 +479,7 @@
      * Closes this parser and frees any resources associated with the
      * parser. This method closes the underlying input source.
      *
-     * @throws javax.json.JsonException if an i/o error occurs (IOException
+     * @throws jakarta.json.JsonException if an i/o error occurs (IOException
      * would be cause of JsonException)
      */
     @Override
diff --git a/api/src/main/java/javax/json/stream/JsonParserFactory.java b/api/src/main/java/jakarta/json/stream/JsonParserFactory.java
similarity index 93%
rename from api/src/main/java/javax/json/stream/JsonParserFactory.java
rename to api/src/main/java/jakarta/json/stream/JsonParserFactory.java
index 32a4325..df29300 100644
--- a/api/src/main/java/javax/json/stream/JsonParserFactory.java
+++ b/api/src/main/java/jakarta/json/stream/JsonParserFactory.java
@@ -14,10 +14,10 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package javax.json.stream;
+package jakarta.json.stream;
 
-import javax.json.JsonArray;
-import javax.json.JsonObject;
+import jakarta.json.JsonArray;
+import jakarta.json.JsonObject;
 import java.io.InputStream;
 import java.io.Reader;
 import java.nio.charset.Charset;
@@ -29,7 +29,7 @@
  * to all parser instances created using that factory instance.
  *
  * <p>
- * The class {@link javax.json.Json Json} also provides methods to create
+ * The class {@link jakarta.json.Json Json} also provides methods to create
  * {@link JsonParser} instances, but using {@code JsonParserFactory} is 
  * preferred when creating multiple parser instances as shown in the following
  * example:
@@ -62,7 +62,7 @@
      *
      * @param in i/o stream from which JSON is to be read
      * @return the created JSON parser
-     * @throws javax.json.JsonException if encoding cannot be determined
+     * @throws jakarta.json.JsonException if encoding cannot be determined
      *         or i/o error (IOException would be cause of JsonException)
      */
     JsonParser createParser(InputStream in);
diff --git a/api/src/main/java/javax/json/stream/JsonParsingException.java b/api/src/main/java/jakarta/json/stream/JsonParsingException.java
similarity index 97%
rename from api/src/main/java/javax/json/stream/JsonParsingException.java
rename to api/src/main/java/jakarta/json/stream/JsonParsingException.java
index 212900b..ec6617c 100644
--- a/api/src/main/java/javax/json/stream/JsonParsingException.java
+++ b/api/src/main/java/jakarta/json/stream/JsonParsingException.java
@@ -14,9 +14,9 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package javax.json.stream;
+package jakarta.json.stream;
 
-import javax.json.JsonException;
+import jakarta.json.JsonException;
 
 /**
  * {@code JsonParsingException} is used when an incorrect JSON is
diff --git a/api/src/main/java/javax/json/stream/package-info.java b/api/src/main/java/jakarta/json/stream/package-info.java
similarity index 91%
rename from api/src/main/java/javax/json/stream/package-info.java
rename to api/src/main/java/jakarta/json/stream/package-info.java
index 33a2cf1..0983b46 100644
--- a/api/src/main/java/javax/json/stream/package-info.java
+++ b/api/src/main/java/jakarta/json/stream/package-info.java
@@ -20,8 +20,8 @@
  *
  * <p>
  * The streaming API consists of the interfaces
- * {@link javax.json.stream.JsonParser} and
- * {@link javax.json.stream.JsonGenerator}. The interface {@code JsonParser}
+ * {@link jakarta.json.stream.JsonParser} and
+ * {@link jakarta.json.stream.JsonGenerator}. The interface {@code JsonParser}
  * contains methods to parse JSON in a streaming way. The interface
  * {@code JsonGenerator} contains methods to write JSON to an output source
  * in a streaming way.
@@ -44,4 +44,4 @@
  *
  * @since JSON Processing 1.0
  */
-package javax.json.stream;
+package jakarta.json.stream;
diff --git a/api/src/main/javadoc/overview.html b/api/src/main/javadoc/overview.html
index 151f1b4..fa7effa 100644
--- a/api/src/main/javadoc/overview.html
+++ b/api/src/main/javadoc/overview.html
@@ -42,8 +42,8 @@
 
 <h2>The Streaming API</h2>
 <p>The streaming API is similar to the StAX API for XML and consists of the
-interfaces {@link javax.json.stream.JsonParser} and
-{@link javax.json.stream.JsonGenerator}. {@code JsonParser}
+interfaces {@link jakarta.json.stream.JsonParser} and
+{@link jakarta.json.stream.JsonGenerator}. {@code JsonParser}
 contains methods to parse JSON data using the streaming model.
 {@code JsonGenerator} contains methods to write JSON data to an ouptut source.
 
@@ -52,13 +52,13 @@
 application code controls the thread and calls methods in the parser interface
 to move the parser forward or to obtain JSON data from the current state of
 the parser. Refer to
-<a href="javax/json/stream/JsonParser.html#JsonParserExample2">this example</a>
+<a href="jakarta/json/stream/JsonParser.html#JsonParserExample2">this example</a>
 for more details.
 
 <p>{@code JsonGenerator} provides methods to write JSON to a stream. The
 generator writes name/value pairs in JSON objects and values in JSON arrays.
 Refer to
-<a href="javax/json/stream/JsonGenerator.html#JsonGeneratorExample3">this
+<a href="jakarta/json/stream/JsonGenerator.html#JsonGeneratorExample3">this
 example</a> for more details.
 
 <p>The streaming API is a low-level API designed to process large amounts of
@@ -69,32 +69,32 @@
 <p>The object model API is similar to the DOM API for XML. It is a high-level
 API that provides immutable object models for JSON object and array structures.
 These JSON structures are represented as object models using the Java types
-{@link javax.json.JsonObject} and {@link javax.json.JsonArray}.
+{@link jakarta.json.JsonObject} and {@link jakarta.json.JsonArray}.
 {@code JsonObject} provides a {@link java.util.Map} view to access the unordered
 collection of zero or more name/value pairs from the model. Similarly,
 {@code JsonArray} provides a {@link java.util.List} view to access the ordered
 sequence of zero or more values from the model.
 
 <p>The object model API uses builder patterns to create these object models.
-Application code can use the interface {@link javax.json.JsonObjectBuilder}
+Application code can use the interface {@link jakarta.json.JsonObjectBuilder}
 to create models that represent JSON objects. The resulting model is of type
 {@code JsonObject}. Refer to
-<a href="javax/json/JsonObjectBuilder.html#JsonObjectBuilderExample1">this example</a>
+<a href="jakarta/json/JsonObjectBuilder.html#JsonObjectBuilderExample1">this example</a>
 for more details. Application code can use the interface
-{@link javax.json.JsonArrayBuilder} to create models that represent JSON arrays.
+{@link jakarta.json.JsonArrayBuilder} to create models that represent JSON arrays.
 The resulting model is of type {@code JsonArray}. Refer to
-<a href="javax/json/JsonArrayBuilder.html#JsonArrayBuilderExample1">this example</a>
+<a href="jakarta/json/JsonArrayBuilder.html#JsonArrayBuilderExample1">this example</a>
 for more details.
 
 <p>These object models can also be created from an input source (such as
 {@link java.io.InputStream} or {@link java.io.Reader}) using the interface
-{@link javax.json.JsonReader}.
-<a href="javax/json/JsonReader.html#JsonReaderExample1">This example</a> shows
+{@link jakarta.json.JsonReader}.
+<a href="jakarta/json/JsonReader.html#JsonReaderExample1">This example</a> shows
 how to read and create an empty {@code JsonArray} model using the interface
 {@code JsonReader}. Similarly, these object models can be written to an output
 source (such as {@link java.io.OutputStream} or {@link java.io.Writer}) using
-the class {@link javax.json.JsonWriter}.
-<a href="javax/json/JsonWriter.html#JsonWriterExample1">This example</a> shows
+the class {@link jakarta.json.JsonWriter}.
+<a href="jakarta/json/JsonWriter.html#JsonWriterExample1">This example</a> shows
 how to write an empty {@code JsonObject} model using the interface
 {@code JsonWriter}.
 
diff --git a/api/src/main/jdk9/module-info.java b/api/src/main/jdk9/module-info.java
index 2b15d4c..c5743da 100644
--- a/api/src/main/jdk9/module-info.java
+++ b/api/src/main/jdk9/module-info.java
@@ -18,8 +18,8 @@
  * Jakarta JSON Processing API.
  */
 module java.json {
-    exports javax.json;
-    exports javax.json.spi;
-    exports javax.json.stream;
-    uses javax.json.spi.JsonProvider;
+    exports jakarta.json;
+    exports jakarta.json.spi;
+    exports jakarta.json.stream;
+    uses jakarta.json.spi.JsonProvider;
 }
