diff --git a/tools/run_on_app_dump.py b/tools/run_on_app_dump.py
index 176ce02..cc22a3b 100755
--- a/tools/run_on_app_dump.py
+++ b/tools/run_on_app_dump.py
@@ -9,6 +9,7 @@
 import compiledump
 import gradle
 import hashlib
+import jdk
 import optparse
 import os
 import shutil
@@ -449,7 +450,7 @@
         f.write(line)
 
 
-def download_app(app_sha, internal, quiet=False):
+def download_sha(app_sha, internal, quiet=False):
   if internal:
     utils.DownloadFromX20(app_sha)
   else:
@@ -508,7 +509,7 @@
               else os.path.join(opensource_basedir, app_folder))
   if not os.path.exists(app_dir) and not options.golem:
     # Download the app from google storage.
-    download_app(app_dir + ".tar.gz.sha1", app.internal)
+    download_sha(app_dir + ".tar.gz.sha1", app.internal)
 
   # Ensure that the dumps are in place
   assert os.path.isfile(dump_for_app(app_dir, app)), "Could not find dump " \
@@ -997,6 +998,10 @@
   print('')
   print('createOpenSourceAppBenchmarks() {')
   print_indented('final cpus = ["Lenovo M90"];', 2)
+  # Avoid calculating this for every app
+  jdk_gz = jdk.GetJdkHome() + '.tar.gz'
+  download_sha(jdk_gz + '.sha1', False, quiet=True)
+  jdk_sha256 = get_sha256(jdk_gz)
   for app in options.apps:
     if app.folder and not app.internal:
       indentation = 2;
@@ -1015,24 +1020,31 @@
       print_indented('options.fromRevision = 9700;', indentation);
       print_indented('options.mainFile = "tools/run_on_app_dump.py "', indentation)
       print_indented('"--golem --shrinker r8 --app %s";' % app.name, indentation + 4)
+
       app_gz = os.path.join(utils.OPENSOURCE_DUMPS_DIR, app.folder + '.tar.gz')
-      app_sha = app_gz + '.sha1'
-      # Golem uses a sha256 of the file in the cache, and you need to specify that.
-      download_app(app_sha, app.internal, quiet=True)
-      sha256 = get_sha256(app_gz)
-      sha = get_sha_from_file(app_sha)
-      print_indented('final resource = BenchmarkResource("",', indentation)
-      print_indented('type: BenchmarkResourceType.Storage,', indentation + 4)
-      print_indented('uri: "gs://r8-deps/%s",' % sha, indentation + 4)
-      print_indented('hash:', indentation + 4)
-      print_indented('"%s",' % sha256, indentation + 8)
-      print_indented('extract: "gz");', indentation + 4);
-      print_indented('options.resources.add(resource);', indentation)
+      add_golem_resource(indentation, app_gz, 'app_resource')
+      add_golem_resource(indentation, jdk_gz, 'openjdk', sha256=jdk_sha256)
+
       print_indented('dumpsSuite.addBenchmark(name);', indentation)
       indentation = 2
       print_indented('}', indentation)
   print('}')
 
+def add_golem_resource(indentation, gz, name, sha256=None):
+  sha = gz + '.sha1'
+  if not sha256:
+    # Golem uses a sha256 of the file in the cache, and you need to specify that.
+    download_sha(sha, False, quiet=True)
+    sha256 = get_sha256(gz)
+  sha = get_sha_from_file(sha)
+  print_indented('final %s = BenchmarkResource("",' % name, indentation)
+  print_indented('type: BenchmarkResourceType.Storage,', indentation + 4)
+  print_indented('uri: "gs://r8-deps/%s",' % sha, indentation + 4)
+  print_indented('hash:', indentation + 4)
+  print_indented('"%s",' % sha256, indentation + 8)
+  print_indented('extract: "gz");', indentation + 4);
+  print_indented('options.resources.add(%s);' % name, indentation)
+
 def main(argv):
   (options, args) = parse_options(argv)
 
