diff --git a/LICENSE.txt b/LICENSE.txt
index 4ddcfc7f0f4845abcf3fd7ebdb025036cdab2dda..8c73749bd5ed78db13cff809c9b0f38e73f9cd57 100644
--- a/LICENSE.txt
+++ b/LICENSE.txt
@@ -332,9 +332,9 @@ Applications:
    Systray (systray.jar):
    Public domain.
 
-   Tomcat 8.5.50 (jasper-runtime.jar):
+   Tomcat 9.0.35 (jasper-runtime.jar):
    (not included in most distribution packages)
-   Copyright 1999-2019 The Apache Software Foundation
+   Copyright 1999-2020 The Apache Software Foundation
    See licenses/LICENSE-Apache2.0.txt
    See licenses/NOTICE-Tomcat.txt
 
diff --git a/apps/jetty/apache-tomcat-8.5.50/bin/tomcat-juli.jar b/apps/jetty/apache-tomcat-8.5.50/bin/tomcat-juli.jar
deleted file mode 100644
index f00f867463e5e54447be9c117bfd7dc6e2a2e58b..0000000000000000000000000000000000000000
Binary files a/apps/jetty/apache-tomcat-8.5.50/bin/tomcat-juli.jar and /dev/null differ
diff --git a/apps/jetty/apache-tomcat-8.5.50/lib/el-api.jar b/apps/jetty/apache-tomcat-8.5.50/lib/el-api.jar
deleted file mode 100644
index 277d3673dca76892947151016264f044ff62ae39..0000000000000000000000000000000000000000
Binary files a/apps/jetty/apache-tomcat-8.5.50/lib/el-api.jar and /dev/null differ
diff --git a/apps/jetty/apache-tomcat-8.5.50/lib/jasper-el.jar b/apps/jetty/apache-tomcat-8.5.50/lib/jasper-el.jar
deleted file mode 100644
index 0f0c715aa48deaf42ecd221bfd098ce804f3354b..0000000000000000000000000000000000000000
Binary files a/apps/jetty/apache-tomcat-8.5.50/lib/jasper-el.jar and /dev/null differ
diff --git a/apps/jetty/apache-tomcat-8.5.50/lib/jasper.jar b/apps/jetty/apache-tomcat-8.5.50/lib/jasper.jar
deleted file mode 100644
index d1a50945d84bb9e05f9643ddf5034b00d72207ad..0000000000000000000000000000000000000000
Binary files a/apps/jetty/apache-tomcat-8.5.50/lib/jasper.jar and /dev/null differ
diff --git a/apps/jetty/apache-tomcat-8.5.50/lib/jsp-api.jar b/apps/jetty/apache-tomcat-8.5.50/lib/jsp-api.jar
deleted file mode 100644
index 94ee3bc4fa2245ba39523a203c5af339a7fd8af4..0000000000000000000000000000000000000000
Binary files a/apps/jetty/apache-tomcat-8.5.50/lib/jsp-api.jar and /dev/null differ
diff --git a/apps/jetty/apache-tomcat-8.5.50/lib/tomcat-api.jar b/apps/jetty/apache-tomcat-8.5.50/lib/tomcat-api.jar
deleted file mode 100644
index a6eb292cbb8ee0c08b3f6883614065db4fb4cb22..0000000000000000000000000000000000000000
Binary files a/apps/jetty/apache-tomcat-8.5.50/lib/tomcat-api.jar and /dev/null differ
diff --git a/apps/jetty/apache-tomcat-8.5.50/lib/tomcat-util-scan.jar b/apps/jetty/apache-tomcat-8.5.50/lib/tomcat-util-scan.jar
deleted file mode 100644
index 330abbc046ab1422eef703e49ee3722afe9158e2..0000000000000000000000000000000000000000
Binary files a/apps/jetty/apache-tomcat-8.5.50/lib/tomcat-util-scan.jar and /dev/null differ
diff --git a/apps/jetty/apache-tomcat-8.5.50/lib/tomcat-util.jar b/apps/jetty/apache-tomcat-8.5.50/lib/tomcat-util.jar
deleted file mode 100644
index b70c57bc222f3fff01e1d96696ffaa6eb0ed7179..0000000000000000000000000000000000000000
Binary files a/apps/jetty/apache-tomcat-8.5.50/lib/tomcat-util.jar and /dev/null differ
diff --git a/apps/jetty/apache-tomcat-8.5.50/NOTICE b/apps/jetty/apache-tomcat-9.0.35/NOTICE
similarity index 71%
rename from apps/jetty/apache-tomcat-8.5.50/NOTICE
rename to apps/jetty/apache-tomcat-9.0.35/NOTICE
index 5c82767568df79c4a213281d6c90519754955bbc..7480ff45a12843b94e0f5dfd0a4228e816ad9a26 100644
--- a/apps/jetty/apache-tomcat-8.5.50/NOTICE
+++ b/apps/jetty/apache-tomcat-9.0.35/NOTICE
@@ -1,5 +1,5 @@
 Apache Tomcat
-Copyright 1999-2019 The Apache Software Foundation
+Copyright 1999-2020 The Apache Software Foundation
 
 This product includes software developed at
 The Apache Software Foundation (https://www.apache.org/).
@@ -10,6 +10,9 @@ developed by the Netty project
 and from finagle-native developed at Twitter
 (https://github.com/twitter/finagle).
 
+This software contains code derived from jgroups-kubernetes
+developed by the JGroups project (http://www.jgroups.org/).
+
 The Windows Installer is built with the Nullsoft
 Scriptable Install System (NSIS), which is
 open source software.  The original software and
@@ -21,6 +24,10 @@ JDT Core Batch Compiler component, which is open source software.
 The original software and related information is available at
 https://www.eclipse.org/jdt/core/.
 
+org.apache.tomcat.util.json.JSONParser.jj is a public domain javacc grammar
+for JSON written by Robert Fischer.
+https://github.com/RobertFischer/json-parser
+
 For portions of the Tomcat JNI OpenSSL API and the OpenSSL JSSE integration
 The org.apache.tomcat.jni and the org.apache.tomcat.net.openssl packages
 are derivative work originating from the Netty project and the finagle-native
@@ -28,6 +35,12 @@ project developed at Twitter
 * Copyright 2014 The Netty Project
 * Copyright 2014 Twitter
 
+For portions of the Tomcat cloud support
+The org.apache.catalina.tribes.membership.cloud package contains derivative
+work originating from the jgroups project.
+https://github.com/jgroups-extras/jgroups-kubernetes
+Copyright 2002-2018 Red Hat Inc.
+
 The original XML Schemas for Java EE Deployment Descriptors:
  - javaee_5.xsd
  - javaee_web_services_1_2.xsd
@@ -46,6 +59,10 @@ The original XML Schemas for Java EE Deployment Descriptors:
  - web-app_3_1.xsd
  - web-common_3_1.xsd
  - web-fragment_3_1.xsd
+ - javaee_8.xsd
+ - web-app_4_0.xsd
+ - web-common_4_0.xsd
+ - web-fragment_4_0.xsd
 
 may be obtained from:
 http://www.oracle.com/webfolder/technetwork/jsc/xml/ns/javaee/index.html
diff --git a/apps/jetty/apache-tomcat-9.0.35/bin/tomcat-juli.jar b/apps/jetty/apache-tomcat-9.0.35/bin/tomcat-juli.jar
new file mode 100644
index 0000000000000000000000000000000000000000..55b1ff61d96212d31623d5d610769b714b836cb5
Binary files /dev/null and b/apps/jetty/apache-tomcat-9.0.35/bin/tomcat-juli.jar differ
diff --git a/apps/jetty/apache-tomcat-9.0.35/lib/el-api.jar b/apps/jetty/apache-tomcat-9.0.35/lib/el-api.jar
new file mode 100644
index 0000000000000000000000000000000000000000..ef049b2cf6f0eb8e6c863bad3cd697498659230a
Binary files /dev/null and b/apps/jetty/apache-tomcat-9.0.35/lib/el-api.jar differ
diff --git a/apps/jetty/apache-tomcat-9.0.35/lib/jasper-el.jar b/apps/jetty/apache-tomcat-9.0.35/lib/jasper-el.jar
new file mode 100644
index 0000000000000000000000000000000000000000..b5e6fc4883dab237359951cb93f0510a3bbdc2f1
Binary files /dev/null and b/apps/jetty/apache-tomcat-9.0.35/lib/jasper-el.jar differ
diff --git a/apps/jetty/apache-tomcat-9.0.35/lib/jasper.jar b/apps/jetty/apache-tomcat-9.0.35/lib/jasper.jar
new file mode 100644
index 0000000000000000000000000000000000000000..623f1631571cb96e39f11f4a2400bba6eb4fb15b
Binary files /dev/null and b/apps/jetty/apache-tomcat-9.0.35/lib/jasper.jar differ
diff --git a/apps/jetty/apache-tomcat-9.0.35/lib/jsp-api.jar b/apps/jetty/apache-tomcat-9.0.35/lib/jsp-api.jar
new file mode 100644
index 0000000000000000000000000000000000000000..f2e05db6ef7cb082f7c107095548a6900bf2f909
Binary files /dev/null and b/apps/jetty/apache-tomcat-9.0.35/lib/jsp-api.jar differ
diff --git a/apps/jetty/apache-tomcat-9.0.35/lib/tomcat-api.jar b/apps/jetty/apache-tomcat-9.0.35/lib/tomcat-api.jar
new file mode 100644
index 0000000000000000000000000000000000000000..60f93d7da0d4f1f0b222c5dfe496a76159c79aa7
Binary files /dev/null and b/apps/jetty/apache-tomcat-9.0.35/lib/tomcat-api.jar differ
diff --git a/apps/jetty/apache-tomcat-9.0.35/lib/tomcat-util-scan.jar b/apps/jetty/apache-tomcat-9.0.35/lib/tomcat-util-scan.jar
new file mode 100644
index 0000000000000000000000000000000000000000..36701a398facee03d2df08b8061195d366ba7bcf
Binary files /dev/null and b/apps/jetty/apache-tomcat-9.0.35/lib/tomcat-util-scan.jar differ
diff --git a/apps/jetty/apache-tomcat-9.0.35/lib/tomcat-util.jar b/apps/jetty/apache-tomcat-9.0.35/lib/tomcat-util.jar
new file mode 100644
index 0000000000000000000000000000000000000000..33a6ca13bf65afb5ab06ef15c05f448bb21599cb
Binary files /dev/null and b/apps/jetty/apache-tomcat-9.0.35/lib/tomcat-util.jar differ
diff --git a/build.xml b/build.xml
index 4c37cc2b6ae1e9f2c2d88c68d121ad545bf0e873..5e7d3442030dd876ff11ba23c9c3662218ab46f3 100644
--- a/build.xml
+++ b/build.xml
@@ -9,7 +9,7 @@
     <property file="build.properties"/>
     <!--  When changing, also change javadoc URL in build.properties, and checksum in apps/jetty/build.xml -->
     <property name="jetty.ver" value="9.3.28.v20191105" />
-    <property name="tomcat.ver" value="8.5.50" />
+    <property name="tomcat.ver" value="9.0.35" />
 
     <!-- You probably don't want to change anything from here down -->
     <target name="help" depends="all" />
diff --git a/debian-alt/bionic/control b/debian-alt/bionic/control
index 46e0af8319670cef30e42be6910c4529b198a0f7..9985be4ff32587c77e2b4ca11b68fd2c3ffe5f74 100644
--- a/debian-alt/bionic/control
+++ b/debian-alt/bionic/control
@@ -11,7 +11,7 @@ Build-Depends: debhelper (>= 9.20160709)
  ,openjdk-8-jdk
  ,libjetty9-java (>= 9.4)
  ,libtaglibs-standard-jstlel-java
- ,libtomcat8-java
+ ,libtomcat9-java
  ,dh-apparmor
  ,bash-completion
  ,gettext
@@ -81,7 +81,7 @@ Depends: ${misc:Depends}, ${java:Depends}, ${shlibs:Depends},
  libjson-simple-java (>= 2),libjson-simple-java (<< 3),
  libjetty9-java (>= 9.4),
  libtaglibs-standard-jstlel-java,
- libtomcat8-java,
+ libtomcat9-java,
  famfamfam-flag-png
 Replaces: i2p ( << 0.8.6-5)
 Breaks: i2p (<< 0.8.6-5)
diff --git a/debian-alt/bionic/i2p-router.links b/debian-alt/bionic/i2p-router.links
index de797b27e9213792567e08ec864131755b5c4e41..d492f4d8115f45aac9bbef30f62b1bef529af371 100644
--- a/debian-alt/bionic/i2p-router.links
+++ b/debian-alt/bionic/i2p-router.links
@@ -33,21 +33,21 @@ usr/share/java/servlet-api-3.1.jar usr/share/i2p/lib/javax.servlet.jar
 usr/share/java/jsp-api-2.3.jar usr/share/i2p/lib/jsp-api.jar
 
 
-# comment out if not building with libtomcat8-java
+# comment out if not building with libtomcat9-java
 # ubuntu: only in xenial+
 # debian: wheezy-backports, jessie+
 # legacy name, contains only tomcat-juli, not commons-logging
-usr/share/java/tomcat8-juli.jar usr/share/i2p/lib/commons-logging.jar
-usr/share/java/tomcat8-jasper.jar usr/share/i2p/lib/jasper-runtime.jar
+usr/share/java/tomcat9-juli.jar usr/share/i2p/lib/commons-logging.jar
+usr/share/java/tomcat9-jasper.jar usr/share/i2p/lib/jasper-runtime.jar
 # combined into jasper-runtime.jar in non-package builds
-usr/share/java/tomcat8-coyote.jar usr/share/i2p/lib/tomcat-coyote.jar
-usr/share/java/tomcat8-api.jar usr/share/i2p/lib/tomcat-api.jar
-usr/share/java/tomcat8-util.jar usr/share/i2p/lib/tomcat-util.jar
-usr/share/java/tomcat8-util-scan.jar usr/share/i2p/lib/tomcat-util-scan.jar
+usr/share/java/tomcat9-coyote.jar usr/share/i2p/lib/tomcat-coyote.jar
+usr/share/java/tomcat9-api.jar usr/share/i2p/lib/tomcat-api.jar
+usr/share/java/tomcat9-util.jar usr/share/i2p/lib/tomcat-util.jar
+usr/share/java/tomcat9-util-scan.jar usr/share/i2p/lib/tomcat-util-scan.jar
 # combined into commons-el.jar in non-package builds
-usr/share/java/tomcat8-jasper-el.jar usr/share/i2p/lib/jasper-el.jar
+usr/share/java/tomcat9-jasper-el.jar usr/share/i2p/lib/jasper-el.jar
 # legacy name in lib/
-usr/share/java/tomcat8-el-api.jar usr/share/i2p/lib/commons-el.jar
+usr/share/java/tomcat9-el-api.jar usr/share/i2p/lib/commons-el.jar
 # tomcat pulls in ecj, link to it for eepsite webapps needing a compiler
 usr/share/java/ecj.jar usr/share/i2p/lib/ecj.jar
 
diff --git a/debian-alt/bionic/rules b/debian-alt/bionic/rules
index 775815e6684ab2de8058a30153528fccea3d686c..74cf74db0b2c80edc11dfc1897e30df40e5e1eed 100755
--- a/debian-alt/bionic/rules
+++ b/debian-alt/bionic/rules
@@ -109,20 +109,20 @@ endif
 	ln -sf /usr/share/java/jetty9-jmx.jar $(CURDIR)/apps/jetty/jettylib/org.mortbay.jmx.jar
 	@# following two are from libservlet3.1-java which is a dependency of libjetty9-java
 	ln -sf /usr/share/java/servlet-api-3.1.jar $(CURDIR)/apps/jetty/jettylib/javax.servlet.jar
-	@# this is roughly the same as tomcat8-jsp-api.jar, we use this one
+	@# this is roughly the same as tomcat9-jsp-api.jar, we use this one
 	ln -sf /usr/share/java/jsp-api-2.3.jar $(CURDIR)/apps/jetty/jettylib/jsp-api.jar
 
 	@# debian and ubuntu: wheezy-backports, jessie+, xenial+
-	@/bin/echo -e "with-libtomcat8-java=true" >> $(CURDIR)/override.properties
+	@/bin/echo -e "with-libtomcat9-java=true" >> $(CURDIR)/override.properties
 	mkdir -p $(CURDIR)/apps/jetty/jettylib
-	ln -sf /usr/share/java/tomcat8-api.jar $(CURDIR)/apps/jetty/jettylib/tomcat-api.jar
-	ln -sf /usr/share/java/tomcat8-coyote.jar $(CURDIR)/apps/jetty/jettylib/tomcat-coyote.jar
-	ln -sf /usr/share/java/tomcat8-el-api.jar $(CURDIR)/apps/jetty/jettylib/commons-el.jar
-	ln -sf /usr/share/java/tomcat8-jasper.jar $(CURDIR)/apps/jetty/jettylib/jasper-runtime.jar
-	ln -sf /usr/share/java/tomcat8-jasper-el.jar $(CURDIR)/apps/jetty/jettylib/jasper-el.jar
-	ln -sf /usr/share/java/tomcat8-juli.jar $(CURDIR)/apps/jetty/jettylib/commons-logging.jar
-	ln -sf /usr/share/java/tomcat8-util.jar $(CURDIR)/apps/jetty/jettylib/tomcat-util.jar
-	ln -sf /usr/share/java/tomcat8-util-scan.jar $(CURDIR)/apps/jetty/jettylib/tomcat-util-scan.jar
+	ln -sf /usr/share/java/tomcat9-api.jar $(CURDIR)/apps/jetty/jettylib/tomcat-api.jar
+	ln -sf /usr/share/java/tomcat9-coyote.jar $(CURDIR)/apps/jetty/jettylib/tomcat-coyote.jar
+	ln -sf /usr/share/java/tomcat9-el-api.jar $(CURDIR)/apps/jetty/jettylib/commons-el.jar
+	ln -sf /usr/share/java/tomcat9-jasper.jar $(CURDIR)/apps/jetty/jettylib/jasper-runtime.jar
+	ln -sf /usr/share/java/tomcat9-jasper-el.jar $(CURDIR)/apps/jetty/jettylib/jasper-el.jar
+	ln -sf /usr/share/java/tomcat9-juli.jar $(CURDIR)/apps/jetty/jettylib/commons-logging.jar
+	ln -sf /usr/share/java/tomcat9-util.jar $(CURDIR)/apps/jetty/jettylib/tomcat-util.jar
+	ln -sf /usr/share/java/tomcat9-util-scan.jar $(CURDIR)/apps/jetty/jettylib/tomcat-util-scan.jar
 
 	@# debian and ubuntu: stretch+, zesty+
 	@/bin/echo -e "with-libtaglibs-standard=true" >> $(CURDIR)/override.properties
diff --git a/debian-alt/doc/dependencies.txt b/debian-alt/doc/dependencies.txt
index 20d8403577756754081255c8989967ba3497dc6c..31140150b0cd6984819cbc32892ec76888ea7b3c 100644
--- a/debian-alt/doc/dependencies.txt
+++ b/debian-alt/doc/dependencies.txt
@@ -8,7 +8,7 @@ improve our official packages and support other packagers.
 Our packages are available at https://deb.i2p2.de/ and
 instructions are at https://geti2p.net/debian
 
-This document is current as of release 0.9.38, 2018-01-xx.
+This document is current as of release 0.9.47, 2020-08-xx.
 
 
 Build-only Dependencies
@@ -18,8 +18,7 @@ Build-only Dependencies
   This is the standard java build system.
 
 * Java JDK
-  We require openjdk-7-java or higher to build. For 8, set bootclasspath to
-  java 7 jars if available.
+  We require openjdk-8-java or higher to build.
   For 9 or higher, require the same or higher runtime, since bootclasspath
   isn't possible.
 
@@ -30,7 +29,7 @@ Current Runtime Dependencies
 ----------------------------
 
 * Java JRE
-  We require Java 7 or higher runtime, if built with Java 7 or bootclasspath was set
+  We require Java 8 or higher runtime, if built with Java 8 or bootclasspath was set
   in the build. If built with 8 or higher and bootclasspath was not set,
   then require the same JRE or higher.
 
@@ -48,21 +47,21 @@ Current Runtime Dependencies
 
 * libjson-simple-java (jessie and later, trusty and later only)
   For /usr/share/java/json-simple.jar.
-  In non-Debian builds we bundle the 1.1.1 source code; it's removed in the Debian source package.
-  Compatible with 1.x and 2.x only; not compatible with 3.x.
+  In non-Debian builds we bundle the 2.x API portion of the 2.3.0 source code; it's removed in the Debian source package.
+  Compatible with 2.x only; not compatible with 3.x.
 
 * libjetty9-java
   For /usr/share/java/jetty9-*.jar.
   In non-Debian builds we bundle the jars; it's removed in the Debian source package.
   This is for Jetty 9.3.x, which is the same as 9.4.x except it's Java 8 compatible.
 
-* libtomcat8-java
-  For /usr/share/java/tomcat8-*.jar.
+* libtomcat9-java
+  For /usr/share/java/tomcat9-*.jar.
   In non-Debian builds we bundle the jars as packaged in the Jetty 9.2 binary release,
   which are different than the way they are packaged for Debian.
   They are removed in the Debian source package.
-  This is for Tomcat 8.5.x, which is what's in recent Debian/Ubuntu.
-  Tomcat 8.0.x in older Debian/Ubuntu may or may not work.
+  This is for Tomcat 9.0.x, which is what's in recent Debian/Ubuntu.
+  Tomcat 8.5.x in Xenial also works.
 
 * libtaglibs-standard-*-java (stretch and later, artful and later only)
   Provides JSTL 1.2, solves the glassfish-javaee problem described below.
@@ -93,7 +92,7 @@ Current Runtime Dependencies
 
 * famfamfam-flag-png
   Country flags (all except precise)
-  In precise and non-Debian builds we bundle the flags.
+  In non-Debian builds we bundle the flags.
 
 
 Bundled code, NOT current dependencies