diff --git a/debian/changelog b/debian/changelog
index e3e308dd79749a18f27b317fadbfa70d73a2a7d8..6eb903c08fe8e6d4a543c80b581f9848315038e9 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,7 +1,12 @@
 java-common (0.76) UNRELEASED; urgency=medium
 
+  [ Samuel Thibault ]
   * Add hurd-amd64 case.
 
+  [ Emmanuel Bourg ]
+  * Use OpenJDK 21 on alpha, amd64, arm64, armel, armhf, i386, ia64, mipsel,
+    mips64el, powerpc, ppc64, ppc64el, riscv64, s390x, sh4, sparc64 and x32.
+
  -- Samuel Thibault <sthibault@debian.org>  Mon, 13 Nov 2023 01:57:41 +0100
 
 java-common (0.75) unstable; urgency=medium
diff --git a/debian/java_defaults.mk b/debian/java_defaults.mk
index 9268c50167219ce64a1e9cb7da7fdfeb9b6994fd..24ff6b5c76d52ce287b3d367567e7e876a47c789 100644
--- a/debian/java_defaults.mk
+++ b/debian/java_defaults.mk
@@ -1,11 +1,13 @@
 # makefile fragment to define the macros java_default_version,
 # java{,8,...,17}_architectures
 
-java17_architectures = \
+java21_architectures = \
 		alpha amd64 arm64 armel armhf i386 \
-		ia64 loong64 m68k mipsel mips64el \
+		ia64 loong64 mipsel mips64el \
 		powerpc ppc64 ppc64el \
 		riscv64 s390x sh4 sparc64 x32
+java17_architectures = $(java21_architectures) \
+		m68k
 java11_architectures = $(java17_architectures) \
 		mips
 java8_architectures = $(java11_architectures)
@@ -19,7 +21,9 @@ java_dependency = $(strip $(1) [$(foreach a,$(filter-out $(java_default_architec
 
 
 _java_host_arch := $(if $(DEB_HOST_ARCH),$(DEB_HOST_ARCH),$(shell dpkg-architecture -qDEB_HOST_ARCH))
-ifneq (,$(filter $(_java_host_arch),$(java17_architectures)))
+ifneq (,$(filter $(_java_host_arch),$(java21_architectures)))
+  java_default_version = 21
+else ifneq (,$(filter $(_java_host_arch),$(java17_architectures)))
   java_default_version = 17
 else ifneq (,$(filter $(_java_host_arch),$(java11_architectures)))
   java_default_version = 11
@@ -30,7 +34,9 @@ endif
 # The minimum source/target compatibility level supported by the default JDK
 # This variable can be used by build scripts invoking directly javac with
 # the -source, -target or --release options.
-ifneq (,$(filter $(_java_host_arch),$(java17_architectures)))
+ifneq (,$(filter $(_java_host_arch),$(java21_architectures)))
+  java_compat_level = 8
+else ifneq (,$(filter $(_java_host_arch),$(java17_architectures)))
   java_compat_level = 7
 else
   java_compat_level = 6