Skip to content

Add AdoptOpenJDK 15_36 support. #8781

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 10 commits into from
Oct 16, 2020

Conversation

dinogun
Copy link
Contributor

@dinogun dinogun commented Sep 25, 2020

No description provided.

dinogun added a commit to dinogun/openjdk-docker-1 that referenced this pull request Sep 25, 2020
@yosifkit
Copy link
Member

The powershell image issue was noted in #8503 (comment) (closing that PR in favor of this one).

dinogun added a commit to dinogun/openjdk-docker-1 that referenced this pull request Sep 25, 2020
karianna pushed a commit to AdoptOpenJDK/openjdk-docker that referenced this pull request Sep 26, 2020
@dinogun
Copy link
Contributor Author

dinogun commented Sep 28, 2020

Hi @yosifkit, have you seen the windows issue (file not found error) above in the failing tests. It seems to be similar to this reported issue. Also the other issue is manifest not found for jre images which seems to be weird, wondering if it is a bashbrew issue. Need your help here !

@yosifkit
Copy link
Member

file not found error

That is normal for the mcr.microsoft.com/windows/nanoserver:1809 image; there is no pwsh in the image. There is also very limited ways to download or extract a remote zip. Likely you'll need to do something similar to the openjdk images and COPY --from the specific windowsservercore version of the image.

manifest not found

That is fine and we can just ignore them: #8379 (comment).

@dinogun
Copy link
Contributor Author

dinogun commented Sep 29, 2020

Have disabled nanoserver images for now as we need to refactor those Dockerfiles. @yosifkit Thanks for your help !

@dinogun
Copy link
Contributor Author

dinogun commented Sep 29, 2020

@yosifkit Just wanted to clarify that I'll submit the nanoserver changes as a separate PR. So if you are ok with this, please merge, thanks !

@yosifkit
Copy link
Member

Diff:
diff --git a/_bashbrew-cat b/_bashbrew-cat
index cdcdf16..ed23417 100644
--- a/_bashbrew-cat
+++ b/_bashbrew-cat
@@ -1,94 +1,94 @@
 Maintainers: Dinakar Guniguntala <[email protected]> (@dinogun)
 GitRepo: https://github.com/AdoptOpenJDK/openjdk-docker.git
 
-Tags: 8u262-b10-jdk-hotspot-bionic, 8-jdk-hotspot-bionic, 8-hotspot-bionic
-SharedTags: 8u262-b10-jdk-hotspot, 8-jdk-hotspot, 8-hotspot
+Tags: 8u265-b01-jdk-hotspot-bionic, 8-jdk-hotspot-bionic, 8-hotspot-bionic
+SharedTags: 8u265-b01-jdk-hotspot, 8-jdk-hotspot, 8-hotspot
 Architectures: amd64, arm32v7, arm64v8, ppc64le, s390x
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
 Directory: 8/jdk/ubuntu
 File: Dockerfile.hotspot.releases.full
 
-Tags: 8u262-b10-jdk-hotspot-windowsservercore-1809, 8-jdk-hotspot-windowsservercore-1809, 8-hotspot-windowsservercore-1809
-SharedTags: 8u262-b10-jdk-hotspot-windowsservercore, 8-jdk-hotspot-windowsservercore, 8-hotspot-windowsservercore, 8u262-b10-jdk-hotspot, 8-jdk-hotspot, 8-hotspot
+Tags: 8u265-b01-jdk-hotspot-windowsservercore-1809, 8-jdk-hotspot-windowsservercore-1809, 8-hotspot-windowsservercore-1809
+SharedTags: 8u265-b01-jdk-hotspot-windowsservercore, 8-jdk-hotspot-windowsservercore, 8-hotspot-windowsservercore, 8u265-b01-jdk-hotspot, 8-jdk-hotspot, 8-hotspot
 Architectures: windows-amd64
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
 Directory: 8/jdk/windows/windowsservercore-1809
 File: Dockerfile.hotspot.releases.full
 Constraints: windowsservercore-1809
 
-Tags: 8u262-b10-jdk-hotspot-windowsservercore-ltsc2016, 8-jdk-hotspot-windowsservercore-ltsc2016, 8-hotspot-windowsservercore-ltsc2016
-SharedTags: 8u262-b10-jdk-hotspot-windowsservercore, 8-jdk-hotspot-windowsservercore, 8-hotspot-windowsservercore, 8u262-b10-jdk-hotspot, 8-jdk-hotspot, 8-hotspot
+Tags: 8u265-b01-jdk-hotspot-windowsservercore-ltsc2016, 8-jdk-hotspot-windowsservercore-ltsc2016, 8-hotspot-windowsservercore-ltsc2016
+SharedTags: 8u265-b01-jdk-hotspot-windowsservercore, 8-jdk-hotspot-windowsservercore, 8-hotspot-windowsservercore, 8u265-b01-jdk-hotspot, 8-jdk-hotspot, 8-hotspot
 Architectures: windows-amd64
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
 Directory: 8/jdk/windows/windowsservercore-ltsc2016
 File: Dockerfile.hotspot.releases.full
 Constraints: windowsservercore-ltsc2016
 
-Tags: 8u262-b10-jdk-openj9-0.21.0-bionic, 8-jdk-openj9-bionic, 8-openj9-bionic
-SharedTags: 8u262-b10-jdk-openj9-0.21.0, 8-jdk-openj9, 8-openj9
+Tags: 8u265-b01-jdk-openj9-0.21.0-bionic, 8-jdk-openj9-bionic, 8-openj9-bionic
+SharedTags: 8u265-b01-jdk-openj9-0.21.0, 8-jdk-openj9, 8-openj9
 Architectures: amd64, ppc64le, s390x
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
 Directory: 8/jdk/ubuntu
 File: Dockerfile.openj9.releases.full
 
-Tags: 8u262-b10-jdk-openj9-0.21.0-windowsservercore-1809, 8-jdk-openj9-windowsservercore-1809, 8-openj9-windowsservercore-1809
-SharedTags: 8u262-b10-jdk-openj9-0.21.0-windowsservercore, 8-jdk-openj9-windowsservercore, 8-openj9-windowsservercore, 8u262-b10-jdk-openj9-0.21.0, 8-jdk-openj9, 8-openj9
+Tags: 8u265-b01-jdk-openj9-0.21.0-windowsservercore-1809, 8-jdk-openj9-windowsservercore-1809, 8-openj9-windowsservercore-1809
+SharedTags: 8u265-b01-jdk-openj9-0.21.0-windowsservercore, 8-jdk-openj9-windowsservercore, 8-openj9-windowsservercore, 8u265-b01-jdk-openj9-0.21.0, 8-jdk-openj9, 8-openj9
 Architectures: windows-amd64
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
 Directory: 8/jdk/windows/windowsservercore-1809
 File: Dockerfile.openj9.releases.full
 Constraints: windowsservercore-1809
 
-Tags: 8u262-b10-jdk-openj9-0.21.0-windowsservercore-ltsc2016, 8-jdk-openj9-windowsservercore-ltsc2016, 8-openj9-windowsservercore-ltsc2016
-SharedTags: 8u262-b10-jdk-openj9-0.21.0-windowsservercore, 8-jdk-openj9-windowsservercore, 8-openj9-windowsservercore, 8u262-b10-jdk-openj9-0.21.0, 8-jdk-openj9, 8-openj9
+Tags: 8u265-b01-jdk-openj9-0.21.0-windowsservercore-ltsc2016, 8-jdk-openj9-windowsservercore-ltsc2016, 8-openj9-windowsservercore-ltsc2016
+SharedTags: 8u265-b01-jdk-openj9-0.21.0-windowsservercore, 8-jdk-openj9-windowsservercore, 8-openj9-windowsservercore, 8u265-b01-jdk-openj9-0.21.0, 8-jdk-openj9, 8-openj9
 Architectures: windows-amd64
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
 Directory: 8/jdk/windows/windowsservercore-ltsc2016
 File: Dockerfile.openj9.releases.full
 Constraints: windowsservercore-ltsc2016
 
-Tags: 8u262-b10-jre-hotspot-bionic, 8-jre-hotspot-bionic
-SharedTags: 8u262-b10-jre-hotspot, 8-jre-hotspot
+Tags: 8u265-b01-jre-hotspot-bionic, 8-jre-hotspot-bionic
+SharedTags: 8u265-b01-jre-hotspot, 8-jre-hotspot
 Architectures: amd64, arm32v7, arm64v8, ppc64le, s390x
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
 Directory: 8/jre/ubuntu
 File: Dockerfile.hotspot.releases.full
 
-Tags: 8u262-b10-jre-hotspot-windowsservercore-1809, 8-jre-hotspot-windowsservercore-1809
-SharedTags: 8u262-b10-jre-hotspot-windowsservercore, 8-jre-hotspot-windowsservercore, 8u262-b10-jre-hotspot, 8-jre-hotspot
+Tags: 8u265-b01-jre-hotspot-windowsservercore-1809, 8-jre-hotspot-windowsservercore-1809
+SharedTags: 8u265-b01-jre-hotspot-windowsservercore, 8-jre-hotspot-windowsservercore, 8u265-b01-jre-hotspot, 8-jre-hotspot
 Architectures: windows-amd64
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
 Directory: 8/jre/windows/windowsservercore-1809
 File: Dockerfile.hotspot.releases.full
 Constraints: windowsservercore-1809
 
-Tags: 8u262-b10-jre-hotspot-windowsservercore-ltsc2016, 8-jre-hotspot-windowsservercore-ltsc2016
-SharedTags: 8u262-b10-jre-hotspot-windowsservercore, 8-jre-hotspot-windowsservercore, 8u262-b10-jre-hotspot, 8-jre-hotspot
+Tags: 8u265-b01-jre-hotspot-windowsservercore-ltsc2016, 8-jre-hotspot-windowsservercore-ltsc2016
+SharedTags: 8u265-b01-jre-hotspot-windowsservercore, 8-jre-hotspot-windowsservercore, 8u265-b01-jre-hotspot, 8-jre-hotspot
 Architectures: windows-amd64
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
 Directory: 8/jre/windows/windowsservercore-ltsc2016
 File: Dockerfile.hotspot.releases.full
 Constraints: windowsservercore-ltsc2016
 
-Tags: 8u262-b10-jre-openj9-0.21.0-bionic, 8-jre-openj9-bionic
-SharedTags: 8u262-b10-jre-openj9-0.21.0, 8-jre-openj9
+Tags: 8u265-b01-jre-openj9-0.21.0-bionic, 8-jre-openj9-bionic
+SharedTags: 8u265-b01-jre-openj9-0.21.0, 8-jre-openj9
 Architectures: amd64, ppc64le, s390x
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
 Directory: 8/jre/ubuntu
 File: Dockerfile.openj9.releases.full
 
-Tags: 8u262-b10-jre-openj9-0.21.0-windowsservercore-1809, 8-jre-openj9-windowsservercore-1809
-SharedTags: 8u262-b10-jre-openj9-0.21.0-windowsservercore, 8-jre-openj9-windowsservercore, 8u262-b10-jre-openj9-0.21.0, 8-jre-openj9
+Tags: 8u265-b01-jre-openj9-0.21.0-windowsservercore-1809, 8-jre-openj9-windowsservercore-1809
+SharedTags: 8u265-b01-jre-openj9-0.21.0-windowsservercore, 8-jre-openj9-windowsservercore, 8u265-b01-jre-openj9-0.21.0, 8-jre-openj9
 Architectures: windows-amd64
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
 Directory: 8/jre/windows/windowsservercore-1809
 File: Dockerfile.openj9.releases.full
 Constraints: windowsservercore-1809
 
-Tags: 8u262-b10-jre-openj9-0.21.0-windowsservercore-ltsc2016, 8-jre-openj9-windowsservercore-ltsc2016
-SharedTags: 8u262-b10-jre-openj9-0.21.0-windowsservercore, 8-jre-openj9-windowsservercore, 8u262-b10-jre-openj9-0.21.0, 8-jre-openj9
+Tags: 8u265-b01-jre-openj9-0.21.0-windowsservercore-ltsc2016, 8-jre-openj9-windowsservercore-ltsc2016
+SharedTags: 8u265-b01-jre-openj9-0.21.0-windowsservercore, 8-jre-openj9-windowsservercore, 8u265-b01-jre-openj9-0.21.0, 8-jre-openj9
 Architectures: windows-amd64
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
 Directory: 8/jre/windows/windowsservercore-ltsc2016
 File: Dockerfile.openj9.releases.full
 Constraints: windowsservercore-ltsc2016
@@ -96,14 +96,14 @@ Constraints: windowsservercore-ltsc2016
 Tags: 11.0.8_10-jdk-hotspot-bionic, 11-jdk-hotspot-bionic, 11-hotspot-bionic
 SharedTags: 11.0.8_10-jdk-hotspot, 11-jdk-hotspot, 11-hotspot
 Architectures: amd64, arm32v7, arm64v8, ppc64le, s390x
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
 Directory: 11/jdk/ubuntu
 File: Dockerfile.hotspot.releases.full
 
 Tags: 11.0.8_10-jdk-hotspot-windowsservercore-1809, 11-jdk-hotspot-windowsservercore-1809, 11-hotspot-windowsservercore-1809
 SharedTags: 11.0.8_10-jdk-hotspot-windowsservercore, 11-jdk-hotspot-windowsservercore, 11-hotspot-windowsservercore, 11.0.8_10-jdk-hotspot, 11-jdk-hotspot, 11-hotspot
 Architectures: windows-amd64
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
 Directory: 11/jdk/windows/windowsservercore-1809
 File: Dockerfile.hotspot.releases.full
 Constraints: windowsservercore-1809
@@ -111,22 +111,22 @@ Constraints: windowsservercore-1809
 Tags: 11.0.8_10-jdk-hotspot-windowsservercore-ltsc2016, 11-jdk-hotspot-windowsservercore-ltsc2016, 11-hotspot-windowsservercore-ltsc2016
 SharedTags: 11.0.8_10-jdk-hotspot-windowsservercore, 11-jdk-hotspot-windowsservercore, 11-hotspot-windowsservercore, 11.0.8_10-jdk-hotspot, 11-jdk-hotspot, 11-hotspot
 Architectures: windows-amd64
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
 Directory: 11/jdk/windows/windowsservercore-ltsc2016
 File: Dockerfile.hotspot.releases.full
 Constraints: windowsservercore-ltsc2016
 
 Tags: 11.0.8_10-jdk-openj9-0.21.0-bionic, 11-jdk-openj9-bionic, 11-openj9-bionic
 SharedTags: 11.0.8_10-jdk-openj9-0.21.0, 11-jdk-openj9, 11-openj9
-Architectures: amd64, ppc64le, s390x
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+Architectures: amd64, arm64v8, ppc64le, s390x
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
 Directory: 11/jdk/ubuntu
 File: Dockerfile.openj9.releases.full
 
 Tags: 11.0.8_10-jdk-openj9-0.21.0-windowsservercore-1809, 11-jdk-openj9-windowsservercore-1809, 11-openj9-windowsservercore-1809
 SharedTags: 11.0.8_10-jdk-openj9-0.21.0-windowsservercore, 11-jdk-openj9-windowsservercore, 11-openj9-windowsservercore, 11.0.8_10-jdk-openj9-0.21.0, 11-jdk-openj9, 11-openj9
 Architectures: windows-amd64
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
 Directory: 11/jdk/windows/windowsservercore-1809
 File: Dockerfile.openj9.releases.full
 Constraints: windowsservercore-1809
@@ -134,7 +134,7 @@ Constraints: windowsservercore-1809
 Tags: 11.0.8_10-jdk-openj9-0.21.0-windowsservercore-ltsc2016, 11-jdk-openj9-windowsservercore-ltsc2016, 11-openj9-windowsservercore-ltsc2016
 SharedTags: 11.0.8_10-jdk-openj9-0.21.0-windowsservercore, 11-jdk-openj9-windowsservercore, 11-openj9-windowsservercore, 11.0.8_10-jdk-openj9-0.21.0, 11-jdk-openj9, 11-openj9
 Architectures: windows-amd64
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
 Directory: 11/jdk/windows/windowsservercore-ltsc2016
 File: Dockerfile.openj9.releases.full
 Constraints: windowsservercore-ltsc2016
@@ -142,14 +142,14 @@ Constraints: windowsservercore-ltsc2016
 Tags: 11.0.8_10-jre-hotspot-bionic, 11-jre-hotspot-bionic
 SharedTags: 11.0.8_10-jre-hotspot, 11-jre-hotspot
 Architectures: amd64, arm32v7, arm64v8, ppc64le, s390x
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
 Directory: 11/jre/ubuntu
 File: Dockerfile.hotspot.releases.full
 
 Tags: 11.0.8_10-jre-hotspot-windowsservercore-1809, 11-jre-hotspot-windowsservercore-1809
 SharedTags: 11.0.8_10-jre-hotspot-windowsservercore, 11-jre-hotspot-windowsservercore, 11.0.8_10-jre-hotspot, 11-jre-hotspot
 Architectures: windows-amd64
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
 Directory: 11/jre/windows/windowsservercore-1809
 File: Dockerfile.hotspot.releases.full
 Constraints: windowsservercore-1809
@@ -157,30 +157,30 @@ Constraints: windowsservercore-1809
 Tags: 11.0.8_10-jre-hotspot-windowsservercore-ltsc2016, 11-jre-hotspot-windowsservercore-ltsc2016
 SharedTags: 11.0.8_10-jre-hotspot-windowsservercore, 11-jre-hotspot-windowsservercore, 11.0.8_10-jre-hotspot, 11-jre-hotspot
 Architectures: windows-amd64
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
 Directory: 11/jre/windows/windowsservercore-ltsc2016
 File: Dockerfile.hotspot.releases.full
 Constraints: windowsservercore-ltsc2016
 
 Tags: 11.0.8_10-jre-openj9-0.21.0-bionic, 11-jre-openj9-bionic
 SharedTags: 11.0.8_10-jre-openj9-0.21.0, 11-jre-openj9
-Architectures: amd64, ppc64le, s390x
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+Architectures: amd64, arm64v8, ppc64le, s390x
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
 Directory: 11/jre/ubuntu
 File: Dockerfile.openj9.releases.full
 
 Tags: 11.0.8_10-jre-openj9-0.21.0-windowsservercore-1809, 11-jre-openj9-windowsservercore-1809
 SharedTags: 11.0.8_10-jre-openj9-0.21.0-windowsservercore, 11-jre-openj9-windowsservercore, 11.0.8_10-jre-openj9-0.21.0, 11-jre-openj9
 Architectures: windows-amd64
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
 Directory: 11/jre/windows/windowsservercore-1809
 File: Dockerfile.openj9.releases.full
 Constraints: windowsservercore-1809
 
 Tags: 11.0.8_10-jre-openj9-0.21.0-windowsservercore-ltsc2016, 11-jre-openj9-windowsservercore-ltsc2016
-SharedTags: 11.0.8_10-jre-openj9-0.21.0-windowsservercore, 11-jre-openj9-windowsservercore, 11-openj9-windowsservercore, 11.0.8_10-jre-openj9-0.21.0, 11-jre-openj9
+SharedTags: 11.0.8_10-jre-openj9-0.21.0-windowsservercore, 11-jre-openj9-windowsservercore, 11.0.8_10-jre-openj9-0.21.0, 11-jre-openj9
 Architectures: windows-amd64
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
 Directory: 11/jre/windows/windowsservercore-ltsc2016
 File: Dockerfile.openj9.releases.full
 Constraints: windowsservercore-ltsc2016
@@ -188,22 +188,22 @@ Constraints: windowsservercore-ltsc2016
 Tags: 13.0.2_8-jdk-hotspot-bionic, 13-jdk-hotspot-bionic, 13-hotspot-bionic
 SharedTags: 13.0.2_8-jdk-hotspot, 13-jdk-hotspot, 13-hotspot
 Architectures: amd64, arm32v7, arm64v8, ppc64le, s390x
-GitCommit: 3b28dd3fb7230f208ed49da507432a01741b1259
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
 Directory: 13/jdk/ubuntu
 File: Dockerfile.hotspot.releases.full
 
 Tags: 13.0.2_8-jdk-hotspot-windowsservercore-1809, 13-jdk-hotspot-windowsservercore-1809, 13-hotspot-windowsservercore-1809
-SharedTags: 13.0.2_8-jdk-hotspot-windowsservercore, 13-jdk-hotspot-windowsservercore, 13-hotspot-windowsservercore, hotspot-windowsservercore, 13.0.2_8-jdk-hotspot, 13-jdk-hotspot, 13-hotspot
+SharedTags: 13.0.2_8-jdk-hotspot-windowsservercore, 13-jdk-hotspot-windowsservercore, 13-hotspot-windowsservercore, 13.0.2_8-jdk-hotspot, 13-jdk-hotspot, 13-hotspot
 Architectures: windows-amd64
-GitCommit: 3b28dd3fb7230f208ed49da507432a01741b1259
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
 Directory: 13/jdk/windows/windowsservercore-1809
 File: Dockerfile.hotspot.releases.full
 Constraints: windowsservercore-1809
 
 Tags: 13.0.2_8-jdk-hotspot-windowsservercore-ltsc2016, 13-jdk-hotspot-windowsservercore-ltsc2016, 13-hotspot-windowsservercore-ltsc2016
-SharedTags: 13.0.2_8-jdk-hotspot-windowsservercore, 13-jdk-hotspot-windowsservercore, 13-hotspot-windowsservercore, hotspot-windowsservercore, 13.0.2_8-jdk-hotspot, 13-jdk-hotspot, 13-hotspot
+SharedTags: 13.0.2_8-jdk-hotspot-windowsservercore, 13-jdk-hotspot-windowsservercore, 13-hotspot-windowsservercore, 13.0.2_8-jdk-hotspot, 13-jdk-hotspot, 13-hotspot
 Architectures: windows-amd64
-GitCommit: 3b28dd3fb7230f208ed49da507432a01741b1259
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
 Directory: 13/jdk/windows/windowsservercore-ltsc2016
 File: Dockerfile.hotspot.releases.full
 Constraints: windowsservercore-ltsc2016
@@ -211,22 +211,22 @@ Constraints: windowsservercore-ltsc2016
 Tags: 13.0.2_8-jdk-openj9-0.18.0-bionic, 13-jdk-openj9-bionic, 13-openj9-bionic
 SharedTags: 13.0.2_8-jdk-openj9-0.18.0, 13-jdk-openj9, 13-openj9
 Architectures: amd64, ppc64le, s390x
-GitCommit: 3b28dd3fb7230f208ed49da507432a01741b1259
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
 Directory: 13/jdk/ubuntu
 File: Dockerfile.openj9.releases.full
 
 Tags: 13.0.2_8-jdk-openj9-0.18.0-windowsservercore-1809, 13-jdk-openj9-windowsservercore-1809, 13-openj9-windowsservercore-1809
-SharedTags: 13.0.2_8-jdk-openj9-0.18.0-windowsservercore, 13-jdk-openj9-windowsservercore, 13-openj9-windowsservercore, openj9-windowsservercore, 13.0.2_8-jdk-openj9-0.18.0, 13-jdk-openj9, 13-openj9
+SharedTags: 13.0.2_8-jdk-openj9-0.18.0-windowsservercore, 13-jdk-openj9-windowsservercore, 13-openj9-windowsservercore, 13.0.2_8-jdk-openj9-0.18.0, 13-jdk-openj9, 13-openj9
 Architectures: windows-amd64
-GitCommit: 3b28dd3fb7230f208ed49da507432a01741b1259
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
 Directory: 13/jdk/windows/windowsservercore-1809
 File: Dockerfile.openj9.releases.full
 Constraints: windowsservercore-1809
 
 Tags: 13.0.2_8-jdk-openj9-0.18.0-windowsservercore-ltsc2016, 13-jdk-openj9-windowsservercore-ltsc2016, 13-openj9-windowsservercore-ltsc2016
-SharedTags: 13.0.2_8-jdk-openj9-0.18.0-windowsservercore, 13-jdk-openj9-windowsservercore, 13-openj9-windowsservercore, openj9-windowsservercore, 13.0.2_8-jdk-openj9-0.18.0, 13-jdk-openj9, 13-openj9
+SharedTags: 13.0.2_8-jdk-openj9-0.18.0-windowsservercore, 13-jdk-openj9-windowsservercore, 13-openj9-windowsservercore, 13.0.2_8-jdk-openj9-0.18.0, 13-jdk-openj9, 13-openj9
 Architectures: windows-amd64
-GitCommit: 3b28dd3fb7230f208ed49da507432a01741b1259
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
 Directory: 13/jdk/windows/windowsservercore-ltsc2016
 File: Dockerfile.openj9.releases.full
 Constraints: windowsservercore-ltsc2016
@@ -234,14 +234,14 @@ Constraints: windowsservercore-ltsc2016
 Tags: 13.0.2_8-jre-hotspot-bionic, 13-jre-hotspot-bionic
 SharedTags: 13.0.2_8-jre-hotspot, 13-jre-hotspot
 Architectures: amd64, arm64v8, ppc64le, s390x
-GitCommit: 3b28dd3fb7230f208ed49da507432a01741b1259
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
 Directory: 13/jre/ubuntu
 File: Dockerfile.hotspot.releases.full
 
 Tags: 13.0.2_8-jre-hotspot-windowsservercore-1809, 13-jre-hotspot-windowsservercore-1809
 SharedTags: 13.0.2_8-jre-hotspot-windowsservercore, 13-jre-hotspot-windowsservercore, 13.0.2_8-jre-hotspot, 13-jre-hotspot
 Architectures: windows-amd64
-GitCommit: 3b28dd3fb7230f208ed49da507432a01741b1259
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
 Directory: 13/jre/windows/windowsservercore-1809
 File: Dockerfile.hotspot.releases.full
 Constraints: windowsservercore-1809
@@ -249,7 +249,7 @@ Constraints: windowsservercore-1809
 Tags: 13.0.2_8-jre-hotspot-windowsservercore-ltsc2016, 13-jre-hotspot-windowsservercore-ltsc2016
 SharedTags: 13.0.2_8-jre-hotspot-windowsservercore, 13-jre-hotspot-windowsservercore, 13.0.2_8-jre-hotspot, 13-jre-hotspot
 Architectures: windows-amd64
-GitCommit: 3b28dd3fb7230f208ed49da507432a01741b1259
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
 Directory: 13/jre/windows/windowsservercore-ltsc2016
 File: Dockerfile.hotspot.releases.full
 Constraints: windowsservercore-ltsc2016
@@ -257,14 +257,14 @@ Constraints: windowsservercore-ltsc2016
 Tags: 13.0.2_8-jre-openj9-0.18.0-bionic, 13-jre-openj9-bionic
 SharedTags: 13.0.2_8-jre-openj9-0.18.0, 13-jre-openj9
 Architectures: amd64, ppc64le, s390x
-GitCommit: 3b28dd3fb7230f208ed49da507432a01741b1259
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
 Directory: 13/jre/ubuntu
 File: Dockerfile.openj9.releases.full
 
 Tags: 13.0.2_8-jre-openj9-0.18.0-windowsservercore-1809, 13-jre-openj9-windowsservercore-1809
 SharedTags: 13.0.2_8-jre-openj9-0.18.0-windowsservercore, 13-jre-openj9-windowsservercore, 13.0.2_8-jre-openj9-0.18.0, 13-jre-openj9
 Architectures: windows-amd64
-GitCommit: 3b28dd3fb7230f208ed49da507432a01741b1259
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
 Directory: 13/jre/windows/windowsservercore-1809
 File: Dockerfile.openj9.releases.full
 Constraints: windowsservercore-1809
@@ -272,99 +272,191 @@ Constraints: windowsservercore-1809
 Tags: 13.0.2_8-jre-openj9-0.18.0-windowsservercore-ltsc2016, 13-jre-openj9-windowsservercore-ltsc2016
 SharedTags: 13.0.2_8-jre-openj9-0.18.0-windowsservercore, 13-jre-openj9-windowsservercore, 13.0.2_8-jre-openj9-0.18.0, 13-jre-openj9
 Architectures: windows-amd64
-GitCommit: 3b28dd3fb7230f208ed49da507432a01741b1259
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
 Directory: 13/jre/windows/windowsservercore-ltsc2016
 File: Dockerfile.openj9.releases.full
 Constraints: windowsservercore-ltsc2016
 
-Tags: 14.0.2_8-jdk-hotspot-bionic, 14-jdk-hotspot-bionic, 14-hotspot-bionic, hotspot-bionic
-SharedTags: 14.0.2_8-jdk-hotspot, 14-jdk-hotspot, 14-hotspot, hotspot, latest
+Tags: 14.0.2_12-jdk-hotspot-bionic, 14-jdk-hotspot-bionic, 14-hotspot-bionic
+SharedTags: 14.0.2_12-jdk-hotspot, 14-jdk-hotspot, 14-hotspot
 Architectures: amd64, arm32v7, arm64v8, ppc64le, s390x
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
 Directory: 14/jdk/ubuntu
 File: Dockerfile.hotspot.releases.full
 
-Tags: 14.0.2_8-jdk-hotspot-windowsservercore-1809, 14-jdk-hotspot-windowsservercore-1809, 14-hotspot-windowsservercore-1809, hotspot-windowsservercore-1809
-SharedTags: 14.0.2_8-jdk-hotspot-windowsservercore, 14-jdk-hotspot-windowsservercore, 14-hotspot-windowsservercore, hotspot-windowsservercore, 14.0.2_8-jdk-hotspot, 14-jdk-hotspot, 14-hotspot, hotspot, latest
+Tags: 14.0.2_12-jdk-hotspot-windowsservercore-1809, 14-jdk-hotspot-windowsservercore-1809, 14-hotspot-windowsservercore-1809
+SharedTags: 14.0.2_12-jdk-hotspot-windowsservercore, 14-jdk-hotspot-windowsservercore, 14-hotspot-windowsservercore, 14.0.2_12-jdk-hotspot, 14-jdk-hotspot, 14-hotspot
 Architectures: windows-amd64
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
 Directory: 14/jdk/windows/windowsservercore-1809
 File: Dockerfile.hotspot.releases.full
 Constraints: windowsservercore-1809
 
-Tags: 14.0.2_8-jdk-hotspot-windowsservercore-ltsc2016, 14-jdk-hotspot-windowsservercore-ltsc2016, 14-hotspot-windowsservercore-ltsc2016, hotspot-windowsservercore-ltsc2016
-SharedTags: 14.0.2_8-jdk-hotspot-windowsservercore, 14-jdk-hotspot-windowsservercore, 14-hotspot-windowsservercore, hotspot-windowsservercore, 14.0.2_8-jdk-hotspot, 14-jdk-hotspot, 14-hotspot, hotspot, latest
+Tags: 14.0.2_12-jdk-hotspot-windowsservercore-ltsc2016, 14-jdk-hotspot-windowsservercore-ltsc2016, 14-hotspot-windowsservercore-ltsc2016
+SharedTags: 14.0.2_12-jdk-hotspot-windowsservercore, 14-jdk-hotspot-windowsservercore, 14-hotspot-windowsservercore, 14.0.2_12-jdk-hotspot, 14-jdk-hotspot, 14-hotspot
 Architectures: windows-amd64
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
 Directory: 14/jdk/windows/windowsservercore-ltsc2016
 File: Dockerfile.hotspot.releases.full
 Constraints: windowsservercore-ltsc2016
 
-Tags: 14.0.2_8-jdk-openj9-0.21.0-bionic, 14-jdk-openj9-bionic, 14-openj9-bionic, openj9-bionic
-SharedTags: 14.0.2_8-jdk-openj9-0.21.0, 14-jdk-openj9, 14-openj9, openj9
+Tags: 14.0.2_12-jdk-openj9-0.21.0-bionic, 14-jdk-openj9-bionic, 14-openj9-bionic
+SharedTags: 14.0.2_12-jdk-openj9-0.21.0, 14-jdk-openj9, 14-openj9
 Architectures: amd64, ppc64le, s390x
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
 Directory: 14/jdk/ubuntu
 File: Dockerfile.openj9.releases.full
 
-Tags: 14.0.2_8-jdk-openj9-0.21.0-windowsservercore-1809, 14-jdk-openj9-windowsservercore-1809, 14-openj9-windowsservercore-1809, openj9-windowsservercore-1809
-SharedTags: 14.0.2_8-jdk-openj9-0.21.0-windowsservercore, 14-jdk-openj9-windowsservercore, 14-openj9-windowsservercore, openj9-windowsservercore, 14.0.2_8-jdk-openj9-0.21.0, 14-jdk-openj9, 14-openj9, openj9
+Tags: 14.0.2_12-jdk-openj9-0.21.0-windowsservercore-1809, 14-jdk-openj9-windowsservercore-1809, 14-openj9-windowsservercore-1809
+SharedTags: 14.0.2_12-jdk-openj9-0.21.0-windowsservercore, 14-jdk-openj9-windowsservercore, 14-openj9-windowsservercore, 14.0.2_12-jdk-openj9-0.21.0, 14-jdk-openj9, 14-openj9
 Architectures: windows-amd64
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
 Directory: 14/jdk/windows/windowsservercore-1809
 File: Dockerfile.openj9.releases.full
 Constraints: windowsservercore-1809
 
-Tags: 14.0.2_8-jdk-openj9-0.21.0-windowsservercore-ltsc2016, 14-jdk-openj9-windowsservercore-ltsc2016, 14-openj9-windowsservercore-ltsc2016, openj9-windowsservercore-ltsc2016
-SharedTags: 14.0.2_8-jdk-openj9-0.21.0-windowsservercore, 14-jdk-openj9-windowsservercore, 14-openj9-windowsservercore, openj9-windowsservercore, 14.0.2_8-jdk-openj9-0.21.0, 14-jdk-openj9, 14-openj9, openj9
+Tags: 14.0.2_12-jdk-openj9-0.21.0-windowsservercore-ltsc2016, 14-jdk-openj9-windowsservercore-ltsc2016, 14-openj9-windowsservercore-ltsc2016
+SharedTags: 14.0.2_12-jdk-openj9-0.21.0-windowsservercore, 14-jdk-openj9-windowsservercore, 14-openj9-windowsservercore, 14.0.2_12-jdk-openj9-0.21.0, 14-jdk-openj9, 14-openj9
 Architectures: windows-amd64
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
 Directory: 14/jdk/windows/windowsservercore-ltsc2016
 File: Dockerfile.openj9.releases.full
 Constraints: windowsservercore-ltsc2016
 
-Tags: 14.0.2_8-jre-hotspot-bionic, 14-jre-hotspot-bionic
-SharedTags: 14.0.2_8-jre-hotspot, 14-jre-hotspot
+Tags: 14.0.2_12-jre-hotspot-bionic, 14-jre-hotspot-bionic
+SharedTags: 14.0.2_12-jre-hotspot, 14-jre-hotspot
 Architectures: amd64, arm32v7, arm64v8, ppc64le, s390x
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
 Directory: 14/jre/ubuntu
 File: Dockerfile.hotspot.releases.full
 
-Tags: 14.0.2_8-jre-hotspot-windowsservercore-1809, 14-jre-hotspot-windowsservercore-1809
-SharedTags: 14.0.2_8-jre-hotspot-windowsservercore, 14-jre-hotspot-windowsservercore, 14.0.2_8-jre-hotspot, 14-jre-hotspot
+Tags: 14.0.2_12-jre-hotspot-windowsservercore-1809, 14-jre-hotspot-windowsservercore-1809
+SharedTags: 14.0.2_12-jre-hotspot-windowsservercore, 14-jre-hotspot-windowsservercore, 14.0.2_12-jre-hotspot, 14-jre-hotspot
 Architectures: windows-amd64
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
 Directory: 14/jre/windows/windowsservercore-1809
 File: Dockerfile.hotspot.releases.full
 Constraints: windowsservercore-1809
 
-Tags: 14.0.2_8-jre-hotspot-windowsservercore-ltsc2016, 14-jre-hotspot-windowsservercore-ltsc2016
-SharedTags: 14.0.2_8-jre-hotspot-windowsservercore, 14-jre-hotspot-windowsservercore, 14.0.2_8-jre-hotspot, 14-jre-hotspot
+Tags: 14.0.2_12-jre-hotspot-windowsservercore-ltsc2016, 14-jre-hotspot-windowsservercore-ltsc2016
+SharedTags: 14.0.2_12-jre-hotspot-windowsservercore, 14-jre-hotspot-windowsservercore, 14.0.2_12-jre-hotspot, 14-jre-hotspot
 Architectures: windows-amd64
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
 Directory: 14/jre/windows/windowsservercore-ltsc2016
 File: Dockerfile.hotspot.releases.full
 Constraints: windowsservercore-ltsc2016
 
-Tags: 14.0.2_8-jre-openj9-0.21.0-bionic, 14-jre-openj9-bionic
-SharedTags: 14.0.2_8-jre-openj9-0.21.0, 14-jre-openj9
+Tags: 14.0.2_12-jre-openj9-0.21.0-bionic, 14-jre-openj9-bionic
+SharedTags: 14.0.2_12-jre-openj9-0.21.0, 14-jre-openj9
 Architectures: amd64, ppc64le, s390x
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
 Directory: 14/jre/ubuntu
 File: Dockerfile.openj9.releases.full
 
-Tags: 14.0.2_8-jre-openj9-0.21.0-windowsservercore-1809, 14-jre-openj9-windowsservercore-1809
-SharedTags: 14.0.2_8-jre-openj9-0.21.0-windowsservercore, 14-jre-openj9-windowsservercore, 14.0.2_8-jre-openj9-0.21.0, 14-jre-openj9
+Tags: 14.0.2_12-jre-openj9-0.21.0-windowsservercore-1809, 14-jre-openj9-windowsservercore-1809
+SharedTags: 14.0.2_12-jre-openj9-0.21.0-windowsservercore, 14-jre-openj9-windowsservercore, 14.0.2_12-jre-openj9-0.21.0, 14-jre-openj9
 Architectures: windows-amd64
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
 Directory: 14/jre/windows/windowsservercore-1809
 File: Dockerfile.openj9.releases.full
 Constraints: windowsservercore-1809
 
-Tags: 14.0.2_8-jre-openj9-0.21.0-windowsservercore-ltsc2016, 14-jre-openj9-windowsservercore-ltsc2016
-SharedTags: 14.0.2_8-jre-openj9-0.21.0-windowsservercore, 14-jre-openj9-windowsservercore, 14.0.2_8-jre-openj9-0.21.0, 14-jre-openj9
+Tags: 14.0.2_12-jre-openj9-0.21.0-windowsservercore-ltsc2016, 14-jre-openj9-windowsservercore-ltsc2016
+SharedTags: 14.0.2_12-jre-openj9-0.21.0-windowsservercore, 14-jre-openj9-windowsservercore, 14.0.2_12-jre-openj9-0.21.0, 14-jre-openj9
 Architectures: windows-amd64
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
 Directory: 14/jre/windows/windowsservercore-ltsc2016
 File: Dockerfile.openj9.releases.full
 Constraints: windowsservercore-ltsc2016
+
+Tags: 15_36-jdk-hotspot-bionic, 15-jdk-hotspot-bionic, 15-hotspot-bionic, hotspot-bionic
+SharedTags: 15_36-jdk-hotspot, 15-jdk-hotspot, 15-hotspot, hotspot, latest
+Architectures: amd64, arm32v7, arm64v8, ppc64le, s390x
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
+Directory: 15/jdk/ubuntu
+File: Dockerfile.hotspot.releases.full
+
+Tags: 15_36-jdk-hotspot-windowsservercore-1809, 15-jdk-hotspot-windowsservercore-1809, 15-hotspot-windowsservercore-1809, hotspot-windowsservercore-1809
+SharedTags: 15_36-jdk-hotspot-windowsservercore, 15-jdk-hotspot-windowsservercore, 15-hotspot-windowsservercore, hotspot-windowsservercore, 15_36-jdk-hotspot, 15-jdk-hotspot, 15-hotspot, hotspot, latest
+Architectures: windows-amd64
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
+Directory: 15/jdk/windows/windowsservercore-1809
+File: Dockerfile.hotspot.releases.full
+Constraints: windowsservercore-1809
+
+Tags: 15_36-jdk-hotspot-windowsservercore-ltsc2016, 15-jdk-hotspot-windowsservercore-ltsc2016, 15-hotspot-windowsservercore-ltsc2016, hotspot-windowsservercore-ltsc2016
+SharedTags: 15_36-jdk-hotspot-windowsservercore, 15-jdk-hotspot-windowsservercore, 15-hotspot-windowsservercore, hotspot-windowsservercore, 15_36-jdk-hotspot, 15-jdk-hotspot, 15-hotspot, hotspot, latest
+Architectures: windows-amd64
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
+Directory: 15/jdk/windows/windowsservercore-ltsc2016
+File: Dockerfile.hotspot.releases.full
+Constraints: windowsservercore-ltsc2016
+
+Tags: 15_36-jdk-openj9-0.22.0-bionic, 15-jdk-openj9-bionic, 15-openj9-bionic, openj9-bionic
+SharedTags: 15_36-jdk-openj9-0.22.0, 15-jdk-openj9, 15-openj9, openj9
+Architectures: amd64, ppc64le, s390x
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
+Directory: 15/jdk/ubuntu
+File: Dockerfile.openj9.releases.full
+
+Tags: 15_36-jdk-openj9-0.22.0-windowsservercore-1809, 15-jdk-openj9-windowsservercore-1809, 15-openj9-windowsservercore-1809, openj9-windowsservercore-1809
+SharedTags: 15_36-jdk-openj9-0.22.0-windowsservercore, 15-jdk-openj9-windowsservercore, 15-openj9-windowsservercore, openj9-windowsservercore, 15_36-jdk-openj9-0.22.0, 15-jdk-openj9, 15-openj9, openj9
+Architectures: windows-amd64
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
+Directory: 15/jdk/windows/windowsservercore-1809
+File: Dockerfile.openj9.releases.full
+Constraints: windowsservercore-1809
+
+Tags: 15_36-jdk-openj9-0.22.0-windowsservercore-ltsc2016, 15-jdk-openj9-windowsservercore-ltsc2016, 15-openj9-windowsservercore-ltsc2016, openj9-windowsservercore-ltsc2016
+SharedTags: 15_36-jdk-openj9-0.22.0-windowsservercore, 15-jdk-openj9-windowsservercore, 15-openj9-windowsservercore, openj9-windowsservercore, 15_36-jdk-openj9-0.22.0, 15-jdk-openj9, 15-openj9, openj9
+Architectures: windows-amd64
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
+Directory: 15/jdk/windows/windowsservercore-ltsc2016
+File: Dockerfile.openj9.releases.full
+Constraints: windowsservercore-ltsc2016
+
+Tags: 15_36-jre-hotspot-bionic, 15-jre-hotspot-bionic
+SharedTags: 15_36-jre-hotspot, 15-jre-hotspot, latest
+Architectures: amd64, arm32v7, arm64v8, ppc64le, s390x
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
+Directory: 15/jre/ubuntu
+File: Dockerfile.hotspot.releases.full
+
+Tags: 15_36-jre-hotspot-windowsservercore-1809, 15-jre-hotspot-windowsservercore-1809
+SharedTags: 15_36-jre-hotspot-windowsservercore, 15-jre-hotspot-windowsservercore, 15_36-jre-hotspot, 15-jre-hotspot, latest
+Architectures: windows-amd64
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
+Directory: 15/jre/windows/windowsservercore-1809
+File: Dockerfile.hotspot.releases.full
+Constraints: windowsservercore-1809
+
+Tags: 15_36-jre-hotspot-windowsservercore-ltsc2016, 15-jre-hotspot-windowsservercore-ltsc2016
+SharedTags: 15_36-jre-hotspot-windowsservercore, 15-jre-hotspot-windowsservercore, 15_36-jre-hotspot, 15-jre-hotspot, latest
+Architectures: windows-amd64
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
+Directory: 15/jre/windows/windowsservercore-ltsc2016
+File: Dockerfile.hotspot.releases.full
+Constraints: windowsservercore-ltsc2016
+
+Tags: 15_36-jre-openj9-0.22.0-bionic, 15-jre-openj9-bionic
+SharedTags: 15_36-jre-openj9-0.22.0, 15-jre-openj9
+Architectures: amd64, ppc64le, s390x
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
+Directory: 15/jre/ubuntu
+File: Dockerfile.openj9.releases.full
+
+Tags: 15_36-jre-openj9-0.22.0-windowsservercore-1809, 15-jre-openj9-windowsservercore-1809
+SharedTags: 15_36-jre-openj9-0.22.0-windowsservercore, 15-jre-openj9-windowsservercore, 15_36-jre-openj9-0.22.0, 15-jre-openj9
+Architectures: windows-amd64
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
+Directory: 15/jre/windows/windowsservercore-1809
+File: Dockerfile.openj9.releases.full
+Constraints: windowsservercore-1809
+
+Tags: 15_36-jre-openj9-0.22.0-windowsservercore-ltsc2016, 15-jre-openj9-windowsservercore-ltsc2016
+SharedTags: 15_36-jre-openj9-0.22.0-windowsservercore, 15-jre-openj9-windowsservercore, 15_36-jre-openj9-0.22.0, 15-jre-openj9
+Architectures: windows-amd64
+GitCommit: 0ebf766de3c14fb7fb989bd93ede9f8b6db64933
+Directory: 15/jre/windows/windowsservercore-ltsc2016
+File: Dockerfile.openj9.releases.full
+Constraints: windowsservercore-ltsc2016
diff --git a/_bashbrew-list b/_bashbrew-list
index e623e63..20af45a 100644
--- a/_bashbrew-list
+++ b/_bashbrew-list
@@ -1,23 +1,23 @@
-adoptopenjdk:8u262-b10-jdk-hotspot
-adoptopenjdk:8u262-b10-jdk-hotspot-bionic
-adoptopenjdk:8u262-b10-jdk-hotspot-windowsservercore
-adoptopenjdk:8u262-b10-jdk-hotspot-windowsservercore-1809
-adoptopenjdk:8u262-b10-jdk-hotspot-windowsservercore-ltsc2016
-adoptopenjdk:8u262-b10-jdk-openj9-0.21.0
-adoptopenjdk:8u262-b10-jdk-openj9-0.21.0-bionic
-adoptopenjdk:8u262-b10-jdk-openj9-0.21.0-windowsservercore
-adoptopenjdk:8u262-b10-jdk-openj9-0.21.0-windowsservercore-1809
-adoptopenjdk:8u262-b10-jdk-openj9-0.21.0-windowsservercore-ltsc2016
-adoptopenjdk:8u262-b10-jre-hotspot
-adoptopenjdk:8u262-b10-jre-hotspot-bionic
-adoptopenjdk:8u262-b10-jre-hotspot-windowsservercore
-adoptopenjdk:8u262-b10-jre-hotspot-windowsservercore-1809
-adoptopenjdk:8u262-b10-jre-hotspot-windowsservercore-ltsc2016
-adoptopenjdk:8u262-b10-jre-openj9-0.21.0
-adoptopenjdk:8u262-b10-jre-openj9-0.21.0-bionic
-adoptopenjdk:8u262-b10-jre-openj9-0.21.0-windowsservercore
-adoptopenjdk:8u262-b10-jre-openj9-0.21.0-windowsservercore-1809
-adoptopenjdk:8u262-b10-jre-openj9-0.21.0-windowsservercore-ltsc2016
+adoptopenjdk:8u265-b01-jdk-hotspot
+adoptopenjdk:8u265-b01-jdk-hotspot-bionic
+adoptopenjdk:8u265-b01-jdk-hotspot-windowsservercore
+adoptopenjdk:8u265-b01-jdk-hotspot-windowsservercore-1809
+adoptopenjdk:8u265-b01-jdk-hotspot-windowsservercore-ltsc2016
+adoptopenjdk:8u265-b01-jdk-openj9-0.21.0
+adoptopenjdk:8u265-b01-jdk-openj9-0.21.0-bionic
+adoptopenjdk:8u265-b01-jdk-openj9-0.21.0-windowsservercore
+adoptopenjdk:8u265-b01-jdk-openj9-0.21.0-windowsservercore-1809
+adoptopenjdk:8u265-b01-jdk-openj9-0.21.0-windowsservercore-ltsc2016
+adoptopenjdk:8u265-b01-jre-hotspot
+adoptopenjdk:8u265-b01-jre-hotspot-bionic
+adoptopenjdk:8u265-b01-jre-hotspot-windowsservercore
+adoptopenjdk:8u265-b01-jre-hotspot-windowsservercore-1809
+adoptopenjdk:8u265-b01-jre-hotspot-windowsservercore-ltsc2016
+adoptopenjdk:8u265-b01-jre-openj9-0.21.0
+adoptopenjdk:8u265-b01-jre-openj9-0.21.0-bionic
+adoptopenjdk:8u265-b01-jre-openj9-0.21.0-windowsservercore
+adoptopenjdk:8u265-b01-jre-openj9-0.21.0-windowsservercore-1809
+adoptopenjdk:8u265-b01-jre-openj9-0.21.0-windowsservercore-ltsc2016
 adoptopenjdk:8-hotspot
 adoptopenjdk:8-hotspot-bionic
 adoptopenjdk:8-hotspot-windowsservercore
@@ -178,26 +178,76 @@ adoptopenjdk:14-openj9-bionic
 adoptopenjdk:14-openj9-windowsservercore
 adoptopenjdk:14-openj9-windowsservercore-1809
 adoptopenjdk:14-openj9-windowsservercore-ltsc2016
-adoptopenjdk:14.0.2_8-jdk-hotspot
-adoptopenjdk:14.0.2_8-jdk-hotspot-bionic
-adoptopenjdk:14.0.2_8-jdk-hotspot-windowsservercore
-adoptopenjdk:14.0.2_8-jdk-hotspot-windowsservercore-1809
-adoptopenjdk:14.0.2_8-jdk-hotspot-windowsservercore-ltsc2016
-adoptopenjdk:14.0.2_8-jdk-openj9-0.21.0
-adoptopenjdk:14.0.2_8-jdk-openj9-0.21.0-bionic
-adoptopenjdk:14.0.2_8-jdk-openj9-0.21.0-windowsservercore
-adoptopenjdk:14.0.2_8-jdk-openj9-0.21.0-windowsservercore-1809
-adoptopenjdk:14.0.2_8-jdk-openj9-0.21.0-windowsservercore-ltsc2016
-adoptopenjdk:14.0.2_8-jre-hotspot
-adoptopenjdk:14.0.2_8-jre-hotspot-bionic
-adoptopenjdk:14.0.2_8-jre-hotspot-windowsservercore
-adoptopenjdk:14.0.2_8-jre-hotspot-windowsservercore-1809
-adoptopenjdk:14.0.2_8-jre-hotspot-windowsservercore-ltsc2016
-adoptopenjdk:14.0.2_8-jre-openj9-0.21.0
-adoptopenjdk:14.0.2_8-jre-openj9-0.21.0-bionic
-adoptopenjdk:14.0.2_8-jre-openj9-0.21.0-windowsservercore
-adoptopenjdk:14.0.2_8-jre-openj9-0.21.0-windowsservercore-1809
-adoptopenjdk:14.0.2_8-jre-openj9-0.21.0-windowsservercore-ltsc2016
+adoptopenjdk:14.0.2_12-jdk-hotspot
+adoptopenjdk:14.0.2_12-jdk-hotspot-bionic
+adoptopenjdk:14.0.2_12-jdk-hotspot-windowsservercore
+adoptopenjdk:14.0.2_12-jdk-hotspot-windowsservercore-1809
+adoptopenjdk:14.0.2_12-jdk-hotspot-windowsservercore-ltsc2016
+adoptopenjdk:14.0.2_12-jdk-openj9-0.21.0
+adoptopenjdk:14.0.2_12-jdk-openj9-0.21.0-bionic
+adoptopenjdk:14.0.2_12-jdk-openj9-0.21.0-windowsservercore
+adoptopenjdk:14.0.2_12-jdk-openj9-0.21.0-windowsservercore-1809
+adoptopenjdk:14.0.2_12-jdk-openj9-0.21.0-windowsservercore-ltsc2016
+adoptopenjdk:14.0.2_12-jre-hotspot
+adoptopenjdk:14.0.2_12-jre-hotspot-bionic
+adoptopenjdk:14.0.2_12-jre-hotspot-windowsservercore
+adoptopenjdk:14.0.2_12-jre-hotspot-windowsservercore-1809
+adoptopenjdk:14.0.2_12-jre-hotspot-windowsservercore-ltsc2016
+adoptopenjdk:14.0.2_12-jre-openj9-0.21.0
+adoptopenjdk:14.0.2_12-jre-openj9-0.21.0-bionic
+adoptopenjdk:14.0.2_12-jre-openj9-0.21.0-windowsservercore
+adoptopenjdk:14.0.2_12-jre-openj9-0.21.0-windowsservercore-1809
+adoptopenjdk:14.0.2_12-jre-openj9-0.21.0-windowsservercore-ltsc2016
+adoptopenjdk:15-hotspot
+adoptopenjdk:15-hotspot-bionic
+adoptopenjdk:15-hotspot-windowsservercore
+adoptopenjdk:15-hotspot-windowsservercore-1809
+adoptopenjdk:15-hotspot-windowsservercore-ltsc2016
+adoptopenjdk:15-jdk-hotspot
+adoptopenjdk:15-jdk-hotspot-bionic
+adoptopenjdk:15-jdk-hotspot-windowsservercore
+adoptopenjdk:15-jdk-hotspot-windowsservercore-1809
+adoptopenjdk:15-jdk-hotspot-windowsservercore-ltsc2016
+adoptopenjdk:15-jdk-openj9
+adoptopenjdk:15-jdk-openj9-bionic
+adoptopenjdk:15-jdk-openj9-windowsservercore
+adoptopenjdk:15-jdk-openj9-windowsservercore-1809
+adoptopenjdk:15-jdk-openj9-windowsservercore-ltsc2016
+adoptopenjdk:15-jre-hotspot
+adoptopenjdk:15-jre-hotspot-bionic
+adoptopenjdk:15-jre-hotspot-windowsservercore
+adoptopenjdk:15-jre-hotspot-windowsservercore-1809
+adoptopenjdk:15-jre-hotspot-windowsservercore-ltsc2016
+adoptopenjdk:15-jre-openj9
+adoptopenjdk:15-jre-openj9-bionic
+adoptopenjdk:15-jre-openj9-windowsservercore
+adoptopenjdk:15-jre-openj9-windowsservercore-1809
+adoptopenjdk:15-jre-openj9-windowsservercore-ltsc2016
+adoptopenjdk:15-openj9
+adoptopenjdk:15-openj9-bionic
+adoptopenjdk:15-openj9-windowsservercore
+adoptopenjdk:15-openj9-windowsservercore-1809
+adoptopenjdk:15-openj9-windowsservercore-ltsc2016
+adoptopenjdk:15_36-jdk-hotspot
+adoptopenjdk:15_36-jdk-hotspot-bionic
+adoptopenjdk:15_36-jdk-hotspot-windowsservercore
+adoptopenjdk:15_36-jdk-hotspot-windowsservercore-1809
+adoptopenjdk:15_36-jdk-hotspot-windowsservercore-ltsc2016
+adoptopenjdk:15_36-jdk-openj9-0.22.0
+adoptopenjdk:15_36-jdk-openj9-0.22.0-bionic
+adoptopenjdk:15_36-jdk-openj9-0.22.0-windowsservercore
+adoptopenjdk:15_36-jdk-openj9-0.22.0-windowsservercore-1809
+adoptopenjdk:15_36-jdk-openj9-0.22.0-windowsservercore-ltsc2016
+adoptopenjdk:15_36-jre-hotspot
+adoptopenjdk:15_36-jre-hotspot-bionic
+adoptopenjdk:15_36-jre-hotspot-windowsservercore
+adoptopenjdk:15_36-jre-hotspot-windowsservercore-1809
+adoptopenjdk:15_36-jre-hotspot-windowsservercore-ltsc2016
+adoptopenjdk:15_36-jre-openj9-0.22.0
+adoptopenjdk:15_36-jre-openj9-0.22.0-bionic
+adoptopenjdk:15_36-jre-openj9-0.22.0-windowsservercore
+adoptopenjdk:15_36-jre-openj9-0.22.0-windowsservercore-1809
+adoptopenjdk:15_36-jre-openj9-0.22.0-windowsservercore-ltsc2016
 adoptopenjdk:hotspot
 adoptopenjdk:hotspot-bionic
 adoptopenjdk:hotspot-windowsservercore
diff --git a/adoptopenjdk_11-jre-openj9-bionic/Dockerfile.openj9.releases.full b/adoptopenjdk_11-jre-openj9-bionic/Dockerfile.openj9.releases.full
index c5d00fb..15185ec 100644
--- a/adoptopenjdk_11-jre-openj9-bionic/Dockerfile.openj9.releases.full
+++ b/adoptopenjdk_11-jre-openj9-bionic/Dockerfile.openj9.releases.full
@@ -63,3 +63,6 @@ RUN set -eux; \
 ENV JAVA_HOME=/opt/java/openjdk \
     PATH="/opt/java/openjdk/bin:$PATH"
 ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+UseContainerSupport -XX:+IdleTuningCompactOnIdle -XX:+IdleTuningGcOnIdle"
+COPY generate_openj9_scc.sh /scripts/
+        RUN /scripts/generate_openj9_scc.sh
+        ENV OPENJ9_JAVA_OPTIONS="-Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,readonly,nonFatal"
diff --git a/adoptopenjdk_11-jre-openj9-bionic/generate_openj9_scc.sh b/adoptopenjdk_11-jre-openj9-bionic/generate_openj9_scc.sh
new file mode 100755
index 0000000..a5113ba
--- /dev/null
+++ b/adoptopenjdk_11-jre-openj9-bionic/generate_openj9_scc.sh
@@ -0,0 +1,318 @@
+#!/bin/bash
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+unset OPENJ9_JAVA_OPTIONS
+
+# Default size for SCC
+SCC_SIZE="50m"
+
+# Runs for generating SCC
+SCC_GEN_RUNS_COUNT=3
+
+# is running on ubuntu or debian - package manager apt
+IS_APT_ENV=false
+# Intitialise default / allowed sample app status
+RUN_ECLIPSE=false
+RUN_TOMCAT=true
+
+# Intitialise default / required packages status
+INSTALL_GTK=false
+INSTALL_XVFB=false
+
+# App download locations
+DOWNLOAD_PATH_ECLIPSE=/tmp/eclipse
+DOWNLOAD_PATH_TOMCAT=/tmp/tomcat
+
+# App installation locations
+INSTALL_PATH_ECLIPSE="${HOME}"/eclipse-home
+INSTALL_PATH_TOMCAT="${HOME}"/tomcat-home
+
+# URL's for the artifacts
+ECLIPSE_DWNLD_URL="http://www.mirrorservice.org/sites/download.eclipse.org/eclipseMirror/technology/epp/downloads/release/2020-06/M3/eclipse-java-2020-06-M3-linux-gtk-x86_64.tar.gz"
+TOMCAT_DWNLD_URL="https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.35/bin/apache-tomcat-9.0.35.tar.gz"
+
+# Check and downlaod eclipse
+function check_to_download_eclipse() {
+    if [ "${RUN_ECLIPSE}" == true ]; then
+        # Creating a temporary directory for eclipse download
+        mkdir -p "${DOWNLOAD_PATH_ECLIPSE}" "${INSTALL_PATH_ECLIPSE}"
+
+        # Downloading eclipse
+        if curl --fail -o "${DOWNLOAD_PATH_ECLIPSE}"/eclipse.tar.gz  "${ECLIPSE_DWNLD_URL}"; then
+            # Extracting eclipse
+            tar -xvzf "${DOWNLOAD_PATH_ECLIPSE}"/eclipse.tar.gz -C "$INSTALL_PATH_ECLIPSE" --strip-components=1
+        else
+            RUN_ECLIPSE=false
+        fi
+
+        # Removing the tar file
+        rm -rf "${DOWNLOAD_PATH_ECLIPSE}"
+    fi
+}
+
+# Check and download tomcat
+function check_to_download_tomcat() {
+    if [ "${RUN_TOMCAT}" == true ]; then
+        # Creating a temporary directory for tomcat download
+        mkdir -p "${DOWNLOAD_PATH_TOMCAT}" "${INSTALL_PATH_TOMCAT}"
+
+        # Downloading tomcat
+        if curl --fail -o "${DOWNLOAD_PATH_TOMCAT}"/tomcat.tar.gz "${TOMCAT_DWNLD_URL}"; then
+            # Extracting tomcat
+            tar -xvzf "${DOWNLOAD_PATH_TOMCAT}"/tomcat.tar.gz -C "${INSTALL_PATH_TOMCAT}" --strip-components=1
+        else
+            RUN_TOMCAT=false
+        fi
+
+        # Removing the tar file
+        rm -rf "${DOWNLOAD_PATH_TOMCAT}"
+    fi
+}
+
+# ubuntu/debian install packages required for eclipse
+function apt_install_packages() {
+    # update the repositories
+    apt update
+
+    # Set non-interactive frontend (to avoid `tzdata` config options selection)
+    APT_INSTALL_CMD="DEBIAN_FRONTEND=noninteractive"
+    APT_INSTALL_CMD="${APT_INSTALL_CMD} apt install -y"
+
+    if [ "${INSTALL_GTK}" == true ]; then
+        # install gtk+3.0
+        APT_INSTALL_CMD="${APT_INSTALL_CMD} gtk+3.0"
+    fi
+
+    if [ "${INSTALL_XVFB}" == true ]; then
+        # install xvfb
+        APT_INSTALL_CMD="${APT_INSTALL_CMD} xvfb"
+    fi
+
+    eval "${APT_INSTALL_CMD}"
+}
+
+# Check if any application needs virtual screen and launch it
+function check_and_start_xvfb() {
+    # check if `xvfb` installed
+    if [ "${INSTALL_XVFB}" == true ]; then
+        # Spawning a virtual screen for GUI apps
+        Xvfb :1 -ac -screen 0 1024x768x8 &
+        # Saving the PID
+        XVFB_PID=$!
+        # Saving older display value
+        OLD_DISPLAY=$DISPLAY
+        # Setting DISPLAY to created screen
+        export DISPLAY=:1
+    fi
+}
+
+# Kill the created virtual screen
+function check_and_stop_xvfb() {
+    # check if `xvfb` installed
+    if [ "${INSTALL_XVFB}" == true ]; then
+        # Killing `xvfb` process to remove screen
+        kill -9 $XVFB_PID
+        # Setting back the DISPLAY to older value
+        export DISPLAY=$OLD_DISPLAY
+    fi
+}
+
+# Run the applications for specified iterations
+function run_apps() {
+    for ((i=0; i<SCC_GEN_RUNS_COUNT; i++))
+    do
+        if [ "${RUN_ECLIPSE}" == true ]; then
+            run_eclipse_and_stop
+        fi
+        if [ "${RUN_TOMCAT}" == true ]; then
+            run_tomcat_and_stop
+        fi
+    done
+}
+
+# function to install packages
+function install_packages() {
+    if [ "${IS_APT_ENV}" == true ]; then
+        apt_install_packages
+    fi
+}
+
+# function to download the applications
+function download_and_install_artifacts() {
+
+    # check for eclipse
+    check_to_download_eclipse
+
+    # check for tomcat
+    check_to_download_tomcat
+
+}
+
+# dry run to right size the cache
+function dry_run() {
+    # Creating base layer first instead of running sample programs to generate SCC directly
+    java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal,createLayer -Xscmx$SCC_SIZE -version
+
+    # Pointing cache for sample program runs
+    export OPENJ9_JAVA_OPTIONS="-Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal"
+
+    # check if we need xvfb for running application and start a virtual screen if required
+    check_and_start_xvfb
+
+    # Run the applications to generate SCC
+    run_apps
+
+    # check if started a virtual screen and kill the process
+    check_and_stop_xvfb
+
+    FULL=$( (java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,printallStats || true) 2>&1 | awk '/^Cache is [0-9.]*% .*full/ {print substr($3, 1, length($3)-1)}')
+
+    java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,destroy || true
+
+    SCC_SIZE="${SCC_SIZE:0:-1}"
+
+    SCC_SIZE=$(awk "BEGIN {print int($SCC_SIZE * $FULL / 100.0)}")
+
+    [ "${SCC_SIZE}" -eq 0 ] && SCC_SIZE=1
+
+    SCC_SIZE="${SCC_SIZE}m"
+
+    # Re-generating cache with new size
+    java -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal,createLayer -Xscmx$SCC_SIZE -version
+
+    unset OPENJ9_JAVA_OPTIONS
+}
+
+# Generate SCC by running apps
+function generate_scc() {
+    # Pointing cache for sample app runs
+    export OPENJ9_JAVA_OPTIONS="-Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal"
+
+    # check if we need xvfb for running application and start a virtual screen if required
+    check_and_start_xvfb
+
+    # Run the applications to generate SCC
+    run_apps
+
+    # check if started a virtual screen and kill the process
+    check_and_stop_xvfb
+
+    # Checking the cache level
+    FULL=$( (java -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,printallStats || true) 2>&1 | awk '/^Cache is [0-9.]*% .*full/ {print substr($3, 1, length($3)-1)}')
+
+    echo "SCC layer is $FULL% full."
+}
+
+# Remove the downloaded sample apps
+function remove_artifacts() {
+    # Command to remove apps
+    REMOVE_APPS="rm -rf"
+
+    # check for eclipse
+    if [ "${RUN_ECLIPSE}" == true ]; then
+        REMOVE_APPS="${REMOVE_APPS} ${INSTALL_PATH_ECLIPSE}"
+    fi
+
+    # check for tomcat
+    if [ "${RUN_TOMCAT}" == true ]; then
+        REMOVE_APPS="${REMOVE_APPS} ${INSTALL_PATH_TOMCAT}"
+    fi
+
+    eval "$REMOVE_APPS"
+}
+
+# Run eclipse and stop it after the startup
+function run_eclipse_and_stop() {
+    # Starting eclipse in background
+    "${INSTALL_PATH_ECLIPSE}"/eclipse/eclipse &
+    # Saving eclipse PID
+    ECLIPSE_PID=$!
+    # Waiting for eclipse to start - Sleeping for 1 minute
+    sleep 1m
+    # Killing eclipse process
+    kill -9 $ECLIPSE_PID
+    # Waiting for process to be killed - Sleeping for 10 seconds
+    sleep 10s
+}
+
+# Run tomcat and stop it after the startup
+function run_tomcat_and_stop() {
+    # Start tomcat wait till it comes up shut it down
+    "${INSTALL_PATH_TOMCAT}"/bin/startup.sh
+    # wait till tomcat starts -  wait for 5 seconds
+    sleep 5
+    # Stop tomcat
+    "${INSTALL_PATH_TOMCAT}"/bin/shutdown.sh
+    # wait till tomcat stops -  wait for 5 seconds
+    sleep 5
+}
+
+# Remove the installed packages
+function remove_packages() {
+    if [ "${IS_APT_ENV}" == true ]; then
+        APT_REMOVE_CMD="apt --purge -y autoremove"
+
+        if [ "${INSTALL_GTK}" == true ]; then
+            # remove gtk+3.0
+            APT_REMOVE_CMD="${APT_REMOVE_CMD} gtk+3.0"
+        fi
+
+        if [ "${INSTALL_XVFB}" == true ]; then
+            # remove xvfb
+            APT_REMOVE_CMD="${APT_REMOVE_CMD} xvfb"
+        fi
+
+        eval "${APT_REMOVE_CMD}"
+    fi
+}
+
+# check for OS release file
+if [ -f /etc/os-release ]; then
+    # load file to get the ID (OS name)
+    # shellcheck disable=SC1091
+    source /etc/os-release
+    OS=$ID
+fi
+
+# Check if OS is ubuntu/debian (we can run eclipse as packages required for it are available)
+if [ "${OS}" == "ubuntu" ]  || [ "${OS}" = "debian" ]; then
+    # set IS_APT_ENV true
+    IS_APT_ENV=true
+
+    # Set eclipse run to `true`
+    RUN_ECLIPSE=true
+
+    # Set the required packages for eclipse to `true`
+    INSTALL_GTK=true
+    INSTALL_XVFB=true
+
+    # Call function `install_pkgs_via_apt` to install packages
+    install_packages
+fi
+
+# Download the sample apps and install
+download_and_install_artifacts
+
+# Dry run for SCC generation (To get exact size)
+dry_run
+
+# Generate SCC
+generate_scc
+
+# Remove installed artifacts
+remove_artifacts
+
+# Remove packages
+remove_packages
diff --git a/adoptopenjdk_11-openj9-bionic/Dockerfile.openj9.releases.full b/adoptopenjdk_11-openj9-bionic/Dockerfile.openj9.releases.full
index 6ff8d3a..b8083f3 100644
--- a/adoptopenjdk_11-openj9-bionic/Dockerfile.openj9.releases.full
+++ b/adoptopenjdk_11-openj9-bionic/Dockerfile.openj9.releases.full
@@ -63,4 +63,7 @@ RUN set -eux; \
 ENV JAVA_HOME=/opt/java/openjdk \
     PATH="/opt/java/openjdk/bin:$PATH"
 ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+UseContainerSupport -XX:+IdleTuningCompactOnIdle -XX:+IdleTuningGcOnIdle"
+COPY generate_openj9_scc.sh /scripts/
+        RUN /scripts/generate_openj9_scc.sh
+        ENV OPENJ9_JAVA_OPTIONS="-Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,readonly,nonFatal"
 CMD ["jshell"]
diff --git a/adoptopenjdk_11-openj9-bionic/generate_openj9_scc.sh b/adoptopenjdk_11-openj9-bionic/generate_openj9_scc.sh
new file mode 100755
index 0000000..a5113ba
--- /dev/null
+++ b/adoptopenjdk_11-openj9-bionic/generate_openj9_scc.sh
@@ -0,0 +1,318 @@
+#!/bin/bash
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+unset OPENJ9_JAVA_OPTIONS
+
+# Default size for SCC
+SCC_SIZE="50m"
+
+# Runs for generating SCC
+SCC_GEN_RUNS_COUNT=3
+
+# is running on ubuntu or debian - package manager apt
+IS_APT_ENV=false
+# Intitialise default / allowed sample app status
+RUN_ECLIPSE=false
+RUN_TOMCAT=true
+
+# Intitialise default / required packages status
+INSTALL_GTK=false
+INSTALL_XVFB=false
+
+# App download locations
+DOWNLOAD_PATH_ECLIPSE=/tmp/eclipse
+DOWNLOAD_PATH_TOMCAT=/tmp/tomcat
+
+# App installation locations
+INSTALL_PATH_ECLIPSE="${HOME}"/eclipse-home
+INSTALL_PATH_TOMCAT="${HOME}"/tomcat-home
+
+# URL's for the artifacts
+ECLIPSE_DWNLD_URL="http://www.mirrorservice.org/sites/download.eclipse.org/eclipseMirror/technology/epp/downloads/release/2020-06/M3/eclipse-java-2020-06-M3-linux-gtk-x86_64.tar.gz"
+TOMCAT_DWNLD_URL="https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.35/bin/apache-tomcat-9.0.35.tar.gz"
+
+# Check and downlaod eclipse
+function check_to_download_eclipse() {
+    if [ "${RUN_ECLIPSE}" == true ]; then
+        # Creating a temporary directory for eclipse download
+        mkdir -p "${DOWNLOAD_PATH_ECLIPSE}" "${INSTALL_PATH_ECLIPSE}"
+
+        # Downloading eclipse
+        if curl --fail -o "${DOWNLOAD_PATH_ECLIPSE}"/eclipse.tar.gz  "${ECLIPSE_DWNLD_URL}"; then
+            # Extracting eclipse
+            tar -xvzf "${DOWNLOAD_PATH_ECLIPSE}"/eclipse.tar.gz -C "$INSTALL_PATH_ECLIPSE" --strip-components=1
+        else
+            RUN_ECLIPSE=false
+        fi
+
+        # Removing the tar file
+        rm -rf "${DOWNLOAD_PATH_ECLIPSE}"
+    fi
+}
+
+# Check and download tomcat
+function check_to_download_tomcat() {
+    if [ "${RUN_TOMCAT}" == true ]; then
+        # Creating a temporary directory for tomcat download
+        mkdir -p "${DOWNLOAD_PATH_TOMCAT}" "${INSTALL_PATH_TOMCAT}"
+
+        # Downloading tomcat
+        if curl --fail -o "${DOWNLOAD_PATH_TOMCAT}"/tomcat.tar.gz "${TOMCAT_DWNLD_URL}"; then
+            # Extracting tomcat
+            tar -xvzf "${DOWNLOAD_PATH_TOMCAT}"/tomcat.tar.gz -C "${INSTALL_PATH_TOMCAT}" --strip-components=1
+        else
+            RUN_TOMCAT=false
+        fi
+
+        # Removing the tar file
+        rm -rf "${DOWNLOAD_PATH_TOMCAT}"
+    fi
+}
+
+# ubuntu/debian install packages required for eclipse
+function apt_install_packages() {
+    # update the repositories
+    apt update
+
+    # Set non-interactive frontend (to avoid `tzdata` config options selection)
+    APT_INSTALL_CMD="DEBIAN_FRONTEND=noninteractive"
+    APT_INSTALL_CMD="${APT_INSTALL_CMD} apt install -y"
+
+    if [ "${INSTALL_GTK}" == true ]; then
+        # install gtk+3.0
+        APT_INSTALL_CMD="${APT_INSTALL_CMD} gtk+3.0"
+    fi
+
+    if [ "${INSTALL_XVFB}" == true ]; then
+        # install xvfb
+        APT_INSTALL_CMD="${APT_INSTALL_CMD} xvfb"
+    fi
+
+    eval "${APT_INSTALL_CMD}"
+}
+
+# Check if any application needs virtual screen and launch it
+function check_and_start_xvfb() {
+    # check if `xvfb` installed
+    if [ "${INSTALL_XVFB}" == true ]; then
+        # Spawning a virtual screen for GUI apps
+        Xvfb :1 -ac -screen 0 1024x768x8 &
+        # Saving the PID
+        XVFB_PID=$!
+        # Saving older display value
+        OLD_DISPLAY=$DISPLAY
+        # Setting DISPLAY to created screen
+        export DISPLAY=:1
+    fi
+}
+
+# Kill the created virtual screen
+function check_and_stop_xvfb() {
+    # check if `xvfb` installed
+    if [ "${INSTALL_XVFB}" == true ]; then
+        # Killing `xvfb` process to remove screen
+        kill -9 $XVFB_PID
+        # Setting back the DISPLAY to older value
+        export DISPLAY=$OLD_DISPLAY
+    fi
+}
+
+# Run the applications for specified iterations
+function run_apps() {
+    for ((i=0; i<SCC_GEN_RUNS_COUNT; i++))
+    do
+        if [ "${RUN_ECLIPSE}" == true ]; then
+            run_eclipse_and_stop
+        fi
+        if [ "${RUN_TOMCAT}" == true ]; then
+            run_tomcat_and_stop
+        fi
+    done
+}
+
+# function to install packages
+function install_packages() {
+    if [ "${IS_APT_ENV}" == true ]; then
+        apt_install_packages
+    fi
+}
+
+# function to download the applications
+function download_and_install_artifacts() {
+
+    # check for eclipse
+    check_to_download_eclipse
+
+    # check for tomcat
+    check_to_download_tomcat
+
+}
+
+# dry run to right size the cache
+function dry_run() {
+    # Creating base layer first instead of running sample programs to generate SCC directly
+    java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal,createLayer -Xscmx$SCC_SIZE -version
+
+    # Pointing cache for sample program runs
+    export OPENJ9_JAVA_OPTIONS="-Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal"
+
+    # check if we need xvfb for running application and start a virtual screen if required
+    check_and_start_xvfb
+
+    # Run the applications to generate SCC
+    run_apps
+
+    # check if started a virtual screen and kill the process
+    check_and_stop_xvfb
+
+    FULL=$( (java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,printallStats || true) 2>&1 | awk '/^Cache is [0-9.]*% .*full/ {print substr($3, 1, length($3)-1)}')
+
+    java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,destroy || true
+
+    SCC_SIZE="${SCC_SIZE:0:-1}"
+
+    SCC_SIZE=$(awk "BEGIN {print int($SCC_SIZE * $FULL / 100.0)}")
+
+    [ "${SCC_SIZE}" -eq 0 ] && SCC_SIZE=1
+
+    SCC_SIZE="${SCC_SIZE}m"
+
+    # Re-generating cache with new size
+    java -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal,createLayer -Xscmx$SCC_SIZE -version
+
+    unset OPENJ9_JAVA_OPTIONS
+}
+
+# Generate SCC by running apps
+function generate_scc() {
+    # Pointing cache for sample app runs
+    export OPENJ9_JAVA_OPTIONS="-Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal"
+
+    # check if we need xvfb for running application and start a virtual screen if required
+    check_and_start_xvfb
+
+    # Run the applications to generate SCC
+    run_apps
+
+    # check if started a virtual screen and kill the process
+    check_and_stop_xvfb
+
+    # Checking the cache level
+    FULL=$( (java -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,printallStats || true) 2>&1 | awk '/^Cache is [0-9.]*% .*full/ {print substr($3, 1, length($3)-1)}')
+
+    echo "SCC layer is $FULL% full."
+}
+
+# Remove the downloaded sample apps
+function remove_artifacts() {
+    # Command to remove apps
+    REMOVE_APPS="rm -rf"
+
+    # check for eclipse
+    if [ "${RUN_ECLIPSE}" == true ]; then
+        REMOVE_APPS="${REMOVE_APPS} ${INSTALL_PATH_ECLIPSE}"
+    fi
+
+    # check for tomcat
+    if [ "${RUN_TOMCAT}" == true ]; then
+        REMOVE_APPS="${REMOVE_APPS} ${INSTALL_PATH_TOMCAT}"
+    fi
+
+    eval "$REMOVE_APPS"
+}
+
+# Run eclipse and stop it after the startup
+function run_eclipse_and_stop() {
+    # Starting eclipse in background
+    "${INSTALL_PATH_ECLIPSE}"/eclipse/eclipse &
+    # Saving eclipse PID
+    ECLIPSE_PID=$!
+    # Waiting for eclipse to start - Sleeping for 1 minute
+    sleep 1m
+    # Killing eclipse process
+    kill -9 $ECLIPSE_PID
+    # Waiting for process to be killed - Sleeping for 10 seconds
+    sleep 10s
+}
+
+# Run tomcat and stop it after the startup
+function run_tomcat_and_stop() {
+    # Start tomcat wait till it comes up shut it down
+    "${INSTALL_PATH_TOMCAT}"/bin/startup.sh
+    # wait till tomcat starts -  wait for 5 seconds
+    sleep 5
+    # Stop tomcat
+    "${INSTALL_PATH_TOMCAT}"/bin/shutdown.sh
+    # wait till tomcat stops -  wait for 5 seconds
+    sleep 5
+}
+
+# Remove the installed packages
+function remove_packages() {
+    if [ "${IS_APT_ENV}" == true ]; then
+        APT_REMOVE_CMD="apt --purge -y autoremove"
+
+        if [ "${INSTALL_GTK}" == true ]; then
+            # remove gtk+3.0
+            APT_REMOVE_CMD="${APT_REMOVE_CMD} gtk+3.0"
+        fi
+
+        if [ "${INSTALL_XVFB}" == true ]; then
+            # remove xvfb
+            APT_REMOVE_CMD="${APT_REMOVE_CMD} xvfb"
+        fi
+
+        eval "${APT_REMOVE_CMD}"
+    fi
+}
+
+# check for OS release file
+if [ -f /etc/os-release ]; then
+    # load file to get the ID (OS name)
+    # shellcheck disable=SC1091
+    source /etc/os-release
+    OS=$ID
+fi
+
+# Check if OS is ubuntu/debian (we can run eclipse as packages required for it are available)
+if [ "${OS}" == "ubuntu" ]  || [ "${OS}" = "debian" ]; then
+    # set IS_APT_ENV true
+    IS_APT_ENV=true
+
+    # Set eclipse run to `true`
+    RUN_ECLIPSE=true
+
+    # Set the required packages for eclipse to `true`
+    INSTALL_GTK=true
+    INSTALL_XVFB=true
+
+    # Call function `install_pkgs_via_apt` to install packages
+    install_packages
+fi
+
+# Download the sample apps and install
+download_and_install_artifacts
+
+# Dry run for SCC generation (To get exact size)
+dry_run
+
+# Generate SCC
+generate_scc
+
+# Remove installed artifacts
+remove_artifacts
+
+# Remove packages
+remove_packages
diff --git a/adoptopenjdk_13-hotspot-bionic/Dockerfile.hotspot.releases.full b/adoptopenjdk_13-hotspot-bionic/Dockerfile.hotspot.releases.full
index eae6c73..b17482d 100644
--- a/adoptopenjdk_13-hotspot-bionic/Dockerfile.hotspot.releases.full
+++ b/adoptopenjdk_13-hotspot-bionic/Dockerfile.hotspot.releases.full
@@ -22,7 +22,7 @@ FROM ubuntu:18.04
 ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
 
 RUN apt-get update \
-    && apt-get install -y --no-install-recommends curl ca-certificates fontconfig locales \
+    && apt-get install -y --no-install-recommends tzdata curl ca-certificates fontconfig locales \
     && echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen \
     && locale-gen en_US.UTF-8 \
     && rm -rf /var/lib/apt/lists/*
diff --git a/adoptopenjdk_13-hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full b/adoptopenjdk_13-hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full
index b1cad0a..a438c2a 100644
--- a/adoptopenjdk_13-hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full
+++ b/adoptopenjdk_13-hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full
@@ -38,7 +38,7 @@ RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk13-binaries/
     Write-Host 'Installing using MSI ...'; \
     Start-Process -FilePath "msiexec.exe" -ArgumentList '/i', 'openjdk.msi', '/L*V', 'C:\temp\OpenJDK.log', \
     '/quiet', 'ADDLOCAL=FeatureEnvironment,FeatureJarFileRunWith,FeatureJavaHome' -Wait -Passthru; \
+    Remove-Item -Path C:\temp -Recurse | Out-Null; \
     Write-Host 'Removing openjdk.msi ...'; \
-        Remove-Item openjdk.msi -Force; \
-        Remove-Item -Path C:\temp -Recurse | Out-Null;
+    Remove-Item openjdk.msi -Force
 CMD ["jshell"]
diff --git a/adoptopenjdk_13-hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full b/adoptopenjdk_13-hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full
index 61ed0b3..ceeab95 100644
--- a/adoptopenjdk_13-hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full
+++ b/adoptopenjdk_13-hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full
@@ -38,7 +38,7 @@ RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk13-binaries/
     Write-Host 'Installing using MSI ...'; \
     Start-Process -FilePath "msiexec.exe" -ArgumentList '/i', 'openjdk.msi', '/L*V', 'C:\temp\OpenJDK.log', \
     '/quiet', 'ADDLOCAL=FeatureEnvironment,FeatureJarFileRunWith,FeatureJavaHome' -Wait -Passthru; \
+    Remove-Item -Path C:\temp -Recurse | Out-Null; \
     Write-Host 'Removing openjdk.msi ...'; \
-        Remove-Item openjdk.msi -Force; \
-        Remove-Item -Path C:\temp -Recurse | Out-Null;
+    Remove-Item openjdk.msi -Force
 CMD ["jshell"]
diff --git a/adoptopenjdk_13-jre-hotspot-bionic/Dockerfile.hotspot.releases.full b/adoptopenjdk_13-jre-hotspot-bionic/Dockerfile.hotspot.releases.full
index 6103c9d..b1f58d2 100644
--- a/adoptopenjdk_13-jre-hotspot-bionic/Dockerfile.hotspot.releases.full
+++ b/adoptopenjdk_13-jre-hotspot-bionic/Dockerfile.hotspot.releases.full
@@ -22,7 +22,7 @@ FROM ubuntu:18.04
 ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
 
 RUN apt-get update \
-    && apt-get install -y --no-install-recommends curl ca-certificates fontconfig locales \
+    && apt-get install -y --no-install-recommends tzdata curl ca-certificates fontconfig locales \
     && echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen \
     && locale-gen en_US.UTF-8 \
     && rm -rf /var/lib/apt/lists/*
diff --git a/adoptopenjdk_13-jre-hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full b/adoptopenjdk_13-jre-hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full
index d474e60..0e1691f 100644
--- a/adoptopenjdk_13-jre-hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full
+++ b/adoptopenjdk_13-jre-hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full
@@ -38,6 +38,6 @@ RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk13-binaries/
     Write-Host 'Installing using MSI ...'; \
     Start-Process -FilePath "msiexec.exe" -ArgumentList '/i', 'openjdk.msi', '/L*V', 'C:\temp\OpenJDK.log', \
     '/quiet', 'ADDLOCAL=FeatureEnvironment,FeatureJarFileRunWith,FeatureJavaHome' -Wait -Passthru; \
+    Remove-Item -Path C:\temp -Recurse | Out-Null; \
     Write-Host 'Removing openjdk.msi ...'; \
-        Remove-Item openjdk.msi -Force; \
-        Remove-Item -Path C:\temp -Recurse | Out-Null;
+    Remove-Item openjdk.msi -Force
diff --git a/adoptopenjdk_13-jre-hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full b/adoptopenjdk_13-jre-hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full
index 77b8e00..a6ba70a 100644
--- a/adoptopenjdk_13-jre-hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full
+++ b/adoptopenjdk_13-jre-hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full
@@ -38,6 +38,6 @@ RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk13-binaries/
     Write-Host 'Installing using MSI ...'; \
     Start-Process -FilePath "msiexec.exe" -ArgumentList '/i', 'openjdk.msi', '/L*V', 'C:\temp\OpenJDK.log', \
     '/quiet', 'ADDLOCAL=FeatureEnvironment,FeatureJarFileRunWith,FeatureJavaHome' -Wait -Passthru; \
+    Remove-Item -Path C:\temp -Recurse | Out-Null; \
     Write-Host 'Removing openjdk.msi ...'; \
-        Remove-Item openjdk.msi -Force; \
-        Remove-Item -Path C:\temp -Recurse | Out-Null;
+    Remove-Item openjdk.msi -Force
diff --git a/adoptopenjdk_13-jre-openj9-bionic/Dockerfile.openj9.releases.full b/adoptopenjdk_13-jre-openj9-bionic/Dockerfile.openj9.releases.full
index eaea9c2..b8415da 100644
--- a/adoptopenjdk_13-jre-openj9-bionic/Dockerfile.openj9.releases.full
+++ b/adoptopenjdk_13-jre-openj9-bionic/Dockerfile.openj9.releases.full
@@ -22,7 +22,7 @@ FROM ubuntu:18.04
 ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
 
 RUN apt-get update \
-    && apt-get install -y --no-install-recommends curl ca-certificates fontconfig locales \
+    && apt-get install -y --no-install-recommends tzdata curl ca-certificates fontconfig locales \
     && echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen \
     && locale-gen en_US.UTF-8 \
     && rm -rf /var/lib/apt/lists/*
diff --git a/adoptopenjdk_13-jre-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full b/adoptopenjdk_13-jre-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
index 05b9f31..8769114 100644
--- a/adoptopenjdk_13-jre-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
+++ b/adoptopenjdk_13-jre-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
@@ -38,7 +38,7 @@ RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk13-binaries/
     Write-Host 'Installing using MSI ...'; \
     Start-Process -FilePath "msiexec.exe" -ArgumentList '/i', 'openjdk.msi', '/L*V', 'C:\temp\OpenJDK.log', \
     '/quiet', 'ADDLOCAL=FeatureEnvironment,FeatureJarFileRunWith,FeatureJavaHome' -Wait -Passthru; \
+    Remove-Item -Path C:\temp -Recurse | Out-Null; \
     Write-Host 'Removing openjdk.msi ...'; \
-        Remove-Item openjdk.msi -Force; \
-        Remove-Item -Path C:\temp -Recurse | Out-Null;
+    Remove-Item openjdk.msi -Force
 ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+UseContainerSupport -XX:+IdleTuningCompactOnIdle -XX:+IdleTuningGcOnIdle"
diff --git a/adoptopenjdk_13-jre-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full b/adoptopenjdk_13-jre-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
index 3e104f5..5769db2 100644
--- a/adoptopenjdk_13-jre-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
+++ b/adoptopenjdk_13-jre-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
@@ -38,7 +38,7 @@ RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk13-binaries/
     Write-Host 'Installing using MSI ...'; \
     Start-Process -FilePath "msiexec.exe" -ArgumentList '/i', 'openjdk.msi', '/L*V', 'C:\temp\OpenJDK.log', \
     '/quiet', 'ADDLOCAL=FeatureEnvironment,FeatureJarFileRunWith,FeatureJavaHome' -Wait -Passthru; \
+    Remove-Item -Path C:\temp -Recurse | Out-Null; \
     Write-Host 'Removing openjdk.msi ...'; \
-        Remove-Item openjdk.msi -Force; \
-        Remove-Item -Path C:\temp -Recurse | Out-Null;
+    Remove-Item openjdk.msi -Force
 ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+UseContainerSupport -XX:+IdleTuningCompactOnIdle -XX:+IdleTuningGcOnIdle"
diff --git a/adoptopenjdk_13-openj9-bionic/Dockerfile.openj9.releases.full b/adoptopenjdk_13-openj9-bionic/Dockerfile.openj9.releases.full
index a5df670..59cc004 100644
--- a/adoptopenjdk_13-openj9-bionic/Dockerfile.openj9.releases.full
+++ b/adoptopenjdk_13-openj9-bionic/Dockerfile.openj9.releases.full
@@ -22,7 +22,7 @@ FROM ubuntu:18.04
 ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
 
 RUN apt-get update \
-    && apt-get install -y --no-install-recommends curl ca-certificates fontconfig locales \
+    && apt-get install -y --no-install-recommends tzdata curl ca-certificates fontconfig locales \
     && echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen \
     && locale-gen en_US.UTF-8 \
     && rm -rf /var/lib/apt/lists/*
diff --git a/adoptopenjdk_13-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full b/adoptopenjdk_13-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
index 268fb19..96e3b6b 100644
--- a/adoptopenjdk_13-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
+++ b/adoptopenjdk_13-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
@@ -38,8 +38,8 @@ RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk13-binaries/
     Write-Host 'Installing using MSI ...'; \
     Start-Process -FilePath "msiexec.exe" -ArgumentList '/i', 'openjdk.msi', '/L*V', 'C:\temp\OpenJDK.log', \
     '/quiet', 'ADDLOCAL=FeatureEnvironment,FeatureJarFileRunWith,FeatureJavaHome' -Wait -Passthru; \
+    Remove-Item -Path C:\temp -Recurse | Out-Null; \
     Write-Host 'Removing openjdk.msi ...'; \
-        Remove-Item openjdk.msi -Force; \
-        Remove-Item -Path C:\temp -Recurse | Out-Null;
+    Remove-Item openjdk.msi -Force
 ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+UseContainerSupport -XX:+IdleTuningCompactOnIdle -XX:+IdleTuningGcOnIdle"
 CMD ["jshell"]
diff --git a/adoptopenjdk_13-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full b/adoptopenjdk_13-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
index 6aa5ddb..89b2f07 100644
--- a/adoptopenjdk_13-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
+++ b/adoptopenjdk_13-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
@@ -38,8 +38,8 @@ RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk13-binaries/
     Write-Host 'Installing using MSI ...'; \
     Start-Process -FilePath "msiexec.exe" -ArgumentList '/i', 'openjdk.msi', '/L*V', 'C:\temp\OpenJDK.log', \
     '/quiet', 'ADDLOCAL=FeatureEnvironment,FeatureJarFileRunWith,FeatureJavaHome' -Wait -Passthru; \
+    Remove-Item -Path C:\temp -Recurse | Out-Null; \
     Write-Host 'Removing openjdk.msi ...'; \
-        Remove-Item openjdk.msi -Force; \
-        Remove-Item -Path C:\temp -Recurse | Out-Null;
+    Remove-Item openjdk.msi -Force
 ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+UseContainerSupport -XX:+IdleTuningCompactOnIdle -XX:+IdleTuningGcOnIdle"
 CMD ["jshell"]
diff --git a/adoptopenjdk_hotspot-bionic/Dockerfile.hotspot.releases.full b/adoptopenjdk_14-hotspot-bionic/Dockerfile.hotspot.releases.full
similarity index 100%
copy from adoptopenjdk_hotspot-bionic/Dockerfile.hotspot.releases.full
copy to adoptopenjdk_14-hotspot-bionic/Dockerfile.hotspot.releases.full
diff --git a/adoptopenjdk_hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full b/adoptopenjdk_14-hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full
similarity index 100%
copy from adoptopenjdk_hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full
copy to adoptopenjdk_14-hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full
diff --git a/adoptopenjdk_hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full b/adoptopenjdk_14-hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full
similarity index 100%
copy from adoptopenjdk_hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full
copy to adoptopenjdk_14-hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full
diff --git a/adoptopenjdk_14-jre-openj9-bionic/Dockerfile.openj9.releases.full b/adoptopenjdk_14-jre-openj9-bionic/Dockerfile.openj9.releases.full
index 30c3618..4f102ad 100644
--- a/adoptopenjdk_14-jre-openj9-bionic/Dockerfile.openj9.releases.full
+++ b/adoptopenjdk_14-jre-openj9-bionic/Dockerfile.openj9.releases.full
@@ -59,3 +59,6 @@ RUN set -eux; \
 ENV JAVA_HOME=/opt/java/openjdk \
     PATH="/opt/java/openjdk/bin:$PATH"
 ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+UseContainerSupport -XX:+IdleTuningCompactOnIdle -XX:+IdleTuningGcOnIdle"
+COPY generate_openj9_scc.sh /scripts/
+        RUN /scripts/generate_openj9_scc.sh
+        ENV OPENJ9_JAVA_OPTIONS="-Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,readonly,nonFatal"
diff --git a/adoptopenjdk_14-jre-openj9-bionic/generate_openj9_scc.sh b/adoptopenjdk_14-jre-openj9-bionic/generate_openj9_scc.sh
new file mode 100755
index 0000000..a5113ba
--- /dev/null
+++ b/adoptopenjdk_14-jre-openj9-bionic/generate_openj9_scc.sh
@@ -0,0 +1,318 @@
+#!/bin/bash
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+unset OPENJ9_JAVA_OPTIONS
+
+# Default size for SCC
+SCC_SIZE="50m"
+
+# Runs for generating SCC
+SCC_GEN_RUNS_COUNT=3
+
+# is running on ubuntu or debian - package manager apt
+IS_APT_ENV=false
+# Intitialise default / allowed sample app status
+RUN_ECLIPSE=false
+RUN_TOMCAT=true
+
+# Intitialise default / required packages status
+INSTALL_GTK=false
+INSTALL_XVFB=false
+
+# App download locations
+DOWNLOAD_PATH_ECLIPSE=/tmp/eclipse
+DOWNLOAD_PATH_TOMCAT=/tmp/tomcat
+
+# App installation locations
+INSTALL_PATH_ECLIPSE="${HOME}"/eclipse-home
+INSTALL_PATH_TOMCAT="${HOME}"/tomcat-home
+
+# URL's for the artifacts
+ECLIPSE_DWNLD_URL="http://www.mirrorservice.org/sites/download.eclipse.org/eclipseMirror/technology/epp/downloads/release/2020-06/M3/eclipse-java-2020-06-M3-linux-gtk-x86_64.tar.gz"
+TOMCAT_DWNLD_URL="https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.35/bin/apache-tomcat-9.0.35.tar.gz"
+
+# Check and downlaod eclipse
+function check_to_download_eclipse() {
+    if [ "${RUN_ECLIPSE}" == true ]; then
+        # Creating a temporary directory for eclipse download
+        mkdir -p "${DOWNLOAD_PATH_ECLIPSE}" "${INSTALL_PATH_ECLIPSE}"
+
+        # Downloading eclipse
+        if curl --fail -o "${DOWNLOAD_PATH_ECLIPSE}"/eclipse.tar.gz  "${ECLIPSE_DWNLD_URL}"; then
+            # Extracting eclipse
+            tar -xvzf "${DOWNLOAD_PATH_ECLIPSE}"/eclipse.tar.gz -C "$INSTALL_PATH_ECLIPSE" --strip-components=1
+        else
+            RUN_ECLIPSE=false
+        fi
+
+        # Removing the tar file
+        rm -rf "${DOWNLOAD_PATH_ECLIPSE}"
+    fi
+}
+
+# Check and download tomcat
+function check_to_download_tomcat() {
+    if [ "${RUN_TOMCAT}" == true ]; then
+        # Creating a temporary directory for tomcat download
+        mkdir -p "${DOWNLOAD_PATH_TOMCAT}" "${INSTALL_PATH_TOMCAT}"
+
+        # Downloading tomcat
+        if curl --fail -o "${DOWNLOAD_PATH_TOMCAT}"/tomcat.tar.gz "${TOMCAT_DWNLD_URL}"; then
+            # Extracting tomcat
+            tar -xvzf "${DOWNLOAD_PATH_TOMCAT}"/tomcat.tar.gz -C "${INSTALL_PATH_TOMCAT}" --strip-components=1
+        else
+            RUN_TOMCAT=false
+        fi
+
+        # Removing the tar file
+        rm -rf "${DOWNLOAD_PATH_TOMCAT}"
+    fi
+}
+
+# ubuntu/debian install packages required for eclipse
+function apt_install_packages() {
+    # update the repositories
+    apt update
+
+    # Set non-interactive frontend (to avoid `tzdata` config options selection)
+    APT_INSTALL_CMD="DEBIAN_FRONTEND=noninteractive"
+    APT_INSTALL_CMD="${APT_INSTALL_CMD} apt install -y"
+
+    if [ "${INSTALL_GTK}" == true ]; then
+        # install gtk+3.0
+        APT_INSTALL_CMD="${APT_INSTALL_CMD} gtk+3.0"
+    fi
+
+    if [ "${INSTALL_XVFB}" == true ]; then
+        # install xvfb
+        APT_INSTALL_CMD="${APT_INSTALL_CMD} xvfb"
+    fi
+
+    eval "${APT_INSTALL_CMD}"
+}
+
+# Check if any application needs virtual screen and launch it
+function check_and_start_xvfb() {
+    # check if `xvfb` installed
+    if [ "${INSTALL_XVFB}" == true ]; then
+        # Spawning a virtual screen for GUI apps
+        Xvfb :1 -ac -screen 0 1024x768x8 &
+        # Saving the PID
+        XVFB_PID=$!
+        # Saving older display value
+        OLD_DISPLAY=$DISPLAY
+        # Setting DISPLAY to created screen
+        export DISPLAY=:1
+    fi
+}
+
+# Kill the created virtual screen
+function check_and_stop_xvfb() {
+    # check if `xvfb` installed
+    if [ "${INSTALL_XVFB}" == true ]; then
+        # Killing `xvfb` process to remove screen
+        kill -9 $XVFB_PID
+        # Setting back the DISPLAY to older value
+        export DISPLAY=$OLD_DISPLAY
+    fi
+}
+
+# Run the applications for specified iterations
+function run_apps() {
+    for ((i=0; i<SCC_GEN_RUNS_COUNT; i++))
+    do
+        if [ "${RUN_ECLIPSE}" == true ]; then
+            run_eclipse_and_stop
+        fi
+        if [ "${RUN_TOMCAT}" == true ]; then
+            run_tomcat_and_stop
+        fi
+    done
+}
+
+# function to install packages
+function install_packages() {
+    if [ "${IS_APT_ENV}" == true ]; then
+        apt_install_packages
+    fi
+}
+
+# function to download the applications
+function download_and_install_artifacts() {
+
+    # check for eclipse
+    check_to_download_eclipse
+
+    # check for tomcat
+    check_to_download_tomcat
+
+}
+
+# dry run to right size the cache
+function dry_run() {
+    # Creating base layer first instead of running sample programs to generate SCC directly
+    java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal,createLayer -Xscmx$SCC_SIZE -version
+
+    # Pointing cache for sample program runs
+    export OPENJ9_JAVA_OPTIONS="-Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal"
+
+    # check if we need xvfb for running application and start a virtual screen if required
+    check_and_start_xvfb
+
+    # Run the applications to generate SCC
+    run_apps
+
+    # check if started a virtual screen and kill the process
+    check_and_stop_xvfb
+
+    FULL=$( (java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,printallStats || true) 2>&1 | awk '/^Cache is [0-9.]*% .*full/ {print substr($3, 1, length($3)-1)}')
+
+    java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,destroy || true
+
+    SCC_SIZE="${SCC_SIZE:0:-1}"
+
+    SCC_SIZE=$(awk "BEGIN {print int($SCC_SIZE * $FULL / 100.0)}")
+
+    [ "${SCC_SIZE}" -eq 0 ] && SCC_SIZE=1
+
+    SCC_SIZE="${SCC_SIZE}m"
+
+    # Re-generating cache with new size
+    java -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal,createLayer -Xscmx$SCC_SIZE -version
+
+    unset OPENJ9_JAVA_OPTIONS
+}
+
+# Generate SCC by running apps
+function generate_scc() {
+    # Pointing cache for sample app runs
+    export OPENJ9_JAVA_OPTIONS="-Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal"
+
+    # check if we need xvfb for running application and start a virtual screen if required
+    check_and_start_xvfb
+
+    # Run the applications to generate SCC
+    run_apps
+
+    # check if started a virtual screen and kill the process
+    check_and_stop_xvfb
+
+    # Checking the cache level
+    FULL=$( (java -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,printallStats || true) 2>&1 | awk '/^Cache is [0-9.]*% .*full/ {print substr($3, 1, length($3)-1)}')
+
+    echo "SCC layer is $FULL% full."
+}
+
+# Remove the downloaded sample apps
+function remove_artifacts() {
+    # Command to remove apps
+    REMOVE_APPS="rm -rf"
+
+    # check for eclipse
+    if [ "${RUN_ECLIPSE}" == true ]; then
+        REMOVE_APPS="${REMOVE_APPS} ${INSTALL_PATH_ECLIPSE}"
+    fi
+
+    # check for tomcat
+    if [ "${RUN_TOMCAT}" == true ]; then
+        REMOVE_APPS="${REMOVE_APPS} ${INSTALL_PATH_TOMCAT}"
+    fi
+
+    eval "$REMOVE_APPS"
+}
+
+# Run eclipse and stop it after the startup
+function run_eclipse_and_stop() {
+    # Starting eclipse in background
+    "${INSTALL_PATH_ECLIPSE}"/eclipse/eclipse &
+    # Saving eclipse PID
+    ECLIPSE_PID=$!
+    # Waiting for eclipse to start - Sleeping for 1 minute
+    sleep 1m
+    # Killing eclipse process
+    kill -9 $ECLIPSE_PID
+    # Waiting for process to be killed - Sleeping for 10 seconds
+    sleep 10s
+}
+
+# Run tomcat and stop it after the startup
+function run_tomcat_and_stop() {
+    # Start tomcat wait till it comes up shut it down
+    "${INSTALL_PATH_TOMCAT}"/bin/startup.sh
+    # wait till tomcat starts -  wait for 5 seconds
+    sleep 5
+    # Stop tomcat
+    "${INSTALL_PATH_TOMCAT}"/bin/shutdown.sh
+    # wait till tomcat stops -  wait for 5 seconds
+    sleep 5
+}
+
+# Remove the installed packages
+function remove_packages() {
+    if [ "${IS_APT_ENV}" == true ]; then
+        APT_REMOVE_CMD="apt --purge -y autoremove"
+
+        if [ "${INSTALL_GTK}" == true ]; then
+            # remove gtk+3.0
+            APT_REMOVE_CMD="${APT_REMOVE_CMD} gtk+3.0"
+        fi
+
+        if [ "${INSTALL_XVFB}" == true ]; then
+            # remove xvfb
+            APT_REMOVE_CMD="${APT_REMOVE_CMD} xvfb"
+        fi
+
+        eval "${APT_REMOVE_CMD}"
+    fi
+}
+
+# check for OS release file
+if [ -f /etc/os-release ]; then
+    # load file to get the ID (OS name)
+    # shellcheck disable=SC1091
+    source /etc/os-release
+    OS=$ID
+fi
+
+# Check if OS is ubuntu/debian (we can run eclipse as packages required for it are available)
+if [ "${OS}" == "ubuntu" ]  || [ "${OS}" = "debian" ]; then
+    # set IS_APT_ENV true
+    IS_APT_ENV=true
+
+    # Set eclipse run to `true`
+    RUN_ECLIPSE=true
+
+    # Set the required packages for eclipse to `true`
+    INSTALL_GTK=true
+    INSTALL_XVFB=true
+
+    # Call function `install_pkgs_via_apt` to install packages
+    install_packages
+fi
+
+# Download the sample apps and install
+download_and_install_artifacts
+
+# Dry run for SCC generation (To get exact size)
+dry_run
+
+# Generate SCC
+generate_scc
+
+# Remove installed artifacts
+remove_artifacts
+
+# Remove packages
+remove_packages
diff --git a/adoptopenjdk_openj9-bionic/Dockerfile.openj9.releases.full b/adoptopenjdk_14-openj9-bionic/Dockerfile.openj9.releases.full
similarity index 93%
copy from adoptopenjdk_openj9-bionic/Dockerfile.openj9.releases.full
copy to adoptopenjdk_14-openj9-bionic/Dockerfile.openj9.releases.full
index eff0c96..b34e17d 100644
--- a/adoptopenjdk_openj9-bionic/Dockerfile.openj9.releases.full
+++ b/adoptopenjdk_14-openj9-bionic/Dockerfile.openj9.releases.full
@@ -59,4 +59,7 @@ RUN set -eux; \
 ENV JAVA_HOME=/opt/java/openjdk \
     PATH="/opt/java/openjdk/bin:$PATH"
 ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+UseContainerSupport -XX:+IdleTuningCompactOnIdle -XX:+IdleTuningGcOnIdle"
+COPY generate_openj9_scc.sh /scripts/
+        RUN /scripts/generate_openj9_scc.sh
+        ENV OPENJ9_JAVA_OPTIONS="-Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,readonly,nonFatal"
 CMD ["jshell"]
diff --git a/adoptopenjdk_14-openj9-bionic/generate_openj9_scc.sh b/adoptopenjdk_14-openj9-bionic/generate_openj9_scc.sh
new file mode 100755
index 0000000..a5113ba
--- /dev/null
+++ b/adoptopenjdk_14-openj9-bionic/generate_openj9_scc.sh
@@ -0,0 +1,318 @@
+#!/bin/bash
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+unset OPENJ9_JAVA_OPTIONS
+
+# Default size for SCC
+SCC_SIZE="50m"
+
+# Runs for generating SCC
+SCC_GEN_RUNS_COUNT=3
+
+# is running on ubuntu or debian - package manager apt
+IS_APT_ENV=false
+# Intitialise default / allowed sample app status
+RUN_ECLIPSE=false
+RUN_TOMCAT=true
+
+# Intitialise default / required packages status
+INSTALL_GTK=false
+INSTALL_XVFB=false
+
+# App download locations
+DOWNLOAD_PATH_ECLIPSE=/tmp/eclipse
+DOWNLOAD_PATH_TOMCAT=/tmp/tomcat
+
+# App installation locations
+INSTALL_PATH_ECLIPSE="${HOME}"/eclipse-home
+INSTALL_PATH_TOMCAT="${HOME}"/tomcat-home
+
+# URL's for the artifacts
+ECLIPSE_DWNLD_URL="http://www.mirrorservice.org/sites/download.eclipse.org/eclipseMirror/technology/epp/downloads/release/2020-06/M3/eclipse-java-2020-06-M3-linux-gtk-x86_64.tar.gz"
+TOMCAT_DWNLD_URL="https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.35/bin/apache-tomcat-9.0.35.tar.gz"
+
+# Check and downlaod eclipse
+function check_to_download_eclipse() {
+    if [ "${RUN_ECLIPSE}" == true ]; then
+        # Creating a temporary directory for eclipse download
+        mkdir -p "${DOWNLOAD_PATH_ECLIPSE}" "${INSTALL_PATH_ECLIPSE}"
+
+        # Downloading eclipse
+        if curl --fail -o "${DOWNLOAD_PATH_ECLIPSE}"/eclipse.tar.gz  "${ECLIPSE_DWNLD_URL}"; then
+            # Extracting eclipse
+            tar -xvzf "${DOWNLOAD_PATH_ECLIPSE}"/eclipse.tar.gz -C "$INSTALL_PATH_ECLIPSE" --strip-components=1
+        else
+            RUN_ECLIPSE=false
+        fi
+
+        # Removing the tar file
+        rm -rf "${DOWNLOAD_PATH_ECLIPSE}"
+    fi
+}
+
+# Check and download tomcat
+function check_to_download_tomcat() {
+    if [ "${RUN_TOMCAT}" == true ]; then
+        # Creating a temporary directory for tomcat download
+        mkdir -p "${DOWNLOAD_PATH_TOMCAT}" "${INSTALL_PATH_TOMCAT}"
+
+        # Downloading tomcat
+        if curl --fail -o "${DOWNLOAD_PATH_TOMCAT}"/tomcat.tar.gz "${TOMCAT_DWNLD_URL}"; then
+            # Extracting tomcat
+            tar -xvzf "${DOWNLOAD_PATH_TOMCAT}"/tomcat.tar.gz -C "${INSTALL_PATH_TOMCAT}" --strip-components=1
+        else
+            RUN_TOMCAT=false
+        fi
+
+        # Removing the tar file
+        rm -rf "${DOWNLOAD_PATH_TOMCAT}"
+    fi
+}
+
+# ubuntu/debian install packages required for eclipse
+function apt_install_packages() {
+    # update the repositories
+    apt update
+
+    # Set non-interactive frontend (to avoid `tzdata` config options selection)
+    APT_INSTALL_CMD="DEBIAN_FRONTEND=noninteractive"
+    APT_INSTALL_CMD="${APT_INSTALL_CMD} apt install -y"
+
+    if [ "${INSTALL_GTK}" == true ]; then
+        # install gtk+3.0
+        APT_INSTALL_CMD="${APT_INSTALL_CMD} gtk+3.0"
+    fi
+
+    if [ "${INSTALL_XVFB}" == true ]; then
+        # install xvfb
+        APT_INSTALL_CMD="${APT_INSTALL_CMD} xvfb"
+    fi
+
+    eval "${APT_INSTALL_CMD}"
+}
+
+# Check if any application needs virtual screen and launch it
+function check_and_start_xvfb() {
+    # check if `xvfb` installed
+    if [ "${INSTALL_XVFB}" == true ]; then
+        # Spawning a virtual screen for GUI apps
+        Xvfb :1 -ac -screen 0 1024x768x8 &
+        # Saving the PID
+        XVFB_PID=$!
+        # Saving older display value
+        OLD_DISPLAY=$DISPLAY
+        # Setting DISPLAY to created screen
+        export DISPLAY=:1
+    fi
+}
+
+# Kill the created virtual screen
+function check_and_stop_xvfb() {
+    # check if `xvfb` installed
+    if [ "${INSTALL_XVFB}" == true ]; then
+        # Killing `xvfb` process to remove screen
+        kill -9 $XVFB_PID
+        # Setting back the DISPLAY to older value
+        export DISPLAY=$OLD_DISPLAY
+    fi
+}
+
+# Run the applications for specified iterations
+function run_apps() {
+    for ((i=0; i<SCC_GEN_RUNS_COUNT; i++))
+    do
+        if [ "${RUN_ECLIPSE}" == true ]; then
+            run_eclipse_and_stop
+        fi
+        if [ "${RUN_TOMCAT}" == true ]; then
+            run_tomcat_and_stop
+        fi
+    done
+}
+
+# function to install packages
+function install_packages() {
+    if [ "${IS_APT_ENV}" == true ]; then
+        apt_install_packages
+    fi
+}
+
+# function to download the applications
+function download_and_install_artifacts() {
+
+    # check for eclipse
+    check_to_download_eclipse
+
+    # check for tomcat
+    check_to_download_tomcat
+
+}
+
+# dry run to right size the cache
+function dry_run() {
+    # Creating base layer first instead of running sample programs to generate SCC directly
+    java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal,createLayer -Xscmx$SCC_SIZE -version
+
+    # Pointing cache for sample program runs
+    export OPENJ9_JAVA_OPTIONS="-Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal"
+
+    # check if we need xvfb for running application and start a virtual screen if required
+    check_and_start_xvfb
+
+    # Run the applications to generate SCC
+    run_apps
+
+    # check if started a virtual screen and kill the process
+    check_and_stop_xvfb
+
+    FULL=$( (java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,printallStats || true) 2>&1 | awk '/^Cache is [0-9.]*% .*full/ {print substr($3, 1, length($3)-1)}')
+
+    java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,destroy || true
+
+    SCC_SIZE="${SCC_SIZE:0:-1}"
+
+    SCC_SIZE=$(awk "BEGIN {print int($SCC_SIZE * $FULL / 100.0)}")
+
+    [ "${SCC_SIZE}" -eq 0 ] && SCC_SIZE=1
+
+    SCC_SIZE="${SCC_SIZE}m"
+
+    # Re-generating cache with new size
+    java -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal,createLayer -Xscmx$SCC_SIZE -version
+
+    unset OPENJ9_JAVA_OPTIONS
+}
+
+# Generate SCC by running apps
+function generate_scc() {
+    # Pointing cache for sample app runs
+    export OPENJ9_JAVA_OPTIONS="-Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal"
+
+    # check if we need xvfb for running application and start a virtual screen if required
+    check_and_start_xvfb
+
+    # Run the applications to generate SCC
+    run_apps
+
+    # check if started a virtual screen and kill the process
+    check_and_stop_xvfb
+
+    # Checking the cache level
+    FULL=$( (java -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,printallStats || true) 2>&1 | awk '/^Cache is [0-9.]*% .*full/ {print substr($3, 1, length($3)-1)}')
+
+    echo "SCC layer is $FULL% full."
+}
+
+# Remove the downloaded sample apps
+function remove_artifacts() {
+    # Command to remove apps
+    REMOVE_APPS="rm -rf"
+
+    # check for eclipse
+    if [ "${RUN_ECLIPSE}" == true ]; then
+        REMOVE_APPS="${REMOVE_APPS} ${INSTALL_PATH_ECLIPSE}"
+    fi
+
+    # check for tomcat
+    if [ "${RUN_TOMCAT}" == true ]; then
+        REMOVE_APPS="${REMOVE_APPS} ${INSTALL_PATH_TOMCAT}"
+    fi
+
+    eval "$REMOVE_APPS"
+}
+
+# Run eclipse and stop it after the startup
+function run_eclipse_and_stop() {
+    # Starting eclipse in background
+    "${INSTALL_PATH_ECLIPSE}"/eclipse/eclipse &
+    # Saving eclipse PID
+    ECLIPSE_PID=$!
+    # Waiting for eclipse to start - Sleeping for 1 minute
+    sleep 1m
+    # Killing eclipse process
+    kill -9 $ECLIPSE_PID
+    # Waiting for process to be killed - Sleeping for 10 seconds
+    sleep 10s
+}
+
+# Run tomcat and stop it after the startup
+function run_tomcat_and_stop() {
+    # Start tomcat wait till it comes up shut it down
+    "${INSTALL_PATH_TOMCAT}"/bin/startup.sh
+    # wait till tomcat starts -  wait for 5 seconds
+    sleep 5
+    # Stop tomcat
+    "${INSTALL_PATH_TOMCAT}"/bin/shutdown.sh
+    # wait till tomcat stops -  wait for 5 seconds
+    sleep 5
+}
+
+# Remove the installed packages
+function remove_packages() {
+    if [ "${IS_APT_ENV}" == true ]; then
+        APT_REMOVE_CMD="apt --purge -y autoremove"
+
+        if [ "${INSTALL_GTK}" == true ]; then
+            # remove gtk+3.0
+            APT_REMOVE_CMD="${APT_REMOVE_CMD} gtk+3.0"
+        fi
+
+        if [ "${INSTALL_XVFB}" == true ]; then
+            # remove xvfb
+            APT_REMOVE_CMD="${APT_REMOVE_CMD} xvfb"
+        fi
+
+        eval "${APT_REMOVE_CMD}"
+    fi
+}
+
+# check for OS release file
+if [ -f /etc/os-release ]; then
+    # load file to get the ID (OS name)
+    # shellcheck disable=SC1091
+    source /etc/os-release
+    OS=$ID
+fi
+
+# Check if OS is ubuntu/debian (we can run eclipse as packages required for it are available)
+if [ "${OS}" == "ubuntu" ]  || [ "${OS}" = "debian" ]; then
+    # set IS_APT_ENV true
+    IS_APT_ENV=true
+
+    # Set eclipse run to `true`
+    RUN_ECLIPSE=true
+
+    # Set the required packages for eclipse to `true`
+    INSTALL_GTK=true
+    INSTALL_XVFB=true
+
+    # Call function `install_pkgs_via_apt` to install packages
+    install_packages
+fi
+
+# Download the sample apps and install
+download_and_install_artifacts
+
+# Dry run for SCC generation (To get exact size)
+dry_run
+
+# Generate SCC
+generate_scc
+
+# Remove installed artifacts
+remove_artifacts
+
+# Remove packages
+remove_packages
diff --git a/adoptopenjdk_openj9-windowsservercore-1809/Dockerfile.openj9.releases.full b/adoptopenjdk_14-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
similarity index 100%
copy from adoptopenjdk_openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
copy to adoptopenjdk_14-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
diff --git a/adoptopenjdk_openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full b/adoptopenjdk_14-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
similarity index 100%
copy from adoptopenjdk_openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
copy to adoptopenjdk_14-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
diff --git a/adoptopenjdk_8-hotspot-bionic/Dockerfile.hotspot.releases.full b/adoptopenjdk_15-jre-hotspot-bionic/Dockerfile.hotspot.releases.full
similarity index 60%
copy from adoptopenjdk_8-hotspot-bionic/Dockerfile.hotspot.releases.full
copy to adoptopenjdk_15-jre-hotspot-bionic/Dockerfile.hotspot.releases.full
index 5227a8a..f291f7c 100644
--- a/adoptopenjdk_8-hotspot-bionic/Dockerfile.hotspot.releases.full
+++ b/adoptopenjdk_15-jre-hotspot-bionic/Dockerfile.hotspot.releases.full
@@ -27,30 +27,30 @@ RUN apt-get update \
     && locale-gen en_US.UTF-8 \
     && rm -rf /var/lib/apt/lists/*
 
-ENV JAVA_VERSION jdk8u262-b10
+ENV JAVA_VERSION jdk-15+36
 
 RUN set -eux; \
     ARCH="$(dpkg --print-architecture)"; \
     case "${ARCH}" in \
        aarch64|arm64) \
-         ESUM='7be0b2a4c749a277302a54b456624c076b3a5b990ad502e2a72d803ab31aecab'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10/OpenJDK8U-jdk_aarch64_linux_hotspot_8u262b10.tar.gz'; \
+         ESUM='318f50bae6652d4468ee262ce0fd6569adbc461bea0d1ecce77ce2843efee8d4'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36/OpenJDK15U-jre_aarch64_linux_hotspot_15_36.tar.gz'; \
          ;; \
        armhf|armv7l) \
-         ESUM='dd85ebb9a64916b4b621a23729e3360adb363d430bf1e99e98f25397834d74bd'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10/OpenJDK8U-jdk_arm_linux_hotspot_8u262b10.tar.gz'; \
+         ESUM='09c1ba3636e7899d8b43795d7988bcc4b1e1be2919764d94f6d4a1a855ce774f'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36/OpenJDK15U-jre_arm_linux_hotspot_15_36.tar.gz'; \
          ;; \
        ppc64el|ppc64le) \
-         ESUM='d2a16915fb85ba851145c91cda5666cb78f06bf4713a2b3bdce813779ff972c2'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10/OpenJDK8U-jdk_ppc64le_linux_hotspot_8u262b10.tar.gz'; \
+         ESUM='6ea692c7e43bee201a56313bd9f4ddcdea43bed1dfe203c49316ac4d08a4cdd3'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36/OpenJDK15U-jre_ppc64le_linux_hotspot_15_36.tar.gz'; \
          ;; \
        s390x) \
-         ESUM='a504af6924a095cfb6c392653dccd7299925048c91b399d05efa95a094820120'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10/OpenJDK8U-jdk_s390x_linux_hotspot_8u262b10.tar.gz'; \
+         ESUM='e1e124a29e2bf892d267eb63d00dd136558b4e276bcb6741ea676c995b2fff51'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36/OpenJDK15U-jre_s390x_linux_hotspot_15_36.tar.gz'; \
          ;; \
        amd64|x86_64) \
-         ESUM='733755fd649fad6ae91fc083f7e5a5a0b56410fb6ac1815cff29f744b128b1b1'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10/OpenJDK8U-jdk_x64_linux_hotspot_8u262b10.tar.gz'; \
+         ESUM='230d97a6b16a0735f15013a91f7582a22282ec12bdfaec291ab63274cc075efb'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36/OpenJDK15U-jre_x64_linux_hotspot_15_36.tar.gz'; \
          ;; \
        *) \
          echo "Unsupported arch: ${ARCH}"; \
diff --git a/adoptopenjdk_8-hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full b/adoptopenjdk_15-jre-hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full
similarity index 77%
copy from adoptopenjdk_8-hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full
copy to adoptopenjdk_15-jre-hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full
index f3fd09c..b3d622e 100644
--- a/adoptopenjdk_8-hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full
+++ b/adoptopenjdk_15-jre-hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full
@@ -22,13 +22,13 @@ FROM mcr.microsoft.com/windows/servercore:1809
 # $ProgressPreference: https://github.com/PowerShell/PowerShell/issues/2138#issuecomment-251261324
 SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
 
-ENV JAVA_VERSION jdk8u262-b10
+ENV JAVA_VERSION jdk-15+36
 
-RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10/OpenJDK8U-jdk_x64_windows_hotspot_8u262b10.msi ...'); \
+RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36/OpenJDK15U-jre_x64_windows_hotspot_15_36.msi ...'); \
     [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \
-    wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10/OpenJDK8U-jdk_x64_windows_hotspot_8u262b10.msi -O 'openjdk.msi'; \
-    Write-Host ('Verifying sha256 (251429e9c5ea2d2950aceca10c67e4bf5be3f5f299f2fad4c9757b5ac857cc2c) ...'); \
-    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne '251429e9c5ea2d2950aceca10c67e4bf5be3f5f299f2fad4c9757b5ac857cc2c') { \
+    wget https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36/OpenJDK15U-jre_x64_windows_hotspot_15_36.msi -O 'openjdk.msi'; \
+    Write-Host ('Verifying sha256 (d14250fb3ed06d6421c6b2e04ae266b436138213eea2fe4ddc3640df8064d9bc) ...'); \
+    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne 'd14250fb3ed06d6421c6b2e04ae266b436138213eea2fe4ddc3640df8064d9bc') { \
             Write-Host 'FAILED!'; \
             exit 1; \
     }; \
diff --git a/adoptopenjdk_8-jre-hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full b/adoptopenjdk_15-jre-hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full
similarity index 77%
copy from adoptopenjdk_8-jre-hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full
copy to adoptopenjdk_15-jre-hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full
index 7790fd0..98f4a11 100644
--- a/adoptopenjdk_8-jre-hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full
+++ b/adoptopenjdk_15-jre-hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full
@@ -22,13 +22,13 @@ FROM mcr.microsoft.com/windows/servercore:ltsc2016
 # $ProgressPreference: https://github.com/PowerShell/PowerShell/issues/2138#issuecomment-251261324
 SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
 
-ENV JAVA_VERSION jdk8u262-b10
+ENV JAVA_VERSION jdk-15+36
 
-RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10/OpenJDK8U-jre_x64_windows_hotspot_8u262b10.msi ...'); \
+RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36/OpenJDK15U-jre_x64_windows_hotspot_15_36.msi ...'); \
     [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \
-    wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10/OpenJDK8U-jre_x64_windows_hotspot_8u262b10.msi -O 'openjdk.msi'; \
-    Write-Host ('Verifying sha256 (e85f21cddd791f1b362de285338912de60ee12d7fd27847faeee37f294f7a06b) ...'); \
-    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne 'e85f21cddd791f1b362de285338912de60ee12d7fd27847faeee37f294f7a06b') { \
+    wget https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36/OpenJDK15U-jre_x64_windows_hotspot_15_36.msi -O 'openjdk.msi'; \
+    Write-Host ('Verifying sha256 (d14250fb3ed06d6421c6b2e04ae266b436138213eea2fe4ddc3640df8064d9bc) ...'); \
+    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne 'd14250fb3ed06d6421c6b2e04ae266b436138213eea2fe4ddc3640df8064d9bc') { \
             Write-Host 'FAILED!'; \
             exit 1; \
     }; \
diff --git a/adoptopenjdk_openj9-bionic/Dockerfile.openj9.releases.full b/adoptopenjdk_15-jre-openj9-bionic/Dockerfile.openj9.releases.full
similarity index 65%
copy from adoptopenjdk_openj9-bionic/Dockerfile.openj9.releases.full
copy to adoptopenjdk_15-jre-openj9-bionic/Dockerfile.openj9.releases.full
index eff0c96..a5d0bba 100644
--- a/adoptopenjdk_openj9-bionic/Dockerfile.openj9.releases.full
+++ b/adoptopenjdk_15-jre-openj9-bionic/Dockerfile.openj9.releases.full
@@ -27,22 +27,22 @@ RUN apt-get update \
     && locale-gen en_US.UTF-8 \
     && rm -rf /var/lib/apt/lists/*
 
-ENV JAVA_VERSION jdk-14.0.2+12_openj9-0.21.0
+ENV JAVA_VERSION jdk-15+36_openj9-0.22.0
 
 RUN set -eux; \
     ARCH="$(dpkg --print-architecture)"; \
     case "${ARCH}" in \
        ppc64el|ppc64le) \
-         ESUM='177fd161ae14df92203d70cd618559daf889ec0c172d6ee615859352f68a2371'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12_openj9-0.21.0/OpenJDK14U-jdk_ppc64le_linux_openj9_14.0.2_12_openj9-0.21.0.tar.gz'; \
+         ESUM='fef3e6034a861b0bfa14120f064373d866b65f3525b9c791a647010194eb5632'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36_openj9-0.22.0/OpenJDK15U-jre_ppc64le_linux_openj9_15_36_openj9-0.22.0.tar.gz'; \
          ;; \
        s390x) \
-         ESUM='4757dc2009a0c31604be4631e02a5a3aac53ebe9b6a2046ae8995ec0e453dc1a'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12_openj9-0.21.0/OpenJDK14U-jdk_s390x_linux_openj9_14.0.2_12_openj9-0.21.0.tar.gz'; \
+         ESUM='5f5a6a46a432af651d63538997b0850fed9f631ab4a797e29d33347d3052fddc'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36_openj9-0.22.0/OpenJDK15U-jre_s390x_linux_openj9_15_36_openj9-0.22.0.tar.gz'; \
          ;; \
        amd64|x86_64) \
-         ESUM='306f7138cdb65daaf2596ec36cafbde72088144c83b2e964f0193662e6caf3be'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12_openj9-0.21.0/OpenJDK14U-jdk_x64_linux_openj9_14.0.2_12_openj9-0.21.0.tar.gz'; \
+         ESUM='3811aea0eeaccd4aa50bbf6a374e31b19f52a22c1f2c8b378e8ea0ac194b8638'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36_openj9-0.22.0/OpenJDK15U-jre_x64_linux_openj9_15_36_openj9-0.22.0.tar.gz'; \
          ;; \
        *) \
          echo "Unsupported arch: ${ARCH}"; \
@@ -59,4 +59,6 @@ RUN set -eux; \
 ENV JAVA_HOME=/opt/java/openjdk \
     PATH="/opt/java/openjdk/bin:$PATH"
 ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+UseContainerSupport -XX:+IdleTuningCompactOnIdle -XX:+IdleTuningGcOnIdle"
-CMD ["jshell"]
+COPY generate_openj9_scc.sh /scripts/
+        RUN /scripts/generate_openj9_scc.sh
+        ENV OPENJ9_JAVA_OPTIONS="-Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,readonly,nonFatal"
diff --git a/adoptopenjdk_15-jre-openj9-bionic/generate_openj9_scc.sh b/adoptopenjdk_15-jre-openj9-bionic/generate_openj9_scc.sh
new file mode 100755
index 0000000..a5113ba
--- /dev/null
+++ b/adoptopenjdk_15-jre-openj9-bionic/generate_openj9_scc.sh
@@ -0,0 +1,318 @@
+#!/bin/bash
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+unset OPENJ9_JAVA_OPTIONS
+
+# Default size for SCC
+SCC_SIZE="50m"
+
+# Runs for generating SCC
+SCC_GEN_RUNS_COUNT=3
+
+# is running on ubuntu or debian - package manager apt
+IS_APT_ENV=false
+# Intitialise default / allowed sample app status
+RUN_ECLIPSE=false
+RUN_TOMCAT=true
+
+# Intitialise default / required packages status
+INSTALL_GTK=false
+INSTALL_XVFB=false
+
+# App download locations
+DOWNLOAD_PATH_ECLIPSE=/tmp/eclipse
+DOWNLOAD_PATH_TOMCAT=/tmp/tomcat
+
+# App installation locations
+INSTALL_PATH_ECLIPSE="${HOME}"/eclipse-home
+INSTALL_PATH_TOMCAT="${HOME}"/tomcat-home
+
+# URL's for the artifacts
+ECLIPSE_DWNLD_URL="http://www.mirrorservice.org/sites/download.eclipse.org/eclipseMirror/technology/epp/downloads/release/2020-06/M3/eclipse-java-2020-06-M3-linux-gtk-x86_64.tar.gz"
+TOMCAT_DWNLD_URL="https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.35/bin/apache-tomcat-9.0.35.tar.gz"
+
+# Check and downlaod eclipse
+function check_to_download_eclipse() {
+    if [ "${RUN_ECLIPSE}" == true ]; then
+        # Creating a temporary directory for eclipse download
+        mkdir -p "${DOWNLOAD_PATH_ECLIPSE}" "${INSTALL_PATH_ECLIPSE}"
+
+        # Downloading eclipse
+        if curl --fail -o "${DOWNLOAD_PATH_ECLIPSE}"/eclipse.tar.gz  "${ECLIPSE_DWNLD_URL}"; then
+            # Extracting eclipse
+            tar -xvzf "${DOWNLOAD_PATH_ECLIPSE}"/eclipse.tar.gz -C "$INSTALL_PATH_ECLIPSE" --strip-components=1
+        else
+            RUN_ECLIPSE=false
+        fi
+
+        # Removing the tar file
+        rm -rf "${DOWNLOAD_PATH_ECLIPSE}"
+    fi
+}
+
+# Check and download tomcat
+function check_to_download_tomcat() {
+    if [ "${RUN_TOMCAT}" == true ]; then
+        # Creating a temporary directory for tomcat download
+        mkdir -p "${DOWNLOAD_PATH_TOMCAT}" "${INSTALL_PATH_TOMCAT}"
+
+        # Downloading tomcat
+        if curl --fail -o "${DOWNLOAD_PATH_TOMCAT}"/tomcat.tar.gz "${TOMCAT_DWNLD_URL}"; then
+            # Extracting tomcat
+            tar -xvzf "${DOWNLOAD_PATH_TOMCAT}"/tomcat.tar.gz -C "${INSTALL_PATH_TOMCAT}" --strip-components=1
+        else
+            RUN_TOMCAT=false
+        fi
+
+        # Removing the tar file
+        rm -rf "${DOWNLOAD_PATH_TOMCAT}"
+    fi
+}
+
+# ubuntu/debian install packages required for eclipse
+function apt_install_packages() {
+    # update the repositories
+    apt update
+
+    # Set non-interactive frontend (to avoid `tzdata` config options selection)
+    APT_INSTALL_CMD="DEBIAN_FRONTEND=noninteractive"
+    APT_INSTALL_CMD="${APT_INSTALL_CMD} apt install -y"
+
+    if [ "${INSTALL_GTK}" == true ]; then
+        # install gtk+3.0
+        APT_INSTALL_CMD="${APT_INSTALL_CMD} gtk+3.0"
+    fi
+
+    if [ "${INSTALL_XVFB}" == true ]; then
+        # install xvfb
+        APT_INSTALL_CMD="${APT_INSTALL_CMD} xvfb"
+    fi
+
+    eval "${APT_INSTALL_CMD}"
+}
+
+# Check if any application needs virtual screen and launch it
+function check_and_start_xvfb() {
+    # check if `xvfb` installed
+    if [ "${INSTALL_XVFB}" == true ]; then
+        # Spawning a virtual screen for GUI apps
+        Xvfb :1 -ac -screen 0 1024x768x8 &
+        # Saving the PID
+        XVFB_PID=$!
+        # Saving older display value
+        OLD_DISPLAY=$DISPLAY
+        # Setting DISPLAY to created screen
+        export DISPLAY=:1
+    fi
+}
+
+# Kill the created virtual screen
+function check_and_stop_xvfb() {
+    # check if `xvfb` installed
+    if [ "${INSTALL_XVFB}" == true ]; then
+        # Killing `xvfb` process to remove screen
+        kill -9 $XVFB_PID
+        # Setting back the DISPLAY to older value
+        export DISPLAY=$OLD_DISPLAY
+    fi
+}
+
+# Run the applications for specified iterations
+function run_apps() {
+    for ((i=0; i<SCC_GEN_RUNS_COUNT; i++))
+    do
+        if [ "${RUN_ECLIPSE}" == true ]; then
+            run_eclipse_and_stop
+        fi
+        if [ "${RUN_TOMCAT}" == true ]; then
+            run_tomcat_and_stop
+        fi
+    done
+}
+
+# function to install packages
+function install_packages() {
+    if [ "${IS_APT_ENV}" == true ]; then
+        apt_install_packages
+    fi
+}
+
+# function to download the applications
+function download_and_install_artifacts() {
+
+    # check for eclipse
+    check_to_download_eclipse
+
+    # check for tomcat
+    check_to_download_tomcat
+
+}
+
+# dry run to right size the cache
+function dry_run() {
+    # Creating base layer first instead of running sample programs to generate SCC directly
+    java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal,createLayer -Xscmx$SCC_SIZE -version
+
+    # Pointing cache for sample program runs
+    export OPENJ9_JAVA_OPTIONS="-Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal"
+
+    # check if we need xvfb for running application and start a virtual screen if required
+    check_and_start_xvfb
+
+    # Run the applications to generate SCC
+    run_apps
+
+    # check if started a virtual screen and kill the process
+    check_and_stop_xvfb
+
+    FULL=$( (java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,printallStats || true) 2>&1 | awk '/^Cache is [0-9.]*% .*full/ {print substr($3, 1, length($3)-1)}')
+
+    java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,destroy || true
+
+    SCC_SIZE="${SCC_SIZE:0:-1}"
+
+    SCC_SIZE=$(awk "BEGIN {print int($SCC_SIZE * $FULL / 100.0)}")
+
+    [ "${SCC_SIZE}" -eq 0 ] && SCC_SIZE=1
+
+    SCC_SIZE="${SCC_SIZE}m"
+
+    # Re-generating cache with new size
+    java -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal,createLayer -Xscmx$SCC_SIZE -version
+
+    unset OPENJ9_JAVA_OPTIONS
+}
+
+# Generate SCC by running apps
+function generate_scc() {
+    # Pointing cache for sample app runs
+    export OPENJ9_JAVA_OPTIONS="-Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal"
+
+    # check if we need xvfb for running application and start a virtual screen if required
+    check_and_start_xvfb
+
+    # Run the applications to generate SCC
+    run_apps
+
+    # check if started a virtual screen and kill the process
+    check_and_stop_xvfb
+
+    # Checking the cache level
+    FULL=$( (java -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,printallStats || true) 2>&1 | awk '/^Cache is [0-9.]*% .*full/ {print substr($3, 1, length($3)-1)}')
+
+    echo "SCC layer is $FULL% full."
+}
+
+# Remove the downloaded sample apps
+function remove_artifacts() {
+    # Command to remove apps
+    REMOVE_APPS="rm -rf"
+
+    # check for eclipse
+    if [ "${RUN_ECLIPSE}" == true ]; then
+        REMOVE_APPS="${REMOVE_APPS} ${INSTALL_PATH_ECLIPSE}"
+    fi
+
+    # check for tomcat
+    if [ "${RUN_TOMCAT}" == true ]; then
+        REMOVE_APPS="${REMOVE_APPS} ${INSTALL_PATH_TOMCAT}"
+    fi
+
+    eval "$REMOVE_APPS"
+}
+
+# Run eclipse and stop it after the startup
+function run_eclipse_and_stop() {
+    # Starting eclipse in background
+    "${INSTALL_PATH_ECLIPSE}"/eclipse/eclipse &
+    # Saving eclipse PID
+    ECLIPSE_PID=$!
+    # Waiting for eclipse to start - Sleeping for 1 minute
+    sleep 1m
+    # Killing eclipse process
+    kill -9 $ECLIPSE_PID
+    # Waiting for process to be killed - Sleeping for 10 seconds
+    sleep 10s
+}
+
+# Run tomcat and stop it after the startup
+function run_tomcat_and_stop() {
+    # Start tomcat wait till it comes up shut it down
+    "${INSTALL_PATH_TOMCAT}"/bin/startup.sh
+    # wait till tomcat starts -  wait for 5 seconds
+    sleep 5
+    # Stop tomcat
+    "${INSTALL_PATH_TOMCAT}"/bin/shutdown.sh
+    # wait till tomcat stops -  wait for 5 seconds
+    sleep 5
+}
+
+# Remove the installed packages
+function remove_packages() {
+    if [ "${IS_APT_ENV}" == true ]; then
+        APT_REMOVE_CMD="apt --purge -y autoremove"
+
+        if [ "${INSTALL_GTK}" == true ]; then
+            # remove gtk+3.0
+            APT_REMOVE_CMD="${APT_REMOVE_CMD} gtk+3.0"
+        fi
+
+        if [ "${INSTALL_XVFB}" == true ]; then
+            # remove xvfb
+            APT_REMOVE_CMD="${APT_REMOVE_CMD} xvfb"
+        fi
+
+        eval "${APT_REMOVE_CMD}"
+    fi
+}
+
+# check for OS release file
+if [ -f /etc/os-release ]; then
+    # load file to get the ID (OS name)
+    # shellcheck disable=SC1091
+    source /etc/os-release
+    OS=$ID
+fi
+
+# Check if OS is ubuntu/debian (we can run eclipse as packages required for it are available)
+if [ "${OS}" == "ubuntu" ]  || [ "${OS}" = "debian" ]; then
+    # set IS_APT_ENV true
+    IS_APT_ENV=true
+
+    # Set eclipse run to `true`
+    RUN_ECLIPSE=true
+
+    # Set the required packages for eclipse to `true`
+    INSTALL_GTK=true
+    INSTALL_XVFB=true
+
+    # Call function `install_pkgs_via_apt` to install packages
+    install_packages
+fi
+
+# Download the sample apps and install
+download_and_install_artifacts
+
+# Dry run for SCC generation (To get exact size)
+dry_run
+
+# Generate SCC
+generate_scc
+
+# Remove installed artifacts
+remove_artifacts
+
+# Remove packages
+remove_packages
diff --git a/adoptopenjdk_11-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full b/adoptopenjdk_15-jre-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
similarity index 78%
copy from adoptopenjdk_11-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
copy to adoptopenjdk_15-jre-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
index 7e239e2..2b1e6bb 100644
--- a/adoptopenjdk_11-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
+++ b/adoptopenjdk_15-jre-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
@@ -22,13 +22,13 @@ FROM mcr.microsoft.com/windows/servercore:1809
 # $ProgressPreference: https://github.com/PowerShell/PowerShell/issues/2138#issuecomment-251261324
 SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
 
-ENV JAVA_VERSION jdk-11.0.8+10_openj9-0.21.0
+ENV JAVA_VERSION jdk-15+36_openj9-0.22.0
 
-RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.8%2B10_openj9-0.21.0/OpenJDK11U-jdk_x64_windows_openj9_11.0.8_10_openj9-0.21.0.msi ...'); \
+RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36_openj9-0.22.0/OpenJDK15U-jre_x64_windows_openj9_15_36_openj9-0.22.0.msi ...'); \
     [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \
-    wget https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.8%2B10_openj9-0.21.0/OpenJDK11U-jdk_x64_windows_openj9_11.0.8_10_openj9-0.21.0.msi -O 'openjdk.msi'; \
-    Write-Host ('Verifying sha256 (7250326e5fad877da447bc1e37dfbfcaca18b10f1acc82ffc557a9421dc068bf) ...'); \
-    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne '7250326e5fad877da447bc1e37dfbfcaca18b10f1acc82ffc557a9421dc068bf') { \
+    wget https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36_openj9-0.22.0/OpenJDK15U-jre_x64_windows_openj9_15_36_openj9-0.22.0.msi -O 'openjdk.msi'; \
+    Write-Host ('Verifying sha256 (78b7f6950c5afafa99164644f8dc85cd05d653964e828b52ea1916a3e27b7e61) ...'); \
+    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne '78b7f6950c5afafa99164644f8dc85cd05d653964e828b52ea1916a3e27b7e61') { \
             Write-Host 'FAILED!'; \
             exit 1; \
     }; \
@@ -42,4 +42,3 @@ RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk11-binaries/
     Write-Host 'Removing openjdk.msi ...'; \
     Remove-Item openjdk.msi -Force
 ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+UseContainerSupport -XX:+IdleTuningCompactOnIdle -XX:+IdleTuningGcOnIdle"
-CMD ["jshell"]
diff --git a/adoptopenjdk_11-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full b/adoptopenjdk_15-jre-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
similarity index 78%
copy from adoptopenjdk_11-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
copy to adoptopenjdk_15-jre-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
index 8f2ec98..b0e40ac 100644
--- a/adoptopenjdk_11-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
+++ b/adoptopenjdk_15-jre-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
@@ -22,13 +22,13 @@ FROM mcr.microsoft.com/windows/servercore:ltsc2016
 # $ProgressPreference: https://github.com/PowerShell/PowerShell/issues/2138#issuecomment-251261324
 SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
 
-ENV JAVA_VERSION jdk-11.0.8+10_openj9-0.21.0
+ENV JAVA_VERSION jdk-15+36_openj9-0.22.0
 
-RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.8%2B10_openj9-0.21.0/OpenJDK11U-jdk_x64_windows_openj9_11.0.8_10_openj9-0.21.0.msi ...'); \
+RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36_openj9-0.22.0/OpenJDK15U-jre_x64_windows_openj9_15_36_openj9-0.22.0.msi ...'); \
     [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \
-    wget https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.8%2B10_openj9-0.21.0/OpenJDK11U-jdk_x64_windows_openj9_11.0.8_10_openj9-0.21.0.msi -O 'openjdk.msi'; \
-    Write-Host ('Verifying sha256 (7250326e5fad877da447bc1e37dfbfcaca18b10f1acc82ffc557a9421dc068bf) ...'); \
-    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne '7250326e5fad877da447bc1e37dfbfcaca18b10f1acc82ffc557a9421dc068bf') { \
+    wget https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36_openj9-0.22.0/OpenJDK15U-jre_x64_windows_openj9_15_36_openj9-0.22.0.msi -O 'openjdk.msi'; \
+    Write-Host ('Verifying sha256 (78b7f6950c5afafa99164644f8dc85cd05d653964e828b52ea1916a3e27b7e61) ...'); \
+    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne '78b7f6950c5afafa99164644f8dc85cd05d653964e828b52ea1916a3e27b7e61') { \
             Write-Host 'FAILED!'; \
             exit 1; \
     }; \
@@ -42,4 +42,3 @@ RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk11-binaries/
     Write-Host 'Removing openjdk.msi ...'; \
     Remove-Item openjdk.msi -Force
 ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+UseContainerSupport -XX:+IdleTuningCompactOnIdle -XX:+IdleTuningGcOnIdle"
-CMD ["jshell"]
diff --git a/adoptopenjdk_8-hotspot-bionic/Dockerfile.hotspot.releases.full b/adoptopenjdk_8-hotspot-bionic/Dockerfile.hotspot.releases.full
index 5227a8a..e3c718d 100644
--- a/adoptopenjdk_8-hotspot-bionic/Dockerfile.hotspot.releases.full
+++ b/adoptopenjdk_8-hotspot-bionic/Dockerfile.hotspot.releases.full
@@ -27,30 +27,30 @@ RUN apt-get update \
     && locale-gen en_US.UTF-8 \
     && rm -rf /var/lib/apt/lists/*
 
-ENV JAVA_VERSION jdk8u262-b10
+ENV JAVA_VERSION jdk8u265-b01
 
 RUN set -eux; \
     ARCH="$(dpkg --print-architecture)"; \
     case "${ARCH}" in \
        aarch64|arm64) \
-         ESUM='7be0b2a4c749a277302a54b456624c076b3a5b990ad502e2a72d803ab31aecab'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10/OpenJDK8U-jdk_aarch64_linux_hotspot_8u262b10.tar.gz'; \
+         ESUM='87d16dac293d2a9abbb559a277bfaded702f28d1bfdc526f8613bb9cfed84a12'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01/OpenJDK8U-jdk_aarch64_linux_hotspot_8u265b01.tar.gz'; \
          ;; \
        armhf|armv7l) \
-         ESUM='dd85ebb9a64916b4b621a23729e3360adb363d430bf1e99e98f25397834d74bd'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10/OpenJDK8U-jdk_arm_linux_hotspot_8u262b10.tar.gz'; \
+         ESUM='dc3405aab81f422b7721f665c76371bd7b03c291eea89cd110a82d8bcf07809a'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01/OpenJDK8U-jdk_arm_linux_hotspot_8u265b01.tar.gz'; \
          ;; \
        ppc64el|ppc64le) \
-         ESUM='d2a16915fb85ba851145c91cda5666cb78f06bf4713a2b3bdce813779ff972c2'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10/OpenJDK8U-jdk_ppc64le_linux_hotspot_8u262b10.tar.gz'; \
+         ESUM='7bbb9d76458ee29bc5e2458b32a91b8c032ecffe6cb8500734ca41d2d8f5c9f3'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01/OpenJDK8U-jdk_ppc64le_linux_hotspot_8u265b01.tar.gz'; \
          ;; \
        s390x) \
-         ESUM='a504af6924a095cfb6c392653dccd7299925048c91b399d05efa95a094820120'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10/OpenJDK8U-jdk_s390x_linux_hotspot_8u262b10.tar.gz'; \
+         ESUM='aca50f02d59169cb428d54501846b518edc9fff6a6f428459c72b4faa2b4abb0'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01/OpenJDK8U-jdk_s390x_linux_hotspot_8u265b01.tar.gz'; \
          ;; \
        amd64|x86_64) \
-         ESUM='733755fd649fad6ae91fc083f7e5a5a0b56410fb6ac1815cff29f744b128b1b1'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10/OpenJDK8U-jdk_x64_linux_hotspot_8u262b10.tar.gz'; \
+         ESUM='1285da6278f2d38a790a21148d7e683f20de0799c44b937043830ef6b57f58c4'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01/OpenJDK8U-jdk_x64_linux_hotspot_8u265b01.tar.gz'; \
          ;; \
        *) \
          echo "Unsupported arch: ${ARCH}"; \
diff --git a/adoptopenjdk_8-hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full b/adoptopenjdk_8-hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full
index f3fd09c..7f626b3 100644
--- a/adoptopenjdk_8-hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full
+++ b/adoptopenjdk_8-hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full
@@ -22,13 +22,13 @@ FROM mcr.microsoft.com/windows/servercore:1809
 # $ProgressPreference: https://github.com/PowerShell/PowerShell/issues/2138#issuecomment-251261324
 SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
 
-ENV JAVA_VERSION jdk8u262-b10
+ENV JAVA_VERSION jdk8u265-b01
 
-RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10/OpenJDK8U-jdk_x64_windows_hotspot_8u262b10.msi ...'); \
+RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01/OpenJDK8U-jdk_x64_windows_hotspot_8u265b01.msi ...'); \
     [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \
-    wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10/OpenJDK8U-jdk_x64_windows_hotspot_8u262b10.msi -O 'openjdk.msi'; \
-    Write-Host ('Verifying sha256 (251429e9c5ea2d2950aceca10c67e4bf5be3f5f299f2fad4c9757b5ac857cc2c) ...'); \
-    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne '251429e9c5ea2d2950aceca10c67e4bf5be3f5f299f2fad4c9757b5ac857cc2c') { \
+    wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01/OpenJDK8U-jdk_x64_windows_hotspot_8u265b01.msi -O 'openjdk.msi'; \
+    Write-Host ('Verifying sha256 (3749bfd8dcc4ce3877a5b593f7df8fe05d7294435b62a919be35a003c559e033) ...'); \
+    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne '3749bfd8dcc4ce3877a5b593f7df8fe05d7294435b62a919be35a003c559e033') { \
             Write-Host 'FAILED!'; \
             exit 1; \
     }; \
diff --git a/adoptopenjdk_8-hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full b/adoptopenjdk_8-hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full
index 08180ff..1ce974f 100644
--- a/adoptopenjdk_8-hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full
+++ b/adoptopenjdk_8-hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full
@@ -22,13 +22,13 @@ FROM mcr.microsoft.com/windows/servercore:ltsc2016
 # $ProgressPreference: https://github.com/PowerShell/PowerShell/issues/2138#issuecomment-251261324
 SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
 
-ENV JAVA_VERSION jdk8u262-b10
+ENV JAVA_VERSION jdk8u265-b01
 
-RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10/OpenJDK8U-jdk_x64_windows_hotspot_8u262b10.msi ...'); \
+RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01/OpenJDK8U-jdk_x64_windows_hotspot_8u265b01.msi ...'); \
     [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \
-    wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10/OpenJDK8U-jdk_x64_windows_hotspot_8u262b10.msi -O 'openjdk.msi'; \
-    Write-Host ('Verifying sha256 (251429e9c5ea2d2950aceca10c67e4bf5be3f5f299f2fad4c9757b5ac857cc2c) ...'); \
-    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne '251429e9c5ea2d2950aceca10c67e4bf5be3f5f299f2fad4c9757b5ac857cc2c') { \
+    wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01/OpenJDK8U-jdk_x64_windows_hotspot_8u265b01.msi -O 'openjdk.msi'; \
+    Write-Host ('Verifying sha256 (3749bfd8dcc4ce3877a5b593f7df8fe05d7294435b62a919be35a003c559e033) ...'); \
+    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne '3749bfd8dcc4ce3877a5b593f7df8fe05d7294435b62a919be35a003c559e033') { \
             Write-Host 'FAILED!'; \
             exit 1; \
     }; \
diff --git a/adoptopenjdk_8-jre-hotspot-bionic/Dockerfile.hotspot.releases.full b/adoptopenjdk_8-jre-hotspot-bionic/Dockerfile.hotspot.releases.full
index b6996a0..702b190 100644
--- a/adoptopenjdk_8-jre-hotspot-bionic/Dockerfile.hotspot.releases.full
+++ b/adoptopenjdk_8-jre-hotspot-bionic/Dockerfile.hotspot.releases.full
@@ -27,30 +27,30 @@ RUN apt-get update \
     && locale-gen en_US.UTF-8 \
     && rm -rf /var/lib/apt/lists/*
 
-ENV JAVA_VERSION jdk8u262-b10
+ENV JAVA_VERSION jdk8u265-b01
 
 RUN set -eux; \
     ARCH="$(dpkg --print-architecture)"; \
     case "${ARCH}" in \
        aarch64|arm64) \
-         ESUM='0ad1ff282ad034a613c64313c885edef5dfbc5dd51f2eda705bbeb7fa822f238'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10/OpenJDK8U-jre_aarch64_linux_hotspot_8u262b10.tar.gz'; \
+         ESUM='2f9c5be1bf704f1233bcf96b8c02524c14dc4d43dc80c4926856091961b79948'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01/OpenJDK8U-jre_aarch64_linux_hotspot_8u265b01.tar.gz'; \
          ;; \
        armhf|armv7l) \
-         ESUM='330ce008c6f49ddd6dcf43c7839896bb7fe14843300358a71b441a3f94036f69'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10/OpenJDK8U-jre_arm_linux_hotspot_8u262b10.tar.gz'; \
+         ESUM='4ac2503725b2729ec245dbdb000b2486f9c73ae86860c9525f9ac822ec81f0d6'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01/OpenJDK8U-jre_arm_linux_hotspot_8u265b01.tar.gz'; \
          ;; \
        ppc64el|ppc64le) \
-         ESUM='12309354889da2ed9085fda9812c7d2653fa099c36d322af222da11cbb244df7'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10/OpenJDK8U-jre_ppc64le_linux_hotspot_8u262b10.tar.gz'; \
+         ESUM='4fb3640fae4b9bd4ebf834c775b547ed930cd1b805f4686223994480411aee72'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01/OpenJDK8U-jre_ppc64le_linux_hotspot_8u265b01.tar.gz'; \
          ;; \
        s390x) \
-         ESUM='0225d0a8707c0b6a059c58b77dd7387fb439816100d668ba000c4536cef77fc2'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10/OpenJDK8U-jre_s390x_linux_hotspot_8u262b10.tar.gz'; \
+         ESUM='8b76480c809c4fde654ab55d10371c35d70b50069ab1724960509d99ed61065d'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01/OpenJDK8U-jre_s390x_linux_hotspot_8u265b01.tar.gz'; \
          ;; \
        amd64|x86_64) \
-         ESUM='3ce1f34b279a4f8fc6374f5644739622886dd4bcac4fcb0eb596955bac5ca5a4'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10/OpenJDK8U-jre_x64_linux_hotspot_8u262b10.tar.gz'; \
+         ESUM='9bce39f63d24626da75778f240294fa466a0ed117e32db798164621fe30b0723'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01/OpenJDK8U-jre_x64_linux_hotspot_8u265b01.tar.gz'; \
          ;; \
        *) \
          echo "Unsupported arch: ${ARCH}"; \
diff --git a/adoptopenjdk_8-jre-hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full b/adoptopenjdk_8-jre-hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full
index 0a3b655..f414d68 100644
--- a/adoptopenjdk_8-jre-hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full
+++ b/adoptopenjdk_8-jre-hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full
@@ -22,13 +22,13 @@ FROM mcr.microsoft.com/windows/servercore:1809
 # $ProgressPreference: https://github.com/PowerShell/PowerShell/issues/2138#issuecomment-251261324
 SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
 
-ENV JAVA_VERSION jdk8u252-b09.1
+ENV JAVA_VERSION jdk8u265-b01
 
-RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u252-b09.1/OpenJDK8U-jre_x64_windows_hotspot_8u252b09.msi ...'); \
+RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01/OpenJDK8U-jre_x64_windows_hotspot_8u265b01.msi ...'); \
     [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \
-        wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u252-b09.1/OpenJDK8U-jre_x64_windows_hotspot_8u252b09.msi -O 'openjdk.msi'; \
-        Write-Host ('Verifying sha256 (7651a26e53260e48ca2431a8cdb6b910e8f8c92564cb8378b566d77346a63527) ...'); \
-        if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne '7651a26e53260e48ca2431a8cdb6b910e8f8c92564cb8378b566d77346a63527') { \
+    wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01/OpenJDK8U-jre_x64_windows_hotspot_8u265b01.msi -O 'openjdk.msi'; \
+    Write-Host ('Verifying sha256 (5a41ec5d781429b7364412fcb7a05bfd4dd633d9b5e67ab2cdf878ee5ed4c722) ...'); \
+    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne '5a41ec5d781429b7364412fcb7a05bfd4dd633d9b5e67ab2cdf878ee5ed4c722') { \
             Write-Host 'FAILED!'; \
             exit 1; \
     }; \
@@ -38,6 +38,6 @@ RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk8-binaries/r
     Write-Host 'Installing using MSI ...'; \
     Start-Process -FilePath "msiexec.exe" -ArgumentList '/i', 'openjdk.msi', '/L*V', 'C:\temp\OpenJDK.log', \
     '/quiet', 'ADDLOCAL=FeatureEnvironment,FeatureJarFileRunWith,FeatureJavaHome' -Wait -Passthru; \
+    Remove-Item -Path C:\temp -Recurse | Out-Null; \
     Write-Host 'Removing openjdk.msi ...'; \
-        Remove-Item openjdk.msi -Force; \
-        Remove-Item -Path C:\temp -Recurse | Out-Null;
+    Remove-Item openjdk.msi -Force
diff --git a/adoptopenjdk_8-jre-hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full b/adoptopenjdk_8-jre-hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full
index 7790fd0..660a88c 100644
--- a/adoptopenjdk_8-jre-hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full
+++ b/adoptopenjdk_8-jre-hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full
@@ -22,13 +22,13 @@ FROM mcr.microsoft.com/windows/servercore:ltsc2016
 # $ProgressPreference: https://github.com/PowerShell/PowerShell/issues/2138#issuecomment-251261324
 SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
 
-ENV JAVA_VERSION jdk8u262-b10
+ENV JAVA_VERSION jdk8u265-b01
 
-RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10/OpenJDK8U-jre_x64_windows_hotspot_8u262b10.msi ...'); \
+RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01/OpenJDK8U-jre_x64_windows_hotspot_8u265b01.msi ...'); \
     [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \
-    wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10/OpenJDK8U-jre_x64_windows_hotspot_8u262b10.msi -O 'openjdk.msi'; \
-    Write-Host ('Verifying sha256 (e85f21cddd791f1b362de285338912de60ee12d7fd27847faeee37f294f7a06b) ...'); \
-    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne 'e85f21cddd791f1b362de285338912de60ee12d7fd27847faeee37f294f7a06b') { \
+    wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01/OpenJDK8U-jre_x64_windows_hotspot_8u265b01.msi -O 'openjdk.msi'; \
+    Write-Host ('Verifying sha256 (5a41ec5d781429b7364412fcb7a05bfd4dd633d9b5e67ab2cdf878ee5ed4c722) ...'); \
+    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne '5a41ec5d781429b7364412fcb7a05bfd4dd633d9b5e67ab2cdf878ee5ed4c722') { \
             Write-Host 'FAILED!'; \
             exit 1; \
     }; \
diff --git a/adoptopenjdk_8-jre-openj9-bionic/Dockerfile.openj9.releases.full b/adoptopenjdk_8-jre-openj9-bionic/Dockerfile.openj9.releases.full
index 368a875..8dd8e22 100644
--- a/adoptopenjdk_8-jre-openj9-bionic/Dockerfile.openj9.releases.full
+++ b/adoptopenjdk_8-jre-openj9-bionic/Dockerfile.openj9.releases.full
@@ -27,22 +27,22 @@ RUN apt-get update \
     && locale-gen en_US.UTF-8 \
     && rm -rf /var/lib/apt/lists/*
 
-ENV JAVA_VERSION jdk8u262-b10_openj9-0.21.0
+ENV JAVA_VERSION jdk8u265-b01_openj9-0.21.0
 
 RUN set -eux; \
     ARCH="$(dpkg --print-architecture)"; \
     case "${ARCH}" in \
        ppc64el|ppc64le) \
-         ESUM='722517d9565bd9602580609114eb0de9b40b01050d52ff7bae24c438d363e186'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10_openj9-0.21.0/OpenJDK8U-jre_ppc64le_linux_openj9_8u262b10_openj9-0.21.0.tar.gz'; \
+         ESUM='b1c91e757195b87d51027ea97fece00ac1adb9837b055e5f039dd45511fb3c0a'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01_openj9-0.21.0/OpenJDK8U-jre_ppc64le_linux_openj9_8u265b01_openj9-0.21.0.tar.gz'; \
          ;; \
        s390x) \
-         ESUM='c14aeedf4e989a6b31e00d6e18b8377957b07b000cac316aee9d973ef6d65b6f'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10_openj9-0.21.0/OpenJDK8U-jre_s390x_linux_openj9_8u262b10_openj9-0.21.0.tar.gz'; \
+         ESUM='ec573cb2361b5fee3944387329d7859889d73c6c8a7d5f7ecf0d95503efda726'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01_openj9-0.21.0/OpenJDK8U-jre_s390x_linux_openj9_8u265b01_openj9-0.21.0.tar.gz'; \
          ;; \
        amd64|x86_64) \
-         ESUM='aef8750b492ff6371318cf5138e38827d8895815b2ac079dcfcb02007a45c7f6'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10_openj9-0.21.0/OpenJDK8U-jre_x64_linux_openj9_8u262b10_openj9-0.21.0.tar.gz'; \
+         ESUM='0da0aad21f02b4f08f717647def8beafcf0116c36b195705416f46a1ab97f4de'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01_openj9-0.21.0/OpenJDK8U-jre_x64_linux_openj9_8u265b01_openj9-0.21.0.tar.gz'; \
          ;; \
        *) \
          echo "Unsupported arch: ${ARCH}"; \
@@ -59,3 +59,6 @@ RUN set -eux; \
 ENV JAVA_HOME=/opt/java/openjdk \
     PATH="/opt/java/openjdk/bin:$PATH"
 ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+UseContainerSupport -XX:+IdleTuningCompactOnIdle -XX:+IdleTuningGcOnIdle"
+COPY generate_openj9_scc.sh /scripts/
+        RUN /scripts/generate_openj9_scc.sh
+        ENV OPENJ9_JAVA_OPTIONS="-Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,readonly,nonFatal"
diff --git a/adoptopenjdk_8-jre-openj9-bionic/generate_openj9_scc.sh b/adoptopenjdk_8-jre-openj9-bionic/generate_openj9_scc.sh
new file mode 100755
index 0000000..a5113ba
--- /dev/null
+++ b/adoptopenjdk_8-jre-openj9-bionic/generate_openj9_scc.sh
@@ -0,0 +1,318 @@
+#!/bin/bash
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+unset OPENJ9_JAVA_OPTIONS
+
+# Default size for SCC
+SCC_SIZE="50m"
+
+# Runs for generating SCC
+SCC_GEN_RUNS_COUNT=3
+
+# is running on ubuntu or debian - package manager apt
+IS_APT_ENV=false
+# Intitialise default / allowed sample app status
+RUN_ECLIPSE=false
+RUN_TOMCAT=true
+
+# Intitialise default / required packages status
+INSTALL_GTK=false
+INSTALL_XVFB=false
+
+# App download locations
+DOWNLOAD_PATH_ECLIPSE=/tmp/eclipse
+DOWNLOAD_PATH_TOMCAT=/tmp/tomcat
+
+# App installation locations
+INSTALL_PATH_ECLIPSE="${HOME}"/eclipse-home
+INSTALL_PATH_TOMCAT="${HOME}"/tomcat-home
+
+# URL's for the artifacts
+ECLIPSE_DWNLD_URL="http://www.mirrorservice.org/sites/download.eclipse.org/eclipseMirror/technology/epp/downloads/release/2020-06/M3/eclipse-java-2020-06-M3-linux-gtk-x86_64.tar.gz"
+TOMCAT_DWNLD_URL="https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.35/bin/apache-tomcat-9.0.35.tar.gz"
+
+# Check and downlaod eclipse
+function check_to_download_eclipse() {
+    if [ "${RUN_ECLIPSE}" == true ]; then
+        # Creating a temporary directory for eclipse download
+        mkdir -p "${DOWNLOAD_PATH_ECLIPSE}" "${INSTALL_PATH_ECLIPSE}"
+
+        # Downloading eclipse
+        if curl --fail -o "${DOWNLOAD_PATH_ECLIPSE}"/eclipse.tar.gz  "${ECLIPSE_DWNLD_URL}"; then
+            # Extracting eclipse
+            tar -xvzf "${DOWNLOAD_PATH_ECLIPSE}"/eclipse.tar.gz -C "$INSTALL_PATH_ECLIPSE" --strip-components=1
+        else
+            RUN_ECLIPSE=false
+        fi
+
+        # Removing the tar file
+        rm -rf "${DOWNLOAD_PATH_ECLIPSE}"
+    fi
+}
+
+# Check and download tomcat
+function check_to_download_tomcat() {
+    if [ "${RUN_TOMCAT}" == true ]; then
+        # Creating a temporary directory for tomcat download
+        mkdir -p "${DOWNLOAD_PATH_TOMCAT}" "${INSTALL_PATH_TOMCAT}"
+
+        # Downloading tomcat
+        if curl --fail -o "${DOWNLOAD_PATH_TOMCAT}"/tomcat.tar.gz "${TOMCAT_DWNLD_URL}"; then
+            # Extracting tomcat
+            tar -xvzf "${DOWNLOAD_PATH_TOMCAT}"/tomcat.tar.gz -C "${INSTALL_PATH_TOMCAT}" --strip-components=1
+        else
+            RUN_TOMCAT=false
+        fi
+
+        # Removing the tar file
+        rm -rf "${DOWNLOAD_PATH_TOMCAT}"
+    fi
+}
+
+# ubuntu/debian install packages required for eclipse
+function apt_install_packages() {
+    # update the repositories
+    apt update
+
+    # Set non-interactive frontend (to avoid `tzdata` config options selection)
+    APT_INSTALL_CMD="DEBIAN_FRONTEND=noninteractive"
+    APT_INSTALL_CMD="${APT_INSTALL_CMD} apt install -y"
+
+    if [ "${INSTALL_GTK}" == true ]; then
+        # install gtk+3.0
+        APT_INSTALL_CMD="${APT_INSTALL_CMD} gtk+3.0"
+    fi
+
+    if [ "${INSTALL_XVFB}" == true ]; then
+        # install xvfb
+        APT_INSTALL_CMD="${APT_INSTALL_CMD} xvfb"
+    fi
+
+    eval "${APT_INSTALL_CMD}"
+}
+
+# Check if any application needs virtual screen and launch it
+function check_and_start_xvfb() {
+    # check if `xvfb` installed
+    if [ "${INSTALL_XVFB}" == true ]; then
+        # Spawning a virtual screen for GUI apps
+        Xvfb :1 -ac -screen 0 1024x768x8 &
+        # Saving the PID
+        XVFB_PID=$!
+        # Saving older display value
+        OLD_DISPLAY=$DISPLAY
+        # Setting DISPLAY to created screen
+        export DISPLAY=:1
+    fi
+}
+
+# Kill the created virtual screen
+function check_and_stop_xvfb() {
+    # check if `xvfb` installed
+    if [ "${INSTALL_XVFB}" == true ]; then
+        # Killing `xvfb` process to remove screen
+        kill -9 $XVFB_PID
+        # Setting back the DISPLAY to older value
+        export DISPLAY=$OLD_DISPLAY
+    fi
+}
+
+# Run the applications for specified iterations
+function run_apps() {
+    for ((i=0; i<SCC_GEN_RUNS_COUNT; i++))
+    do
+        if [ "${RUN_ECLIPSE}" == true ]; then
+            run_eclipse_and_stop
+        fi
+        if [ "${RUN_TOMCAT}" == true ]; then
+            run_tomcat_and_stop
+        fi
+    done
+}
+
+# function to install packages
+function install_packages() {
+    if [ "${IS_APT_ENV}" == true ]; then
+        apt_install_packages
+    fi
+}
+
+# function to download the applications
+function download_and_install_artifacts() {
+
+    # check for eclipse
+    check_to_download_eclipse
+
+    # check for tomcat
+    check_to_download_tomcat
+
+}
+
+# dry run to right size the cache
+function dry_run() {
+    # Creating base layer first instead of running sample programs to generate SCC directly
+    java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal,createLayer -Xscmx$SCC_SIZE -version
+
+    # Pointing cache for sample program runs
+    export OPENJ9_JAVA_OPTIONS="-Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal"
+
+    # check if we need xvfb for running application and start a virtual screen if required
+    check_and_start_xvfb
+
+    # Run the applications to generate SCC
+    run_apps
+
+    # check if started a virtual screen and kill the process
+    check_and_stop_xvfb
+
+    FULL=$( (java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,printallStats || true) 2>&1 | awk '/^Cache is [0-9.]*% .*full/ {print substr($3, 1, length($3)-1)}')
+
+    java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,destroy || true
+
+    SCC_SIZE="${SCC_SIZE:0:-1}"
+
+    SCC_SIZE=$(awk "BEGIN {print int($SCC_SIZE * $FULL / 100.0)}")
+
+    [ "${SCC_SIZE}" -eq 0 ] && SCC_SIZE=1
+
+    SCC_SIZE="${SCC_SIZE}m"
+
+    # Re-generating cache with new size
+    java -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal,createLayer -Xscmx$SCC_SIZE -version
+
+    unset OPENJ9_JAVA_OPTIONS
+}
+
+# Generate SCC by running apps
+function generate_scc() {
+    # Pointing cache for sample app runs
+    export OPENJ9_JAVA_OPTIONS="-Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal"
+
+    # check if we need xvfb for running application and start a virtual screen if required
+    check_and_start_xvfb
+
+    # Run the applications to generate SCC
+    run_apps
+
+    # check if started a virtual screen and kill the process
+    check_and_stop_xvfb
+
+    # Checking the cache level
+    FULL=$( (java -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,printallStats || true) 2>&1 | awk '/^Cache is [0-9.]*% .*full/ {print substr($3, 1, length($3)-1)}')
+
+    echo "SCC layer is $FULL% full."
+}
+
+# Remove the downloaded sample apps
+function remove_artifacts() {
+    # Command to remove apps
+    REMOVE_APPS="rm -rf"
+
+    # check for eclipse
+    if [ "${RUN_ECLIPSE}" == true ]; then
+        REMOVE_APPS="${REMOVE_APPS} ${INSTALL_PATH_ECLIPSE}"
+    fi
+
+    # check for tomcat
+    if [ "${RUN_TOMCAT}" == true ]; then
+        REMOVE_APPS="${REMOVE_APPS} ${INSTALL_PATH_TOMCAT}"
+    fi
+
+    eval "$REMOVE_APPS"
+}
+
+# Run eclipse and stop it after the startup
+function run_eclipse_and_stop() {
+    # Starting eclipse in background
+    "${INSTALL_PATH_ECLIPSE}"/eclipse/eclipse &
+    # Saving eclipse PID
+    ECLIPSE_PID=$!
+    # Waiting for eclipse to start - Sleeping for 1 minute
+    sleep 1m
+    # Killing eclipse process
+    kill -9 $ECLIPSE_PID
+    # Waiting for process to be killed - Sleeping for 10 seconds
+    sleep 10s
+}
+
+# Run tomcat and stop it after the startup
+function run_tomcat_and_stop() {
+    # Start tomcat wait till it comes up shut it down
+    "${INSTALL_PATH_TOMCAT}"/bin/startup.sh
+    # wait till tomcat starts -  wait for 5 seconds
+    sleep 5
+    # Stop tomcat
+    "${INSTALL_PATH_TOMCAT}"/bin/shutdown.sh
+    # wait till tomcat stops -  wait for 5 seconds
+    sleep 5
+}
+
+# Remove the installed packages
+function remove_packages() {
+    if [ "${IS_APT_ENV}" == true ]; then
+        APT_REMOVE_CMD="apt --purge -y autoremove"
+
+        if [ "${INSTALL_GTK}" == true ]; then
+            # remove gtk+3.0
+            APT_REMOVE_CMD="${APT_REMOVE_CMD} gtk+3.0"
+        fi
+
+        if [ "${INSTALL_XVFB}" == true ]; then
+            # remove xvfb
+            APT_REMOVE_CMD="${APT_REMOVE_CMD} xvfb"
+        fi
+
+        eval "${APT_REMOVE_CMD}"
+    fi
+}
+
+# check for OS release file
+if [ -f /etc/os-release ]; then
+    # load file to get the ID (OS name)
+    # shellcheck disable=SC1091
+    source /etc/os-release
+    OS=$ID
+fi
+
+# Check if OS is ubuntu/debian (we can run eclipse as packages required for it are available)
+if [ "${OS}" == "ubuntu" ]  || [ "${OS}" = "debian" ]; then
+    # set IS_APT_ENV true
+    IS_APT_ENV=true
+
+    # Set eclipse run to `true`
+    RUN_ECLIPSE=true
+
+    # Set the required packages for eclipse to `true`
+    INSTALL_GTK=true
+    INSTALL_XVFB=true
+
+    # Call function `install_pkgs_via_apt` to install packages
+    install_packages
+fi
+
+# Download the sample apps and install
+download_and_install_artifacts
+
+# Dry run for SCC generation (To get exact size)
+dry_run
+
+# Generate SCC
+generate_scc
+
+# Remove installed artifacts
+remove_artifacts
+
+# Remove packages
+remove_packages
diff --git a/adoptopenjdk_8-jre-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full b/adoptopenjdk_8-jre-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
index 11edf8f..0f99d3c 100644
--- a/adoptopenjdk_8-jre-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
+++ b/adoptopenjdk_8-jre-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
@@ -22,13 +22,13 @@ FROM mcr.microsoft.com/windows/servercore:1809
 # $ProgressPreference: https://github.com/PowerShell/PowerShell/issues/2138#issuecomment-251261324
 SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
 
-ENV JAVA_VERSION jdk8u262-b10_openj9-0.21.0
+ENV JAVA_VERSION jdk8u265-b01_openj9-0.21.0
 
-RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10_openj9-0.21.0/OpenJDK8U-jre_x64_windows_openj9_8u262b10_openj9-0.21.0.msi ...'); \
+RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01_openj9-0.21.0/OpenJDK8U-jre_x64_windows_openj9_8u265b01_openj9-0.21.0.msi ...'); \
     [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \
-    wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10_openj9-0.21.0/OpenJDK8U-jre_x64_windows_openj9_8u262b10_openj9-0.21.0.msi -O 'openjdk.msi'; \
-    Write-Host ('Verifying sha256 (cfa3f17ea264303f1bea55391a10ce9fcfceff2653161c00fd96f84f2e7dcf63) ...'); \
-    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne 'cfa3f17ea264303f1bea55391a10ce9fcfceff2653161c00fd96f84f2e7dcf63') { \
+    wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01_openj9-0.21.0/OpenJDK8U-jre_x64_windows_openj9_8u265b01_openj9-0.21.0.msi -O 'openjdk.msi'; \
+    Write-Host ('Verifying sha256 (6685611c930761f77f9499de8c992d67859887183e72aa67f3724dc81d3e2472) ...'); \
+    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne '6685611c930761f77f9499de8c992d67859887183e72aa67f3724dc81d3e2472') { \
             Write-Host 'FAILED!'; \
             exit 1; \
     }; \
diff --git a/adoptopenjdk_8-jre-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full b/adoptopenjdk_8-jre-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
index 8e2cbf9..1430179 100644
--- a/adoptopenjdk_8-jre-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
+++ b/adoptopenjdk_8-jre-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
@@ -22,13 +22,13 @@ FROM mcr.microsoft.com/windows/servercore:ltsc2016
 # $ProgressPreference: https://github.com/PowerShell/PowerShell/issues/2138#issuecomment-251261324
 SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
 
-ENV JAVA_VERSION jdk8u262-b10_openj9-0.21.0
+ENV JAVA_VERSION jdk8u265-b01_openj9-0.21.0
 
-RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10_openj9-0.21.0/OpenJDK8U-jre_x64_windows_openj9_8u262b10_openj9-0.21.0.msi ...'); \
+RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01_openj9-0.21.0/OpenJDK8U-jre_x64_windows_openj9_8u265b01_openj9-0.21.0.msi ...'); \
     [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \
-    wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10_openj9-0.21.0/OpenJDK8U-jre_x64_windows_openj9_8u262b10_openj9-0.21.0.msi -O 'openjdk.msi'; \
-    Write-Host ('Verifying sha256 (cfa3f17ea264303f1bea55391a10ce9fcfceff2653161c00fd96f84f2e7dcf63) ...'); \
-    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne 'cfa3f17ea264303f1bea55391a10ce9fcfceff2653161c00fd96f84f2e7dcf63') { \
+    wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01_openj9-0.21.0/OpenJDK8U-jre_x64_windows_openj9_8u265b01_openj9-0.21.0.msi -O 'openjdk.msi'; \
+    Write-Host ('Verifying sha256 (6685611c930761f77f9499de8c992d67859887183e72aa67f3724dc81d3e2472) ...'); \
+    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne '6685611c930761f77f9499de8c992d67859887183e72aa67f3724dc81d3e2472') { \
             Write-Host 'FAILED!'; \
             exit 1; \
     }; \
diff --git a/adoptopenjdk_8-openj9-bionic/Dockerfile.openj9.releases.full b/adoptopenjdk_8-openj9-bionic/Dockerfile.openj9.releases.full
index d09a5a0..f9a99bb 100644
--- a/adoptopenjdk_8-openj9-bionic/Dockerfile.openj9.releases.full
+++ b/adoptopenjdk_8-openj9-bionic/Dockerfile.openj9.releases.full
@@ -27,22 +27,22 @@ RUN apt-get update \
     && locale-gen en_US.UTF-8 \
     && rm -rf /var/lib/apt/lists/*
 
-ENV JAVA_VERSION jdk8u262-b10_openj9-0.21.0
+ENV JAVA_VERSION jdk8u265-b01_openj9-0.21.0
 
 RUN set -eux; \
     ARCH="$(dpkg --print-architecture)"; \
     case "${ARCH}" in \
        ppc64el|ppc64le) \
-         ESUM='8659c84c5c5d94ffed4789f06f2be401e59020b83e95fd45e71992f425483a13'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10_openj9-0.21.0/OpenJDK8U-jdk_ppc64le_linux_openj9_8u262b10_openj9-0.21.0.tar.gz'; \
+         ESUM='ad78af32749b40f9f1dcc7ba23aa5e0ac0e7b63edd355d56e766a04d7ab3b60c'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01_openj9-0.21.0/OpenJDK8U-jdk_ppc64le_linux_openj9_8u265b01_openj9-0.21.0.tar.gz'; \
          ;; \
        s390x) \
-         ESUM='37fe91840b1d8fa98bc6a859ef29b28e0b2187cd926c9d58743f7022640f8d8e'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10_openj9-0.21.0/OpenJDK8U-jdk_s390x_linux_openj9_8u262b10_openj9-0.21.0.tar.gz'; \
+         ESUM='54b9dbcf9f221a0c2ed469b3b5828b56b2cf22fbbf61f0b462b4a9db0737f7f7'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01_openj9-0.21.0/OpenJDK8U-jdk_s390x_linux_openj9_8u265b01_openj9-0.21.0.tar.gz'; \
          ;; \
        amd64|x86_64) \
-         ESUM='bdeab95a04462ae48df1dc1c53c833f86bfa34bd3a86c65c7adad7c096a1dbce'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10_openj9-0.21.0/OpenJDK8U-jdk_x64_linux_openj9_8u262b10_openj9-0.21.0.tar.gz'; \
+         ESUM='88ff739005cbb012f3ee73d426bd75810ce7de551d08e555475a261d57e3ecbf'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01_openj9-0.21.0/OpenJDK8U-jdk_x64_linux_openj9_8u265b01_openj9-0.21.0.tar.gz'; \
          ;; \
        *) \
          echo "Unsupported arch: ${ARCH}"; \
@@ -59,3 +59,6 @@ RUN set -eux; \
 ENV JAVA_HOME=/opt/java/openjdk \
     PATH="/opt/java/openjdk/bin:$PATH"
 ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+UseContainerSupport -XX:+IdleTuningCompactOnIdle -XX:+IdleTuningGcOnIdle"
+COPY generate_openj9_scc.sh /scripts/
+        RUN /scripts/generate_openj9_scc.sh
+        ENV OPENJ9_JAVA_OPTIONS="-Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,readonly,nonFatal"
diff --git a/adoptopenjdk_8-openj9-bionic/generate_openj9_scc.sh b/adoptopenjdk_8-openj9-bionic/generate_openj9_scc.sh
new file mode 100755
index 0000000..a5113ba
--- /dev/null
+++ b/adoptopenjdk_8-openj9-bionic/generate_openj9_scc.sh
@@ -0,0 +1,318 @@
+#!/bin/bash
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+unset OPENJ9_JAVA_OPTIONS
+
+# Default size for SCC
+SCC_SIZE="50m"
+
+# Runs for generating SCC
+SCC_GEN_RUNS_COUNT=3
+
+# is running on ubuntu or debian - package manager apt
+IS_APT_ENV=false
+# Intitialise default / allowed sample app status
+RUN_ECLIPSE=false
+RUN_TOMCAT=true
+
+# Intitialise default / required packages status
+INSTALL_GTK=false
+INSTALL_XVFB=false
+
+# App download locations
+DOWNLOAD_PATH_ECLIPSE=/tmp/eclipse
+DOWNLOAD_PATH_TOMCAT=/tmp/tomcat
+
+# App installation locations
+INSTALL_PATH_ECLIPSE="${HOME}"/eclipse-home
+INSTALL_PATH_TOMCAT="${HOME}"/tomcat-home
+
+# URL's for the artifacts
+ECLIPSE_DWNLD_URL="http://www.mirrorservice.org/sites/download.eclipse.org/eclipseMirror/technology/epp/downloads/release/2020-06/M3/eclipse-java-2020-06-M3-linux-gtk-x86_64.tar.gz"
+TOMCAT_DWNLD_URL="https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.35/bin/apache-tomcat-9.0.35.tar.gz"
+
+# Check and downlaod eclipse
+function check_to_download_eclipse() {
+    if [ "${RUN_ECLIPSE}" == true ]; then
+        # Creating a temporary directory for eclipse download
+        mkdir -p "${DOWNLOAD_PATH_ECLIPSE}" "${INSTALL_PATH_ECLIPSE}"
+
+        # Downloading eclipse
+        if curl --fail -o "${DOWNLOAD_PATH_ECLIPSE}"/eclipse.tar.gz  "${ECLIPSE_DWNLD_URL}"; then
+            # Extracting eclipse
+            tar -xvzf "${DOWNLOAD_PATH_ECLIPSE}"/eclipse.tar.gz -C "$INSTALL_PATH_ECLIPSE" --strip-components=1
+        else
+            RUN_ECLIPSE=false
+        fi
+
+        # Removing the tar file
+        rm -rf "${DOWNLOAD_PATH_ECLIPSE}"
+    fi
+}
+
+# Check and download tomcat
+function check_to_download_tomcat() {
+    if [ "${RUN_TOMCAT}" == true ]; then
+        # Creating a temporary directory for tomcat download
+        mkdir -p "${DOWNLOAD_PATH_TOMCAT}" "${INSTALL_PATH_TOMCAT}"
+
+        # Downloading tomcat
+        if curl --fail -o "${DOWNLOAD_PATH_TOMCAT}"/tomcat.tar.gz "${TOMCAT_DWNLD_URL}"; then
+            # Extracting tomcat
+            tar -xvzf "${DOWNLOAD_PATH_TOMCAT}"/tomcat.tar.gz -C "${INSTALL_PATH_TOMCAT}" --strip-components=1
+        else
+            RUN_TOMCAT=false
+        fi
+
+        # Removing the tar file
+        rm -rf "${DOWNLOAD_PATH_TOMCAT}"
+    fi
+}
+
+# ubuntu/debian install packages required for eclipse
+function apt_install_packages() {
+    # update the repositories
+    apt update
+
+    # Set non-interactive frontend (to avoid `tzdata` config options selection)
+    APT_INSTALL_CMD="DEBIAN_FRONTEND=noninteractive"
+    APT_INSTALL_CMD="${APT_INSTALL_CMD} apt install -y"
+
+    if [ "${INSTALL_GTK}" == true ]; then
+        # install gtk+3.0
+        APT_INSTALL_CMD="${APT_INSTALL_CMD} gtk+3.0"
+    fi
+
+    if [ "${INSTALL_XVFB}" == true ]; then
+        # install xvfb
+        APT_INSTALL_CMD="${APT_INSTALL_CMD} xvfb"
+    fi
+
+    eval "${APT_INSTALL_CMD}"
+}
+
+# Check if any application needs virtual screen and launch it
+function check_and_start_xvfb() {
+    # check if `xvfb` installed
+    if [ "${INSTALL_XVFB}" == true ]; then
+        # Spawning a virtual screen for GUI apps
+        Xvfb :1 -ac -screen 0 1024x768x8 &
+        # Saving the PID
+        XVFB_PID=$!
+        # Saving older display value
+        OLD_DISPLAY=$DISPLAY
+        # Setting DISPLAY to created screen
+        export DISPLAY=:1
+    fi
+}
+
+# Kill the created virtual screen
+function check_and_stop_xvfb() {
+    # check if `xvfb` installed
+    if [ "${INSTALL_XVFB}" == true ]; then
+        # Killing `xvfb` process to remove screen
+        kill -9 $XVFB_PID
+        # Setting back the DISPLAY to older value
+        export DISPLAY=$OLD_DISPLAY
+    fi
+}
+
+# Run the applications for specified iterations
+function run_apps() {
+    for ((i=0; i<SCC_GEN_RUNS_COUNT; i++))
+    do
+        if [ "${RUN_ECLIPSE}" == true ]; then
+            run_eclipse_and_stop
+        fi
+        if [ "${RUN_TOMCAT}" == true ]; then
+            run_tomcat_and_stop
+        fi
+    done
+}
+
+# function to install packages
+function install_packages() {
+    if [ "${IS_APT_ENV}" == true ]; then
+        apt_install_packages
+    fi
+}
+
+# function to download the applications
+function download_and_install_artifacts() {
+
+    # check for eclipse
+    check_to_download_eclipse
+
+    # check for tomcat
+    check_to_download_tomcat
+
+}
+
+# dry run to right size the cache
+function dry_run() {
+    # Creating base layer first instead of running sample programs to generate SCC directly
+    java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal,createLayer -Xscmx$SCC_SIZE -version
+
+    # Pointing cache for sample program runs
+    export OPENJ9_JAVA_OPTIONS="-Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal"
+
+    # check if we need xvfb for running application and start a virtual screen if required
+    check_and_start_xvfb
+
+    # Run the applications to generate SCC
+    run_apps
+
+    # check if started a virtual screen and kill the process
+    check_and_stop_xvfb
+
+    FULL=$( (java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,printallStats || true) 2>&1 | awk '/^Cache is [0-9.]*% .*full/ {print substr($3, 1, length($3)-1)}')
+
+    java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,destroy || true
+
+    SCC_SIZE="${SCC_SIZE:0:-1}"
+
+    SCC_SIZE=$(awk "BEGIN {print int($SCC_SIZE * $FULL / 100.0)}")
+
+    [ "${SCC_SIZE}" -eq 0 ] && SCC_SIZE=1
+
+    SCC_SIZE="${SCC_SIZE}m"
+
+    # Re-generating cache with new size
+    java -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal,createLayer -Xscmx$SCC_SIZE -version
+
+    unset OPENJ9_JAVA_OPTIONS
+}
+
+# Generate SCC by running apps
+function generate_scc() {
+    # Pointing cache for sample app runs
+    export OPENJ9_JAVA_OPTIONS="-Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal"
+
+    # check if we need xvfb for running application and start a virtual screen if required
+    check_and_start_xvfb
+
+    # Run the applications to generate SCC
+    run_apps
+
+    # check if started a virtual screen and kill the process
+    check_and_stop_xvfb
+
+    # Checking the cache level
+    FULL=$( (java -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,printallStats || true) 2>&1 | awk '/^Cache is [0-9.]*% .*full/ {print substr($3, 1, length($3)-1)}')
+
+    echo "SCC layer is $FULL% full."
+}
+
+# Remove the downloaded sample apps
+function remove_artifacts() {
+    # Command to remove apps
+    REMOVE_APPS="rm -rf"
+
+    # check for eclipse
+    if [ "${RUN_ECLIPSE}" == true ]; then
+        REMOVE_APPS="${REMOVE_APPS} ${INSTALL_PATH_ECLIPSE}"
+    fi
+
+    # check for tomcat
+    if [ "${RUN_TOMCAT}" == true ]; then
+        REMOVE_APPS="${REMOVE_APPS} ${INSTALL_PATH_TOMCAT}"
+    fi
+
+    eval "$REMOVE_APPS"
+}
+
+# Run eclipse and stop it after the startup
+function run_eclipse_and_stop() {
+    # Starting eclipse in background
+    "${INSTALL_PATH_ECLIPSE}"/eclipse/eclipse &
+    # Saving eclipse PID
+    ECLIPSE_PID=$!
+    # Waiting for eclipse to start - Sleeping for 1 minute
+    sleep 1m
+    # Killing eclipse process
+    kill -9 $ECLIPSE_PID
+    # Waiting for process to be killed - Sleeping for 10 seconds
+    sleep 10s
+}
+
+# Run tomcat and stop it after the startup
+function run_tomcat_and_stop() {
+    # Start tomcat wait till it comes up shut it down
+    "${INSTALL_PATH_TOMCAT}"/bin/startup.sh
+    # wait till tomcat starts -  wait for 5 seconds
+    sleep 5
+    # Stop tomcat
+    "${INSTALL_PATH_TOMCAT}"/bin/shutdown.sh
+    # wait till tomcat stops -  wait for 5 seconds
+    sleep 5
+}
+
+# Remove the installed packages
+function remove_packages() {
+    if [ "${IS_APT_ENV}" == true ]; then
+        APT_REMOVE_CMD="apt --purge -y autoremove"
+
+        if [ "${INSTALL_GTK}" == true ]; then
+            # remove gtk+3.0
+            APT_REMOVE_CMD="${APT_REMOVE_CMD} gtk+3.0"
+        fi
+
+        if [ "${INSTALL_XVFB}" == true ]; then
+            # remove xvfb
+            APT_REMOVE_CMD="${APT_REMOVE_CMD} xvfb"
+        fi
+
+        eval "${APT_REMOVE_CMD}"
+    fi
+}
+
+# check for OS release file
+if [ -f /etc/os-release ]; then
+    # load file to get the ID (OS name)
+    # shellcheck disable=SC1091
+    source /etc/os-release
+    OS=$ID
+fi
+
+# Check if OS is ubuntu/debian (we can run eclipse as packages required for it are available)
+if [ "${OS}" == "ubuntu" ]  || [ "${OS}" = "debian" ]; then
+    # set IS_APT_ENV true
+    IS_APT_ENV=true
+
+    # Set eclipse run to `true`
+    RUN_ECLIPSE=true
+
+    # Set the required packages for eclipse to `true`
+    INSTALL_GTK=true
+    INSTALL_XVFB=true
+
+    # Call function `install_pkgs_via_apt` to install packages
+    install_packages
+fi
+
+# Download the sample apps and install
+download_and_install_artifacts
+
+# Dry run for SCC generation (To get exact size)
+dry_run
+
+# Generate SCC
+generate_scc
+
+# Remove installed artifacts
+remove_artifacts
+
+# Remove packages
+remove_packages
diff --git a/adoptopenjdk_8-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full b/adoptopenjdk_8-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
index 640e854..a27b841 100644
--- a/adoptopenjdk_8-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
+++ b/adoptopenjdk_8-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
@@ -22,13 +22,13 @@ FROM mcr.microsoft.com/windows/servercore:1809
 # $ProgressPreference: https://github.com/PowerShell/PowerShell/issues/2138#issuecomment-251261324
 SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
 
-ENV JAVA_VERSION jdk8u262-b10_openj9-0.21.0
+ENV JAVA_VERSION jdk8u265-b01_openj9-0.21.0
 
-RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10_openj9-0.21.0/OpenJDK8U-jdk_x64_windows_openj9_8u262b10_openj9-0.21.0.msi ...'); \
+RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01_openj9-0.21.0/OpenJDK8U-jdk_x64_windows_openj9_8u265b01_openj9-0.21.0.msi ...'); \
     [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \
-    wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10_openj9-0.21.0/OpenJDK8U-jdk_x64_windows_openj9_8u262b10_openj9-0.21.0.msi -O 'openjdk.msi'; \
-    Write-Host ('Verifying sha256 (824f32604bee0469d9dac5208dc8a025a142d95c53d838eab753bda619d46614) ...'); \
-    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne '824f32604bee0469d9dac5208dc8a025a142d95c53d838eab753bda619d46614') { \
+    wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01_openj9-0.21.0/OpenJDK8U-jdk_x64_windows_openj9_8u265b01_openj9-0.21.0.msi -O 'openjdk.msi'; \
+    Write-Host ('Verifying sha256 (7e766cba0e9712be33a6be2412a8f58cc2daa813512f90e58d7ab2ebceed4357) ...'); \
+    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne '7e766cba0e9712be33a6be2412a8f58cc2daa813512f90e58d7ab2ebceed4357') { \
             Write-Host 'FAILED!'; \
             exit 1; \
     }; \
diff --git a/adoptopenjdk_8-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full b/adoptopenjdk_8-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
index 6d86a27..3e3ec30 100644
--- a/adoptopenjdk_8-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
+++ b/adoptopenjdk_8-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
@@ -22,13 +22,13 @@ FROM mcr.microsoft.com/windows/servercore:ltsc2016
 # $ProgressPreference: https://github.com/PowerShell/PowerShell/issues/2138#issuecomment-251261324
 SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
 
-ENV JAVA_VERSION jdk8u262-b10_openj9-0.21.0
+ENV JAVA_VERSION jdk8u265-b01_openj9-0.21.0
 
-RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10_openj9-0.21.0/OpenJDK8U-jdk_x64_windows_openj9_8u262b10_openj9-0.21.0.msi ...'); \
+RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01_openj9-0.21.0/OpenJDK8U-jdk_x64_windows_openj9_8u265b01_openj9-0.21.0.msi ...'); \
     [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \
-    wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10_openj9-0.21.0/OpenJDK8U-jdk_x64_windows_openj9_8u262b10_openj9-0.21.0.msi -O 'openjdk.msi'; \
-    Write-Host ('Verifying sha256 (824f32604bee0469d9dac5208dc8a025a142d95c53d838eab753bda619d46614) ...'); \
-    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne '824f32604bee0469d9dac5208dc8a025a142d95c53d838eab753bda619d46614') { \
+    wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01_openj9-0.21.0/OpenJDK8U-jdk_x64_windows_openj9_8u265b01_openj9-0.21.0.msi -O 'openjdk.msi'; \
+    Write-Host ('Verifying sha256 (7e766cba0e9712be33a6be2412a8f58cc2daa813512f90e58d7ab2ebceed4357) ...'); \
+    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne '7e766cba0e9712be33a6be2412a8f58cc2daa813512f90e58d7ab2ebceed4357') { \
             Write-Host 'FAILED!'; \
             exit 1; \
     }; \
diff --git a/adoptopenjdk_hotspot-bionic/Dockerfile.hotspot.releases.full b/adoptopenjdk_hotspot-bionic/Dockerfile.hotspot.releases.full
index b9cfc0c..7cd3268 100644
--- a/adoptopenjdk_hotspot-bionic/Dockerfile.hotspot.releases.full
+++ b/adoptopenjdk_hotspot-bionic/Dockerfile.hotspot.releases.full
@@ -27,30 +27,30 @@ RUN apt-get update \
     && locale-gen en_US.UTF-8 \
     && rm -rf /var/lib/apt/lists/*
 
-ENV JAVA_VERSION jdk-14.0.2+12
+ENV JAVA_VERSION jdk-15+36
 
 RUN set -eux; \
     ARCH="$(dpkg --print-architecture)"; \
     case "${ARCH}" in \
        aarch64|arm64) \
-         ESUM='ee87e9f03b1fbe6f328429b78fe1a9f44900026d220c90dfd747fe0bcd62d904'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12/OpenJDK14U-jdk_aarch64_linux_hotspot_14.0.2_12.tar.gz'; \
+         ESUM='44c8cd580f6e828f8fbb431a59b3c8f694da8c75adb7c311f7b6b9ed81c19c54'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36/OpenJDK15U-jdk_aarch64_linux_hotspot_15_36.tar.gz'; \
          ;; \
        armhf|armv7l) \
-         ESUM='65f193496c6977ba7aed1563edc4b5be091b5ff03e3d790074bb4e389a034b36'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12/OpenJDK14U-jdk_arm_linux_hotspot_14.0.2_12.tar.gz'; \
+         ESUM='d7de37fee91fe098791d48ea2a880cf2789949665d6bc9a232380738f99c16a9'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36/OpenJDK15U-jdk_arm_linux_hotspot_15_36.tar.gz'; \
          ;; \
        ppc64el|ppc64le) \
-         ESUM='465a3b8e931896b8d95e452d479615c4bf543535c05b6ea246323ae114e67d7d'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12/OpenJDK14U-jdk_ppc64le_linux_hotspot_14.0.2_12.tar.gz'; \
+         ESUM='537eb289a0fc56915078ff92616574b00b8ad0119543f5e4a817ede0e52c4030'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36/OpenJDK15U-jdk_ppc64le_linux_hotspot_15_36.tar.gz'; \
          ;; \
        s390x) \
-         ESUM='7d27aea30e359cf0bb561f8dcca6f4591dbc3ae831981f8a19aa367d31a9709b'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12/OpenJDK14U-jdk_s390x_linux_hotspot_14.0.2_12.tar.gz'; \
+         ESUM='3e238ea4924f4dd2a8167c911a99b96ffdfb51e12f3969cffbdc0791a58d0cf2'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36/OpenJDK15U-jdk_s390x_linux_hotspot_15_36.tar.gz'; \
          ;; \
        amd64|x86_64) \
-         ESUM='7d5ee7e06909b8a99c0d029f512f67b092597aa5b0e78c109bd59405bbfa74fe'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12/OpenJDK14U-jdk_x64_linux_hotspot_14.0.2_12.tar.gz'; \
+         ESUM='c198593d1b5188ee3570e2ca33c3bc004aaefbda2c11e68e58ae7296cf5c3982'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36/OpenJDK15U-jdk_x64_linux_hotspot_15_36.tar.gz'; \
          ;; \
        *) \
          echo "Unsupported arch: ${ARCH}"; \
diff --git a/adoptopenjdk_hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full b/adoptopenjdk_hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full
index 89a3af2..e0c0d34 100644
--- a/adoptopenjdk_hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full
+++ b/adoptopenjdk_hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full
@@ -22,13 +22,13 @@ FROM mcr.microsoft.com/windows/servercore:1809
 # $ProgressPreference: https://github.com/PowerShell/PowerShell/issues/2138#issuecomment-251261324
 SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
 
-ENV JAVA_VERSION jdk-14.0.2+12
+ENV JAVA_VERSION jdk-15+36
 
-RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12/OpenJDK14U-jdk_x64_windows_hotspot_14.0.2_12.msi ...'); \
+RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36/OpenJDK15U-jdk_x64_windows_hotspot_15_36.msi ...'); \
     [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \
-    wget https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12/OpenJDK14U-jdk_x64_windows_hotspot_14.0.2_12.msi -O 'openjdk.msi'; \
-    Write-Host ('Verifying sha256 (9cbd03600e58ad8d2383c15e596396fbdfbc9655ba0019f5bc74c910e4082c7c) ...'); \
-    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne '9cbd03600e58ad8d2383c15e596396fbdfbc9655ba0019f5bc74c910e4082c7c') { \
+    wget https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36/OpenJDK15U-jdk_x64_windows_hotspot_15_36.msi -O 'openjdk.msi'; \
+    Write-Host ('Verifying sha256 (e2ac92e686e52d8c76a831319ad721547d811d2e2e9b3a8fae47420652beb930) ...'); \
+    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne 'e2ac92e686e52d8c76a831319ad721547d811d2e2e9b3a8fae47420652beb930') { \
             Write-Host 'FAILED!'; \
             exit 1; \
     }; \
diff --git a/adoptopenjdk_hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full b/adoptopenjdk_hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full
index b71b65c..d288c3c 100644
--- a/adoptopenjdk_hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full
+++ b/adoptopenjdk_hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full
@@ -22,13 +22,13 @@ FROM mcr.microsoft.com/windows/servercore:ltsc2016
 # $ProgressPreference: https://github.com/PowerShell/PowerShell/issues/2138#issuecomment-251261324
 SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
 
-ENV JAVA_VERSION jdk-14.0.2+12
+ENV JAVA_VERSION jdk-15+36
 
-RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12/OpenJDK14U-jdk_x64_windows_hotspot_14.0.2_12.msi ...'); \
+RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36/OpenJDK15U-jdk_x64_windows_hotspot_15_36.msi ...'); \
     [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \
-    wget https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12/OpenJDK14U-jdk_x64_windows_hotspot_14.0.2_12.msi -O 'openjdk.msi'; \
-    Write-Host ('Verifying sha256 (9cbd03600e58ad8d2383c15e596396fbdfbc9655ba0019f5bc74c910e4082c7c) ...'); \
-    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne '9cbd03600e58ad8d2383c15e596396fbdfbc9655ba0019f5bc74c910e4082c7c') { \
+    wget https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36/OpenJDK15U-jdk_x64_windows_hotspot_15_36.msi -O 'openjdk.msi'; \
+    Write-Host ('Verifying sha256 (e2ac92e686e52d8c76a831319ad721547d811d2e2e9b3a8fae47420652beb930) ...'); \
+    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne 'e2ac92e686e52d8c76a831319ad721547d811d2e2e9b3a8fae47420652beb930') { \
             Write-Host 'FAILED!'; \
             exit 1; \
     }; \
diff --git a/adoptopenjdk_openj9-bionic/Dockerfile.openj9.releases.full b/adoptopenjdk_openj9-bionic/Dockerfile.openj9.releases.full
index eff0c96..85db2e5 100644
--- a/adoptopenjdk_openj9-bionic/Dockerfile.openj9.releases.full
+++ b/adoptopenjdk_openj9-bionic/Dockerfile.openj9.releases.full
@@ -27,22 +27,22 @@ RUN apt-get update \
     && locale-gen en_US.UTF-8 \
     && rm -rf /var/lib/apt/lists/*
 
-ENV JAVA_VERSION jdk-14.0.2+12_openj9-0.21.0
+ENV JAVA_VERSION jdk-15+36_openj9-0.22.0
 
 RUN set -eux; \
     ARCH="$(dpkg --print-architecture)"; \
     case "${ARCH}" in \
        ppc64el|ppc64le) \
-         ESUM='177fd161ae14df92203d70cd618559daf889ec0c172d6ee615859352f68a2371'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12_openj9-0.21.0/OpenJDK14U-jdk_ppc64le_linux_openj9_14.0.2_12_openj9-0.21.0.tar.gz'; \
+         ESUM='88058a977c63382b59b7aaaec08d656490494b2c9575ae787c873de1b2baeaca'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36_openj9-0.22.0/OpenJDK15U-jdk_ppc64le_linux_openj9_15_36_openj9-0.22.0.tar.gz'; \
          ;; \
        s390x) \
-         ESUM='4757dc2009a0c31604be4631e02a5a3aac53ebe9b6a2046ae8995ec0e453dc1a'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12_openj9-0.21.0/OpenJDK14U-jdk_s390x_linux_openj9_14.0.2_12_openj9-0.21.0.tar.gz'; \
+         ESUM='1cb8366199635c82a58b2619483f84318e9ead5b542b52ffc355fb561adb0f14'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36_openj9-0.22.0/OpenJDK15U-jdk_s390x_linux_openj9_15_36_openj9-0.22.0.tar.gz'; \
          ;; \
        amd64|x86_64) \
-         ESUM='306f7138cdb65daaf2596ec36cafbde72088144c83b2e964f0193662e6caf3be'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12_openj9-0.21.0/OpenJDK14U-jdk_x64_linux_openj9_14.0.2_12_openj9-0.21.0.tar.gz'; \
+         ESUM='3f016e23a1fba0b1d29f03415c36d54a8a33480ce1d238fbef09d38c5a69eff7'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36_openj9-0.22.0/OpenJDK15U-jdk_x64_linux_openj9_15_36_openj9-0.22.0.tar.gz'; \
          ;; \
        *) \
          echo "Unsupported arch: ${ARCH}"; \
@@ -59,4 +59,7 @@ RUN set -eux; \
 ENV JAVA_HOME=/opt/java/openjdk \
     PATH="/opt/java/openjdk/bin:$PATH"
 ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+UseContainerSupport -XX:+IdleTuningCompactOnIdle -XX:+IdleTuningGcOnIdle"
+COPY generate_openj9_scc.sh /scripts/
+        RUN /scripts/generate_openj9_scc.sh
+        ENV OPENJ9_JAVA_OPTIONS="-Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,readonly,nonFatal"
 CMD ["jshell"]
diff --git a/adoptopenjdk_openj9-bionic/generate_openj9_scc.sh b/adoptopenjdk_openj9-bionic/generate_openj9_scc.sh
new file mode 100755
index 0000000..a5113ba
--- /dev/null
+++ b/adoptopenjdk_openj9-bionic/generate_openj9_scc.sh
@@ -0,0 +1,318 @@
+#!/bin/bash
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+unset OPENJ9_JAVA_OPTIONS
+
+# Default size for SCC
+SCC_SIZE="50m"
+
+# Runs for generating SCC
+SCC_GEN_RUNS_COUNT=3
+
+# is running on ubuntu or debian - package manager apt
+IS_APT_ENV=false
+# Intitialise default / allowed sample app status
+RUN_ECLIPSE=false
+RUN_TOMCAT=true
+
+# Intitialise default / required packages status
+INSTALL_GTK=false
+INSTALL_XVFB=false
+
+# App download locations
+DOWNLOAD_PATH_ECLIPSE=/tmp/eclipse
+DOWNLOAD_PATH_TOMCAT=/tmp/tomcat
+
+# App installation locations
+INSTALL_PATH_ECLIPSE="${HOME}"/eclipse-home
+INSTALL_PATH_TOMCAT="${HOME}"/tomcat-home
+
+# URL's for the artifacts
+ECLIPSE_DWNLD_URL="http://www.mirrorservice.org/sites/download.eclipse.org/eclipseMirror/technology/epp/downloads/release/2020-06/M3/eclipse-java-2020-06-M3-linux-gtk-x86_64.tar.gz"
+TOMCAT_DWNLD_URL="https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.35/bin/apache-tomcat-9.0.35.tar.gz"
+
+# Check and downlaod eclipse
+function check_to_download_eclipse() {
+    if [ "${RUN_ECLIPSE}" == true ]; then
+        # Creating a temporary directory for eclipse download
+        mkdir -p "${DOWNLOAD_PATH_ECLIPSE}" "${INSTALL_PATH_ECLIPSE}"
+
+        # Downloading eclipse
+        if curl --fail -o "${DOWNLOAD_PATH_ECLIPSE}"/eclipse.tar.gz  "${ECLIPSE_DWNLD_URL}"; then
+            # Extracting eclipse
+            tar -xvzf "${DOWNLOAD_PATH_ECLIPSE}"/eclipse.tar.gz -C "$INSTALL_PATH_ECLIPSE" --strip-components=1
+        else
+            RUN_ECLIPSE=false
+        fi
+
+        # Removing the tar file
+        rm -rf "${DOWNLOAD_PATH_ECLIPSE}"
+    fi
+}
+
+# Check and download tomcat
+function check_to_download_tomcat() {
+    if [ "${RUN_TOMCAT}" == true ]; then
+        # Creating a temporary directory for tomcat download
+        mkdir -p "${DOWNLOAD_PATH_TOMCAT}" "${INSTALL_PATH_TOMCAT}"
+
+        # Downloading tomcat
+        if curl --fail -o "${DOWNLOAD_PATH_TOMCAT}"/tomcat.tar.gz "${TOMCAT_DWNLD_URL}"; then
+            # Extracting tomcat
+            tar -xvzf "${DOWNLOAD_PATH_TOMCAT}"/tomcat.tar.gz -C "${INSTALL_PATH_TOMCAT}" --strip-components=1
+        else
+            RUN_TOMCAT=false
+        fi
+
+        # Removing the tar file
+        rm -rf "${DOWNLOAD_PATH_TOMCAT}"
+    fi
+}
+
+# ubuntu/debian install packages required for eclipse
+function apt_install_packages() {
+    # update the repositories
+    apt update
+
+    # Set non-interactive frontend (to avoid `tzdata` config options selection)
+    APT_INSTALL_CMD="DEBIAN_FRONTEND=noninteractive"
+    APT_INSTALL_CMD="${APT_INSTALL_CMD} apt install -y"
+
+    if [ "${INSTALL_GTK}" == true ]; then
+        # install gtk+3.0
+        APT_INSTALL_CMD="${APT_INSTALL_CMD} gtk+3.0"
+    fi
+
+    if [ "${INSTALL_XVFB}" == true ]; then
+        # install xvfb
+        APT_INSTALL_CMD="${APT_INSTALL_CMD} xvfb"
+    fi
+
+    eval "${APT_INSTALL_CMD}"
+}
+
+# Check if any application needs virtual screen and launch it
+function check_and_start_xvfb() {
+    # check if `xvfb` installed
+    if [ "${INSTALL_XVFB}" == true ]; then
+        # Spawning a virtual screen for GUI apps
+        Xvfb :1 -ac -screen 0 1024x768x8 &
+        # Saving the PID
+        XVFB_PID=$!
+        # Saving older display value
+        OLD_DISPLAY=$DISPLAY
+        # Setting DISPLAY to created screen
+        export DISPLAY=:1
+    fi
+}
+
+# Kill the created virtual screen
+function check_and_stop_xvfb() {
+    # check if `xvfb` installed
+    if [ "${INSTALL_XVFB}" == true ]; then
+        # Killing `xvfb` process to remove screen
+        kill -9 $XVFB_PID
+        # Setting back the DISPLAY to older value
+        export DISPLAY=$OLD_DISPLAY
+    fi
+}
+
+# Run the applications for specified iterations
+function run_apps() {
+    for ((i=0; i<SCC_GEN_RUNS_COUNT; i++))
+    do
+        if [ "${RUN_ECLIPSE}" == true ]; then
+            run_eclipse_and_stop
+        fi
+        if [ "${RUN_TOMCAT}" == true ]; then
+            run_tomcat_and_stop
+        fi
+    done
+}
+
+# function to install packages
+function install_packages() {
+    if [ "${IS_APT_ENV}" == true ]; then
+        apt_install_packages
+    fi
+}
+
+# function to download the applications
+function download_and_install_artifacts() {
+
+    # check for eclipse
+    check_to_download_eclipse
+
+    # check for tomcat
+    check_to_download_tomcat
+
+}
+
+# dry run to right size the cache
+function dry_run() {
+    # Creating base layer first instead of running sample programs to generate SCC directly
+    java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal,createLayer -Xscmx$SCC_SIZE -version
+
+    # Pointing cache for sample program runs
+    export OPENJ9_JAVA_OPTIONS="-Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal"
+
+    # check if we need xvfb for running application and start a virtual screen if required
+    check_and_start_xvfb
+
+    # Run the applications to generate SCC
+    run_apps
+
+    # check if started a virtual screen and kill the process
+    check_and_stop_xvfb
+
+    FULL=$( (java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,printallStats || true) 2>&1 | awk '/^Cache is [0-9.]*% .*full/ {print substr($3, 1, length($3)-1)}')
+
+    java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,destroy || true
+
+    SCC_SIZE="${SCC_SIZE:0:-1}"
+
+    SCC_SIZE=$(awk "BEGIN {print int($SCC_SIZE * $FULL / 100.0)}")
+
+    [ "${SCC_SIZE}" -eq 0 ] && SCC_SIZE=1
+
+    SCC_SIZE="${SCC_SIZE}m"
+
+    # Re-generating cache with new size
+    java -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal,createLayer -Xscmx$SCC_SIZE -version
+
+    unset OPENJ9_JAVA_OPTIONS
+}
+
+# Generate SCC by running apps
+function generate_scc() {
+    # Pointing cache for sample app runs
+    export OPENJ9_JAVA_OPTIONS="-Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal"
+
+    # check if we need xvfb for running application and start a virtual screen if required
+    check_and_start_xvfb
+
+    # Run the applications to generate SCC
+    run_apps
+
+    # check if started a virtual screen and kill the process
+    check_and_stop_xvfb
+
+    # Checking the cache level
+    FULL=$( (java -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,printallStats || true) 2>&1 | awk '/^Cache is [0-9.]*% .*full/ {print substr($3, 1, length($3)-1)}')
+
+    echo "SCC layer is $FULL% full."
+}
+
+# Remove the downloaded sample apps
+function remove_artifacts() {
+    # Command to remove apps
+    REMOVE_APPS="rm -rf"
+
+    # check for eclipse
+    if [ "${RUN_ECLIPSE}" == true ]; then
+        REMOVE_APPS="${REMOVE_APPS} ${INSTALL_PATH_ECLIPSE}"
+    fi
+
+    # check for tomcat
+    if [ "${RUN_TOMCAT}" == true ]; then
+        REMOVE_APPS="${REMOVE_APPS} ${INSTALL_PATH_TOMCAT}"
+    fi
+
+    eval "$REMOVE_APPS"
+}
+
+# Run eclipse and stop it after the startup
+function run_eclipse_and_stop() {
+    # Starting eclipse in background
+    "${INSTALL_PATH_ECLIPSE}"/eclipse/eclipse &
+    # Saving eclipse PID
+    ECLIPSE_PID=$!
+    # Waiting for eclipse to start - Sleeping for 1 minute
+    sleep 1m
+    # Killing eclipse process
+    kill -9 $ECLIPSE_PID
+    # Waiting for process to be killed - Sleeping for 10 seconds
+    sleep 10s
+}
+
+# Run tomcat and stop it after the startup
+function run_tomcat_and_stop() {
+    # Start tomcat wait till it comes up shut it down
+    "${INSTALL_PATH_TOMCAT}"/bin/startup.sh
+    # wait till tomcat starts -  wait for 5 seconds
+    sleep 5
+    # Stop tomcat
+    "${INSTALL_PATH_TOMCAT}"/bin/shutdown.sh
+    # wait till tomcat stops -  wait for 5 seconds
+    sleep 5
+}
+
+# Remove the installed packages
+function remove_packages() {
+    if [ "${IS_APT_ENV}" == true ]; then
+        APT_REMOVE_CMD="apt --purge -y autoremove"
+
+        if [ "${INSTALL_GTK}" == true ]; then
+            # remove gtk+3.0
+            APT_REMOVE_CMD="${APT_REMOVE_CMD} gtk+3.0"
+        fi
+
+        if [ "${INSTALL_XVFB}" == true ]; then
+            # remove xvfb
+            APT_REMOVE_CMD="${APT_REMOVE_CMD} xvfb"
+        fi
+
+        eval "${APT_REMOVE_CMD}"
+    fi
+}
+
+# check for OS release file
+if [ -f /etc/os-release ]; then
+    # load file to get the ID (OS name)
+    # shellcheck disable=SC1091
+    source /etc/os-release
+    OS=$ID
+fi
+
+# Check if OS is ubuntu/debian (we can run eclipse as packages required for it are available)
+if [ "${OS}" == "ubuntu" ]  || [ "${OS}" = "debian" ]; then
+    # set IS_APT_ENV true
+    IS_APT_ENV=true
+
+    # Set eclipse run to `true`
+    RUN_ECLIPSE=true
+
+    # Set the required packages for eclipse to `true`
+    INSTALL_GTK=true
+    INSTALL_XVFB=true
+
+    # Call function `install_pkgs_via_apt` to install packages
+    install_packages
+fi
+
+# Download the sample apps and install
+download_and_install_artifacts
+
+# Dry run for SCC generation (To get exact size)
+dry_run
+
+# Generate SCC
+generate_scc
+
+# Remove installed artifacts
+remove_artifacts
+
+# Remove packages
+remove_packages
diff --git a/adoptopenjdk_openj9-windowsservercore-1809/Dockerfile.openj9.releases.full b/adoptopenjdk_openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
index 0ba45b0..84dfdf1 100644
--- a/adoptopenjdk_openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
+++ b/adoptopenjdk_openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
@@ -22,13 +22,13 @@ FROM mcr.microsoft.com/windows/servercore:1809
 # $ProgressPreference: https://github.com/PowerShell/PowerShell/issues/2138#issuecomment-251261324
 SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
 
-ENV JAVA_VERSION jdk-14.0.2+12_openj9-0.21.0
+ENV JAVA_VERSION jdk-15+36_openj9-0.22.0
 
-RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12_openj9-0.21.0/OpenJDK14U-jdk_x64_windows_openj9_14.0.2_12_openj9-0.21.0.msi ...'); \
+RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36_openj9-0.22.0/OpenJDK15U-jdk_x64_windows_openj9_15_36_openj9-0.22.0.msi ...'); \
     [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \
-    wget https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12_openj9-0.21.0/OpenJDK14U-jdk_x64_windows_openj9_14.0.2_12_openj9-0.21.0.msi -O 'openjdk.msi'; \
-    Write-Host ('Verifying sha256 (2e496ce7ca02f7a380fd1902e06d55d52121bb2eee29b21b8e54ad3e2fd3466e) ...'); \
-    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne '2e496ce7ca02f7a380fd1902e06d55d52121bb2eee29b21b8e54ad3e2fd3466e') { \
+    wget https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36_openj9-0.22.0/OpenJDK15U-jdk_x64_windows_openj9_15_36_openj9-0.22.0.msi -O 'openjdk.msi'; \
+    Write-Host ('Verifying sha256 (88dd04dc008ff18e09ad158046a650797ff8e5ce0f1880515e359c49f0fddd4e) ...'); \
+    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne '88dd04dc008ff18e09ad158046a650797ff8e5ce0f1880515e359c49f0fddd4e') { \
             Write-Host 'FAILED!'; \
             exit 1; \
     }; \
diff --git a/adoptopenjdk_openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full b/adoptopenjdk_openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
index 4a658d9..0ca5dd4 100644
--- a/adoptopenjdk_openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
+++ b/adoptopenjdk_openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
@@ -22,13 +22,13 @@ FROM mcr.microsoft.com/windows/servercore:ltsc2016
 # $ProgressPreference: https://github.com/PowerShell/PowerShell/issues/2138#issuecomment-251261324
 SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
 
-ENV JAVA_VERSION jdk-14.0.2+12_openj9-0.21.0
+ENV JAVA_VERSION jdk-15+36_openj9-0.22.0
 
-RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12_openj9-0.21.0/OpenJDK14U-jdk_x64_windows_openj9_14.0.2_12_openj9-0.21.0.msi ...'); \
+RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36_openj9-0.22.0/OpenJDK15U-jdk_x64_windows_openj9_15_36_openj9-0.22.0.msi ...'); \
     [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \
-    wget https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12_openj9-0.21.0/OpenJDK14U-jdk_x64_windows_openj9_14.0.2_12_openj9-0.21.0.msi -O 'openjdk.msi'; \
-    Write-Host ('Verifying sha256 (2e496ce7ca02f7a380fd1902e06d55d52121bb2eee29b21b8e54ad3e2fd3466e) ...'); \
-    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne '2e496ce7ca02f7a380fd1902e06d55d52121bb2eee29b21b8e54ad3e2fd3466e') { \
+    wget https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36_openj9-0.22.0/OpenJDK15U-jdk_x64_windows_openj9_15_36_openj9-0.22.0.msi -O 'openjdk.msi'; \
+    Write-Host ('Verifying sha256 (88dd04dc008ff18e09ad158046a650797ff8e5ce0f1880515e359c49f0fddd4e) ...'); \
+    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne '88dd04dc008ff18e09ad158046a650797ff8e5ce0f1880515e359c49f0fddd4e') { \
             Write-Host 'FAILED!'; \
             exit 1; \
     }; \

@yosifkit
Copy link
Member

It seems out of place for the generic adoptopenjdk image to use generate_openj9_scc.sh to add class cache for tomcat and eclipse when neither are installed permanently. Users could easily install a different version or not install them at all. An on-disk size of~60MB seems excessive for cache that may or may not even be used (vs the ~414MB total for the current image). The script might make sense for a downstream tomcat image, but then they would be downloading their own tomcat and might just need a helper to "run and generate cache".


As used, the generate_openj9_scc.sh script would technically fall under the Clarity section.

It may be tempting, for the sake of brevity, to put complicated initialization details into a standalone script and merely add a RUN command in the Dockerfile. However, this causes the resulting Dockerfile to be overly opaque, and such Dockerfiles are unlikely to pass review.

- https://github.com/docker-library/official-images#clarity

While it wouldn't make sense to embed that much logic into the Dockerfile, if it is in the build context, it will still be reviewed and so need to follow all the regular guidelines. (So a quick glance would be things like apt -> apt-get, as well as verifying anything downloaded). Being such a complex script, I'd suggest the cache generator would be its own git repo so that it can have its own releases/bugs. It could then be downloaded & verified in the Dockerfile, available for a downstream tomcat or eclipse to run. This way would keep it out of the build context and speed up our reviews.

@dinogun
Copy link
Contributor Author

dinogun commented Sep 30, 2020

Hi @yosifkit, thank you for the review

It seems out of place for the generic adoptopenjdk image to use generate_openj9_scc.sh to add class cache for tomcat and eclipse when neither are installed permanently. Users could easily install a different version or not install them at all. An on-disk size of~60MB seems excessive for cache that may or may not even be used (vs the ~414MB total for the current image). The script might make sense for a downstream tomcat image, but then they would be downloading their own tomcat and might just need a helper to "run and generate cache".

Let me clarify. The class cache is only populated with system JDK classes and not tomcat or eclipse classes. Specifically see the bootClassesOnly option here. tomcat and eclipse are only used as example apps that help prime the cache with the most likely set of JDK classes that will be in use. Ofcourse depending on the application the actual startup mileage might vary quite a bit. Also there was a cleanup that was missing causing the image size to go up, which has now been fixed and the on-disk increase is now 15-20MB.

As used, the generate_openj9_scc.sh script would technically fall under the Clarity section.

It may be tempting, for the sake of brevity, to put complicated initialization details into a standalone script and merely add a RUN command in the Dockerfile. However, this causes the resulting Dockerfile to be overly opaque, and such Dockerfiles are unlikely to pass review.

While it wouldn't make sense to embed that much logic into the Dockerfile, if it is in the build context, it will still be reviewed and so need to follow all the regular guidelines. (So a quick glance would be things like apt -> apt-get, as well as verifying anything downloaded). Being such a complex script, I'd suggest the cache generator would be its own git repo so that it can have its own releases/bugs. It could then be downloaded & verified in the Dockerfile, available for a downstream tomcat or eclipse to run. This way would keep it out of the build context and speed up our reviews.

We have tried to simplify the script by removing eclipse as the number of system JDK classes that it was adding on top of tomcat was minuscule (16 only out of a total of 612) and it was adding too much complexity. Also fixed to match other Dockerfile guidelines. Let me know if you prefer to move it all into the Dockerfile itself.

@dinogun
Copy link
Contributor Author

dinogun commented Oct 12, 2020

Hi @yosifkit, will it help to have the dockerfiles updated in this way. This would not need any external script.

@yosifkit
Copy link
Member

Placing it in the Dockerfile does make it easier for users to see exactly what is doing on without having to jump into the container.

My initial recommendation would be to make it fail when unable to accomplish the purpose of the layer (e.g. when unable to download or verify tomcat.tar.gz; a set -euo pipefail might make this easier to accomplish); otherwise the Docker layer would still be committed. Our build system heavily uses Docker build cache so even if we manually trigger another build, it wouldn't retry the layer in the event of a bad connection to apache.org. We'd rather have the build fail than an unsuccessful layer get used and pushed.

We are also curious as to why the class cache isn't a zip that could just be download with the jdk. Shouldn't this be a standard set that could be applied to more that just container users? (then you could design a standard set of java packages to load).

@dinogun
Copy link
Contributor Author

dinogun commented Oct 13, 2020

Thanks for the feedback !

My initial recommendation would be to make it fail when unable to accomplish the purpose of the layer (e.g. when unable to download or verify tomcat.tar.gz; a set -euo pipefail might make this easier to accomplish); otherwise the Docker layer would still be committed. Our build system heavily uses Docker build cache so even if we manually trigger another build, it wouldn't retry the layer in the event of a bad connection to apache.org. We'd rather have the build fail than an unsuccessful layer get used and pushed.

ok, will update accordingly.

We are also curious as to why the class cache isn't a zip that could just be download with the jdk. Shouldn't this be a standard set that could be applied to more that just container users? (then you could design a standard set of java packages to load).

We will have to explore if there are ways in which we could integrate this functionality into the Adopt build system for a more generic usecase, but the current scripts are just targeting the container usecase.

@dinogun
Copy link
Contributor Author

dinogun commented Oct 14, 2020

@yosifkit Let me know if the above change addresses all your concerns, thanks !

@yosifkit
Copy link
Member

Along the same lines as #8211 (comment); && binds tighter than ||, and for and if statements have sometimes unexpected behavior when used within an expression.

The return status is the exit status of the last command executed, or zero if no condition tested true.

-https://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html

The return status is the exit status of the last command that executes. If no commands are executed because LIST does not expand to any items, the return status is zero.

- https://tldp.org/LDP/Bash-Beginners-Guide/html/sect_09_01.html

So, this new long RUN would work better with semicolons rather than logical and (&&).

@github-actions
Copy link

Diff for 4c3c132:
TODO diff too large for GitHub comment!
See: http://github.com/docker-library/official-images/actions/runs/309266604

@yosifkit
Copy link
Member

Thanks! LGTM. cc @tianon

Diff:
diff --git a/_bashbrew-cat b/_bashbrew-cat
index cdcdf16..f337762 100644
--- a/_bashbrew-cat
+++ b/_bashbrew-cat
@@ -1,94 +1,94 @@
 Maintainers: Dinakar Guniguntala <[email protected]> (@dinogun)
 GitRepo: https://github.com/AdoptOpenJDK/openjdk-docker.git
 
-Tags: 8u262-b10-jdk-hotspot-bionic, 8-jdk-hotspot-bionic, 8-hotspot-bionic
-SharedTags: 8u262-b10-jdk-hotspot, 8-jdk-hotspot, 8-hotspot
+Tags: 8u265-b01-jdk-hotspot-bionic, 8-jdk-hotspot-bionic, 8-hotspot-bionic
+SharedTags: 8u265-b01-jdk-hotspot, 8-jdk-hotspot, 8-hotspot
 Architectures: amd64, arm32v7, arm64v8, ppc64le, s390x
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
 Directory: 8/jdk/ubuntu
 File: Dockerfile.hotspot.releases.full
 
-Tags: 8u262-b10-jdk-hotspot-windowsservercore-1809, 8-jdk-hotspot-windowsservercore-1809, 8-hotspot-windowsservercore-1809
-SharedTags: 8u262-b10-jdk-hotspot-windowsservercore, 8-jdk-hotspot-windowsservercore, 8-hotspot-windowsservercore, 8u262-b10-jdk-hotspot, 8-jdk-hotspot, 8-hotspot
+Tags: 8u265-b01-jdk-hotspot-windowsservercore-1809, 8-jdk-hotspot-windowsservercore-1809, 8-hotspot-windowsservercore-1809
+SharedTags: 8u265-b01-jdk-hotspot-windowsservercore, 8-jdk-hotspot-windowsservercore, 8-hotspot-windowsservercore, 8u265-b01-jdk-hotspot, 8-jdk-hotspot, 8-hotspot
 Architectures: windows-amd64
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
 Directory: 8/jdk/windows/windowsservercore-1809
 File: Dockerfile.hotspot.releases.full
 Constraints: windowsservercore-1809
 
-Tags: 8u262-b10-jdk-hotspot-windowsservercore-ltsc2016, 8-jdk-hotspot-windowsservercore-ltsc2016, 8-hotspot-windowsservercore-ltsc2016
-SharedTags: 8u262-b10-jdk-hotspot-windowsservercore, 8-jdk-hotspot-windowsservercore, 8-hotspot-windowsservercore, 8u262-b10-jdk-hotspot, 8-jdk-hotspot, 8-hotspot
+Tags: 8u265-b01-jdk-hotspot-windowsservercore-ltsc2016, 8-jdk-hotspot-windowsservercore-ltsc2016, 8-hotspot-windowsservercore-ltsc2016
+SharedTags: 8u265-b01-jdk-hotspot-windowsservercore, 8-jdk-hotspot-windowsservercore, 8-hotspot-windowsservercore, 8u265-b01-jdk-hotspot, 8-jdk-hotspot, 8-hotspot
 Architectures: windows-amd64
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
 Directory: 8/jdk/windows/windowsservercore-ltsc2016
 File: Dockerfile.hotspot.releases.full
 Constraints: windowsservercore-ltsc2016
 
-Tags: 8u262-b10-jdk-openj9-0.21.0-bionic, 8-jdk-openj9-bionic, 8-openj9-bionic
-SharedTags: 8u262-b10-jdk-openj9-0.21.0, 8-jdk-openj9, 8-openj9
+Tags: 8u265-b01-jdk-openj9-0.21.0-bionic, 8-jdk-openj9-bionic, 8-openj9-bionic
+SharedTags: 8u265-b01-jdk-openj9-0.21.0, 8-jdk-openj9, 8-openj9
 Architectures: amd64, ppc64le, s390x
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
 Directory: 8/jdk/ubuntu
 File: Dockerfile.openj9.releases.full
 
-Tags: 8u262-b10-jdk-openj9-0.21.0-windowsservercore-1809, 8-jdk-openj9-windowsservercore-1809, 8-openj9-windowsservercore-1809
-SharedTags: 8u262-b10-jdk-openj9-0.21.0-windowsservercore, 8-jdk-openj9-windowsservercore, 8-openj9-windowsservercore, 8u262-b10-jdk-openj9-0.21.0, 8-jdk-openj9, 8-openj9
+Tags: 8u265-b01-jdk-openj9-0.21.0-windowsservercore-1809, 8-jdk-openj9-windowsservercore-1809, 8-openj9-windowsservercore-1809
+SharedTags: 8u265-b01-jdk-openj9-0.21.0-windowsservercore, 8-jdk-openj9-windowsservercore, 8-openj9-windowsservercore, 8u265-b01-jdk-openj9-0.21.0, 8-jdk-openj9, 8-openj9
 Architectures: windows-amd64
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
 Directory: 8/jdk/windows/windowsservercore-1809
 File: Dockerfile.openj9.releases.full
 Constraints: windowsservercore-1809
 
-Tags: 8u262-b10-jdk-openj9-0.21.0-windowsservercore-ltsc2016, 8-jdk-openj9-windowsservercore-ltsc2016, 8-openj9-windowsservercore-ltsc2016
-SharedTags: 8u262-b10-jdk-openj9-0.21.0-windowsservercore, 8-jdk-openj9-windowsservercore, 8-openj9-windowsservercore, 8u262-b10-jdk-openj9-0.21.0, 8-jdk-openj9, 8-openj9
+Tags: 8u265-b01-jdk-openj9-0.21.0-windowsservercore-ltsc2016, 8-jdk-openj9-windowsservercore-ltsc2016, 8-openj9-windowsservercore-ltsc2016
+SharedTags: 8u265-b01-jdk-openj9-0.21.0-windowsservercore, 8-jdk-openj9-windowsservercore, 8-openj9-windowsservercore, 8u265-b01-jdk-openj9-0.21.0, 8-jdk-openj9, 8-openj9
 Architectures: windows-amd64
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
 Directory: 8/jdk/windows/windowsservercore-ltsc2016
 File: Dockerfile.openj9.releases.full
 Constraints: windowsservercore-ltsc2016
 
-Tags: 8u262-b10-jre-hotspot-bionic, 8-jre-hotspot-bionic
-SharedTags: 8u262-b10-jre-hotspot, 8-jre-hotspot
+Tags: 8u265-b01-jre-hotspot-bionic, 8-jre-hotspot-bionic
+SharedTags: 8u265-b01-jre-hotspot, 8-jre-hotspot
 Architectures: amd64, arm32v7, arm64v8, ppc64le, s390x
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
 Directory: 8/jre/ubuntu
 File: Dockerfile.hotspot.releases.full
 
-Tags: 8u262-b10-jre-hotspot-windowsservercore-1809, 8-jre-hotspot-windowsservercore-1809
-SharedTags: 8u262-b10-jre-hotspot-windowsservercore, 8-jre-hotspot-windowsservercore, 8u262-b10-jre-hotspot, 8-jre-hotspot
+Tags: 8u265-b01-jre-hotspot-windowsservercore-1809, 8-jre-hotspot-windowsservercore-1809
+SharedTags: 8u265-b01-jre-hotspot-windowsservercore, 8-jre-hotspot-windowsservercore, 8u265-b01-jre-hotspot, 8-jre-hotspot
 Architectures: windows-amd64
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
 Directory: 8/jre/windows/windowsservercore-1809
 File: Dockerfile.hotspot.releases.full
 Constraints: windowsservercore-1809
 
-Tags: 8u262-b10-jre-hotspot-windowsservercore-ltsc2016, 8-jre-hotspot-windowsservercore-ltsc2016
-SharedTags: 8u262-b10-jre-hotspot-windowsservercore, 8-jre-hotspot-windowsservercore, 8u262-b10-jre-hotspot, 8-jre-hotspot
+Tags: 8u265-b01-jre-hotspot-windowsservercore-ltsc2016, 8-jre-hotspot-windowsservercore-ltsc2016
+SharedTags: 8u265-b01-jre-hotspot-windowsservercore, 8-jre-hotspot-windowsservercore, 8u265-b01-jre-hotspot, 8-jre-hotspot
 Architectures: windows-amd64
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
 Directory: 8/jre/windows/windowsservercore-ltsc2016
 File: Dockerfile.hotspot.releases.full
 Constraints: windowsservercore-ltsc2016
 
-Tags: 8u262-b10-jre-openj9-0.21.0-bionic, 8-jre-openj9-bionic
-SharedTags: 8u262-b10-jre-openj9-0.21.0, 8-jre-openj9
+Tags: 8u265-b01-jre-openj9-0.21.0-bionic, 8-jre-openj9-bionic
+SharedTags: 8u265-b01-jre-openj9-0.21.0, 8-jre-openj9
 Architectures: amd64, ppc64le, s390x
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
 Directory: 8/jre/ubuntu
 File: Dockerfile.openj9.releases.full
 
-Tags: 8u262-b10-jre-openj9-0.21.0-windowsservercore-1809, 8-jre-openj9-windowsservercore-1809
-SharedTags: 8u262-b10-jre-openj9-0.21.0-windowsservercore, 8-jre-openj9-windowsservercore, 8u262-b10-jre-openj9-0.21.0, 8-jre-openj9
+Tags: 8u265-b01-jre-openj9-0.21.0-windowsservercore-1809, 8-jre-openj9-windowsservercore-1809
+SharedTags: 8u265-b01-jre-openj9-0.21.0-windowsservercore, 8-jre-openj9-windowsservercore, 8u265-b01-jre-openj9-0.21.0, 8-jre-openj9
 Architectures: windows-amd64
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
 Directory: 8/jre/windows/windowsservercore-1809
 File: Dockerfile.openj9.releases.full
 Constraints: windowsservercore-1809
 
-Tags: 8u262-b10-jre-openj9-0.21.0-windowsservercore-ltsc2016, 8-jre-openj9-windowsservercore-ltsc2016
-SharedTags: 8u262-b10-jre-openj9-0.21.0-windowsservercore, 8-jre-openj9-windowsservercore, 8u262-b10-jre-openj9-0.21.0, 8-jre-openj9
+Tags: 8u265-b01-jre-openj9-0.21.0-windowsservercore-ltsc2016, 8-jre-openj9-windowsservercore-ltsc2016
+SharedTags: 8u265-b01-jre-openj9-0.21.0-windowsservercore, 8-jre-openj9-windowsservercore, 8u265-b01-jre-openj9-0.21.0, 8-jre-openj9
 Architectures: windows-amd64
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
 Directory: 8/jre/windows/windowsservercore-ltsc2016
 File: Dockerfile.openj9.releases.full
 Constraints: windowsservercore-ltsc2016
@@ -96,14 +96,14 @@ Constraints: windowsservercore-ltsc2016
 Tags: 11.0.8_10-jdk-hotspot-bionic, 11-jdk-hotspot-bionic, 11-hotspot-bionic
 SharedTags: 11.0.8_10-jdk-hotspot, 11-jdk-hotspot, 11-hotspot
 Architectures: amd64, arm32v7, arm64v8, ppc64le, s390x
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
 Directory: 11/jdk/ubuntu
 File: Dockerfile.hotspot.releases.full
 
 Tags: 11.0.8_10-jdk-hotspot-windowsservercore-1809, 11-jdk-hotspot-windowsservercore-1809, 11-hotspot-windowsservercore-1809
 SharedTags: 11.0.8_10-jdk-hotspot-windowsservercore, 11-jdk-hotspot-windowsservercore, 11-hotspot-windowsservercore, 11.0.8_10-jdk-hotspot, 11-jdk-hotspot, 11-hotspot
 Architectures: windows-amd64
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
 Directory: 11/jdk/windows/windowsservercore-1809
 File: Dockerfile.hotspot.releases.full
 Constraints: windowsservercore-1809
@@ -111,22 +111,22 @@ Constraints: windowsservercore-1809
 Tags: 11.0.8_10-jdk-hotspot-windowsservercore-ltsc2016, 11-jdk-hotspot-windowsservercore-ltsc2016, 11-hotspot-windowsservercore-ltsc2016
 SharedTags: 11.0.8_10-jdk-hotspot-windowsservercore, 11-jdk-hotspot-windowsservercore, 11-hotspot-windowsservercore, 11.0.8_10-jdk-hotspot, 11-jdk-hotspot, 11-hotspot
 Architectures: windows-amd64
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
 Directory: 11/jdk/windows/windowsservercore-ltsc2016
 File: Dockerfile.hotspot.releases.full
 Constraints: windowsservercore-ltsc2016
 
 Tags: 11.0.8_10-jdk-openj9-0.21.0-bionic, 11-jdk-openj9-bionic, 11-openj9-bionic
 SharedTags: 11.0.8_10-jdk-openj9-0.21.0, 11-jdk-openj9, 11-openj9
-Architectures: amd64, ppc64le, s390x
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+Architectures: amd64, arm64v8, ppc64le, s390x
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
 Directory: 11/jdk/ubuntu
 File: Dockerfile.openj9.releases.full
 
 Tags: 11.0.8_10-jdk-openj9-0.21.0-windowsservercore-1809, 11-jdk-openj9-windowsservercore-1809, 11-openj9-windowsservercore-1809
 SharedTags: 11.0.8_10-jdk-openj9-0.21.0-windowsservercore, 11-jdk-openj9-windowsservercore, 11-openj9-windowsservercore, 11.0.8_10-jdk-openj9-0.21.0, 11-jdk-openj9, 11-openj9
 Architectures: windows-amd64
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
 Directory: 11/jdk/windows/windowsservercore-1809
 File: Dockerfile.openj9.releases.full
 Constraints: windowsservercore-1809
@@ -134,7 +134,7 @@ Constraints: windowsservercore-1809
 Tags: 11.0.8_10-jdk-openj9-0.21.0-windowsservercore-ltsc2016, 11-jdk-openj9-windowsservercore-ltsc2016, 11-openj9-windowsservercore-ltsc2016
 SharedTags: 11.0.8_10-jdk-openj9-0.21.0-windowsservercore, 11-jdk-openj9-windowsservercore, 11-openj9-windowsservercore, 11.0.8_10-jdk-openj9-0.21.0, 11-jdk-openj9, 11-openj9
 Architectures: windows-amd64
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
 Directory: 11/jdk/windows/windowsservercore-ltsc2016
 File: Dockerfile.openj9.releases.full
 Constraints: windowsservercore-ltsc2016
@@ -142,14 +142,14 @@ Constraints: windowsservercore-ltsc2016
 Tags: 11.0.8_10-jre-hotspot-bionic, 11-jre-hotspot-bionic
 SharedTags: 11.0.8_10-jre-hotspot, 11-jre-hotspot
 Architectures: amd64, arm32v7, arm64v8, ppc64le, s390x
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
 Directory: 11/jre/ubuntu
 File: Dockerfile.hotspot.releases.full
 
 Tags: 11.0.8_10-jre-hotspot-windowsservercore-1809, 11-jre-hotspot-windowsservercore-1809
 SharedTags: 11.0.8_10-jre-hotspot-windowsservercore, 11-jre-hotspot-windowsservercore, 11.0.8_10-jre-hotspot, 11-jre-hotspot
 Architectures: windows-amd64
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
 Directory: 11/jre/windows/windowsservercore-1809
 File: Dockerfile.hotspot.releases.full
 Constraints: windowsservercore-1809
@@ -157,30 +157,30 @@ Constraints: windowsservercore-1809
 Tags: 11.0.8_10-jre-hotspot-windowsservercore-ltsc2016, 11-jre-hotspot-windowsservercore-ltsc2016
 SharedTags: 11.0.8_10-jre-hotspot-windowsservercore, 11-jre-hotspot-windowsservercore, 11.0.8_10-jre-hotspot, 11-jre-hotspot
 Architectures: windows-amd64
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
 Directory: 11/jre/windows/windowsservercore-ltsc2016
 File: Dockerfile.hotspot.releases.full
 Constraints: windowsservercore-ltsc2016
 
 Tags: 11.0.8_10-jre-openj9-0.21.0-bionic, 11-jre-openj9-bionic
 SharedTags: 11.0.8_10-jre-openj9-0.21.0, 11-jre-openj9
-Architectures: amd64, ppc64le, s390x
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+Architectures: amd64, arm64v8, ppc64le, s390x
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
 Directory: 11/jre/ubuntu
 File: Dockerfile.openj9.releases.full
 
 Tags: 11.0.8_10-jre-openj9-0.21.0-windowsservercore-1809, 11-jre-openj9-windowsservercore-1809
 SharedTags: 11.0.8_10-jre-openj9-0.21.0-windowsservercore, 11-jre-openj9-windowsservercore, 11.0.8_10-jre-openj9-0.21.0, 11-jre-openj9
 Architectures: windows-amd64
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
 Directory: 11/jre/windows/windowsservercore-1809
 File: Dockerfile.openj9.releases.full
 Constraints: windowsservercore-1809
 
 Tags: 11.0.8_10-jre-openj9-0.21.0-windowsservercore-ltsc2016, 11-jre-openj9-windowsservercore-ltsc2016
-SharedTags: 11.0.8_10-jre-openj9-0.21.0-windowsservercore, 11-jre-openj9-windowsservercore, 11-openj9-windowsservercore, 11.0.8_10-jre-openj9-0.21.0, 11-jre-openj9
+SharedTags: 11.0.8_10-jre-openj9-0.21.0-windowsservercore, 11-jre-openj9-windowsservercore, 11.0.8_10-jre-openj9-0.21.0, 11-jre-openj9
 Architectures: windows-amd64
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
 Directory: 11/jre/windows/windowsservercore-ltsc2016
 File: Dockerfile.openj9.releases.full
 Constraints: windowsservercore-ltsc2016
@@ -188,22 +188,22 @@ Constraints: windowsservercore-ltsc2016
 Tags: 13.0.2_8-jdk-hotspot-bionic, 13-jdk-hotspot-bionic, 13-hotspot-bionic
 SharedTags: 13.0.2_8-jdk-hotspot, 13-jdk-hotspot, 13-hotspot
 Architectures: amd64, arm32v7, arm64v8, ppc64le, s390x
-GitCommit: 3b28dd3fb7230f208ed49da507432a01741b1259
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
 Directory: 13/jdk/ubuntu
 File: Dockerfile.hotspot.releases.full
 
 Tags: 13.0.2_8-jdk-hotspot-windowsservercore-1809, 13-jdk-hotspot-windowsservercore-1809, 13-hotspot-windowsservercore-1809
-SharedTags: 13.0.2_8-jdk-hotspot-windowsservercore, 13-jdk-hotspot-windowsservercore, 13-hotspot-windowsservercore, hotspot-windowsservercore, 13.0.2_8-jdk-hotspot, 13-jdk-hotspot, 13-hotspot
+SharedTags: 13.0.2_8-jdk-hotspot-windowsservercore, 13-jdk-hotspot-windowsservercore, 13-hotspot-windowsservercore, 13.0.2_8-jdk-hotspot, 13-jdk-hotspot, 13-hotspot
 Architectures: windows-amd64
-GitCommit: 3b28dd3fb7230f208ed49da507432a01741b1259
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
 Directory: 13/jdk/windows/windowsservercore-1809
 File: Dockerfile.hotspot.releases.full
 Constraints: windowsservercore-1809
 
 Tags: 13.0.2_8-jdk-hotspot-windowsservercore-ltsc2016, 13-jdk-hotspot-windowsservercore-ltsc2016, 13-hotspot-windowsservercore-ltsc2016
-SharedTags: 13.0.2_8-jdk-hotspot-windowsservercore, 13-jdk-hotspot-windowsservercore, 13-hotspot-windowsservercore, hotspot-windowsservercore, 13.0.2_8-jdk-hotspot, 13-jdk-hotspot, 13-hotspot
+SharedTags: 13.0.2_8-jdk-hotspot-windowsservercore, 13-jdk-hotspot-windowsservercore, 13-hotspot-windowsservercore, 13.0.2_8-jdk-hotspot, 13-jdk-hotspot, 13-hotspot
 Architectures: windows-amd64
-GitCommit: 3b28dd3fb7230f208ed49da507432a01741b1259
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
 Directory: 13/jdk/windows/windowsservercore-ltsc2016
 File: Dockerfile.hotspot.releases.full
 Constraints: windowsservercore-ltsc2016
@@ -211,22 +211,22 @@ Constraints: windowsservercore-ltsc2016
 Tags: 13.0.2_8-jdk-openj9-0.18.0-bionic, 13-jdk-openj9-bionic, 13-openj9-bionic
 SharedTags: 13.0.2_8-jdk-openj9-0.18.0, 13-jdk-openj9, 13-openj9
 Architectures: amd64, ppc64le, s390x
-GitCommit: 3b28dd3fb7230f208ed49da507432a01741b1259
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
 Directory: 13/jdk/ubuntu
 File: Dockerfile.openj9.releases.full
 
 Tags: 13.0.2_8-jdk-openj9-0.18.0-windowsservercore-1809, 13-jdk-openj9-windowsservercore-1809, 13-openj9-windowsservercore-1809
-SharedTags: 13.0.2_8-jdk-openj9-0.18.0-windowsservercore, 13-jdk-openj9-windowsservercore, 13-openj9-windowsservercore, openj9-windowsservercore, 13.0.2_8-jdk-openj9-0.18.0, 13-jdk-openj9, 13-openj9
+SharedTags: 13.0.2_8-jdk-openj9-0.18.0-windowsservercore, 13-jdk-openj9-windowsservercore, 13-openj9-windowsservercore, 13.0.2_8-jdk-openj9-0.18.0, 13-jdk-openj9, 13-openj9
 Architectures: windows-amd64
-GitCommit: 3b28dd3fb7230f208ed49da507432a01741b1259
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
 Directory: 13/jdk/windows/windowsservercore-1809
 File: Dockerfile.openj9.releases.full
 Constraints: windowsservercore-1809
 
 Tags: 13.0.2_8-jdk-openj9-0.18.0-windowsservercore-ltsc2016, 13-jdk-openj9-windowsservercore-ltsc2016, 13-openj9-windowsservercore-ltsc2016
-SharedTags: 13.0.2_8-jdk-openj9-0.18.0-windowsservercore, 13-jdk-openj9-windowsservercore, 13-openj9-windowsservercore, openj9-windowsservercore, 13.0.2_8-jdk-openj9-0.18.0, 13-jdk-openj9, 13-openj9
+SharedTags: 13.0.2_8-jdk-openj9-0.18.0-windowsservercore, 13-jdk-openj9-windowsservercore, 13-openj9-windowsservercore, 13.0.2_8-jdk-openj9-0.18.0, 13-jdk-openj9, 13-openj9
 Architectures: windows-amd64
-GitCommit: 3b28dd3fb7230f208ed49da507432a01741b1259
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
 Directory: 13/jdk/windows/windowsservercore-ltsc2016
 File: Dockerfile.openj9.releases.full
 Constraints: windowsservercore-ltsc2016
@@ -234,14 +234,14 @@ Constraints: windowsservercore-ltsc2016
 Tags: 13.0.2_8-jre-hotspot-bionic, 13-jre-hotspot-bionic
 SharedTags: 13.0.2_8-jre-hotspot, 13-jre-hotspot
 Architectures: amd64, arm64v8, ppc64le, s390x
-GitCommit: 3b28dd3fb7230f208ed49da507432a01741b1259
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
 Directory: 13/jre/ubuntu
 File: Dockerfile.hotspot.releases.full
 
 Tags: 13.0.2_8-jre-hotspot-windowsservercore-1809, 13-jre-hotspot-windowsservercore-1809
 SharedTags: 13.0.2_8-jre-hotspot-windowsservercore, 13-jre-hotspot-windowsservercore, 13.0.2_8-jre-hotspot, 13-jre-hotspot
 Architectures: windows-amd64
-GitCommit: 3b28dd3fb7230f208ed49da507432a01741b1259
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
 Directory: 13/jre/windows/windowsservercore-1809
 File: Dockerfile.hotspot.releases.full
 Constraints: windowsservercore-1809
@@ -249,7 +249,7 @@ Constraints: windowsservercore-1809
 Tags: 13.0.2_8-jre-hotspot-windowsservercore-ltsc2016, 13-jre-hotspot-windowsservercore-ltsc2016
 SharedTags: 13.0.2_8-jre-hotspot-windowsservercore, 13-jre-hotspot-windowsservercore, 13.0.2_8-jre-hotspot, 13-jre-hotspot
 Architectures: windows-amd64
-GitCommit: 3b28dd3fb7230f208ed49da507432a01741b1259
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
 Directory: 13/jre/windows/windowsservercore-ltsc2016
 File: Dockerfile.hotspot.releases.full
 Constraints: windowsservercore-ltsc2016
@@ -257,14 +257,14 @@ Constraints: windowsservercore-ltsc2016
 Tags: 13.0.2_8-jre-openj9-0.18.0-bionic, 13-jre-openj9-bionic
 SharedTags: 13.0.2_8-jre-openj9-0.18.0, 13-jre-openj9
 Architectures: amd64, ppc64le, s390x
-GitCommit: 3b28dd3fb7230f208ed49da507432a01741b1259
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
 Directory: 13/jre/ubuntu
 File: Dockerfile.openj9.releases.full
 
 Tags: 13.0.2_8-jre-openj9-0.18.0-windowsservercore-1809, 13-jre-openj9-windowsservercore-1809
 SharedTags: 13.0.2_8-jre-openj9-0.18.0-windowsservercore, 13-jre-openj9-windowsservercore, 13.0.2_8-jre-openj9-0.18.0, 13-jre-openj9
 Architectures: windows-amd64
-GitCommit: 3b28dd3fb7230f208ed49da507432a01741b1259
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
 Directory: 13/jre/windows/windowsservercore-1809
 File: Dockerfile.openj9.releases.full
 Constraints: windowsservercore-1809
@@ -272,99 +272,191 @@ Constraints: windowsservercore-1809
 Tags: 13.0.2_8-jre-openj9-0.18.0-windowsservercore-ltsc2016, 13-jre-openj9-windowsservercore-ltsc2016
 SharedTags: 13.0.2_8-jre-openj9-0.18.0-windowsservercore, 13-jre-openj9-windowsservercore, 13.0.2_8-jre-openj9-0.18.0, 13-jre-openj9
 Architectures: windows-amd64
-GitCommit: 3b28dd3fb7230f208ed49da507432a01741b1259
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
 Directory: 13/jre/windows/windowsservercore-ltsc2016
 File: Dockerfile.openj9.releases.full
 Constraints: windowsservercore-ltsc2016
 
-Tags: 14.0.2_8-jdk-hotspot-bionic, 14-jdk-hotspot-bionic, 14-hotspot-bionic, hotspot-bionic
-SharedTags: 14.0.2_8-jdk-hotspot, 14-jdk-hotspot, 14-hotspot, hotspot, latest
+Tags: 14.0.2_12-jdk-hotspot-bionic, 14-jdk-hotspot-bionic, 14-hotspot-bionic
+SharedTags: 14.0.2_12-jdk-hotspot, 14-jdk-hotspot, 14-hotspot
 Architectures: amd64, arm32v7, arm64v8, ppc64le, s390x
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
 Directory: 14/jdk/ubuntu
 File: Dockerfile.hotspot.releases.full
 
-Tags: 14.0.2_8-jdk-hotspot-windowsservercore-1809, 14-jdk-hotspot-windowsservercore-1809, 14-hotspot-windowsservercore-1809, hotspot-windowsservercore-1809
-SharedTags: 14.0.2_8-jdk-hotspot-windowsservercore, 14-jdk-hotspot-windowsservercore, 14-hotspot-windowsservercore, hotspot-windowsservercore, 14.0.2_8-jdk-hotspot, 14-jdk-hotspot, 14-hotspot, hotspot, latest
+Tags: 14.0.2_12-jdk-hotspot-windowsservercore-1809, 14-jdk-hotspot-windowsservercore-1809, 14-hotspot-windowsservercore-1809
+SharedTags: 14.0.2_12-jdk-hotspot-windowsservercore, 14-jdk-hotspot-windowsservercore, 14-hotspot-windowsservercore, 14.0.2_12-jdk-hotspot, 14-jdk-hotspot, 14-hotspot
 Architectures: windows-amd64
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
 Directory: 14/jdk/windows/windowsservercore-1809
 File: Dockerfile.hotspot.releases.full
 Constraints: windowsservercore-1809
 
-Tags: 14.0.2_8-jdk-hotspot-windowsservercore-ltsc2016, 14-jdk-hotspot-windowsservercore-ltsc2016, 14-hotspot-windowsservercore-ltsc2016, hotspot-windowsservercore-ltsc2016
-SharedTags: 14.0.2_8-jdk-hotspot-windowsservercore, 14-jdk-hotspot-windowsservercore, 14-hotspot-windowsservercore, hotspot-windowsservercore, 14.0.2_8-jdk-hotspot, 14-jdk-hotspot, 14-hotspot, hotspot, latest
+Tags: 14.0.2_12-jdk-hotspot-windowsservercore-ltsc2016, 14-jdk-hotspot-windowsservercore-ltsc2016, 14-hotspot-windowsservercore-ltsc2016
+SharedTags: 14.0.2_12-jdk-hotspot-windowsservercore, 14-jdk-hotspot-windowsservercore, 14-hotspot-windowsservercore, 14.0.2_12-jdk-hotspot, 14-jdk-hotspot, 14-hotspot
 Architectures: windows-amd64
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
 Directory: 14/jdk/windows/windowsservercore-ltsc2016
 File: Dockerfile.hotspot.releases.full
 Constraints: windowsservercore-ltsc2016
 
-Tags: 14.0.2_8-jdk-openj9-0.21.0-bionic, 14-jdk-openj9-bionic, 14-openj9-bionic, openj9-bionic
-SharedTags: 14.0.2_8-jdk-openj9-0.21.0, 14-jdk-openj9, 14-openj9, openj9
+Tags: 14.0.2_12-jdk-openj9-0.21.0-bionic, 14-jdk-openj9-bionic, 14-openj9-bionic
+SharedTags: 14.0.2_12-jdk-openj9-0.21.0, 14-jdk-openj9, 14-openj9
 Architectures: amd64, ppc64le, s390x
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
 Directory: 14/jdk/ubuntu
 File: Dockerfile.openj9.releases.full
 
-Tags: 14.0.2_8-jdk-openj9-0.21.0-windowsservercore-1809, 14-jdk-openj9-windowsservercore-1809, 14-openj9-windowsservercore-1809, openj9-windowsservercore-1809
-SharedTags: 14.0.2_8-jdk-openj9-0.21.0-windowsservercore, 14-jdk-openj9-windowsservercore, 14-openj9-windowsservercore, openj9-windowsservercore, 14.0.2_8-jdk-openj9-0.21.0, 14-jdk-openj9, 14-openj9, openj9
+Tags: 14.0.2_12-jdk-openj9-0.21.0-windowsservercore-1809, 14-jdk-openj9-windowsservercore-1809, 14-openj9-windowsservercore-1809
+SharedTags: 14.0.2_12-jdk-openj9-0.21.0-windowsservercore, 14-jdk-openj9-windowsservercore, 14-openj9-windowsservercore, 14.0.2_12-jdk-openj9-0.21.0, 14-jdk-openj9, 14-openj9
 Architectures: windows-amd64
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
 Directory: 14/jdk/windows/windowsservercore-1809
 File: Dockerfile.openj9.releases.full
 Constraints: windowsservercore-1809
 
-Tags: 14.0.2_8-jdk-openj9-0.21.0-windowsservercore-ltsc2016, 14-jdk-openj9-windowsservercore-ltsc2016, 14-openj9-windowsservercore-ltsc2016, openj9-windowsservercore-ltsc2016
-SharedTags: 14.0.2_8-jdk-openj9-0.21.0-windowsservercore, 14-jdk-openj9-windowsservercore, 14-openj9-windowsservercore, openj9-windowsservercore, 14.0.2_8-jdk-openj9-0.21.0, 14-jdk-openj9, 14-openj9, openj9
+Tags: 14.0.2_12-jdk-openj9-0.21.0-windowsservercore-ltsc2016, 14-jdk-openj9-windowsservercore-ltsc2016, 14-openj9-windowsservercore-ltsc2016
+SharedTags: 14.0.2_12-jdk-openj9-0.21.0-windowsservercore, 14-jdk-openj9-windowsservercore, 14-openj9-windowsservercore, 14.0.2_12-jdk-openj9-0.21.0, 14-jdk-openj9, 14-openj9
 Architectures: windows-amd64
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
 Directory: 14/jdk/windows/windowsservercore-ltsc2016
 File: Dockerfile.openj9.releases.full
 Constraints: windowsservercore-ltsc2016
 
-Tags: 14.0.2_8-jre-hotspot-bionic, 14-jre-hotspot-bionic
-SharedTags: 14.0.2_8-jre-hotspot, 14-jre-hotspot
+Tags: 14.0.2_12-jre-hotspot-bionic, 14-jre-hotspot-bionic
+SharedTags: 14.0.2_12-jre-hotspot, 14-jre-hotspot
 Architectures: amd64, arm32v7, arm64v8, ppc64le, s390x
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
 Directory: 14/jre/ubuntu
 File: Dockerfile.hotspot.releases.full
 
-Tags: 14.0.2_8-jre-hotspot-windowsservercore-1809, 14-jre-hotspot-windowsservercore-1809
-SharedTags: 14.0.2_8-jre-hotspot-windowsservercore, 14-jre-hotspot-windowsservercore, 14.0.2_8-jre-hotspot, 14-jre-hotspot
+Tags: 14.0.2_12-jre-hotspot-windowsservercore-1809, 14-jre-hotspot-windowsservercore-1809
+SharedTags: 14.0.2_12-jre-hotspot-windowsservercore, 14-jre-hotspot-windowsservercore, 14.0.2_12-jre-hotspot, 14-jre-hotspot
 Architectures: windows-amd64
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
 Directory: 14/jre/windows/windowsservercore-1809
 File: Dockerfile.hotspot.releases.full
 Constraints: windowsservercore-1809
 
-Tags: 14.0.2_8-jre-hotspot-windowsservercore-ltsc2016, 14-jre-hotspot-windowsservercore-ltsc2016
-SharedTags: 14.0.2_8-jre-hotspot-windowsservercore, 14-jre-hotspot-windowsservercore, 14.0.2_8-jre-hotspot, 14-jre-hotspot
+Tags: 14.0.2_12-jre-hotspot-windowsservercore-ltsc2016, 14-jre-hotspot-windowsservercore-ltsc2016
+SharedTags: 14.0.2_12-jre-hotspot-windowsservercore, 14-jre-hotspot-windowsservercore, 14.0.2_12-jre-hotspot, 14-jre-hotspot
 Architectures: windows-amd64
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
 Directory: 14/jre/windows/windowsservercore-ltsc2016
 File: Dockerfile.hotspot.releases.full
 Constraints: windowsservercore-ltsc2016
 
-Tags: 14.0.2_8-jre-openj9-0.21.0-bionic, 14-jre-openj9-bionic
-SharedTags: 14.0.2_8-jre-openj9-0.21.0, 14-jre-openj9
+Tags: 14.0.2_12-jre-openj9-0.21.0-bionic, 14-jre-openj9-bionic
+SharedTags: 14.0.2_12-jre-openj9-0.21.0, 14-jre-openj9
 Architectures: amd64, ppc64le, s390x
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
 Directory: 14/jre/ubuntu
 File: Dockerfile.openj9.releases.full
 
-Tags: 14.0.2_8-jre-openj9-0.21.0-windowsservercore-1809, 14-jre-openj9-windowsservercore-1809
-SharedTags: 14.0.2_8-jre-openj9-0.21.0-windowsservercore, 14-jre-openj9-windowsservercore, 14.0.2_8-jre-openj9-0.21.0, 14-jre-openj9
+Tags: 14.0.2_12-jre-openj9-0.21.0-windowsservercore-1809, 14-jre-openj9-windowsservercore-1809
+SharedTags: 14.0.2_12-jre-openj9-0.21.0-windowsservercore, 14-jre-openj9-windowsservercore, 14.0.2_12-jre-openj9-0.21.0, 14-jre-openj9
 Architectures: windows-amd64
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
 Directory: 14/jre/windows/windowsservercore-1809
 File: Dockerfile.openj9.releases.full
 Constraints: windowsservercore-1809
 
-Tags: 14.0.2_8-jre-openj9-0.21.0-windowsservercore-ltsc2016, 14-jre-openj9-windowsservercore-ltsc2016
-SharedTags: 14.0.2_8-jre-openj9-0.21.0-windowsservercore, 14-jre-openj9-windowsservercore, 14.0.2_8-jre-openj9-0.21.0, 14-jre-openj9
+Tags: 14.0.2_12-jre-openj9-0.21.0-windowsservercore-ltsc2016, 14-jre-openj9-windowsservercore-ltsc2016
+SharedTags: 14.0.2_12-jre-openj9-0.21.0-windowsservercore, 14-jre-openj9-windowsservercore, 14.0.2_12-jre-openj9-0.21.0, 14-jre-openj9
 Architectures: windows-amd64
-GitCommit: 2ad867c3b57069823d3958515a55d227d3153da2
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
 Directory: 14/jre/windows/windowsservercore-ltsc2016
 File: Dockerfile.openj9.releases.full
 Constraints: windowsservercore-ltsc2016
+
+Tags: 15_36-jdk-hotspot-bionic, 15-jdk-hotspot-bionic, 15-hotspot-bionic, hotspot-bionic
+SharedTags: 15_36-jdk-hotspot, 15-jdk-hotspot, 15-hotspot, hotspot, latest
+Architectures: amd64, arm32v7, arm64v8, ppc64le, s390x
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
+Directory: 15/jdk/ubuntu
+File: Dockerfile.hotspot.releases.full
+
+Tags: 15_36-jdk-hotspot-windowsservercore-1809, 15-jdk-hotspot-windowsservercore-1809, 15-hotspot-windowsservercore-1809, hotspot-windowsservercore-1809
+SharedTags: 15_36-jdk-hotspot-windowsservercore, 15-jdk-hotspot-windowsservercore, 15-hotspot-windowsservercore, hotspot-windowsservercore, 15_36-jdk-hotspot, 15-jdk-hotspot, 15-hotspot, hotspot, latest
+Architectures: windows-amd64
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
+Directory: 15/jdk/windows/windowsservercore-1809
+File: Dockerfile.hotspot.releases.full
+Constraints: windowsservercore-1809
+
+Tags: 15_36-jdk-hotspot-windowsservercore-ltsc2016, 15-jdk-hotspot-windowsservercore-ltsc2016, 15-hotspot-windowsservercore-ltsc2016, hotspot-windowsservercore-ltsc2016
+SharedTags: 15_36-jdk-hotspot-windowsservercore, 15-jdk-hotspot-windowsservercore, 15-hotspot-windowsservercore, hotspot-windowsservercore, 15_36-jdk-hotspot, 15-jdk-hotspot, 15-hotspot, hotspot, latest
+Architectures: windows-amd64
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
+Directory: 15/jdk/windows/windowsservercore-ltsc2016
+File: Dockerfile.hotspot.releases.full
+Constraints: windowsservercore-ltsc2016
+
+Tags: 15_36-jdk-openj9-0.22.0-bionic, 15-jdk-openj9-bionic, 15-openj9-bionic, openj9-bionic
+SharedTags: 15_36-jdk-openj9-0.22.0, 15-jdk-openj9, 15-openj9, openj9
+Architectures: amd64, ppc64le, s390x
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
+Directory: 15/jdk/ubuntu
+File: Dockerfile.openj9.releases.full
+
+Tags: 15_36-jdk-openj9-0.22.0-windowsservercore-1809, 15-jdk-openj9-windowsservercore-1809, 15-openj9-windowsservercore-1809, openj9-windowsservercore-1809
+SharedTags: 15_36-jdk-openj9-0.22.0-windowsservercore, 15-jdk-openj9-windowsservercore, 15-openj9-windowsservercore, openj9-windowsservercore, 15_36-jdk-openj9-0.22.0, 15-jdk-openj9, 15-openj9, openj9
+Architectures: windows-amd64
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
+Directory: 15/jdk/windows/windowsservercore-1809
+File: Dockerfile.openj9.releases.full
+Constraints: windowsservercore-1809
+
+Tags: 15_36-jdk-openj9-0.22.0-windowsservercore-ltsc2016, 15-jdk-openj9-windowsservercore-ltsc2016, 15-openj9-windowsservercore-ltsc2016, openj9-windowsservercore-ltsc2016
+SharedTags: 15_36-jdk-openj9-0.22.0-windowsservercore, 15-jdk-openj9-windowsservercore, 15-openj9-windowsservercore, openj9-windowsservercore, 15_36-jdk-openj9-0.22.0, 15-jdk-openj9, 15-openj9, openj9
+Architectures: windows-amd64
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
+Directory: 15/jdk/windows/windowsservercore-ltsc2016
+File: Dockerfile.openj9.releases.full
+Constraints: windowsservercore-ltsc2016
+
+Tags: 15_36-jre-hotspot-bionic, 15-jre-hotspot-bionic
+SharedTags: 15_36-jre-hotspot, 15-jre-hotspot, latest
+Architectures: amd64, arm32v7, arm64v8, ppc64le, s390x
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
+Directory: 15/jre/ubuntu
+File: Dockerfile.hotspot.releases.full
+
+Tags: 15_36-jre-hotspot-windowsservercore-1809, 15-jre-hotspot-windowsservercore-1809
+SharedTags: 15_36-jre-hotspot-windowsservercore, 15-jre-hotspot-windowsservercore, 15_36-jre-hotspot, 15-jre-hotspot, latest
+Architectures: windows-amd64
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
+Directory: 15/jre/windows/windowsservercore-1809
+File: Dockerfile.hotspot.releases.full
+Constraints: windowsservercore-1809
+
+Tags: 15_36-jre-hotspot-windowsservercore-ltsc2016, 15-jre-hotspot-windowsservercore-ltsc2016
+SharedTags: 15_36-jre-hotspot-windowsservercore, 15-jre-hotspot-windowsservercore, 15_36-jre-hotspot, 15-jre-hotspot, latest
+Architectures: windows-amd64
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
+Directory: 15/jre/windows/windowsservercore-ltsc2016
+File: Dockerfile.hotspot.releases.full
+Constraints: windowsservercore-ltsc2016
+
+Tags: 15_36-jre-openj9-0.22.0-bionic, 15-jre-openj9-bionic
+SharedTags: 15_36-jre-openj9-0.22.0, 15-jre-openj9
+Architectures: amd64, ppc64le, s390x
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
+Directory: 15/jre/ubuntu
+File: Dockerfile.openj9.releases.full
+
+Tags: 15_36-jre-openj9-0.22.0-windowsservercore-1809, 15-jre-openj9-windowsservercore-1809
+SharedTags: 15_36-jre-openj9-0.22.0-windowsservercore, 15-jre-openj9-windowsservercore, 15_36-jre-openj9-0.22.0, 15-jre-openj9
+Architectures: windows-amd64
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
+Directory: 15/jre/windows/windowsservercore-1809
+File: Dockerfile.openj9.releases.full
+Constraints: windowsservercore-1809
+
+Tags: 15_36-jre-openj9-0.22.0-windowsservercore-ltsc2016, 15-jre-openj9-windowsservercore-ltsc2016
+SharedTags: 15_36-jre-openj9-0.22.0-windowsservercore, 15-jre-openj9-windowsservercore, 15_36-jre-openj9-0.22.0, 15-jre-openj9
+Architectures: windows-amd64
+GitCommit: deab34cef2565399c54cb4ab47fb06a54007b3f6
+Directory: 15/jre/windows/windowsservercore-ltsc2016
+File: Dockerfile.openj9.releases.full
+Constraints: windowsservercore-ltsc2016
diff --git a/_bashbrew-list b/_bashbrew-list
index e623e63..20af45a 100644
--- a/_bashbrew-list
+++ b/_bashbrew-list
@@ -1,23 +1,23 @@
-adoptopenjdk:8u262-b10-jdk-hotspot
-adoptopenjdk:8u262-b10-jdk-hotspot-bionic
-adoptopenjdk:8u262-b10-jdk-hotspot-windowsservercore
-adoptopenjdk:8u262-b10-jdk-hotspot-windowsservercore-1809
-adoptopenjdk:8u262-b10-jdk-hotspot-windowsservercore-ltsc2016
-adoptopenjdk:8u262-b10-jdk-openj9-0.21.0
-adoptopenjdk:8u262-b10-jdk-openj9-0.21.0-bionic
-adoptopenjdk:8u262-b10-jdk-openj9-0.21.0-windowsservercore
-adoptopenjdk:8u262-b10-jdk-openj9-0.21.0-windowsservercore-1809
-adoptopenjdk:8u262-b10-jdk-openj9-0.21.0-windowsservercore-ltsc2016
-adoptopenjdk:8u262-b10-jre-hotspot
-adoptopenjdk:8u262-b10-jre-hotspot-bionic
-adoptopenjdk:8u262-b10-jre-hotspot-windowsservercore
-adoptopenjdk:8u262-b10-jre-hotspot-windowsservercore-1809
-adoptopenjdk:8u262-b10-jre-hotspot-windowsservercore-ltsc2016
-adoptopenjdk:8u262-b10-jre-openj9-0.21.0
-adoptopenjdk:8u262-b10-jre-openj9-0.21.0-bionic
-adoptopenjdk:8u262-b10-jre-openj9-0.21.0-windowsservercore
-adoptopenjdk:8u262-b10-jre-openj9-0.21.0-windowsservercore-1809
-adoptopenjdk:8u262-b10-jre-openj9-0.21.0-windowsservercore-ltsc2016
+adoptopenjdk:8u265-b01-jdk-hotspot
+adoptopenjdk:8u265-b01-jdk-hotspot-bionic
+adoptopenjdk:8u265-b01-jdk-hotspot-windowsservercore
+adoptopenjdk:8u265-b01-jdk-hotspot-windowsservercore-1809
+adoptopenjdk:8u265-b01-jdk-hotspot-windowsservercore-ltsc2016
+adoptopenjdk:8u265-b01-jdk-openj9-0.21.0
+adoptopenjdk:8u265-b01-jdk-openj9-0.21.0-bionic
+adoptopenjdk:8u265-b01-jdk-openj9-0.21.0-windowsservercore
+adoptopenjdk:8u265-b01-jdk-openj9-0.21.0-windowsservercore-1809
+adoptopenjdk:8u265-b01-jdk-openj9-0.21.0-windowsservercore-ltsc2016
+adoptopenjdk:8u265-b01-jre-hotspot
+adoptopenjdk:8u265-b01-jre-hotspot-bionic
+adoptopenjdk:8u265-b01-jre-hotspot-windowsservercore
+adoptopenjdk:8u265-b01-jre-hotspot-windowsservercore-1809
+adoptopenjdk:8u265-b01-jre-hotspot-windowsservercore-ltsc2016
+adoptopenjdk:8u265-b01-jre-openj9-0.21.0
+adoptopenjdk:8u265-b01-jre-openj9-0.21.0-bionic
+adoptopenjdk:8u265-b01-jre-openj9-0.21.0-windowsservercore
+adoptopenjdk:8u265-b01-jre-openj9-0.21.0-windowsservercore-1809
+adoptopenjdk:8u265-b01-jre-openj9-0.21.0-windowsservercore-ltsc2016
 adoptopenjdk:8-hotspot
 adoptopenjdk:8-hotspot-bionic
 adoptopenjdk:8-hotspot-windowsservercore
@@ -178,26 +178,76 @@ adoptopenjdk:14-openj9-bionic
 adoptopenjdk:14-openj9-windowsservercore
 adoptopenjdk:14-openj9-windowsservercore-1809
 adoptopenjdk:14-openj9-windowsservercore-ltsc2016
-adoptopenjdk:14.0.2_8-jdk-hotspot
-adoptopenjdk:14.0.2_8-jdk-hotspot-bionic
-adoptopenjdk:14.0.2_8-jdk-hotspot-windowsservercore
-adoptopenjdk:14.0.2_8-jdk-hotspot-windowsservercore-1809
-adoptopenjdk:14.0.2_8-jdk-hotspot-windowsservercore-ltsc2016
-adoptopenjdk:14.0.2_8-jdk-openj9-0.21.0
-adoptopenjdk:14.0.2_8-jdk-openj9-0.21.0-bionic
-adoptopenjdk:14.0.2_8-jdk-openj9-0.21.0-windowsservercore
-adoptopenjdk:14.0.2_8-jdk-openj9-0.21.0-windowsservercore-1809
-adoptopenjdk:14.0.2_8-jdk-openj9-0.21.0-windowsservercore-ltsc2016
-adoptopenjdk:14.0.2_8-jre-hotspot
-adoptopenjdk:14.0.2_8-jre-hotspot-bionic
-adoptopenjdk:14.0.2_8-jre-hotspot-windowsservercore
-adoptopenjdk:14.0.2_8-jre-hotspot-windowsservercore-1809
-adoptopenjdk:14.0.2_8-jre-hotspot-windowsservercore-ltsc2016
-adoptopenjdk:14.0.2_8-jre-openj9-0.21.0
-adoptopenjdk:14.0.2_8-jre-openj9-0.21.0-bionic
-adoptopenjdk:14.0.2_8-jre-openj9-0.21.0-windowsservercore
-adoptopenjdk:14.0.2_8-jre-openj9-0.21.0-windowsservercore-1809
-adoptopenjdk:14.0.2_8-jre-openj9-0.21.0-windowsservercore-ltsc2016
+adoptopenjdk:14.0.2_12-jdk-hotspot
+adoptopenjdk:14.0.2_12-jdk-hotspot-bionic
+adoptopenjdk:14.0.2_12-jdk-hotspot-windowsservercore
+adoptopenjdk:14.0.2_12-jdk-hotspot-windowsservercore-1809
+adoptopenjdk:14.0.2_12-jdk-hotspot-windowsservercore-ltsc2016
+adoptopenjdk:14.0.2_12-jdk-openj9-0.21.0
+adoptopenjdk:14.0.2_12-jdk-openj9-0.21.0-bionic
+adoptopenjdk:14.0.2_12-jdk-openj9-0.21.0-windowsservercore
+adoptopenjdk:14.0.2_12-jdk-openj9-0.21.0-windowsservercore-1809
+adoptopenjdk:14.0.2_12-jdk-openj9-0.21.0-windowsservercore-ltsc2016
+adoptopenjdk:14.0.2_12-jre-hotspot
+adoptopenjdk:14.0.2_12-jre-hotspot-bionic
+adoptopenjdk:14.0.2_12-jre-hotspot-windowsservercore
+adoptopenjdk:14.0.2_12-jre-hotspot-windowsservercore-1809
+adoptopenjdk:14.0.2_12-jre-hotspot-windowsservercore-ltsc2016
+adoptopenjdk:14.0.2_12-jre-openj9-0.21.0
+adoptopenjdk:14.0.2_12-jre-openj9-0.21.0-bionic
+adoptopenjdk:14.0.2_12-jre-openj9-0.21.0-windowsservercore
+adoptopenjdk:14.0.2_12-jre-openj9-0.21.0-windowsservercore-1809
+adoptopenjdk:14.0.2_12-jre-openj9-0.21.0-windowsservercore-ltsc2016
+adoptopenjdk:15-hotspot
+adoptopenjdk:15-hotspot-bionic
+adoptopenjdk:15-hotspot-windowsservercore
+adoptopenjdk:15-hotspot-windowsservercore-1809
+adoptopenjdk:15-hotspot-windowsservercore-ltsc2016
+adoptopenjdk:15-jdk-hotspot
+adoptopenjdk:15-jdk-hotspot-bionic
+adoptopenjdk:15-jdk-hotspot-windowsservercore
+adoptopenjdk:15-jdk-hotspot-windowsservercore-1809
+adoptopenjdk:15-jdk-hotspot-windowsservercore-ltsc2016
+adoptopenjdk:15-jdk-openj9
+adoptopenjdk:15-jdk-openj9-bionic
+adoptopenjdk:15-jdk-openj9-windowsservercore
+adoptopenjdk:15-jdk-openj9-windowsservercore-1809
+adoptopenjdk:15-jdk-openj9-windowsservercore-ltsc2016
+adoptopenjdk:15-jre-hotspot
+adoptopenjdk:15-jre-hotspot-bionic
+adoptopenjdk:15-jre-hotspot-windowsservercore
+adoptopenjdk:15-jre-hotspot-windowsservercore-1809
+adoptopenjdk:15-jre-hotspot-windowsservercore-ltsc2016
+adoptopenjdk:15-jre-openj9
+adoptopenjdk:15-jre-openj9-bionic
+adoptopenjdk:15-jre-openj9-windowsservercore
+adoptopenjdk:15-jre-openj9-windowsservercore-1809
+adoptopenjdk:15-jre-openj9-windowsservercore-ltsc2016
+adoptopenjdk:15-openj9
+adoptopenjdk:15-openj9-bionic
+adoptopenjdk:15-openj9-windowsservercore
+adoptopenjdk:15-openj9-windowsservercore-1809
+adoptopenjdk:15-openj9-windowsservercore-ltsc2016
+adoptopenjdk:15_36-jdk-hotspot
+adoptopenjdk:15_36-jdk-hotspot-bionic
+adoptopenjdk:15_36-jdk-hotspot-windowsservercore
+adoptopenjdk:15_36-jdk-hotspot-windowsservercore-1809
+adoptopenjdk:15_36-jdk-hotspot-windowsservercore-ltsc2016
+adoptopenjdk:15_36-jdk-openj9-0.22.0
+adoptopenjdk:15_36-jdk-openj9-0.22.0-bionic
+adoptopenjdk:15_36-jdk-openj9-0.22.0-windowsservercore
+adoptopenjdk:15_36-jdk-openj9-0.22.0-windowsservercore-1809
+adoptopenjdk:15_36-jdk-openj9-0.22.0-windowsservercore-ltsc2016
+adoptopenjdk:15_36-jre-hotspot
+adoptopenjdk:15_36-jre-hotspot-bionic
+adoptopenjdk:15_36-jre-hotspot-windowsservercore
+adoptopenjdk:15_36-jre-hotspot-windowsservercore-1809
+adoptopenjdk:15_36-jre-hotspot-windowsservercore-ltsc2016
+adoptopenjdk:15_36-jre-openj9-0.22.0
+adoptopenjdk:15_36-jre-openj9-0.22.0-bionic
+adoptopenjdk:15_36-jre-openj9-0.22.0-windowsservercore
+adoptopenjdk:15_36-jre-openj9-0.22.0-windowsservercore-1809
+adoptopenjdk:15_36-jre-openj9-0.22.0-windowsservercore-ltsc2016
 adoptopenjdk:hotspot
 adoptopenjdk:hotspot-bionic
 adoptopenjdk:hotspot-windowsservercore
diff --git a/adoptopenjdk_11-hotspot-bionic/Dockerfile.hotspot.releases.full b/adoptopenjdk_11-hotspot-bionic/Dockerfile.hotspot.releases.full
index db96e3c..823d393 100644
--- a/adoptopenjdk_11-hotspot-bionic/Dockerfile.hotspot.releases.full
+++ b/adoptopenjdk_11-hotspot-bionic/Dockerfile.hotspot.releases.full
@@ -17,7 +17,7 @@
 # limitations under the License.
 #
 
-FROM ubuntu:18.04
+FROM ubuntu:20.04
 
 ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
 
diff --git a/adoptopenjdk_11-jre-hotspot-bionic/Dockerfile.hotspot.releases.full b/adoptopenjdk_11-jre-hotspot-bionic/Dockerfile.hotspot.releases.full
index 4f42896..2e9d6fa 100644
--- a/adoptopenjdk_11-jre-hotspot-bionic/Dockerfile.hotspot.releases.full
+++ b/adoptopenjdk_11-jre-hotspot-bionic/Dockerfile.hotspot.releases.full
@@ -17,7 +17,7 @@
 # limitations under the License.
 #
 
-FROM ubuntu:18.04
+FROM ubuntu:20.04
 
 ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
 
diff --git a/adoptopenjdk_11-jre-openj9-bionic/Dockerfile.openj9.releases.full b/adoptopenjdk_11-jre-openj9-bionic/Dockerfile.openj9.releases.full
index c5d00fb..5a8caab 100644
--- a/adoptopenjdk_11-jre-openj9-bionic/Dockerfile.openj9.releases.full
+++ b/adoptopenjdk_11-jre-openj9-bionic/Dockerfile.openj9.releases.full
@@ -17,7 +17,7 @@
 # limitations under the License.
 #
 
-FROM ubuntu:18.04
+FROM ubuntu:20.04
 
 ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
 
@@ -62,4 +62,65 @@ RUN set -eux; \
 
 ENV JAVA_HOME=/opt/java/openjdk \
     PATH="/opt/java/openjdk/bin:$PATH"
-ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+UseContainerSupport -XX:+IdleTuningCompactOnIdle -XX:+IdleTuningGcOnIdle"
+ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+IdleTuningGcOnIdle"
+
+# Create OpenJ9 SharedClassCache (SCC) for bootclasses to improve the java startup.
+# Downloads and runs tomcat to generate SCC for bootclasses at /opt/java/.scc/openj9_system_scc
+# Does a dry-run and calculates the optimal cache size and recreates the cache with the appropriate size.
+# With SCC, OpenJ9 startup is improved ~50% with an increase in image size of ~14MB
+# Application classes can be create a separate cache layer with this as the base for further startup improvement
+
+RUN set -eux; \
+    unset OPENJ9_JAVA_OPTIONS; \
+    SCC_SIZE="50m"; \
+    SCC_GEN_RUNS_COUNT=3; \
+    DOWNLOAD_PATH_TOMCAT=/tmp/tomcat; \
+    INSTALL_PATH_TOMCAT=/opt/tomcat-home; \
+    TOMCAT_CHECKSUM="0db27185d9fc3174f2c670f814df3dda8a008b89d1a38a5d96cbbe119767ebfb1cf0bce956b27954aee9be19c4a7b91f2579d967932207976322033a86075f98"; \
+    TOMCAT_DWNLD_URL="https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.35/bin/apache-tomcat-9.0.35.tar.gz"; \
+    \
+    mkdir -p "${DOWNLOAD_PATH_TOMCAT}" "${INSTALL_PATH_TOMCAT}"; \
+    curl -LfsSo "${DOWNLOAD_PATH_TOMCAT}"/tomcat.tar.gz "${TOMCAT_DWNLD_URL}"; \
+    echo "${TOMCAT_CHECKSUM} *${DOWNLOAD_PATH_TOMCAT}/tomcat.tar.gz" | sha512sum -c -; \
+    tar -xf "${DOWNLOAD_PATH_TOMCAT}"/tomcat.tar.gz -C "${INSTALL_PATH_TOMCAT}" --strip-components=1; \
+    rm -rf "${DOWNLOAD_PATH_TOMCAT}"; \
+    \
+    java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal,createLayer -Xscmx$SCC_SIZE -version; \
+    export OPENJ9_JAVA_OPTIONS="-Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal"; \
+    for i in $(seq 0 $SCC_GEN_RUNS_COUNT); \
+    do \
+        "${INSTALL_PATH_TOMCAT}"/bin/startup.sh; \
+        sleep 5; \
+        "${INSTALL_PATH_TOMCAT}"/bin/shutdown.sh; \
+        sleep 5; \
+    done; \
+    \
+    FULL=$( (java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,printallStats 2>&1 || true) | awk '/^Cache is [0-9.]*% .*full/ {print substr($3, 1, length($3)-1)}'); \
+    DST_CACHE=$(java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,destroy 2>&1 || true); \
+    SCC_SIZE=$(echo $SCC_SIZE | sed 's/.$//'); \
+    SCC_SIZE=$(awk "BEGIN {print int($SCC_SIZE * $FULL / 100.0)}"); \
+    [ "${SCC_SIZE}" -eq 0 ] && SCC_SIZE=1; \
+    SCC_SIZE="${SCC_SIZE}m"; \
+    java -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal,createLayer -Xscmx$SCC_SIZE -version; \
+    unset OPENJ9_JAVA_OPTIONS; \
+    \
+    export OPENJ9_JAVA_OPTIONS="-Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal"; \
+    for i in $(seq 0 $SCC_GEN_RUNS_COUNT); \
+    do \
+        "${INSTALL_PATH_TOMCAT}"/bin/startup.sh; \
+        sleep 5; \
+        "${INSTALL_PATH_TOMCAT}"/bin/shutdown.sh; \
+        sleep 5; \
+    done; \
+    \
+    FULL=$( (java -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,printallStats 2>&1 || true) | awk '/^Cache is [0-9.]*% .*full/ {print substr($3, 1, length($3)-1)}'); \
+    echo "SCC layer is $FULL% full."; \
+    rm -rf "${INSTALL_PATH_TOMCAT}"; \
+    if [ -d "/opt/java/.scc" ]; then \
+          chmod -R 0777 /opt/java/.scc; \
+    fi; \
+    \
+    echo "SCC generation phase completed";
+
+ENV OPENJ9_JAVA_OPTIONS="-Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,readonly,nonFatal"
+
diff --git a/adoptopenjdk_11-jre-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full b/adoptopenjdk_11-jre-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
index 61278bc..00b380f 100644
--- a/adoptopenjdk_11-jre-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
+++ b/adoptopenjdk_11-jre-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
@@ -41,4 +41,4 @@ RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk11-binaries/
     Remove-Item -Path C:\temp -Recurse | Out-Null; \
     Write-Host 'Removing openjdk.msi ...'; \
     Remove-Item openjdk.msi -Force
-ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+UseContainerSupport -XX:+IdleTuningCompactOnIdle -XX:+IdleTuningGcOnIdle"
+ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+IdleTuningGcOnIdle"
diff --git a/adoptopenjdk_11-jre-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full b/adoptopenjdk_11-jre-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
index a9bc9eb..846a7c0 100644
--- a/adoptopenjdk_11-jre-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
+++ b/adoptopenjdk_11-jre-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
@@ -41,4 +41,4 @@ RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk11-binaries/
     Remove-Item -Path C:\temp -Recurse | Out-Null; \
     Write-Host 'Removing openjdk.msi ...'; \
     Remove-Item openjdk.msi -Force
-ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+UseContainerSupport -XX:+IdleTuningCompactOnIdle -XX:+IdleTuningGcOnIdle"
+ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+IdleTuningGcOnIdle"
diff --git a/adoptopenjdk_11-openj9-bionic/Dockerfile.openj9.releases.full b/adoptopenjdk_11-openj9-bionic/Dockerfile.openj9.releases.full
index 6ff8d3a..b838662 100644
--- a/adoptopenjdk_11-openj9-bionic/Dockerfile.openj9.releases.full
+++ b/adoptopenjdk_11-openj9-bionic/Dockerfile.openj9.releases.full
@@ -17,7 +17,7 @@
 # limitations under the License.
 #
 
-FROM ubuntu:18.04
+FROM ubuntu:20.04
 
 ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
 
@@ -62,5 +62,66 @@ RUN set -eux; \
 
 ENV JAVA_HOME=/opt/java/openjdk \
     PATH="/opt/java/openjdk/bin:$PATH"
-ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+UseContainerSupport -XX:+IdleTuningCompactOnIdle -XX:+IdleTuningGcOnIdle"
+ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+IdleTuningGcOnIdle"
+
+# Create OpenJ9 SharedClassCache (SCC) for bootclasses to improve the java startup.
+# Downloads and runs tomcat to generate SCC for bootclasses at /opt/java/.scc/openj9_system_scc
+# Does a dry-run and calculates the optimal cache size and recreates the cache with the appropriate size.
+# With SCC, OpenJ9 startup is improved ~50% with an increase in image size of ~14MB
+# Application classes can be create a separate cache layer with this as the base for further startup improvement
+
+RUN set -eux; \
+    unset OPENJ9_JAVA_OPTIONS; \
+    SCC_SIZE="50m"; \
+    SCC_GEN_RUNS_COUNT=3; \
+    DOWNLOAD_PATH_TOMCAT=/tmp/tomcat; \
+    INSTALL_PATH_TOMCAT=/opt/tomcat-home; \
+    TOMCAT_CHECKSUM="0db27185d9fc3174f2c670f814df3dda8a008b89d1a38a5d96cbbe119767ebfb1cf0bce956b27954aee9be19c4a7b91f2579d967932207976322033a86075f98"; \
+    TOMCAT_DWNLD_URL="https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.35/bin/apache-tomcat-9.0.35.tar.gz"; \
+    \
+    mkdir -p "${DOWNLOAD_PATH_TOMCAT}" "${INSTALL_PATH_TOMCAT}"; \
+    curl -LfsSo "${DOWNLOAD_PATH_TOMCAT}"/tomcat.tar.gz "${TOMCAT_DWNLD_URL}"; \
+    echo "${TOMCAT_CHECKSUM} *${DOWNLOAD_PATH_TOMCAT}/tomcat.tar.gz" | sha512sum -c -; \
+    tar -xf "${DOWNLOAD_PATH_TOMCAT}"/tomcat.tar.gz -C "${INSTALL_PATH_TOMCAT}" --strip-components=1; \
+    rm -rf "${DOWNLOAD_PATH_TOMCAT}"; \
+    \
+    java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal,createLayer -Xscmx$SCC_SIZE -version; \
+    export OPENJ9_JAVA_OPTIONS="-Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal"; \
+    for i in $(seq 0 $SCC_GEN_RUNS_COUNT); \
+    do \
+        "${INSTALL_PATH_TOMCAT}"/bin/startup.sh; \
+        sleep 5; \
+        "${INSTALL_PATH_TOMCAT}"/bin/shutdown.sh; \
+        sleep 5; \
+    done; \
+    \
+    FULL=$( (java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,printallStats 2>&1 || true) | awk '/^Cache is [0-9.]*% .*full/ {print substr($3, 1, length($3)-1)}'); \
+    DST_CACHE=$(java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,destroy 2>&1 || true); \
+    SCC_SIZE=$(echo $SCC_SIZE | sed 's/.$//'); \
+    SCC_SIZE=$(awk "BEGIN {print int($SCC_SIZE * $FULL / 100.0)}"); \
+    [ "${SCC_SIZE}" -eq 0 ] && SCC_SIZE=1; \
+    SCC_SIZE="${SCC_SIZE}m"; \
+    java -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal,createLayer -Xscmx$SCC_SIZE -version; \
+    unset OPENJ9_JAVA_OPTIONS; \
+    \
+    export OPENJ9_JAVA_OPTIONS="-Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal"; \
+    for i in $(seq 0 $SCC_GEN_RUNS_COUNT); \
+    do \
+        "${INSTALL_PATH_TOMCAT}"/bin/startup.sh; \
+        sleep 5; \
+        "${INSTALL_PATH_TOMCAT}"/bin/shutdown.sh; \
+        sleep 5; \
+    done; \
+    \
+    FULL=$( (java -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,printallStats 2>&1 || true) | awk '/^Cache is [0-9.]*% .*full/ {print substr($3, 1, length($3)-1)}'); \
+    echo "SCC layer is $FULL% full."; \
+    rm -rf "${INSTALL_PATH_TOMCAT}"; \
+    if [ -d "/opt/java/.scc" ]; then \
+          chmod -R 0777 /opt/java/.scc; \
+    fi; \
+    \
+    echo "SCC generation phase completed";
+
+ENV OPENJ9_JAVA_OPTIONS="-Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,readonly,nonFatal"
+
 CMD ["jshell"]
diff --git a/adoptopenjdk_11-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full b/adoptopenjdk_11-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
index 7e239e2..247d90b 100644
--- a/adoptopenjdk_11-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
+++ b/adoptopenjdk_11-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
@@ -41,5 +41,5 @@ RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk11-binaries/
     Remove-Item -Path C:\temp -Recurse | Out-Null; \
     Write-Host 'Removing openjdk.msi ...'; \
     Remove-Item openjdk.msi -Force
-ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+UseContainerSupport -XX:+IdleTuningCompactOnIdle -XX:+IdleTuningGcOnIdle"
+ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+IdleTuningGcOnIdle"
 CMD ["jshell"]
diff --git a/adoptopenjdk_11-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full b/adoptopenjdk_11-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
index 8f2ec98..eb4dd09 100644
--- a/adoptopenjdk_11-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
+++ b/adoptopenjdk_11-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
@@ -41,5 +41,5 @@ RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk11-binaries/
     Remove-Item -Path C:\temp -Recurse | Out-Null; \
     Write-Host 'Removing openjdk.msi ...'; \
     Remove-Item openjdk.msi -Force
-ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+UseContainerSupport -XX:+IdleTuningCompactOnIdle -XX:+IdleTuningGcOnIdle"
+ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+IdleTuningGcOnIdle"
 CMD ["jshell"]
diff --git a/adoptopenjdk_13-hotspot-bionic/Dockerfile.hotspot.releases.full b/adoptopenjdk_13-hotspot-bionic/Dockerfile.hotspot.releases.full
index eae6c73..b17482d 100644
--- a/adoptopenjdk_13-hotspot-bionic/Dockerfile.hotspot.releases.full
+++ b/adoptopenjdk_13-hotspot-bionic/Dockerfile.hotspot.releases.full
@@ -22,7 +22,7 @@ FROM ubuntu:18.04
 ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
 
 RUN apt-get update \
-    && apt-get install -y --no-install-recommends curl ca-certificates fontconfig locales \
+    && apt-get install -y --no-install-recommends tzdata curl ca-certificates fontconfig locales \
     && echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen \
     && locale-gen en_US.UTF-8 \
     && rm -rf /var/lib/apt/lists/*
diff --git a/adoptopenjdk_13-hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full b/adoptopenjdk_13-hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full
index b1cad0a..a438c2a 100644
--- a/adoptopenjdk_13-hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full
+++ b/adoptopenjdk_13-hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full
@@ -38,7 +38,7 @@ RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk13-binaries/
     Write-Host 'Installing using MSI ...'; \
     Start-Process -FilePath "msiexec.exe" -ArgumentList '/i', 'openjdk.msi', '/L*V', 'C:\temp\OpenJDK.log', \
     '/quiet', 'ADDLOCAL=FeatureEnvironment,FeatureJarFileRunWith,FeatureJavaHome' -Wait -Passthru; \
+    Remove-Item -Path C:\temp -Recurse | Out-Null; \
     Write-Host 'Removing openjdk.msi ...'; \
-        Remove-Item openjdk.msi -Force; \
-        Remove-Item -Path C:\temp -Recurse | Out-Null;
+    Remove-Item openjdk.msi -Force
 CMD ["jshell"]
diff --git a/adoptopenjdk_13-hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full b/adoptopenjdk_13-hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full
index 61ed0b3..ceeab95 100644
--- a/adoptopenjdk_13-hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full
+++ b/adoptopenjdk_13-hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full
@@ -38,7 +38,7 @@ RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk13-binaries/
     Write-Host 'Installing using MSI ...'; \
     Start-Process -FilePath "msiexec.exe" -ArgumentList '/i', 'openjdk.msi', '/L*V', 'C:\temp\OpenJDK.log', \
     '/quiet', 'ADDLOCAL=FeatureEnvironment,FeatureJarFileRunWith,FeatureJavaHome' -Wait -Passthru; \
+    Remove-Item -Path C:\temp -Recurse | Out-Null; \
     Write-Host 'Removing openjdk.msi ...'; \
-        Remove-Item openjdk.msi -Force; \
-        Remove-Item -Path C:\temp -Recurse | Out-Null;
+    Remove-Item openjdk.msi -Force
 CMD ["jshell"]
diff --git a/adoptopenjdk_13-jre-hotspot-bionic/Dockerfile.hotspot.releases.full b/adoptopenjdk_13-jre-hotspot-bionic/Dockerfile.hotspot.releases.full
index 6103c9d..b1f58d2 100644
--- a/adoptopenjdk_13-jre-hotspot-bionic/Dockerfile.hotspot.releases.full
+++ b/adoptopenjdk_13-jre-hotspot-bionic/Dockerfile.hotspot.releases.full
@@ -22,7 +22,7 @@ FROM ubuntu:18.04
 ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
 
 RUN apt-get update \
-    && apt-get install -y --no-install-recommends curl ca-certificates fontconfig locales \
+    && apt-get install -y --no-install-recommends tzdata curl ca-certificates fontconfig locales \
     && echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen \
     && locale-gen en_US.UTF-8 \
     && rm -rf /var/lib/apt/lists/*
diff --git a/adoptopenjdk_13-jre-hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full b/adoptopenjdk_13-jre-hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full
index d474e60..0e1691f 100644
--- a/adoptopenjdk_13-jre-hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full
+++ b/adoptopenjdk_13-jre-hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full
@@ -38,6 +38,6 @@ RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk13-binaries/
     Write-Host 'Installing using MSI ...'; \
     Start-Process -FilePath "msiexec.exe" -ArgumentList '/i', 'openjdk.msi', '/L*V', 'C:\temp\OpenJDK.log', \
     '/quiet', 'ADDLOCAL=FeatureEnvironment,FeatureJarFileRunWith,FeatureJavaHome' -Wait -Passthru; \
+    Remove-Item -Path C:\temp -Recurse | Out-Null; \
     Write-Host 'Removing openjdk.msi ...'; \
-        Remove-Item openjdk.msi -Force; \
-        Remove-Item -Path C:\temp -Recurse | Out-Null;
+    Remove-Item openjdk.msi -Force
diff --git a/adoptopenjdk_13-jre-hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full b/adoptopenjdk_13-jre-hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full
index 77b8e00..a6ba70a 100644
--- a/adoptopenjdk_13-jre-hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full
+++ b/adoptopenjdk_13-jre-hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full
@@ -38,6 +38,6 @@ RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk13-binaries/
     Write-Host 'Installing using MSI ...'; \
     Start-Process -FilePath "msiexec.exe" -ArgumentList '/i', 'openjdk.msi', '/L*V', 'C:\temp\OpenJDK.log', \
     '/quiet', 'ADDLOCAL=FeatureEnvironment,FeatureJarFileRunWith,FeatureJavaHome' -Wait -Passthru; \
+    Remove-Item -Path C:\temp -Recurse | Out-Null; \
     Write-Host 'Removing openjdk.msi ...'; \
-        Remove-Item openjdk.msi -Force; \
-        Remove-Item -Path C:\temp -Recurse | Out-Null;
+    Remove-Item openjdk.msi -Force
diff --git a/adoptopenjdk_13-jre-openj9-bionic/Dockerfile.openj9.releases.full b/adoptopenjdk_13-jre-openj9-bionic/Dockerfile.openj9.releases.full
index eaea9c2..b8415da 100644
--- a/adoptopenjdk_13-jre-openj9-bionic/Dockerfile.openj9.releases.full
+++ b/adoptopenjdk_13-jre-openj9-bionic/Dockerfile.openj9.releases.full
@@ -22,7 +22,7 @@ FROM ubuntu:18.04
 ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
 
 RUN apt-get update \
-    && apt-get install -y --no-install-recommends curl ca-certificates fontconfig locales \
+    && apt-get install -y --no-install-recommends tzdata curl ca-certificates fontconfig locales \
     && echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen \
     && locale-gen en_US.UTF-8 \
     && rm -rf /var/lib/apt/lists/*
diff --git a/adoptopenjdk_13-jre-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full b/adoptopenjdk_13-jre-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
index 05b9f31..8769114 100644
--- a/adoptopenjdk_13-jre-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
+++ b/adoptopenjdk_13-jre-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
@@ -38,7 +38,7 @@ RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk13-binaries/
     Write-Host 'Installing using MSI ...'; \
     Start-Process -FilePath "msiexec.exe" -ArgumentList '/i', 'openjdk.msi', '/L*V', 'C:\temp\OpenJDK.log', \
     '/quiet', 'ADDLOCAL=FeatureEnvironment,FeatureJarFileRunWith,FeatureJavaHome' -Wait -Passthru; \
+    Remove-Item -Path C:\temp -Recurse | Out-Null; \
     Write-Host 'Removing openjdk.msi ...'; \
-        Remove-Item openjdk.msi -Force; \
-        Remove-Item -Path C:\temp -Recurse | Out-Null;
+    Remove-Item openjdk.msi -Force
 ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+UseContainerSupport -XX:+IdleTuningCompactOnIdle -XX:+IdleTuningGcOnIdle"
diff --git a/adoptopenjdk_13-jre-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full b/adoptopenjdk_13-jre-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
index 3e104f5..5769db2 100644
--- a/adoptopenjdk_13-jre-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
+++ b/adoptopenjdk_13-jre-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
@@ -38,7 +38,7 @@ RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk13-binaries/
     Write-Host 'Installing using MSI ...'; \
     Start-Process -FilePath "msiexec.exe" -ArgumentList '/i', 'openjdk.msi', '/L*V', 'C:\temp\OpenJDK.log', \
     '/quiet', 'ADDLOCAL=FeatureEnvironment,FeatureJarFileRunWith,FeatureJavaHome' -Wait -Passthru; \
+    Remove-Item -Path C:\temp -Recurse | Out-Null; \
     Write-Host 'Removing openjdk.msi ...'; \
-        Remove-Item openjdk.msi -Force; \
-        Remove-Item -Path C:\temp -Recurse | Out-Null;
+    Remove-Item openjdk.msi -Force
 ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+UseContainerSupport -XX:+IdleTuningCompactOnIdle -XX:+IdleTuningGcOnIdle"
diff --git a/adoptopenjdk_13-openj9-bionic/Dockerfile.openj9.releases.full b/adoptopenjdk_13-openj9-bionic/Dockerfile.openj9.releases.full
index a5df670..59cc004 100644
--- a/adoptopenjdk_13-openj9-bionic/Dockerfile.openj9.releases.full
+++ b/adoptopenjdk_13-openj9-bionic/Dockerfile.openj9.releases.full
@@ -22,7 +22,7 @@ FROM ubuntu:18.04
 ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
 
 RUN apt-get update \
-    && apt-get install -y --no-install-recommends curl ca-certificates fontconfig locales \
+    && apt-get install -y --no-install-recommends tzdata curl ca-certificates fontconfig locales \
     && echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen \
     && locale-gen en_US.UTF-8 \
     && rm -rf /var/lib/apt/lists/*
diff --git a/adoptopenjdk_13-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full b/adoptopenjdk_13-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
index 268fb19..96e3b6b 100644
--- a/adoptopenjdk_13-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
+++ b/adoptopenjdk_13-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
@@ -38,8 +38,8 @@ RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk13-binaries/
     Write-Host 'Installing using MSI ...'; \
     Start-Process -FilePath "msiexec.exe" -ArgumentList '/i', 'openjdk.msi', '/L*V', 'C:\temp\OpenJDK.log', \
     '/quiet', 'ADDLOCAL=FeatureEnvironment,FeatureJarFileRunWith,FeatureJavaHome' -Wait -Passthru; \
+    Remove-Item -Path C:\temp -Recurse | Out-Null; \
     Write-Host 'Removing openjdk.msi ...'; \
-        Remove-Item openjdk.msi -Force; \
-        Remove-Item -Path C:\temp -Recurse | Out-Null;
+    Remove-Item openjdk.msi -Force
 ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+UseContainerSupport -XX:+IdleTuningCompactOnIdle -XX:+IdleTuningGcOnIdle"
 CMD ["jshell"]
diff --git a/adoptopenjdk_13-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full b/adoptopenjdk_13-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
index 6aa5ddb..89b2f07 100644
--- a/adoptopenjdk_13-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
+++ b/adoptopenjdk_13-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
@@ -38,8 +38,8 @@ RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk13-binaries/
     Write-Host 'Installing using MSI ...'; \
     Start-Process -FilePath "msiexec.exe" -ArgumentList '/i', 'openjdk.msi', '/L*V', 'C:\temp\OpenJDK.log', \
     '/quiet', 'ADDLOCAL=FeatureEnvironment,FeatureJarFileRunWith,FeatureJavaHome' -Wait -Passthru; \
+    Remove-Item -Path C:\temp -Recurse | Out-Null; \
     Write-Host 'Removing openjdk.msi ...'; \
-        Remove-Item openjdk.msi -Force; \
-        Remove-Item -Path C:\temp -Recurse | Out-Null;
+    Remove-Item openjdk.msi -Force
 ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+UseContainerSupport -XX:+IdleTuningCompactOnIdle -XX:+IdleTuningGcOnIdle"
 CMD ["jshell"]
diff --git a/adoptopenjdk_hotspot-bionic/Dockerfile.hotspot.releases.full b/adoptopenjdk_14-hotspot-bionic/Dockerfile.hotspot.releases.full
similarity index 99%
copy from adoptopenjdk_hotspot-bionic/Dockerfile.hotspot.releases.full
copy to adoptopenjdk_14-hotspot-bionic/Dockerfile.hotspot.releases.full
index b9cfc0c..93b4243 100644
--- a/adoptopenjdk_hotspot-bionic/Dockerfile.hotspot.releases.full
+++ b/adoptopenjdk_14-hotspot-bionic/Dockerfile.hotspot.releases.full
@@ -17,7 +17,7 @@
 # limitations under the License.
 #
 
-FROM ubuntu:18.04
+FROM ubuntu:20.04
 
 ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
 
diff --git a/adoptopenjdk_hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full b/adoptopenjdk_14-hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full
similarity index 100%
copy from adoptopenjdk_hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full
copy to adoptopenjdk_14-hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full
diff --git a/adoptopenjdk_hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full b/adoptopenjdk_14-hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full
similarity index 100%
copy from adoptopenjdk_hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full
copy to adoptopenjdk_14-hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full
diff --git a/adoptopenjdk_14-jre-hotspot-bionic/Dockerfile.hotspot.releases.full b/adoptopenjdk_14-jre-hotspot-bionic/Dockerfile.hotspot.releases.full
index 7d8bbb0..c3f04ca 100644
--- a/adoptopenjdk_14-jre-hotspot-bionic/Dockerfile.hotspot.releases.full
+++ b/adoptopenjdk_14-jre-hotspot-bionic/Dockerfile.hotspot.releases.full
@@ -17,7 +17,7 @@
 # limitations under the License.
 #
 
-FROM ubuntu:18.04
+FROM ubuntu:20.04
 
 ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
 
diff --git a/adoptopenjdk_14-jre-openj9-bionic/Dockerfile.openj9.releases.full b/adoptopenjdk_14-jre-openj9-bionic/Dockerfile.openj9.releases.full
index 30c3618..77b7893 100644
--- a/adoptopenjdk_14-jre-openj9-bionic/Dockerfile.openj9.releases.full
+++ b/adoptopenjdk_14-jre-openj9-bionic/Dockerfile.openj9.releases.full
@@ -17,7 +17,7 @@
 # limitations under the License.
 #
 
-FROM ubuntu:18.04
+FROM ubuntu:20.04
 
 ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
 
@@ -58,4 +58,65 @@ RUN set -eux; \
 
 ENV JAVA_HOME=/opt/java/openjdk \
     PATH="/opt/java/openjdk/bin:$PATH"
-ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+UseContainerSupport -XX:+IdleTuningCompactOnIdle -XX:+IdleTuningGcOnIdle"
+ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+IdleTuningGcOnIdle"
+
+# Create OpenJ9 SharedClassCache (SCC) for bootclasses to improve the java startup.
+# Downloads and runs tomcat to generate SCC for bootclasses at /opt/java/.scc/openj9_system_scc
+# Does a dry-run and calculates the optimal cache size and recreates the cache with the appropriate size.
+# With SCC, OpenJ9 startup is improved ~50% with an increase in image size of ~14MB
+# Application classes can be create a separate cache layer with this as the base for further startup improvement
+
+RUN set -eux; \
+    unset OPENJ9_JAVA_OPTIONS; \
+    SCC_SIZE="50m"; \
+    SCC_GEN_RUNS_COUNT=3; \
+    DOWNLOAD_PATH_TOMCAT=/tmp/tomcat; \
+    INSTALL_PATH_TOMCAT=/opt/tomcat-home; \
+    TOMCAT_CHECKSUM="0db27185d9fc3174f2c670f814df3dda8a008b89d1a38a5d96cbbe119767ebfb1cf0bce956b27954aee9be19c4a7b91f2579d967932207976322033a86075f98"; \
+    TOMCAT_DWNLD_URL="https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.35/bin/apache-tomcat-9.0.35.tar.gz"; \
+    \
+    mkdir -p "${DOWNLOAD_PATH_TOMCAT}" "${INSTALL_PATH_TOMCAT}"; \
+    curl -LfsSo "${DOWNLOAD_PATH_TOMCAT}"/tomcat.tar.gz "${TOMCAT_DWNLD_URL}"; \
+    echo "${TOMCAT_CHECKSUM} *${DOWNLOAD_PATH_TOMCAT}/tomcat.tar.gz" | sha512sum -c -; \
+    tar -xf "${DOWNLOAD_PATH_TOMCAT}"/tomcat.tar.gz -C "${INSTALL_PATH_TOMCAT}" --strip-components=1; \
+    rm -rf "${DOWNLOAD_PATH_TOMCAT}"; \
+    \
+    java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal,createLayer -Xscmx$SCC_SIZE -version; \
+    export OPENJ9_JAVA_OPTIONS="-Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal"; \
+    for i in $(seq 0 $SCC_GEN_RUNS_COUNT); \
+    do \
+        "${INSTALL_PATH_TOMCAT}"/bin/startup.sh; \
+        sleep 5; \
+        "${INSTALL_PATH_TOMCAT}"/bin/shutdown.sh; \
+        sleep 5; \
+    done; \
+    \
+    FULL=$( (java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,printallStats 2>&1 || true) | awk '/^Cache is [0-9.]*% .*full/ {print substr($3, 1, length($3)-1)}'); \
+    DST_CACHE=$(java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,destroy 2>&1 || true); \
+    SCC_SIZE=$(echo $SCC_SIZE | sed 's/.$//'); \
+    SCC_SIZE=$(awk "BEGIN {print int($SCC_SIZE * $FULL / 100.0)}"); \
+    [ "${SCC_SIZE}" -eq 0 ] && SCC_SIZE=1; \
+    SCC_SIZE="${SCC_SIZE}m"; \
+    java -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal,createLayer -Xscmx$SCC_SIZE -version; \
+    unset OPENJ9_JAVA_OPTIONS; \
+    \
+    export OPENJ9_JAVA_OPTIONS="-Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal"; \
+    for i in $(seq 0 $SCC_GEN_RUNS_COUNT); \
+    do \
+        "${INSTALL_PATH_TOMCAT}"/bin/startup.sh; \
+        sleep 5; \
+        "${INSTALL_PATH_TOMCAT}"/bin/shutdown.sh; \
+        sleep 5; \
+    done; \
+    \
+    FULL=$( (java -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,printallStats 2>&1 || true) | awk '/^Cache is [0-9.]*% .*full/ {print substr($3, 1, length($3)-1)}'); \
+    echo "SCC layer is $FULL% full."; \
+    rm -rf "${INSTALL_PATH_TOMCAT}"; \
+    if [ -d "/opt/java/.scc" ]; then \
+          chmod -R 0777 /opt/java/.scc; \
+    fi; \
+    \
+    echo "SCC generation phase completed";
+
+ENV OPENJ9_JAVA_OPTIONS="-Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,readonly,nonFatal"
+
diff --git a/adoptopenjdk_14-jre-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full b/adoptopenjdk_14-jre-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
index 1e52ad2..57e9792 100644
--- a/adoptopenjdk_14-jre-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
+++ b/adoptopenjdk_14-jre-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
@@ -41,4 +41,4 @@ RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk14-binaries/
     Remove-Item -Path C:\temp -Recurse | Out-Null; \
     Write-Host 'Removing openjdk.msi ...'; \
     Remove-Item openjdk.msi -Force
-ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+UseContainerSupport -XX:+IdleTuningCompactOnIdle -XX:+IdleTuningGcOnIdle"
+ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+IdleTuningGcOnIdle"
diff --git a/adoptopenjdk_14-jre-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full b/adoptopenjdk_14-jre-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
index bd82c66..468c265 100644
--- a/adoptopenjdk_14-jre-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
+++ b/adoptopenjdk_14-jre-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
@@ -41,4 +41,4 @@ RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk14-binaries/
     Remove-Item -Path C:\temp -Recurse | Out-Null; \
     Write-Host 'Removing openjdk.msi ...'; \
     Remove-Item openjdk.msi -Force
-ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+UseContainerSupport -XX:+IdleTuningCompactOnIdle -XX:+IdleTuningGcOnIdle"
+ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+IdleTuningGcOnIdle"
diff --git a/adoptopenjdk_openj9-bionic/Dockerfile.openj9.releases.full b/adoptopenjdk_14-openj9-bionic/Dockerfile.openj9.releases.full
similarity index 44%
copy from adoptopenjdk_openj9-bionic/Dockerfile.openj9.releases.full
copy to adoptopenjdk_14-openj9-bionic/Dockerfile.openj9.releases.full
index eff0c96..5148412 100644
--- a/adoptopenjdk_openj9-bionic/Dockerfile.openj9.releases.full
+++ b/adoptopenjdk_14-openj9-bionic/Dockerfile.openj9.releases.full
@@ -17,7 +17,7 @@
 # limitations under the License.
 #
 
-FROM ubuntu:18.04
+FROM ubuntu:20.04
 
 ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
 
@@ -58,5 +58,66 @@ RUN set -eux; \
 
 ENV JAVA_HOME=/opt/java/openjdk \
     PATH="/opt/java/openjdk/bin:$PATH"
-ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+UseContainerSupport -XX:+IdleTuningCompactOnIdle -XX:+IdleTuningGcOnIdle"
+ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+IdleTuningGcOnIdle"
+
+# Create OpenJ9 SharedClassCache (SCC) for bootclasses to improve the java startup.
+# Downloads and runs tomcat to generate SCC for bootclasses at /opt/java/.scc/openj9_system_scc
+# Does a dry-run and calculates the optimal cache size and recreates the cache with the appropriate size.
+# With SCC, OpenJ9 startup is improved ~50% with an increase in image size of ~14MB
+# Application classes can be create a separate cache layer with this as the base for further startup improvement
+
+RUN set -eux; \
+    unset OPENJ9_JAVA_OPTIONS; \
+    SCC_SIZE="50m"; \
+    SCC_GEN_RUNS_COUNT=3; \
+    DOWNLOAD_PATH_TOMCAT=/tmp/tomcat; \
+    INSTALL_PATH_TOMCAT=/opt/tomcat-home; \
+    TOMCAT_CHECKSUM="0db27185d9fc3174f2c670f814df3dda8a008b89d1a38a5d96cbbe119767ebfb1cf0bce956b27954aee9be19c4a7b91f2579d967932207976322033a86075f98"; \
+    TOMCAT_DWNLD_URL="https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.35/bin/apache-tomcat-9.0.35.tar.gz"; \
+    \
+    mkdir -p "${DOWNLOAD_PATH_TOMCAT}" "${INSTALL_PATH_TOMCAT}"; \
+    curl -LfsSo "${DOWNLOAD_PATH_TOMCAT}"/tomcat.tar.gz "${TOMCAT_DWNLD_URL}"; \
+    echo "${TOMCAT_CHECKSUM} *${DOWNLOAD_PATH_TOMCAT}/tomcat.tar.gz" | sha512sum -c -; \
+    tar -xf "${DOWNLOAD_PATH_TOMCAT}"/tomcat.tar.gz -C "${INSTALL_PATH_TOMCAT}" --strip-components=1; \
+    rm -rf "${DOWNLOAD_PATH_TOMCAT}"; \
+    \
+    java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal,createLayer -Xscmx$SCC_SIZE -version; \
+    export OPENJ9_JAVA_OPTIONS="-Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal"; \
+    for i in $(seq 0 $SCC_GEN_RUNS_COUNT); \
+    do \
+        "${INSTALL_PATH_TOMCAT}"/bin/startup.sh; \
+        sleep 5; \
+        "${INSTALL_PATH_TOMCAT}"/bin/shutdown.sh; \
+        sleep 5; \
+    done; \
+    \
+    FULL=$( (java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,printallStats 2>&1 || true) | awk '/^Cache is [0-9.]*% .*full/ {print substr($3, 1, length($3)-1)}'); \
+    DST_CACHE=$(java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,destroy 2>&1 || true); \
+    SCC_SIZE=$(echo $SCC_SIZE | sed 's/.$//'); \
+    SCC_SIZE=$(awk "BEGIN {print int($SCC_SIZE * $FULL / 100.0)}"); \
+    [ "${SCC_SIZE}" -eq 0 ] && SCC_SIZE=1; \
+    SCC_SIZE="${SCC_SIZE}m"; \
+    java -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal,createLayer -Xscmx$SCC_SIZE -version; \
+    unset OPENJ9_JAVA_OPTIONS; \
+    \
+    export OPENJ9_JAVA_OPTIONS="-Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal"; \
+    for i in $(seq 0 $SCC_GEN_RUNS_COUNT); \
+    do \
+        "${INSTALL_PATH_TOMCAT}"/bin/startup.sh; \
+        sleep 5; \
+        "${INSTALL_PATH_TOMCAT}"/bin/shutdown.sh; \
+        sleep 5; \
+    done; \
+    \
+    FULL=$( (java -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,printallStats 2>&1 || true) | awk '/^Cache is [0-9.]*% .*full/ {print substr($3, 1, length($3)-1)}'); \
+    echo "SCC layer is $FULL% full."; \
+    rm -rf "${INSTALL_PATH_TOMCAT}"; \
+    if [ -d "/opt/java/.scc" ]; then \
+          chmod -R 0777 /opt/java/.scc; \
+    fi; \
+    \
+    echo "SCC generation phase completed";
+
+ENV OPENJ9_JAVA_OPTIONS="-Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,readonly,nonFatal"
+
 CMD ["jshell"]
diff --git a/adoptopenjdk_openj9-windowsservercore-1809/Dockerfile.openj9.releases.full b/adoptopenjdk_14-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
similarity index 94%
copy from adoptopenjdk_openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
copy to adoptopenjdk_14-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
index 0ba45b0..bef51c3 100644
--- a/adoptopenjdk_openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
+++ b/adoptopenjdk_14-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
@@ -41,5 +41,5 @@ RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk14-binaries/
     Remove-Item -Path C:\temp -Recurse | Out-Null; \
     Write-Host 'Removing openjdk.msi ...'; \
     Remove-Item openjdk.msi -Force
-ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+UseContainerSupport -XX:+IdleTuningCompactOnIdle -XX:+IdleTuningGcOnIdle"
+ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+IdleTuningGcOnIdle"
 CMD ["jshell"]
diff --git a/adoptopenjdk_openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full b/adoptopenjdk_14-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
similarity index 94%
copy from adoptopenjdk_openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
copy to adoptopenjdk_14-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
index 4a658d9..4dfe67a 100644
--- a/adoptopenjdk_openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
+++ b/adoptopenjdk_14-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
@@ -41,5 +41,5 @@ RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk14-binaries/
     Remove-Item -Path C:\temp -Recurse | Out-Null; \
     Write-Host 'Removing openjdk.msi ...'; \
     Remove-Item openjdk.msi -Force
-ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+UseContainerSupport -XX:+IdleTuningCompactOnIdle -XX:+IdleTuningGcOnIdle"
+ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+IdleTuningGcOnIdle"
 CMD ["jshell"]
diff --git a/adoptopenjdk_8-hotspot-bionic/Dockerfile.hotspot.releases.full b/adoptopenjdk_15-jre-hotspot-bionic/Dockerfile.hotspot.releases.full
similarity index 60%
copy from adoptopenjdk_8-hotspot-bionic/Dockerfile.hotspot.releases.full
copy to adoptopenjdk_15-jre-hotspot-bionic/Dockerfile.hotspot.releases.full
index 5227a8a..3f7cb1d 100644
--- a/adoptopenjdk_8-hotspot-bionic/Dockerfile.hotspot.releases.full
+++ b/adoptopenjdk_15-jre-hotspot-bionic/Dockerfile.hotspot.releases.full
@@ -17,7 +17,7 @@
 # limitations under the License.
 #
 
-FROM ubuntu:18.04
+FROM ubuntu:20.04
 
 ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
 
@@ -27,30 +27,30 @@ RUN apt-get update \
     && locale-gen en_US.UTF-8 \
     && rm -rf /var/lib/apt/lists/*
 
-ENV JAVA_VERSION jdk8u262-b10
+ENV JAVA_VERSION jdk-15+36
 
 RUN set -eux; \
     ARCH="$(dpkg --print-architecture)"; \
     case "${ARCH}" in \
        aarch64|arm64) \
-         ESUM='7be0b2a4c749a277302a54b456624c076b3a5b990ad502e2a72d803ab31aecab'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10/OpenJDK8U-jdk_aarch64_linux_hotspot_8u262b10.tar.gz'; \
+         ESUM='318f50bae6652d4468ee262ce0fd6569adbc461bea0d1ecce77ce2843efee8d4'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36/OpenJDK15U-jre_aarch64_linux_hotspot_15_36.tar.gz'; \
          ;; \
        armhf|armv7l) \
-         ESUM='dd85ebb9a64916b4b621a23729e3360adb363d430bf1e99e98f25397834d74bd'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10/OpenJDK8U-jdk_arm_linux_hotspot_8u262b10.tar.gz'; \
+         ESUM='09c1ba3636e7899d8b43795d7988bcc4b1e1be2919764d94f6d4a1a855ce774f'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36/OpenJDK15U-jre_arm_linux_hotspot_15_36.tar.gz'; \
          ;; \
        ppc64el|ppc64le) \
-         ESUM='d2a16915fb85ba851145c91cda5666cb78f06bf4713a2b3bdce813779ff972c2'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10/OpenJDK8U-jdk_ppc64le_linux_hotspot_8u262b10.tar.gz'; \
+         ESUM='6ea692c7e43bee201a56313bd9f4ddcdea43bed1dfe203c49316ac4d08a4cdd3'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36/OpenJDK15U-jre_ppc64le_linux_hotspot_15_36.tar.gz'; \
          ;; \
        s390x) \
-         ESUM='a504af6924a095cfb6c392653dccd7299925048c91b399d05efa95a094820120'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10/OpenJDK8U-jdk_s390x_linux_hotspot_8u262b10.tar.gz'; \
+         ESUM='e1e124a29e2bf892d267eb63d00dd136558b4e276bcb6741ea676c995b2fff51'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36/OpenJDK15U-jre_s390x_linux_hotspot_15_36.tar.gz'; \
          ;; \
        amd64|x86_64) \
-         ESUM='733755fd649fad6ae91fc083f7e5a5a0b56410fb6ac1815cff29f744b128b1b1'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10/OpenJDK8U-jdk_x64_linux_hotspot_8u262b10.tar.gz'; \
+         ESUM='230d97a6b16a0735f15013a91f7582a22282ec12bdfaec291ab63274cc075efb'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36/OpenJDK15U-jre_x64_linux_hotspot_15_36.tar.gz'; \
          ;; \
        *) \
          echo "Unsupported arch: ${ARCH}"; \
diff --git a/adoptopenjdk_8-hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full b/adoptopenjdk_15-jre-hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full
similarity index 77%
copy from adoptopenjdk_8-hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full
copy to adoptopenjdk_15-jre-hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full
index f3fd09c..b3d622e 100644
--- a/adoptopenjdk_8-hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full
+++ b/adoptopenjdk_15-jre-hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full
@@ -22,13 +22,13 @@ FROM mcr.microsoft.com/windows/servercore:1809
 # $ProgressPreference: https://github.com/PowerShell/PowerShell/issues/2138#issuecomment-251261324
 SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
 
-ENV JAVA_VERSION jdk8u262-b10
+ENV JAVA_VERSION jdk-15+36
 
-RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10/OpenJDK8U-jdk_x64_windows_hotspot_8u262b10.msi ...'); \
+RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36/OpenJDK15U-jre_x64_windows_hotspot_15_36.msi ...'); \
     [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \
-    wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10/OpenJDK8U-jdk_x64_windows_hotspot_8u262b10.msi -O 'openjdk.msi'; \
-    Write-Host ('Verifying sha256 (251429e9c5ea2d2950aceca10c67e4bf5be3f5f299f2fad4c9757b5ac857cc2c) ...'); \
-    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne '251429e9c5ea2d2950aceca10c67e4bf5be3f5f299f2fad4c9757b5ac857cc2c') { \
+    wget https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36/OpenJDK15U-jre_x64_windows_hotspot_15_36.msi -O 'openjdk.msi'; \
+    Write-Host ('Verifying sha256 (d14250fb3ed06d6421c6b2e04ae266b436138213eea2fe4ddc3640df8064d9bc) ...'); \
+    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne 'd14250fb3ed06d6421c6b2e04ae266b436138213eea2fe4ddc3640df8064d9bc') { \
             Write-Host 'FAILED!'; \
             exit 1; \
     }; \
diff --git a/adoptopenjdk_8-jre-hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full b/adoptopenjdk_15-jre-hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full
similarity index 77%
copy from adoptopenjdk_8-jre-hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full
copy to adoptopenjdk_15-jre-hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full
index 7790fd0..98f4a11 100644
--- a/adoptopenjdk_8-jre-hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full
+++ b/adoptopenjdk_15-jre-hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full
@@ -22,13 +22,13 @@ FROM mcr.microsoft.com/windows/servercore:ltsc2016
 # $ProgressPreference: https://github.com/PowerShell/PowerShell/issues/2138#issuecomment-251261324
 SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
 
-ENV JAVA_VERSION jdk8u262-b10
+ENV JAVA_VERSION jdk-15+36
 
-RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10/OpenJDK8U-jre_x64_windows_hotspot_8u262b10.msi ...'); \
+RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36/OpenJDK15U-jre_x64_windows_hotspot_15_36.msi ...'); \
     [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \
-    wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10/OpenJDK8U-jre_x64_windows_hotspot_8u262b10.msi -O 'openjdk.msi'; \
-    Write-Host ('Verifying sha256 (e85f21cddd791f1b362de285338912de60ee12d7fd27847faeee37f294f7a06b) ...'); \
-    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne 'e85f21cddd791f1b362de285338912de60ee12d7fd27847faeee37f294f7a06b') { \
+    wget https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36/OpenJDK15U-jre_x64_windows_hotspot_15_36.msi -O 'openjdk.msi'; \
+    Write-Host ('Verifying sha256 (d14250fb3ed06d6421c6b2e04ae266b436138213eea2fe4ddc3640df8064d9bc) ...'); \
+    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne 'd14250fb3ed06d6421c6b2e04ae266b436138213eea2fe4ddc3640df8064d9bc') { \
             Write-Host 'FAILED!'; \
             exit 1; \
     }; \
diff --git a/adoptopenjdk_14-jre-openj9-bionic/Dockerfile.openj9.releases.full b/adoptopenjdk_15-jre-openj9-bionic/Dockerfile.openj9.releases.full
similarity index 29%
copy from adoptopenjdk_14-jre-openj9-bionic/Dockerfile.openj9.releases.full
copy to adoptopenjdk_15-jre-openj9-bionic/Dockerfile.openj9.releases.full
index 30c3618..140593a 100644
--- a/adoptopenjdk_14-jre-openj9-bionic/Dockerfile.openj9.releases.full
+++ b/adoptopenjdk_15-jre-openj9-bionic/Dockerfile.openj9.releases.full
@@ -17,7 +17,7 @@
 # limitations under the License.
 #
 
-FROM ubuntu:18.04
+FROM ubuntu:20.04
 
 ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
 
@@ -27,22 +27,22 @@ RUN apt-get update \
     && locale-gen en_US.UTF-8 \
     && rm -rf /var/lib/apt/lists/*
 
-ENV JAVA_VERSION jdk-14.0.2+12_openj9-0.21.0
+ENV JAVA_VERSION jdk-15+36_openj9-0.22.0
 
 RUN set -eux; \
     ARCH="$(dpkg --print-architecture)"; \
     case "${ARCH}" in \
        ppc64el|ppc64le) \
-         ESUM='ad7a55a3669878c0c7d7c66faafe7c626d4341374719b6fdd81d2986c6e80945'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12_openj9-0.21.0/OpenJDK14U-jre_ppc64le_linux_openj9_14.0.2_12_openj9-0.21.0.tar.gz'; \
+         ESUM='fef3e6034a861b0bfa14120f064373d866b65f3525b9c791a647010194eb5632'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36_openj9-0.22.0/OpenJDK15U-jre_ppc64le_linux_openj9_15_36_openj9-0.22.0.tar.gz'; \
          ;; \
        s390x) \
-         ESUM='6a3c0f61873bfcd23da806f5df9267e08cbfd064ab7cf6e8b08648b4cbe2f9e2'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12_openj9-0.21.0/OpenJDK14U-jre_s390x_linux_openj9_14.0.2_12_openj9-0.21.0.tar.gz'; \
+         ESUM='5f5a6a46a432af651d63538997b0850fed9f631ab4a797e29d33347d3052fddc'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36_openj9-0.22.0/OpenJDK15U-jre_s390x_linux_openj9_15_36_openj9-0.22.0.tar.gz'; \
          ;; \
        amd64|x86_64) \
-         ESUM='3a137146a7b0bd8b029e72beb37c5fbb09dcfb9e33a10125076fff1555227cfd'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12_openj9-0.21.0/OpenJDK14U-jre_x64_linux_openj9_14.0.2_12_openj9-0.21.0.tar.gz'; \
+         ESUM='3811aea0eeaccd4aa50bbf6a374e31b19f52a22c1f2c8b378e8ea0ac194b8638'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36_openj9-0.22.0/OpenJDK15U-jre_x64_linux_openj9_15_36_openj9-0.22.0.tar.gz'; \
          ;; \
        *) \
          echo "Unsupported arch: ${ARCH}"; \
@@ -58,4 +58,65 @@ RUN set -eux; \
 
 ENV JAVA_HOME=/opt/java/openjdk \
     PATH="/opt/java/openjdk/bin:$PATH"
-ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+UseContainerSupport -XX:+IdleTuningCompactOnIdle -XX:+IdleTuningGcOnIdle"
+ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+IdleTuningGcOnIdle"
+
+# Create OpenJ9 SharedClassCache (SCC) for bootclasses to improve the java startup.
+# Downloads and runs tomcat to generate SCC for bootclasses at /opt/java/.scc/openj9_system_scc
+# Does a dry-run and calculates the optimal cache size and recreates the cache with the appropriate size.
+# With SCC, OpenJ9 startup is improved ~50% with an increase in image size of ~14MB
+# Application classes can be create a separate cache layer with this as the base for further startup improvement
+
+RUN set -eux; \
+    unset OPENJ9_JAVA_OPTIONS; \
+    SCC_SIZE="50m"; \
+    SCC_GEN_RUNS_COUNT=3; \
+    DOWNLOAD_PATH_TOMCAT=/tmp/tomcat; \
+    INSTALL_PATH_TOMCAT=/opt/tomcat-home; \
+    TOMCAT_CHECKSUM="0db27185d9fc3174f2c670f814df3dda8a008b89d1a38a5d96cbbe119767ebfb1cf0bce956b27954aee9be19c4a7b91f2579d967932207976322033a86075f98"; \
+    TOMCAT_DWNLD_URL="https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.35/bin/apache-tomcat-9.0.35.tar.gz"; \
+    \
+    mkdir -p "${DOWNLOAD_PATH_TOMCAT}" "${INSTALL_PATH_TOMCAT}"; \
+    curl -LfsSo "${DOWNLOAD_PATH_TOMCAT}"/tomcat.tar.gz "${TOMCAT_DWNLD_URL}"; \
+    echo "${TOMCAT_CHECKSUM} *${DOWNLOAD_PATH_TOMCAT}/tomcat.tar.gz" | sha512sum -c -; \
+    tar -xf "${DOWNLOAD_PATH_TOMCAT}"/tomcat.tar.gz -C "${INSTALL_PATH_TOMCAT}" --strip-components=1; \
+    rm -rf "${DOWNLOAD_PATH_TOMCAT}"; \
+    \
+    java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal,createLayer -Xscmx$SCC_SIZE -version; \
+    export OPENJ9_JAVA_OPTIONS="-Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal"; \
+    for i in $(seq 0 $SCC_GEN_RUNS_COUNT); \
+    do \
+        "${INSTALL_PATH_TOMCAT}"/bin/startup.sh; \
+        sleep 5; \
+        "${INSTALL_PATH_TOMCAT}"/bin/shutdown.sh; \
+        sleep 5; \
+    done; \
+    \
+    FULL=$( (java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,printallStats 2>&1 || true) | awk '/^Cache is [0-9.]*% .*full/ {print substr($3, 1, length($3)-1)}'); \
+    DST_CACHE=$(java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,destroy 2>&1 || true); \
+    SCC_SIZE=$(echo $SCC_SIZE | sed 's/.$//'); \
+    SCC_SIZE=$(awk "BEGIN {print int($SCC_SIZE * $FULL / 100.0)}"); \
+    [ "${SCC_SIZE}" -eq 0 ] && SCC_SIZE=1; \
+    SCC_SIZE="${SCC_SIZE}m"; \
+    java -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal,createLayer -Xscmx$SCC_SIZE -version; \
+    unset OPENJ9_JAVA_OPTIONS; \
+    \
+    export OPENJ9_JAVA_OPTIONS="-Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal"; \
+    for i in $(seq 0 $SCC_GEN_RUNS_COUNT); \
+    do \
+        "${INSTALL_PATH_TOMCAT}"/bin/startup.sh; \
+        sleep 5; \
+        "${INSTALL_PATH_TOMCAT}"/bin/shutdown.sh; \
+        sleep 5; \
+    done; \
+    \
+    FULL=$( (java -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,printallStats 2>&1 || true) | awk '/^Cache is [0-9.]*% .*full/ {print substr($3, 1, length($3)-1)}'); \
+    echo "SCC layer is $FULL% full."; \
+    rm -rf "${INSTALL_PATH_TOMCAT}"; \
+    if [ -d "/opt/java/.scc" ]; then \
+          chmod -R 0777 /opt/java/.scc; \
+    fi; \
+    \
+    echo "SCC generation phase completed";
+
+ENV OPENJ9_JAVA_OPTIONS="-Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,readonly,nonFatal"
+
diff --git a/adoptopenjdk_11-hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full b/adoptopenjdk_15-jre-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
similarity index 73%
copy from adoptopenjdk_11-hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full
copy to adoptopenjdk_15-jre-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
index b1db662..dc5accf 100644
--- a/adoptopenjdk_11-hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full
+++ b/adoptopenjdk_15-jre-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
@@ -22,13 +22,13 @@ FROM mcr.microsoft.com/windows/servercore:1809
 # $ProgressPreference: https://github.com/PowerShell/PowerShell/issues/2138#issuecomment-251261324
 SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
 
-ENV JAVA_VERSION jdk-11.0.8+10
+ENV JAVA_VERSION jdk-15+36_openj9-0.22.0
 
-RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.8%2B10/OpenJDK11U-jdk_x64_windows_hotspot_11.0.8_10.msi ...'); \
+RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36_openj9-0.22.0/OpenJDK15U-jre_x64_windows_openj9_15_36_openj9-0.22.0.msi ...'); \
     [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \
-    wget https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.8%2B10/OpenJDK11U-jdk_x64_windows_hotspot_11.0.8_10.msi -O 'openjdk.msi'; \
-    Write-Host ('Verifying sha256 (148b487e0dde39ec5c0f32aa2397c17968b6cf6818822cea2b2394dfd0157396) ...'); \
-    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne '148b487e0dde39ec5c0f32aa2397c17968b6cf6818822cea2b2394dfd0157396') { \
+    wget https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36_openj9-0.22.0/OpenJDK15U-jre_x64_windows_openj9_15_36_openj9-0.22.0.msi -O 'openjdk.msi'; \
+    Write-Host ('Verifying sha256 (78b7f6950c5afafa99164644f8dc85cd05d653964e828b52ea1916a3e27b7e61) ...'); \
+    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne '78b7f6950c5afafa99164644f8dc85cd05d653964e828b52ea1916a3e27b7e61') { \
             Write-Host 'FAILED!'; \
             exit 1; \
     }; \
@@ -41,4 +41,4 @@ RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk11-binaries/
     Remove-Item -Path C:\temp -Recurse | Out-Null; \
     Write-Host 'Removing openjdk.msi ...'; \
     Remove-Item openjdk.msi -Force
-CMD ["jshell"]
+ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+IdleTuningGcOnIdle"
diff --git a/adoptopenjdk_14-jre-hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full b/adoptopenjdk_15-jre-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
similarity index 73%
copy from adoptopenjdk_14-jre-hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full
copy to adoptopenjdk_15-jre-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
index f645611..8aea245 100644
--- a/adoptopenjdk_14-jre-hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full
+++ b/adoptopenjdk_15-jre-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
@@ -22,13 +22,13 @@ FROM mcr.microsoft.com/windows/servercore:ltsc2016
 # $ProgressPreference: https://github.com/PowerShell/PowerShell/issues/2138#issuecomment-251261324
 SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
 
-ENV JAVA_VERSION jdk-14.0.2+12
+ENV JAVA_VERSION jdk-15+36_openj9-0.22.0
 
-RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12/OpenJDK14U-jre_x64_windows_hotspot_14.0.2_12.msi ...'); \
+RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36_openj9-0.22.0/OpenJDK15U-jre_x64_windows_openj9_15_36_openj9-0.22.0.msi ...'); \
     [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \
-    wget https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12/OpenJDK14U-jre_x64_windows_hotspot_14.0.2_12.msi -O 'openjdk.msi'; \
-    Write-Host ('Verifying sha256 (bf468c78387b8095914a2d46af6961d5c22697929b66961e346a41fc8bf909d4) ...'); \
-    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne 'bf468c78387b8095914a2d46af6961d5c22697929b66961e346a41fc8bf909d4') { \
+    wget https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36_openj9-0.22.0/OpenJDK15U-jre_x64_windows_openj9_15_36_openj9-0.22.0.msi -O 'openjdk.msi'; \
+    Write-Host ('Verifying sha256 (78b7f6950c5afafa99164644f8dc85cd05d653964e828b52ea1916a3e27b7e61) ...'); \
+    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne '78b7f6950c5afafa99164644f8dc85cd05d653964e828b52ea1916a3e27b7e61') { \
             Write-Host 'FAILED!'; \
             exit 1; \
     }; \
@@ -41,3 +41,4 @@ RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk14-binaries/
     Remove-Item -Path C:\temp -Recurse | Out-Null; \
     Write-Host 'Removing openjdk.msi ...'; \
     Remove-Item openjdk.msi -Force
+ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+IdleTuningGcOnIdle"
diff --git a/adoptopenjdk_8-hotspot-bionic/Dockerfile.hotspot.releases.full b/adoptopenjdk_8-hotspot-bionic/Dockerfile.hotspot.releases.full
index 5227a8a..305e1b7 100644
--- a/adoptopenjdk_8-hotspot-bionic/Dockerfile.hotspot.releases.full
+++ b/adoptopenjdk_8-hotspot-bionic/Dockerfile.hotspot.releases.full
@@ -17,7 +17,7 @@
 # limitations under the License.
 #
 
-FROM ubuntu:18.04
+FROM ubuntu:20.04
 
 ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
 
@@ -27,30 +27,30 @@ RUN apt-get update \
     && locale-gen en_US.UTF-8 \
     && rm -rf /var/lib/apt/lists/*
 
-ENV JAVA_VERSION jdk8u262-b10
+ENV JAVA_VERSION jdk8u265-b01
 
 RUN set -eux; \
     ARCH="$(dpkg --print-architecture)"; \
     case "${ARCH}" in \
        aarch64|arm64) \
-         ESUM='7be0b2a4c749a277302a54b456624c076b3a5b990ad502e2a72d803ab31aecab'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10/OpenJDK8U-jdk_aarch64_linux_hotspot_8u262b10.tar.gz'; \
+         ESUM='87d16dac293d2a9abbb559a277bfaded702f28d1bfdc526f8613bb9cfed84a12'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01/OpenJDK8U-jdk_aarch64_linux_hotspot_8u265b01.tar.gz'; \
          ;; \
        armhf|armv7l) \
-         ESUM='dd85ebb9a64916b4b621a23729e3360adb363d430bf1e99e98f25397834d74bd'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10/OpenJDK8U-jdk_arm_linux_hotspot_8u262b10.tar.gz'; \
+         ESUM='dc3405aab81f422b7721f665c76371bd7b03c291eea89cd110a82d8bcf07809a'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01/OpenJDK8U-jdk_arm_linux_hotspot_8u265b01.tar.gz'; \
          ;; \
        ppc64el|ppc64le) \
-         ESUM='d2a16915fb85ba851145c91cda5666cb78f06bf4713a2b3bdce813779ff972c2'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10/OpenJDK8U-jdk_ppc64le_linux_hotspot_8u262b10.tar.gz'; \
+         ESUM='7bbb9d76458ee29bc5e2458b32a91b8c032ecffe6cb8500734ca41d2d8f5c9f3'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01/OpenJDK8U-jdk_ppc64le_linux_hotspot_8u265b01.tar.gz'; \
          ;; \
        s390x) \
-         ESUM='a504af6924a095cfb6c392653dccd7299925048c91b399d05efa95a094820120'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10/OpenJDK8U-jdk_s390x_linux_hotspot_8u262b10.tar.gz'; \
+         ESUM='aca50f02d59169cb428d54501846b518edc9fff6a6f428459c72b4faa2b4abb0'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01/OpenJDK8U-jdk_s390x_linux_hotspot_8u265b01.tar.gz'; \
          ;; \
        amd64|x86_64) \
-         ESUM='733755fd649fad6ae91fc083f7e5a5a0b56410fb6ac1815cff29f744b128b1b1'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10/OpenJDK8U-jdk_x64_linux_hotspot_8u262b10.tar.gz'; \
+         ESUM='1285da6278f2d38a790a21148d7e683f20de0799c44b937043830ef6b57f58c4'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01/OpenJDK8U-jdk_x64_linux_hotspot_8u265b01.tar.gz'; \
          ;; \
        *) \
          echo "Unsupported arch: ${ARCH}"; \
diff --git a/adoptopenjdk_8-hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full b/adoptopenjdk_8-hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full
index f3fd09c..7f626b3 100644
--- a/adoptopenjdk_8-hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full
+++ b/adoptopenjdk_8-hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full
@@ -22,13 +22,13 @@ FROM mcr.microsoft.com/windows/servercore:1809
 # $ProgressPreference: https://github.com/PowerShell/PowerShell/issues/2138#issuecomment-251261324
 SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
 
-ENV JAVA_VERSION jdk8u262-b10
+ENV JAVA_VERSION jdk8u265-b01
 
-RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10/OpenJDK8U-jdk_x64_windows_hotspot_8u262b10.msi ...'); \
+RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01/OpenJDK8U-jdk_x64_windows_hotspot_8u265b01.msi ...'); \
     [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \
-    wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10/OpenJDK8U-jdk_x64_windows_hotspot_8u262b10.msi -O 'openjdk.msi'; \
-    Write-Host ('Verifying sha256 (251429e9c5ea2d2950aceca10c67e4bf5be3f5f299f2fad4c9757b5ac857cc2c) ...'); \
-    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne '251429e9c5ea2d2950aceca10c67e4bf5be3f5f299f2fad4c9757b5ac857cc2c') { \
+    wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01/OpenJDK8U-jdk_x64_windows_hotspot_8u265b01.msi -O 'openjdk.msi'; \
+    Write-Host ('Verifying sha256 (3749bfd8dcc4ce3877a5b593f7df8fe05d7294435b62a919be35a003c559e033) ...'); \
+    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne '3749bfd8dcc4ce3877a5b593f7df8fe05d7294435b62a919be35a003c559e033') { \
             Write-Host 'FAILED!'; \
             exit 1; \
     }; \
diff --git a/adoptopenjdk_8-hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full b/adoptopenjdk_8-hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full
index 08180ff..1ce974f 100644
--- a/adoptopenjdk_8-hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full
+++ b/adoptopenjdk_8-hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full
@@ -22,13 +22,13 @@ FROM mcr.microsoft.com/windows/servercore:ltsc2016
 # $ProgressPreference: https://github.com/PowerShell/PowerShell/issues/2138#issuecomment-251261324
 SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
 
-ENV JAVA_VERSION jdk8u262-b10
+ENV JAVA_VERSION jdk8u265-b01
 
-RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10/OpenJDK8U-jdk_x64_windows_hotspot_8u262b10.msi ...'); \
+RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01/OpenJDK8U-jdk_x64_windows_hotspot_8u265b01.msi ...'); \
     [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \
-    wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10/OpenJDK8U-jdk_x64_windows_hotspot_8u262b10.msi -O 'openjdk.msi'; \
-    Write-Host ('Verifying sha256 (251429e9c5ea2d2950aceca10c67e4bf5be3f5f299f2fad4c9757b5ac857cc2c) ...'); \
-    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne '251429e9c5ea2d2950aceca10c67e4bf5be3f5f299f2fad4c9757b5ac857cc2c') { \
+    wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01/OpenJDK8U-jdk_x64_windows_hotspot_8u265b01.msi -O 'openjdk.msi'; \
+    Write-Host ('Verifying sha256 (3749bfd8dcc4ce3877a5b593f7df8fe05d7294435b62a919be35a003c559e033) ...'); \
+    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne '3749bfd8dcc4ce3877a5b593f7df8fe05d7294435b62a919be35a003c559e033') { \
             Write-Host 'FAILED!'; \
             exit 1; \
     }; \
diff --git a/adoptopenjdk_8-jre-hotspot-bionic/Dockerfile.hotspot.releases.full b/adoptopenjdk_8-jre-hotspot-bionic/Dockerfile.hotspot.releases.full
index b6996a0..92f52aa 100644
--- a/adoptopenjdk_8-jre-hotspot-bionic/Dockerfile.hotspot.releases.full
+++ b/adoptopenjdk_8-jre-hotspot-bionic/Dockerfile.hotspot.releases.full
@@ -17,7 +17,7 @@
 # limitations under the License.
 #
 
-FROM ubuntu:18.04
+FROM ubuntu:20.04
 
 ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
 
@@ -27,30 +27,30 @@ RUN apt-get update \
     && locale-gen en_US.UTF-8 \
     && rm -rf /var/lib/apt/lists/*
 
-ENV JAVA_VERSION jdk8u262-b10
+ENV JAVA_VERSION jdk8u265-b01
 
 RUN set -eux; \
     ARCH="$(dpkg --print-architecture)"; \
     case "${ARCH}" in \
        aarch64|arm64) \
-         ESUM='0ad1ff282ad034a613c64313c885edef5dfbc5dd51f2eda705bbeb7fa822f238'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10/OpenJDK8U-jre_aarch64_linux_hotspot_8u262b10.tar.gz'; \
+         ESUM='2f9c5be1bf704f1233bcf96b8c02524c14dc4d43dc80c4926856091961b79948'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01/OpenJDK8U-jre_aarch64_linux_hotspot_8u265b01.tar.gz'; \
          ;; \
        armhf|armv7l) \
-         ESUM='330ce008c6f49ddd6dcf43c7839896bb7fe14843300358a71b441a3f94036f69'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10/OpenJDK8U-jre_arm_linux_hotspot_8u262b10.tar.gz'; \
+         ESUM='4ac2503725b2729ec245dbdb000b2486f9c73ae86860c9525f9ac822ec81f0d6'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01/OpenJDK8U-jre_arm_linux_hotspot_8u265b01.tar.gz'; \
          ;; \
        ppc64el|ppc64le) \
-         ESUM='12309354889da2ed9085fda9812c7d2653fa099c36d322af222da11cbb244df7'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10/OpenJDK8U-jre_ppc64le_linux_hotspot_8u262b10.tar.gz'; \
+         ESUM='4fb3640fae4b9bd4ebf834c775b547ed930cd1b805f4686223994480411aee72'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01/OpenJDK8U-jre_ppc64le_linux_hotspot_8u265b01.tar.gz'; \
          ;; \
        s390x) \
-         ESUM='0225d0a8707c0b6a059c58b77dd7387fb439816100d668ba000c4536cef77fc2'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10/OpenJDK8U-jre_s390x_linux_hotspot_8u262b10.tar.gz'; \
+         ESUM='8b76480c809c4fde654ab55d10371c35d70b50069ab1724960509d99ed61065d'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01/OpenJDK8U-jre_s390x_linux_hotspot_8u265b01.tar.gz'; \
          ;; \
        amd64|x86_64) \
-         ESUM='3ce1f34b279a4f8fc6374f5644739622886dd4bcac4fcb0eb596955bac5ca5a4'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10/OpenJDK8U-jre_x64_linux_hotspot_8u262b10.tar.gz'; \
+         ESUM='9bce39f63d24626da75778f240294fa466a0ed117e32db798164621fe30b0723'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01/OpenJDK8U-jre_x64_linux_hotspot_8u265b01.tar.gz'; \
          ;; \
        *) \
          echo "Unsupported arch: ${ARCH}"; \
diff --git a/adoptopenjdk_8-jre-hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full b/adoptopenjdk_8-jre-hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full
index 0a3b655..f414d68 100644
--- a/adoptopenjdk_8-jre-hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full
+++ b/adoptopenjdk_8-jre-hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full
@@ -22,13 +22,13 @@ FROM mcr.microsoft.com/windows/servercore:1809
 # $ProgressPreference: https://github.com/PowerShell/PowerShell/issues/2138#issuecomment-251261324
 SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
 
-ENV JAVA_VERSION jdk8u252-b09.1
+ENV JAVA_VERSION jdk8u265-b01
 
-RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u252-b09.1/OpenJDK8U-jre_x64_windows_hotspot_8u252b09.msi ...'); \
+RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01/OpenJDK8U-jre_x64_windows_hotspot_8u265b01.msi ...'); \
     [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \
-        wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u252-b09.1/OpenJDK8U-jre_x64_windows_hotspot_8u252b09.msi -O 'openjdk.msi'; \
-        Write-Host ('Verifying sha256 (7651a26e53260e48ca2431a8cdb6b910e8f8c92564cb8378b566d77346a63527) ...'); \
-        if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne '7651a26e53260e48ca2431a8cdb6b910e8f8c92564cb8378b566d77346a63527') { \
+    wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01/OpenJDK8U-jre_x64_windows_hotspot_8u265b01.msi -O 'openjdk.msi'; \
+    Write-Host ('Verifying sha256 (5a41ec5d781429b7364412fcb7a05bfd4dd633d9b5e67ab2cdf878ee5ed4c722) ...'); \
+    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne '5a41ec5d781429b7364412fcb7a05bfd4dd633d9b5e67ab2cdf878ee5ed4c722') { \
             Write-Host 'FAILED!'; \
             exit 1; \
     }; \
@@ -38,6 +38,6 @@ RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk8-binaries/r
     Write-Host 'Installing using MSI ...'; \
     Start-Process -FilePath "msiexec.exe" -ArgumentList '/i', 'openjdk.msi', '/L*V', 'C:\temp\OpenJDK.log', \
     '/quiet', 'ADDLOCAL=FeatureEnvironment,FeatureJarFileRunWith,FeatureJavaHome' -Wait -Passthru; \
+    Remove-Item -Path C:\temp -Recurse | Out-Null; \
     Write-Host 'Removing openjdk.msi ...'; \
-        Remove-Item openjdk.msi -Force; \
-        Remove-Item -Path C:\temp -Recurse | Out-Null;
+    Remove-Item openjdk.msi -Force
diff --git a/adoptopenjdk_8-jre-hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full b/adoptopenjdk_8-jre-hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full
index 7790fd0..660a88c 100644
--- a/adoptopenjdk_8-jre-hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full
+++ b/adoptopenjdk_8-jre-hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full
@@ -22,13 +22,13 @@ FROM mcr.microsoft.com/windows/servercore:ltsc2016
 # $ProgressPreference: https://github.com/PowerShell/PowerShell/issues/2138#issuecomment-251261324
 SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
 
-ENV JAVA_VERSION jdk8u262-b10
+ENV JAVA_VERSION jdk8u265-b01
 
-RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10/OpenJDK8U-jre_x64_windows_hotspot_8u262b10.msi ...'); \
+RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01/OpenJDK8U-jre_x64_windows_hotspot_8u265b01.msi ...'); \
     [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \
-    wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10/OpenJDK8U-jre_x64_windows_hotspot_8u262b10.msi -O 'openjdk.msi'; \
-    Write-Host ('Verifying sha256 (e85f21cddd791f1b362de285338912de60ee12d7fd27847faeee37f294f7a06b) ...'); \
-    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne 'e85f21cddd791f1b362de285338912de60ee12d7fd27847faeee37f294f7a06b') { \
+    wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01/OpenJDK8U-jre_x64_windows_hotspot_8u265b01.msi -O 'openjdk.msi'; \
+    Write-Host ('Verifying sha256 (5a41ec5d781429b7364412fcb7a05bfd4dd633d9b5e67ab2cdf878ee5ed4c722) ...'); \
+    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne '5a41ec5d781429b7364412fcb7a05bfd4dd633d9b5e67ab2cdf878ee5ed4c722') { \
             Write-Host 'FAILED!'; \
             exit 1; \
     }; \
diff --git a/adoptopenjdk_8-jre-openj9-bionic/Dockerfile.openj9.releases.full b/adoptopenjdk_8-jre-openj9-bionic/Dockerfile.openj9.releases.full
index 368a875..db6266a 100644
--- a/adoptopenjdk_8-jre-openj9-bionic/Dockerfile.openj9.releases.full
+++ b/adoptopenjdk_8-jre-openj9-bionic/Dockerfile.openj9.releases.full
@@ -17,7 +17,7 @@
 # limitations under the License.
 #
 
-FROM ubuntu:18.04
+FROM ubuntu:20.04
 
 ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
 
@@ -27,22 +27,22 @@ RUN apt-get update \
     && locale-gen en_US.UTF-8 \
     && rm -rf /var/lib/apt/lists/*
 
-ENV JAVA_VERSION jdk8u262-b10_openj9-0.21.0
+ENV JAVA_VERSION jdk8u265-b01_openj9-0.21.0
 
 RUN set -eux; \
     ARCH="$(dpkg --print-architecture)"; \
     case "${ARCH}" in \
        ppc64el|ppc64le) \
-         ESUM='722517d9565bd9602580609114eb0de9b40b01050d52ff7bae24c438d363e186'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10_openj9-0.21.0/OpenJDK8U-jre_ppc64le_linux_openj9_8u262b10_openj9-0.21.0.tar.gz'; \
+         ESUM='b1c91e757195b87d51027ea97fece00ac1adb9837b055e5f039dd45511fb3c0a'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01_openj9-0.21.0/OpenJDK8U-jre_ppc64le_linux_openj9_8u265b01_openj9-0.21.0.tar.gz'; \
          ;; \
        s390x) \
-         ESUM='c14aeedf4e989a6b31e00d6e18b8377957b07b000cac316aee9d973ef6d65b6f'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10_openj9-0.21.0/OpenJDK8U-jre_s390x_linux_openj9_8u262b10_openj9-0.21.0.tar.gz'; \
+         ESUM='ec573cb2361b5fee3944387329d7859889d73c6c8a7d5f7ecf0d95503efda726'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01_openj9-0.21.0/OpenJDK8U-jre_s390x_linux_openj9_8u265b01_openj9-0.21.0.tar.gz'; \
          ;; \
        amd64|x86_64) \
-         ESUM='aef8750b492ff6371318cf5138e38827d8895815b2ac079dcfcb02007a45c7f6'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10_openj9-0.21.0/OpenJDK8U-jre_x64_linux_openj9_8u262b10_openj9-0.21.0.tar.gz'; \
+         ESUM='0da0aad21f02b4f08f717647def8beafcf0116c36b195705416f46a1ab97f4de'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01_openj9-0.21.0/OpenJDK8U-jre_x64_linux_openj9_8u265b01_openj9-0.21.0.tar.gz'; \
          ;; \
        *) \
          echo "Unsupported arch: ${ARCH}"; \
@@ -58,4 +58,65 @@ RUN set -eux; \
 
 ENV JAVA_HOME=/opt/java/openjdk \
     PATH="/opt/java/openjdk/bin:$PATH"
-ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+UseContainerSupport -XX:+IdleTuningCompactOnIdle -XX:+IdleTuningGcOnIdle"
+ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+IdleTuningGcOnIdle"
+
+# Create OpenJ9 SharedClassCache (SCC) for bootclasses to improve the java startup.
+# Downloads and runs tomcat to generate SCC for bootclasses at /opt/java/.scc/openj9_system_scc
+# Does a dry-run and calculates the optimal cache size and recreates the cache with the appropriate size.
+# With SCC, OpenJ9 startup is improved ~50% with an increase in image size of ~14MB
+# Application classes can be create a separate cache layer with this as the base for further startup improvement
+
+RUN set -eux; \
+    unset OPENJ9_JAVA_OPTIONS; \
+    SCC_SIZE="50m"; \
+    SCC_GEN_RUNS_COUNT=3; \
+    DOWNLOAD_PATH_TOMCAT=/tmp/tomcat; \
+    INSTALL_PATH_TOMCAT=/opt/tomcat-home; \
+    TOMCAT_CHECKSUM="0db27185d9fc3174f2c670f814df3dda8a008b89d1a38a5d96cbbe119767ebfb1cf0bce956b27954aee9be19c4a7b91f2579d967932207976322033a86075f98"; \
+    TOMCAT_DWNLD_URL="https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.35/bin/apache-tomcat-9.0.35.tar.gz"; \
+    \
+    mkdir -p "${DOWNLOAD_PATH_TOMCAT}" "${INSTALL_PATH_TOMCAT}"; \
+    curl -LfsSo "${DOWNLOAD_PATH_TOMCAT}"/tomcat.tar.gz "${TOMCAT_DWNLD_URL}"; \
+    echo "${TOMCAT_CHECKSUM} *${DOWNLOAD_PATH_TOMCAT}/tomcat.tar.gz" | sha512sum -c -; \
+    tar -xf "${DOWNLOAD_PATH_TOMCAT}"/tomcat.tar.gz -C "${INSTALL_PATH_TOMCAT}" --strip-components=1; \
+    rm -rf "${DOWNLOAD_PATH_TOMCAT}"; \
+    \
+    java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal,createLayer -Xscmx$SCC_SIZE -version; \
+    export OPENJ9_JAVA_OPTIONS="-Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal"; \
+    for i in $(seq 0 $SCC_GEN_RUNS_COUNT); \
+    do \
+        "${INSTALL_PATH_TOMCAT}"/bin/startup.sh; \
+        sleep 5; \
+        "${INSTALL_PATH_TOMCAT}"/bin/shutdown.sh; \
+        sleep 5; \
+    done; \
+    \
+    FULL=$( (java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,printallStats 2>&1 || true) | awk '/^Cache is [0-9.]*% .*full/ {print substr($3, 1, length($3)-1)}'); \
+    DST_CACHE=$(java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,destroy 2>&1 || true); \
+    SCC_SIZE=$(echo $SCC_SIZE | sed 's/.$//'); \
+    SCC_SIZE=$(awk "BEGIN {print int($SCC_SIZE * $FULL / 100.0)}"); \
+    [ "${SCC_SIZE}" -eq 0 ] && SCC_SIZE=1; \
+    SCC_SIZE="${SCC_SIZE}m"; \
+    java -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal,createLayer -Xscmx$SCC_SIZE -version; \
+    unset OPENJ9_JAVA_OPTIONS; \
+    \
+    export OPENJ9_JAVA_OPTIONS="-Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal"; \
+    for i in $(seq 0 $SCC_GEN_RUNS_COUNT); \
+    do \
+        "${INSTALL_PATH_TOMCAT}"/bin/startup.sh; \
+        sleep 5; \
+        "${INSTALL_PATH_TOMCAT}"/bin/shutdown.sh; \
+        sleep 5; \
+    done; \
+    \
+    FULL=$( (java -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,printallStats 2>&1 || true) | awk '/^Cache is [0-9.]*% .*full/ {print substr($3, 1, length($3)-1)}'); \
+    echo "SCC layer is $FULL% full."; \
+    rm -rf "${INSTALL_PATH_TOMCAT}"; \
+    if [ -d "/opt/java/.scc" ]; then \
+          chmod -R 0777 /opt/java/.scc; \
+    fi; \
+    \
+    echo "SCC generation phase completed";
+
+ENV OPENJ9_JAVA_OPTIONS="-Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,readonly,nonFatal"
+
diff --git a/adoptopenjdk_8-jre-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full b/adoptopenjdk_8-jre-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
index 11edf8f..1e463ce 100644
--- a/adoptopenjdk_8-jre-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
+++ b/adoptopenjdk_8-jre-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
@@ -22,13 +22,13 @@ FROM mcr.microsoft.com/windows/servercore:1809
 # $ProgressPreference: https://github.com/PowerShell/PowerShell/issues/2138#issuecomment-251261324
 SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
 
-ENV JAVA_VERSION jdk8u262-b10_openj9-0.21.0
+ENV JAVA_VERSION jdk8u265-b01_openj9-0.21.0
 
-RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10_openj9-0.21.0/OpenJDK8U-jre_x64_windows_openj9_8u262b10_openj9-0.21.0.msi ...'); \
+RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01_openj9-0.21.0/OpenJDK8U-jre_x64_windows_openj9_8u265b01_openj9-0.21.0.msi ...'); \
     [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \
-    wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10_openj9-0.21.0/OpenJDK8U-jre_x64_windows_openj9_8u262b10_openj9-0.21.0.msi -O 'openjdk.msi'; \
-    Write-Host ('Verifying sha256 (cfa3f17ea264303f1bea55391a10ce9fcfceff2653161c00fd96f84f2e7dcf63) ...'); \
-    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne 'cfa3f17ea264303f1bea55391a10ce9fcfceff2653161c00fd96f84f2e7dcf63') { \
+    wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01_openj9-0.21.0/OpenJDK8U-jre_x64_windows_openj9_8u265b01_openj9-0.21.0.msi -O 'openjdk.msi'; \
+    Write-Host ('Verifying sha256 (6685611c930761f77f9499de8c992d67859887183e72aa67f3724dc81d3e2472) ...'); \
+    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne '6685611c930761f77f9499de8c992d67859887183e72aa67f3724dc81d3e2472') { \
             Write-Host 'FAILED!'; \
             exit 1; \
     }; \
@@ -41,4 +41,4 @@ RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk8-binaries/r
     Remove-Item -Path C:\temp -Recurse | Out-Null; \
     Write-Host 'Removing openjdk.msi ...'; \
     Remove-Item openjdk.msi -Force
-ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+UseContainerSupport -XX:+IdleTuningCompactOnIdle -XX:+IdleTuningGcOnIdle"
+ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+IdleTuningGcOnIdle"
diff --git a/adoptopenjdk_8-jre-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full b/adoptopenjdk_8-jre-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
index 8e2cbf9..da154b2 100644
--- a/adoptopenjdk_8-jre-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
+++ b/adoptopenjdk_8-jre-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
@@ -22,13 +22,13 @@ FROM mcr.microsoft.com/windows/servercore:ltsc2016
 # $ProgressPreference: https://github.com/PowerShell/PowerShell/issues/2138#issuecomment-251261324
 SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
 
-ENV JAVA_VERSION jdk8u262-b10_openj9-0.21.0
+ENV JAVA_VERSION jdk8u265-b01_openj9-0.21.0
 
-RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10_openj9-0.21.0/OpenJDK8U-jre_x64_windows_openj9_8u262b10_openj9-0.21.0.msi ...'); \
+RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01_openj9-0.21.0/OpenJDK8U-jre_x64_windows_openj9_8u265b01_openj9-0.21.0.msi ...'); \
     [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \
-    wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10_openj9-0.21.0/OpenJDK8U-jre_x64_windows_openj9_8u262b10_openj9-0.21.0.msi -O 'openjdk.msi'; \
-    Write-Host ('Verifying sha256 (cfa3f17ea264303f1bea55391a10ce9fcfceff2653161c00fd96f84f2e7dcf63) ...'); \
-    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne 'cfa3f17ea264303f1bea55391a10ce9fcfceff2653161c00fd96f84f2e7dcf63') { \
+    wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01_openj9-0.21.0/OpenJDK8U-jre_x64_windows_openj9_8u265b01_openj9-0.21.0.msi -O 'openjdk.msi'; \
+    Write-Host ('Verifying sha256 (6685611c930761f77f9499de8c992d67859887183e72aa67f3724dc81d3e2472) ...'); \
+    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne '6685611c930761f77f9499de8c992d67859887183e72aa67f3724dc81d3e2472') { \
             Write-Host 'FAILED!'; \
             exit 1; \
     }; \
@@ -41,4 +41,4 @@ RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk8-binaries/r
     Remove-Item -Path C:\temp -Recurse | Out-Null; \
     Write-Host 'Removing openjdk.msi ...'; \
     Remove-Item openjdk.msi -Force
-ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+UseContainerSupport -XX:+IdleTuningCompactOnIdle -XX:+IdleTuningGcOnIdle"
+ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+IdleTuningGcOnIdle"
diff --git a/adoptopenjdk_8-openj9-bionic/Dockerfile.openj9.releases.full b/adoptopenjdk_8-openj9-bionic/Dockerfile.openj9.releases.full
index d09a5a0..cb3615c 100644
--- a/adoptopenjdk_8-openj9-bionic/Dockerfile.openj9.releases.full
+++ b/adoptopenjdk_8-openj9-bionic/Dockerfile.openj9.releases.full
@@ -17,7 +17,7 @@
 # limitations under the License.
 #
 
-FROM ubuntu:18.04
+FROM ubuntu:20.04
 
 ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
 
@@ -27,22 +27,22 @@ RUN apt-get update \
     && locale-gen en_US.UTF-8 \
     && rm -rf /var/lib/apt/lists/*
 
-ENV JAVA_VERSION jdk8u262-b10_openj9-0.21.0
+ENV JAVA_VERSION jdk8u265-b01_openj9-0.21.0
 
 RUN set -eux; \
     ARCH="$(dpkg --print-architecture)"; \
     case "${ARCH}" in \
        ppc64el|ppc64le) \
-         ESUM='8659c84c5c5d94ffed4789f06f2be401e59020b83e95fd45e71992f425483a13'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10_openj9-0.21.0/OpenJDK8U-jdk_ppc64le_linux_openj9_8u262b10_openj9-0.21.0.tar.gz'; \
+         ESUM='ad78af32749b40f9f1dcc7ba23aa5e0ac0e7b63edd355d56e766a04d7ab3b60c'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01_openj9-0.21.0/OpenJDK8U-jdk_ppc64le_linux_openj9_8u265b01_openj9-0.21.0.tar.gz'; \
          ;; \
        s390x) \
-         ESUM='37fe91840b1d8fa98bc6a859ef29b28e0b2187cd926c9d58743f7022640f8d8e'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10_openj9-0.21.0/OpenJDK8U-jdk_s390x_linux_openj9_8u262b10_openj9-0.21.0.tar.gz'; \
+         ESUM='54b9dbcf9f221a0c2ed469b3b5828b56b2cf22fbbf61f0b462b4a9db0737f7f7'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01_openj9-0.21.0/OpenJDK8U-jdk_s390x_linux_openj9_8u265b01_openj9-0.21.0.tar.gz'; \
          ;; \
        amd64|x86_64) \
-         ESUM='bdeab95a04462ae48df1dc1c53c833f86bfa34bd3a86c65c7adad7c096a1dbce'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10_openj9-0.21.0/OpenJDK8U-jdk_x64_linux_openj9_8u262b10_openj9-0.21.0.tar.gz'; \
+         ESUM='88ff739005cbb012f3ee73d426bd75810ce7de551d08e555475a261d57e3ecbf'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01_openj9-0.21.0/OpenJDK8U-jdk_x64_linux_openj9_8u265b01_openj9-0.21.0.tar.gz'; \
          ;; \
        *) \
          echo "Unsupported arch: ${ARCH}"; \
@@ -58,4 +58,65 @@ RUN set -eux; \
 
 ENV JAVA_HOME=/opt/java/openjdk \
     PATH="/opt/java/openjdk/bin:$PATH"
-ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+UseContainerSupport -XX:+IdleTuningCompactOnIdle -XX:+IdleTuningGcOnIdle"
+ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+IdleTuningGcOnIdle"
+
+# Create OpenJ9 SharedClassCache (SCC) for bootclasses to improve the java startup.
+# Downloads and runs tomcat to generate SCC for bootclasses at /opt/java/.scc/openj9_system_scc
+# Does a dry-run and calculates the optimal cache size and recreates the cache with the appropriate size.
+# With SCC, OpenJ9 startup is improved ~50% with an increase in image size of ~14MB
+# Application classes can be create a separate cache layer with this as the base for further startup improvement
+
+RUN set -eux; \
+    unset OPENJ9_JAVA_OPTIONS; \
+    SCC_SIZE="50m"; \
+    SCC_GEN_RUNS_COUNT=3; \
+    DOWNLOAD_PATH_TOMCAT=/tmp/tomcat; \
+    INSTALL_PATH_TOMCAT=/opt/tomcat-home; \
+    TOMCAT_CHECKSUM="0db27185d9fc3174f2c670f814df3dda8a008b89d1a38a5d96cbbe119767ebfb1cf0bce956b27954aee9be19c4a7b91f2579d967932207976322033a86075f98"; \
+    TOMCAT_DWNLD_URL="https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.35/bin/apache-tomcat-9.0.35.tar.gz"; \
+    \
+    mkdir -p "${DOWNLOAD_PATH_TOMCAT}" "${INSTALL_PATH_TOMCAT}"; \
+    curl -LfsSo "${DOWNLOAD_PATH_TOMCAT}"/tomcat.tar.gz "${TOMCAT_DWNLD_URL}"; \
+    echo "${TOMCAT_CHECKSUM} *${DOWNLOAD_PATH_TOMCAT}/tomcat.tar.gz" | sha512sum -c -; \
+    tar -xf "${DOWNLOAD_PATH_TOMCAT}"/tomcat.tar.gz -C "${INSTALL_PATH_TOMCAT}" --strip-components=1; \
+    rm -rf "${DOWNLOAD_PATH_TOMCAT}"; \
+    \
+    java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal,createLayer -Xscmx$SCC_SIZE -version; \
+    export OPENJ9_JAVA_OPTIONS="-Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal"; \
+    for i in $(seq 0 $SCC_GEN_RUNS_COUNT); \
+    do \
+        "${INSTALL_PATH_TOMCAT}"/bin/startup.sh; \
+        sleep 5; \
+        "${INSTALL_PATH_TOMCAT}"/bin/shutdown.sh; \
+        sleep 5; \
+    done; \
+    \
+    FULL=$( (java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,printallStats 2>&1 || true) | awk '/^Cache is [0-9.]*% .*full/ {print substr($3, 1, length($3)-1)}'); \
+    DST_CACHE=$(java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,destroy 2>&1 || true); \
+    SCC_SIZE=$(echo $SCC_SIZE | sed 's/.$//'); \
+    SCC_SIZE=$(awk "BEGIN {print int($SCC_SIZE * $FULL / 100.0)}"); \
+    [ "${SCC_SIZE}" -eq 0 ] && SCC_SIZE=1; \
+    SCC_SIZE="${SCC_SIZE}m"; \
+    java -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal,createLayer -Xscmx$SCC_SIZE -version; \
+    unset OPENJ9_JAVA_OPTIONS; \
+    \
+    export OPENJ9_JAVA_OPTIONS="-Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal"; \
+    for i in $(seq 0 $SCC_GEN_RUNS_COUNT); \
+    do \
+        "${INSTALL_PATH_TOMCAT}"/bin/startup.sh; \
+        sleep 5; \
+        "${INSTALL_PATH_TOMCAT}"/bin/shutdown.sh; \
+        sleep 5; \
+    done; \
+    \
+    FULL=$( (java -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,printallStats 2>&1 || true) | awk '/^Cache is [0-9.]*% .*full/ {print substr($3, 1, length($3)-1)}'); \
+    echo "SCC layer is $FULL% full."; \
+    rm -rf "${INSTALL_PATH_TOMCAT}"; \
+    if [ -d "/opt/java/.scc" ]; then \
+          chmod -R 0777 /opt/java/.scc; \
+    fi; \
+    \
+    echo "SCC generation phase completed";
+
+ENV OPENJ9_JAVA_OPTIONS="-Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,readonly,nonFatal"
+
diff --git a/adoptopenjdk_8-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full b/adoptopenjdk_8-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
index 640e854..2549894 100644
--- a/adoptopenjdk_8-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
+++ b/adoptopenjdk_8-openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
@@ -22,13 +22,13 @@ FROM mcr.microsoft.com/windows/servercore:1809
 # $ProgressPreference: https://github.com/PowerShell/PowerShell/issues/2138#issuecomment-251261324
 SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
 
-ENV JAVA_VERSION jdk8u262-b10_openj9-0.21.0
+ENV JAVA_VERSION jdk8u265-b01_openj9-0.21.0
 
-RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10_openj9-0.21.0/OpenJDK8U-jdk_x64_windows_openj9_8u262b10_openj9-0.21.0.msi ...'); \
+RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01_openj9-0.21.0/OpenJDK8U-jdk_x64_windows_openj9_8u265b01_openj9-0.21.0.msi ...'); \
     [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \
-    wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10_openj9-0.21.0/OpenJDK8U-jdk_x64_windows_openj9_8u262b10_openj9-0.21.0.msi -O 'openjdk.msi'; \
-    Write-Host ('Verifying sha256 (824f32604bee0469d9dac5208dc8a025a142d95c53d838eab753bda619d46614) ...'); \
-    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne '824f32604bee0469d9dac5208dc8a025a142d95c53d838eab753bda619d46614') { \
+    wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01_openj9-0.21.0/OpenJDK8U-jdk_x64_windows_openj9_8u265b01_openj9-0.21.0.msi -O 'openjdk.msi'; \
+    Write-Host ('Verifying sha256 (7e766cba0e9712be33a6be2412a8f58cc2daa813512f90e58d7ab2ebceed4357) ...'); \
+    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne '7e766cba0e9712be33a6be2412a8f58cc2daa813512f90e58d7ab2ebceed4357') { \
             Write-Host 'FAILED!'; \
             exit 1; \
     }; \
@@ -41,4 +41,4 @@ RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk8-binaries/r
     Remove-Item -Path C:\temp -Recurse | Out-Null; \
     Write-Host 'Removing openjdk.msi ...'; \
     Remove-Item openjdk.msi -Force
-ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+UseContainerSupport -XX:+IdleTuningCompactOnIdle -XX:+IdleTuningGcOnIdle"
+ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+IdleTuningGcOnIdle"
diff --git a/adoptopenjdk_8-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full b/adoptopenjdk_8-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
index 6d86a27..a2b57bf 100644
--- a/adoptopenjdk_8-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
+++ b/adoptopenjdk_8-openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
@@ -22,13 +22,13 @@ FROM mcr.microsoft.com/windows/servercore:ltsc2016
 # $ProgressPreference: https://github.com/PowerShell/PowerShell/issues/2138#issuecomment-251261324
 SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
 
-ENV JAVA_VERSION jdk8u262-b10_openj9-0.21.0
+ENV JAVA_VERSION jdk8u265-b01_openj9-0.21.0
 
-RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10_openj9-0.21.0/OpenJDK8U-jdk_x64_windows_openj9_8u262b10_openj9-0.21.0.msi ...'); \
+RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01_openj9-0.21.0/OpenJDK8U-jdk_x64_windows_openj9_8u265b01_openj9-0.21.0.msi ...'); \
     [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \
-    wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u262-b10_openj9-0.21.0/OpenJDK8U-jdk_x64_windows_openj9_8u262b10_openj9-0.21.0.msi -O 'openjdk.msi'; \
-    Write-Host ('Verifying sha256 (824f32604bee0469d9dac5208dc8a025a142d95c53d838eab753bda619d46614) ...'); \
-    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne '824f32604bee0469d9dac5208dc8a025a142d95c53d838eab753bda619d46614') { \
+    wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01_openj9-0.21.0/OpenJDK8U-jdk_x64_windows_openj9_8u265b01_openj9-0.21.0.msi -O 'openjdk.msi'; \
+    Write-Host ('Verifying sha256 (7e766cba0e9712be33a6be2412a8f58cc2daa813512f90e58d7ab2ebceed4357) ...'); \
+    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne '7e766cba0e9712be33a6be2412a8f58cc2daa813512f90e58d7ab2ebceed4357') { \
             Write-Host 'FAILED!'; \
             exit 1; \
     }; \
@@ -41,4 +41,4 @@ RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk8-binaries/r
     Remove-Item -Path C:\temp -Recurse | Out-Null; \
     Write-Host 'Removing openjdk.msi ...'; \
     Remove-Item openjdk.msi -Force
-ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+UseContainerSupport -XX:+IdleTuningCompactOnIdle -XX:+IdleTuningGcOnIdle"
+ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+IdleTuningGcOnIdle"
diff --git a/adoptopenjdk_hotspot-bionic/Dockerfile.hotspot.releases.full b/adoptopenjdk_hotspot-bionic/Dockerfile.hotspot.releases.full
index b9cfc0c..7990f08 100644
--- a/adoptopenjdk_hotspot-bionic/Dockerfile.hotspot.releases.full
+++ b/adoptopenjdk_hotspot-bionic/Dockerfile.hotspot.releases.full
@@ -17,7 +17,7 @@
 # limitations under the License.
 #
 
-FROM ubuntu:18.04
+FROM ubuntu:20.04
 
 ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
 
@@ -27,30 +27,30 @@ RUN apt-get update \
     && locale-gen en_US.UTF-8 \
     && rm -rf /var/lib/apt/lists/*
 
-ENV JAVA_VERSION jdk-14.0.2+12
+ENV JAVA_VERSION jdk-15+36
 
 RUN set -eux; \
     ARCH="$(dpkg --print-architecture)"; \
     case "${ARCH}" in \
        aarch64|arm64) \
-         ESUM='ee87e9f03b1fbe6f328429b78fe1a9f44900026d220c90dfd747fe0bcd62d904'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12/OpenJDK14U-jdk_aarch64_linux_hotspot_14.0.2_12.tar.gz'; \
+         ESUM='44c8cd580f6e828f8fbb431a59b3c8f694da8c75adb7c311f7b6b9ed81c19c54'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36/OpenJDK15U-jdk_aarch64_linux_hotspot_15_36.tar.gz'; \
          ;; \
        armhf|armv7l) \
-         ESUM='65f193496c6977ba7aed1563edc4b5be091b5ff03e3d790074bb4e389a034b36'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12/OpenJDK14U-jdk_arm_linux_hotspot_14.0.2_12.tar.gz'; \
+         ESUM='d7de37fee91fe098791d48ea2a880cf2789949665d6bc9a232380738f99c16a9'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36/OpenJDK15U-jdk_arm_linux_hotspot_15_36.tar.gz'; \
          ;; \
        ppc64el|ppc64le) \
-         ESUM='465a3b8e931896b8d95e452d479615c4bf543535c05b6ea246323ae114e67d7d'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12/OpenJDK14U-jdk_ppc64le_linux_hotspot_14.0.2_12.tar.gz'; \
+         ESUM='537eb289a0fc56915078ff92616574b00b8ad0119543f5e4a817ede0e52c4030'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36/OpenJDK15U-jdk_ppc64le_linux_hotspot_15_36.tar.gz'; \
          ;; \
        s390x) \
-         ESUM='7d27aea30e359cf0bb561f8dcca6f4591dbc3ae831981f8a19aa367d31a9709b'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12/OpenJDK14U-jdk_s390x_linux_hotspot_14.0.2_12.tar.gz'; \
+         ESUM='3e238ea4924f4dd2a8167c911a99b96ffdfb51e12f3969cffbdc0791a58d0cf2'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36/OpenJDK15U-jdk_s390x_linux_hotspot_15_36.tar.gz'; \
          ;; \
        amd64|x86_64) \
-         ESUM='7d5ee7e06909b8a99c0d029f512f67b092597aa5b0e78c109bd59405bbfa74fe'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12/OpenJDK14U-jdk_x64_linux_hotspot_14.0.2_12.tar.gz'; \
+         ESUM='c198593d1b5188ee3570e2ca33c3bc004aaefbda2c11e68e58ae7296cf5c3982'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36/OpenJDK15U-jdk_x64_linux_hotspot_15_36.tar.gz'; \
          ;; \
        *) \
          echo "Unsupported arch: ${ARCH}"; \
diff --git a/adoptopenjdk_hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full b/adoptopenjdk_hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full
index 89a3af2..e0c0d34 100644
--- a/adoptopenjdk_hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full
+++ b/adoptopenjdk_hotspot-windowsservercore-1809/Dockerfile.hotspot.releases.full
@@ -22,13 +22,13 @@ FROM mcr.microsoft.com/windows/servercore:1809
 # $ProgressPreference: https://github.com/PowerShell/PowerShell/issues/2138#issuecomment-251261324
 SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
 
-ENV JAVA_VERSION jdk-14.0.2+12
+ENV JAVA_VERSION jdk-15+36
 
-RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12/OpenJDK14U-jdk_x64_windows_hotspot_14.0.2_12.msi ...'); \
+RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36/OpenJDK15U-jdk_x64_windows_hotspot_15_36.msi ...'); \
     [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \
-    wget https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12/OpenJDK14U-jdk_x64_windows_hotspot_14.0.2_12.msi -O 'openjdk.msi'; \
-    Write-Host ('Verifying sha256 (9cbd03600e58ad8d2383c15e596396fbdfbc9655ba0019f5bc74c910e4082c7c) ...'); \
-    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne '9cbd03600e58ad8d2383c15e596396fbdfbc9655ba0019f5bc74c910e4082c7c') { \
+    wget https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36/OpenJDK15U-jdk_x64_windows_hotspot_15_36.msi -O 'openjdk.msi'; \
+    Write-Host ('Verifying sha256 (e2ac92e686e52d8c76a831319ad721547d811d2e2e9b3a8fae47420652beb930) ...'); \
+    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne 'e2ac92e686e52d8c76a831319ad721547d811d2e2e9b3a8fae47420652beb930') { \
             Write-Host 'FAILED!'; \
             exit 1; \
     }; \
diff --git a/adoptopenjdk_hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full b/adoptopenjdk_hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full
index b71b65c..d288c3c 100644
--- a/adoptopenjdk_hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full
+++ b/adoptopenjdk_hotspot-windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full
@@ -22,13 +22,13 @@ FROM mcr.microsoft.com/windows/servercore:ltsc2016
 # $ProgressPreference: https://github.com/PowerShell/PowerShell/issues/2138#issuecomment-251261324
 SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
 
-ENV JAVA_VERSION jdk-14.0.2+12
+ENV JAVA_VERSION jdk-15+36
 
-RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12/OpenJDK14U-jdk_x64_windows_hotspot_14.0.2_12.msi ...'); \
+RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36/OpenJDK15U-jdk_x64_windows_hotspot_15_36.msi ...'); \
     [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \
-    wget https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12/OpenJDK14U-jdk_x64_windows_hotspot_14.0.2_12.msi -O 'openjdk.msi'; \
-    Write-Host ('Verifying sha256 (9cbd03600e58ad8d2383c15e596396fbdfbc9655ba0019f5bc74c910e4082c7c) ...'); \
-    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne '9cbd03600e58ad8d2383c15e596396fbdfbc9655ba0019f5bc74c910e4082c7c') { \
+    wget https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36/OpenJDK15U-jdk_x64_windows_hotspot_15_36.msi -O 'openjdk.msi'; \
+    Write-Host ('Verifying sha256 (e2ac92e686e52d8c76a831319ad721547d811d2e2e9b3a8fae47420652beb930) ...'); \
+    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne 'e2ac92e686e52d8c76a831319ad721547d811d2e2e9b3a8fae47420652beb930') { \
             Write-Host 'FAILED!'; \
             exit 1; \
     }; \
diff --git a/adoptopenjdk_openj9-bionic/Dockerfile.openj9.releases.full b/adoptopenjdk_openj9-bionic/Dockerfile.openj9.releases.full
index eff0c96..3a3e7b0 100644
--- a/adoptopenjdk_openj9-bionic/Dockerfile.openj9.releases.full
+++ b/adoptopenjdk_openj9-bionic/Dockerfile.openj9.releases.full
@@ -17,7 +17,7 @@
 # limitations under the License.
 #
 
-FROM ubuntu:18.04
+FROM ubuntu:20.04
 
 ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
 
@@ -27,22 +27,22 @@ RUN apt-get update \
     && locale-gen en_US.UTF-8 \
     && rm -rf /var/lib/apt/lists/*
 
-ENV JAVA_VERSION jdk-14.0.2+12_openj9-0.21.0
+ENV JAVA_VERSION jdk-15+36_openj9-0.22.0
 
 RUN set -eux; \
     ARCH="$(dpkg --print-architecture)"; \
     case "${ARCH}" in \
        ppc64el|ppc64le) \
-         ESUM='177fd161ae14df92203d70cd618559daf889ec0c172d6ee615859352f68a2371'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12_openj9-0.21.0/OpenJDK14U-jdk_ppc64le_linux_openj9_14.0.2_12_openj9-0.21.0.tar.gz'; \
+         ESUM='88058a977c63382b59b7aaaec08d656490494b2c9575ae787c873de1b2baeaca'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36_openj9-0.22.0/OpenJDK15U-jdk_ppc64le_linux_openj9_15_36_openj9-0.22.0.tar.gz'; \
          ;; \
        s390x) \
-         ESUM='4757dc2009a0c31604be4631e02a5a3aac53ebe9b6a2046ae8995ec0e453dc1a'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12_openj9-0.21.0/OpenJDK14U-jdk_s390x_linux_openj9_14.0.2_12_openj9-0.21.0.tar.gz'; \
+         ESUM='1cb8366199635c82a58b2619483f84318e9ead5b542b52ffc355fb561adb0f14'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36_openj9-0.22.0/OpenJDK15U-jdk_s390x_linux_openj9_15_36_openj9-0.22.0.tar.gz'; \
          ;; \
        amd64|x86_64) \
-         ESUM='306f7138cdb65daaf2596ec36cafbde72088144c83b2e964f0193662e6caf3be'; \
-         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12_openj9-0.21.0/OpenJDK14U-jdk_x64_linux_openj9_14.0.2_12_openj9-0.21.0.tar.gz'; \
+         ESUM='3f016e23a1fba0b1d29f03415c36d54a8a33480ce1d238fbef09d38c5a69eff7'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36_openj9-0.22.0/OpenJDK15U-jdk_x64_linux_openj9_15_36_openj9-0.22.0.tar.gz'; \
          ;; \
        *) \
          echo "Unsupported arch: ${ARCH}"; \
@@ -58,5 +58,66 @@ RUN set -eux; \
 
 ENV JAVA_HOME=/opt/java/openjdk \
     PATH="/opt/java/openjdk/bin:$PATH"
-ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+UseContainerSupport -XX:+IdleTuningCompactOnIdle -XX:+IdleTuningGcOnIdle"
+ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+IdleTuningGcOnIdle"
+
+# Create OpenJ9 SharedClassCache (SCC) for bootclasses to improve the java startup.
+# Downloads and runs tomcat to generate SCC for bootclasses at /opt/java/.scc/openj9_system_scc
+# Does a dry-run and calculates the optimal cache size and recreates the cache with the appropriate size.
+# With SCC, OpenJ9 startup is improved ~50% with an increase in image size of ~14MB
+# Application classes can be create a separate cache layer with this as the base for further startup improvement
+
+RUN set -eux; \
+    unset OPENJ9_JAVA_OPTIONS; \
+    SCC_SIZE="50m"; \
+    SCC_GEN_RUNS_COUNT=3; \
+    DOWNLOAD_PATH_TOMCAT=/tmp/tomcat; \
+    INSTALL_PATH_TOMCAT=/opt/tomcat-home; \
+    TOMCAT_CHECKSUM="0db27185d9fc3174f2c670f814df3dda8a008b89d1a38a5d96cbbe119767ebfb1cf0bce956b27954aee9be19c4a7b91f2579d967932207976322033a86075f98"; \
+    TOMCAT_DWNLD_URL="https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.35/bin/apache-tomcat-9.0.35.tar.gz"; \
+    \
+    mkdir -p "${DOWNLOAD_PATH_TOMCAT}" "${INSTALL_PATH_TOMCAT}"; \
+    curl -LfsSo "${DOWNLOAD_PATH_TOMCAT}"/tomcat.tar.gz "${TOMCAT_DWNLD_URL}"; \
+    echo "${TOMCAT_CHECKSUM} *${DOWNLOAD_PATH_TOMCAT}/tomcat.tar.gz" | sha512sum -c -; \
+    tar -xf "${DOWNLOAD_PATH_TOMCAT}"/tomcat.tar.gz -C "${INSTALL_PATH_TOMCAT}" --strip-components=1; \
+    rm -rf "${DOWNLOAD_PATH_TOMCAT}"; \
+    \
+    java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal,createLayer -Xscmx$SCC_SIZE -version; \
+    export OPENJ9_JAVA_OPTIONS="-Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal"; \
+    for i in $(seq 0 $SCC_GEN_RUNS_COUNT); \
+    do \
+        "${INSTALL_PATH_TOMCAT}"/bin/startup.sh; \
+        sleep 5; \
+        "${INSTALL_PATH_TOMCAT}"/bin/shutdown.sh; \
+        sleep 5; \
+    done; \
+    \
+    FULL=$( (java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,printallStats 2>&1 || true) | awk '/^Cache is [0-9.]*% .*full/ {print substr($3, 1, length($3)-1)}'); \
+    DST_CACHE=$(java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,destroy 2>&1 || true); \
+    SCC_SIZE=$(echo $SCC_SIZE | sed 's/.$//'); \
+    SCC_SIZE=$(awk "BEGIN {print int($SCC_SIZE * $FULL / 100.0)}"); \
+    [ "${SCC_SIZE}" -eq 0 ] && SCC_SIZE=1; \
+    SCC_SIZE="${SCC_SIZE}m"; \
+    java -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal,createLayer -Xscmx$SCC_SIZE -version; \
+    unset OPENJ9_JAVA_OPTIONS; \
+    \
+    export OPENJ9_JAVA_OPTIONS="-Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal"; \
+    for i in $(seq 0 $SCC_GEN_RUNS_COUNT); \
+    do \
+        "${INSTALL_PATH_TOMCAT}"/bin/startup.sh; \
+        sleep 5; \
+        "${INSTALL_PATH_TOMCAT}"/bin/shutdown.sh; \
+        sleep 5; \
+    done; \
+    \
+    FULL=$( (java -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,printallStats 2>&1 || true) | awk '/^Cache is [0-9.]*% .*full/ {print substr($3, 1, length($3)-1)}'); \
+    echo "SCC layer is $FULL% full."; \
+    rm -rf "${INSTALL_PATH_TOMCAT}"; \
+    if [ -d "/opt/java/.scc" ]; then \
+          chmod -R 0777 /opt/java/.scc; \
+    fi; \
+    \
+    echo "SCC generation phase completed";
+
+ENV OPENJ9_JAVA_OPTIONS="-Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,readonly,nonFatal"
+
 CMD ["jshell"]
diff --git a/adoptopenjdk_openj9-windowsservercore-1809/Dockerfile.openj9.releases.full b/adoptopenjdk_openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
index 0ba45b0..70d6b68 100644
--- a/adoptopenjdk_openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
+++ b/adoptopenjdk_openj9-windowsservercore-1809/Dockerfile.openj9.releases.full
@@ -22,13 +22,13 @@ FROM mcr.microsoft.com/windows/servercore:1809
 # $ProgressPreference: https://github.com/PowerShell/PowerShell/issues/2138#issuecomment-251261324
 SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
 
-ENV JAVA_VERSION jdk-14.0.2+12_openj9-0.21.0
+ENV JAVA_VERSION jdk-15+36_openj9-0.22.0
 
-RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12_openj9-0.21.0/OpenJDK14U-jdk_x64_windows_openj9_14.0.2_12_openj9-0.21.0.msi ...'); \
+RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36_openj9-0.22.0/OpenJDK15U-jdk_x64_windows_openj9_15_36_openj9-0.22.0.msi ...'); \
     [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \
-    wget https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12_openj9-0.21.0/OpenJDK14U-jdk_x64_windows_openj9_14.0.2_12_openj9-0.21.0.msi -O 'openjdk.msi'; \
-    Write-Host ('Verifying sha256 (2e496ce7ca02f7a380fd1902e06d55d52121bb2eee29b21b8e54ad3e2fd3466e) ...'); \
-    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne '2e496ce7ca02f7a380fd1902e06d55d52121bb2eee29b21b8e54ad3e2fd3466e') { \
+    wget https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36_openj9-0.22.0/OpenJDK15U-jdk_x64_windows_openj9_15_36_openj9-0.22.0.msi -O 'openjdk.msi'; \
+    Write-Host ('Verifying sha256 (88dd04dc008ff18e09ad158046a650797ff8e5ce0f1880515e359c49f0fddd4e) ...'); \
+    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne '88dd04dc008ff18e09ad158046a650797ff8e5ce0f1880515e359c49f0fddd4e') { \
             Write-Host 'FAILED!'; \
             exit 1; \
     }; \
@@ -41,5 +41,5 @@ RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk14-binaries/
     Remove-Item -Path C:\temp -Recurse | Out-Null; \
     Write-Host 'Removing openjdk.msi ...'; \
     Remove-Item openjdk.msi -Force
-ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+UseContainerSupport -XX:+IdleTuningCompactOnIdle -XX:+IdleTuningGcOnIdle"
+ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+IdleTuningGcOnIdle"
 CMD ["jshell"]
diff --git a/adoptopenjdk_openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full b/adoptopenjdk_openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
index 4a658d9..8c4a975 100644
--- a/adoptopenjdk_openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
+++ b/adoptopenjdk_openj9-windowsservercore-ltsc2016/Dockerfile.openj9.releases.full
@@ -22,13 +22,13 @@ FROM mcr.microsoft.com/windows/servercore:ltsc2016
 # $ProgressPreference: https://github.com/PowerShell/PowerShell/issues/2138#issuecomment-251261324
 SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
 
-ENV JAVA_VERSION jdk-14.0.2+12_openj9-0.21.0
+ENV JAVA_VERSION jdk-15+36_openj9-0.22.0
 
-RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12_openj9-0.21.0/OpenJDK14U-jdk_x64_windows_openj9_14.0.2_12_openj9-0.21.0.msi ...'); \
+RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36_openj9-0.22.0/OpenJDK15U-jdk_x64_windows_openj9_15_36_openj9-0.22.0.msi ...'); \
     [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \
-    wget https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12_openj9-0.21.0/OpenJDK14U-jdk_x64_windows_openj9_14.0.2_12_openj9-0.21.0.msi -O 'openjdk.msi'; \
-    Write-Host ('Verifying sha256 (2e496ce7ca02f7a380fd1902e06d55d52121bb2eee29b21b8e54ad3e2fd3466e) ...'); \
-    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne '2e496ce7ca02f7a380fd1902e06d55d52121bb2eee29b21b8e54ad3e2fd3466e') { \
+    wget https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36_openj9-0.22.0/OpenJDK15U-jdk_x64_windows_openj9_15_36_openj9-0.22.0.msi -O 'openjdk.msi'; \
+    Write-Host ('Verifying sha256 (88dd04dc008ff18e09ad158046a650797ff8e5ce0f1880515e359c49f0fddd4e) ...'); \
+    if ((Get-FileHash openjdk.msi -Algorithm sha256).Hash -ne '88dd04dc008ff18e09ad158046a650797ff8e5ce0f1880515e359c49f0fddd4e') { \
             Write-Host 'FAILED!'; \
             exit 1; \
     }; \
@@ -41,5 +41,5 @@ RUN Write-Host ('Downloading https://github.com/AdoptOpenJDK/openjdk14-binaries/
     Remove-Item -Path C:\temp -Recurse | Out-Null; \
     Write-Host 'Removing openjdk.msi ...'; \
     Remove-Item openjdk.msi -Force
-ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+UseContainerSupport -XX:+IdleTuningCompactOnIdle -XX:+IdleTuningGcOnIdle"
+ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+IdleTuningGcOnIdle"
 CMD ["jshell"]

@tianon
Copy link
Member

tianon commented Oct 16, 2020

+    SCC_GEN_RUNS_COUNT=3; \
...
+    for i in $(seq 0 $SCC_GEN_RUNS_COUNT); \
+    do \
+        "${INSTALL_PATH_TOMCAT}"/bin/startup.sh; \
+        sleep 5; \
+        "${INSTALL_PATH_TOMCAT}"/bin/shutdown.sh; \
+        sleep 5; \
+    done; \
...
+    for i in $(seq 0 $SCC_GEN_RUNS_COUNT); \
+    do \
+        "${INSTALL_PATH_TOMCAT}"/bin/startup.sh; \
+        sleep 5; \
+        "${INSTALL_PATH_TOMCAT}"/bin/shutdown.sh; \
+        sleep 5; \
+    done; \

This is going to result in every single build sitting in this build step for at least a full minute without accomplishing much -- please don't forget to spend some time evaluating whether this cache is something that could be pre-computed and hosted alongside the binaries instead of spending/wasting time calculating it downstream (and then it could be more expansive/comprehensive and run other tools as you determine what's the "best" set with the rest of the AdoptOpenJDK project).

@tianon tianon merged commit e7f75a3 into docker-library:master Oct 16, 2020
@bharathappali
Copy link

@tianon Thanks for your review, Currently we are planning to achieve something similar to what you have suggested, This Issue talks about different ways to achieve generating cache and populating it into image without taking much time at the build phase. Thanks !

@dinogun
Copy link
Contributor Author

dinogun commented Oct 19, 2020

@tianon Agreed on the time spent generating the SCC, will try to move this to the build itself. Please note that we will try and target this for the Jan 2021 update. This means that we will continue to use this Dockerfile for the CPU update scheduled for this week.

File: Dockerfile.hotspot.releases.full
Constraints: windowsservercore-1809
Constraints: windowsservercore-ltsc2016

Tags: 11.0.8_10-jre-hotspot-bionic, 11-jre-hotspot-bionic
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Arg, this isn't based on Ubuntu Bionic anymore (and we didn't catch it). 😞

@dinogun
Copy link
Contributor Author

dinogun commented Oct 19, 2020

Unfortunately the update to focal was supposed to have happened after the official release but got merged by mistake, and I didn't catch it :-( . This is getting fixed in AdoptOpenJDK/openjdk-docker#446. Will raise a new PR for that shortly. Sorry for all the inconvenience.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants