diff --git a/docs/changes.xml b/docs/changes.xml
index 9567aebd..4828717b 100644
--- a/docs/changes.xml
+++ b/docs/changes.xml
@@ -14,7 +14,7 @@
unit-ruby
unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11 unit-jsc13
unit-jsc14 unit-jsc15 unit-jsc16 unit-jsc17 unit-jsc18
- unit-jsc19"
+ unit-jsc19 unit-jsc20"
ver="1.30.0" rev="1"
date="" time=""
packager="Nginx Packaging <nginx-packaging@f5.com>">
@@ -28,6 +28,19 @@ NGINX Unit updated to 1.30.0.
+
+
+
+
+Initial release of Java 20 module for NGINX Unit.
+
+
+
+
+
+
diff --git a/pkg/deb/Makefile b/pkg/deb/Makefile
index 575a0984..09544892 100644
--- a/pkg/deb/Makefile
+++ b/pkg/deb/Makefile
@@ -19,6 +19,21 @@ BUILD_DEPENDS = $(BUILD_DEPENDS_unit)
MODULES=
+# Ubuntu 23.04
+ifeq ($(CODENAME),lunar)
+include Makefile.php
+include Makefile.python311
+include Makefile.go
+include Makefile.perl
+include Makefile.ruby
+include Makefile.jsc-common
+include Makefile.jsc11
+include Makefile.jsc17
+include Makefile.jsc18
+include Makefile.jsc19
+include Makefile.jsc20
+endif
+
# Ubuntu 22.10
ifeq ($(CODENAME),kinetic)
include Makefile.php
diff --git a/pkg/deb/Makefile.jsc20 b/pkg/deb/Makefile.jsc20
new file mode 100644
index 00000000..5b7c6d9f
--- /dev/null
+++ b/pkg/deb/Makefile.jsc20
@@ -0,0 +1,71 @@
+MODULES+= jsc20
+MODULE_SUFFIX_jsc20= jsc20
+
+MODULE_SUMMARY_jsc20= Java 20 module for NGINX Unit
+
+MODULE_VERSION_jsc20= $(VERSION)
+MODULE_RELEASE_jsc20= 1
+
+MODULE_CONFARGS_jsc20= java --module=java20 --home=/usr/lib/jvm/java-20-openjdk-$$\(DEB_HOST_ARCH\) --jars=/usr/share/unit-jsc-common/
+MODULE_MAKEARGS_jsc20= java20
+MODULE_INSTARGS_jsc20= java20-install
+
+MODULE_SOURCES_jsc20= unit.example-jsc-app \
+ unit.example-jsc20-config
+
+BUILD_DEPENDS_jsc20= openjdk-20-jdk-headless openjdk-20-jre-headless
+BUILD_DEPENDS+= $(BUILD_DEPENDS_jsc20)
+
+MODULE_BUILD_DEPENDS_jsc20=,openjdk-20-jdk-headless
+MODULE_DEPENDS_jsc20=,openjdk-20-jre-headless,unit-jsc-common (= $(MODULE_VERSION_jsc_common)-$(MODULE_RELEASE_jsc_common)~$(CODENAME))
+
+define MODULE_PREINSTALL_jsc20
+ mkdir -p debian/unit-jsc20/usr/share/doc/unit-jsc20/examples/jsc-app
+ install -m 644 -p debian/unit.example-jsc-app debian/unit-jsc20/usr/share/doc/unit-jsc20/examples/jsc-app/index.jsp
+ install -m 644 -p debian/unit.example-jsc20-config debian/unit-jsc20/usr/share/doc/unit-jsc20/examples/unit.config
+ install -m 644 -p src/java/README.JSR-340 debian/unit-jsc20/usr/share/doc/unit-jsc20/
+endef
+export MODULE_PREINSTALL_jsc20
+
+define MODULE_POSTINSTALL_jsc20
+ cd $$\(BUILDDIR_unit\) \&\& \
+ DESTDIR=$$\(INSTALLDIR\) make java-shared-uninstall
+endef
+export MODULE_POSTINSTALL_jsc20
+
+define MODULE_POST_jsc20
+cat <