diff --git a/README.md b/README.md
index dccace4860..351fed1bf8 100644
--- a/README.md
+++ b/README.md
@@ -34,6 +34,25 @@ Maven:
![Build Status](https://github.com/google/gson/actions/workflows/build.yml/badge.svg)
+### Requirements
+#### Java version
+- Gson 2.9.0 and newer: Java 7
+- Gson 2.8.9 and older: Java 6
+
+Despite supporting older Java versions, Gson also provides a JPMS module descriptor (module name `com.google.gson`) for users of Java 9 or newer.
+
+#### JPMS dependencies (Java 9+)
+These are the optional Java Platform Module System (JPMS) JDK modules which Gson depends on.
+This only applies when running Java 9 or newer.
+
+- `java.sql` (optional since Gson 2.8.9)
+When this module is present, Gson provides default adapters for some SQL date and time classes.
+
+- `jdk.unsupported`, respectively class `sun.misc.Unsafe` (optional)
+When this module is present, Gson can use the `Unsafe` class to create instances of classes without no-args constructor.
+However, care should be taken when relying on this. `Unsafe` is not available in all environments and its usage has some pitfalls,
+see [`GsonBuilder.disableJdkUnsafe()`](https://javadoc.io/doc/com.google.code.gson/gson/latest/com.google.gson/com/google/gson/GsonBuilder.html#disableJdkUnsafe()).
+
### Documentation
* [API Javadoc](https://www.javadoc.io/doc/com.google.code.gson/gson): Documentation for the current release
* [User guide](https://github.com/google/gson/blob/master/UserGuide.md): This guide contains examples on how to use Gson in your code.
diff --git a/codegen/README.md b/codegen/README.md
index adee425a23..c9a9caf8d9 100644
--- a/codegen/README.md
+++ b/codegen/README.md
@@ -1,4 +1,4 @@
-# gson-codegen
+# codegen
This Maven module contains the source code for automatically generating Gson type adapters.
diff --git a/gson/bnd.bnd b/gson/bnd.bnd
index 07746f0a48..626a0c5bec 100644
--- a/gson/bnd.bnd
+++ b/gson/bnd.bnd
@@ -3,8 +3,8 @@ Bundle-Name: ${project.name}
Bundle-Description: ${project.description}
Bundle-Vendor: Google Gson Project
Bundle-ContactAddress: ${project.parent.url}
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6, JavaSE-1.7, JavaSE-1.8
-Require-Capability: osgi.ee;filter:="(&(osgi.ee=JavaSE)(version=1.6))"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7, JavaSE-1.8
+Require-Capability: osgi.ee;filter:="(&(osgi.ee=JavaSE)(version=1.7))"
# Optional dependency for JDK's sun.misc.Unsafe
# https://bnd.bndtools.org/chapters/920-faq.html#remove-unwanted-imports-
diff --git a/gson/build.gradle b/gson/build.gradle
index 4dd24c1d0f..5a8919bcef 100644
--- a/gson/build.gradle
+++ b/gson/build.gradle
@@ -4,8 +4,8 @@ apply plugin: 'maven'
group = 'com.google.code.gson'
version = '2.8.6-SNAPSHOT'
-sourceCompatibility = 1.6
-targetCompatibility = 1.6
+sourceCompatibility = 1.7
+targetCompatibility = 1.7
sourceSets.main.java.exclude("**/module-info.java")
dependencies {
diff --git a/gson/pom.xml b/gson/pom.xml
index 31ea881f6b..1b1eb0d117 100644
--- a/gson/pom.xml
+++ b/gson/pom.xml
@@ -58,8 +58,8 @@
[1.5,9)
-
- 1.6
+
+ 1.7
@@ -83,7 +83,7 @@
com.google.gson.internal:com.google.gson.internal.bind
- https://docs.oracle.com/javase/6/docs/api/
+ https://docs.oracle.com/javase/7/docs/api/
diff --git a/gson/src/main/java/com/google/gson/internal/$Gson$Types.java b/gson/src/main/java/com/google/gson/internal/$Gson$Types.java
index 617a644b1f..32a8456504 100644
--- a/gson/src/main/java/com/google/gson/internal/$Gson$Types.java
+++ b/gson/src/main/java/com/google/gson/internal/$Gson$Types.java
@@ -574,8 +574,9 @@ public Type getGenericComponentType() {
/**
* The WildcardType interface supports multiple upper bounds and multiple
- * lower bounds. We only support what the Java 6 language needs - at most one
- * bound. If a lower bound is set, the upper bound must be Object.class.
+ * lower bounds. We only support what the target Java version supports - at most one
+ * bound, see also https://bugs.openjdk.java.net/browse/JDK-8250660. If a lower bound
+ * is set, the upper bound must be Object.class.
*/
private static final class WildcardTypeImpl implements WildcardType, Serializable {
private final Type upperBound;
diff --git a/gson/src/main/java/com/google/gson/stream/MalformedJsonException.java b/gson/src/main/java/com/google/gson/stream/MalformedJsonException.java
index 9da70ebccd..65b0a7719b 100644
--- a/gson/src/main/java/com/google/gson/stream/MalformedJsonException.java
+++ b/gson/src/main/java/com/google/gson/stream/MalformedJsonException.java
@@ -30,15 +30,10 @@ public MalformedJsonException(String msg) {
}
public MalformedJsonException(String msg, Throwable throwable) {
- super(msg);
- // Using initCause() instead of calling super() because Java 1.5 didn't retrofit IOException
- // with a constructor with Throwable. This was done in Java 1.6
- initCause(throwable);
+ super(msg, throwable);
}
public MalformedJsonException(Throwable throwable) {
- // Using initCause() instead of calling super() because Java 1.5 didn't retrofit IOException
- // with a constructor with Throwable. This was done in Java 1.6
- initCause(throwable);
+ super(throwable);
}
}
diff --git a/gson/src/main/java/com/google/gson/stream/package-info.java b/gson/src/main/java/com/google/gson/stream/package-info.java
new file mode 100644
index 0000000000..bed6c62927
--- /dev/null
+++ b/gson/src/main/java/com/google/gson/stream/package-info.java
@@ -0,0 +1,4 @@
+/**
+ * This package provides classes for processing JSON in an efficient streaming way.
+ */
+package com.google.gson.stream;
diff --git a/gson/src/test/java/com/google/gson/internal/LinkedTreeMapTest.java b/gson/src/test/java/com/google/gson/internal/LinkedTreeMapTest.java
index 68220cf631..fa8b08c3e0 100644
--- a/gson/src/test/java/com/google/gson/internal/LinkedTreeMapTest.java
+++ b/gson/src/test/java/com/google/gson/internal/LinkedTreeMapTest.java
@@ -161,7 +161,7 @@ public void testJavaSerialization() throws IOException, ClassNotFoundException {
}
@SafeVarargs
- private void assertIterationOrder(Iterable actual, T... expected) {
+ private final void assertIterationOrder(Iterable actual, T... expected) {
ArrayList actualList = new ArrayList();
for (T t : actual) {
actualList.add(t);
diff --git a/pom.xml b/pom.xml
index 5e16a883b1..2c6dc9d617 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,7 +28,7 @@
UTF-8
- 1.6
+ 1.7