Multiple OpenJDK folders in /usr/lib/jvm

Hello,

I see there are multiple openjdk folder in the /usr/lib/jvm which are listed below.

  1. Am I not doing some manual cleanup that I must do?
  2. java_sdk_1.8.0, java_sdk_openjdk, and java_sdk_1.8.0_openjdk all point to /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.265.b01-1.fc32.x86_64 and which shows up as JDK(1) and JDK(2) in the IntelliJ Idea. It is not clear what might be the difference between them. I suppose this is IntelliJ’s or Alternatives fault.
lrwxrwxrwx. 1 root root   26 Aug  5 15:58 java -> /etc/alternatives/java_sdk
lrwxrwxrwx. 1 root root   32 Aug  5 15:58 java-1.8.0 -> /etc/alternatives/java_sdk_1.8.0
lrwxrwxrwx. 1 root root   40 Aug  5 15:58 java-1.8.0-openjdk -> /etc/alternatives/java_sdk_1.8.0_openjdk
drwxr-xr-x. 5 root root 4096 Feb  8  2018 java-1.8.0-openjdk-1.8.0.151-1.b12.fc27.x86_64
drwxr-xr-x. 5 root root 4096 Feb 18  2018 java-1.8.0-openjdk-1.8.0.161-0.b14.fc27.x86_64
drwxr-xr-x. 5 root root 4096 Apr 12  2018 java-1.8.0-openjdk-1.8.0.161-5.b14.fc27.x86_64
drwxr-xr-x. 5 root root 4096 Apr 29  2018 java-1.8.0-openjdk-1.8.0.162-3.b12.fc27.x86_64
drwxr-xr-x. 4 root root 4096 May  3  2018 java-1.8.0-openjdk-1.8.0.171-1.b10.fc27.x86_64
drwxr-xr-x. 4 root root 4096 May  7  2018 java-1.8.0-openjdk-1.8.0.171-4.b10.fc27.x86_64
drwxr-xr-x. 3 root root 4096 Aug 19  2018 java-1.8.0-openjdk-1.8.0.181-7.b13.fc28.x86_64
drwxr-xr-x. 3 root root 4096 Sep  5  2018 java-1.8.0-openjdk-1.8.0.181.b15-0.fc28.x86_64
drwxr-xr-x. 3 root root 4096 Oct  4  2018 java-1.8.0-openjdk-1.8.0.181.b15-5.fc28.x86_64
drwxr-xr-x. 3 root root 4096 Oct 11  2018 java-1.8.0-openjdk-1.8.0.181.b15-6.fc28.x86_64
drwxr-xr-x. 3 root root 4096 Nov 29  2018 java-1.8.0-openjdk-1.8.0.191.b12-11.fc28.x86_64
drwxr-xr-x. 3 root root 4096 Nov 29  2018 java-1.8.0-openjdk-1.8.0.191.b12-11.fc29.x86_64
drwxr-xr-x. 3 root root 4096 Nov  1  2018 java-1.8.0-openjdk-1.8.0.191.b12-8.fc28.x86_64
drwxr-xr-x. 5 root root 4096 Feb 16  2019 java-1.8.0-openjdk-1.8.0.191.b13-0.fc29.x86_64
drwxr-xr-x. 5 root root 4096 Apr  5  2019 java-1.8.0-openjdk-1.8.0.201.b09-2.fc29.x86_64
drwxr-xr-x. 5 root root 4096 May  3  2019 java-1.8.0-openjdk-1.8.0.201.b09-6.fc29.x86_64
drwxr-xr-x. 5 root root 4096 May 12  2019 java-1.8.0-openjdk-1.8.0.212.b04-0.fc29.x86_64
drwxr-xr-x. 5 root root 4096 Aug 11  2019 java-1.8.0-openjdk-1.8.0.212.b04-0.fc30.x86_64
drwxr-xr-x. 5 root root 4096 Oct 26  2019 java-1.8.0-openjdk-1.8.0.222.b10-0.fc30.x86_64
drwxr-xr-x. 5 root root 4096 Nov 20  2019 java-1.8.0-openjdk-1.8.0.232.b09-0.fc30.x86_64
drwxr-xr-x. 5 root root 4096 Feb 13  2020 java-1.8.0-openjdk-1.8.0.232.b09-0.fc31.x86_64
drwxr-xr-x. 5 root root 4096 May 22 18:23 java-1.8.0-openjdk-1.8.0.242.b08-0.fc31.x86_64
drwxr-xr-x. 5 root root 4096 Jun 20 18:39 java-1.8.0-openjdk-1.8.0.252.b09-0.fc31.x86_64
drwxr-xr-x. 5 root root 4096 Jul 27 16:38 java-1.8.0-openjdk-1.8.0.252.b09-1.fc32.x86_64
drwxr-xr-x. 5 root root 4096 Aug  5 15:58 java-1.8.0-openjdk-1.8.0.262.b10-1.fc32.x86_64
drwxr-xr-x. 9 root root 4096 Aug  5 15:56 java-1.8.0-openjdk-1.8.0.265.b01-1.fc32.x86_64
lrwxrwxrwx. 1 root root   34 Aug  5 15:58 java-openjdk -> /etc/alternatives/java_sdk_openjdk
lrwxrwxrwx. 1 root root   21 Aug  5 15:58 jre -> /etc/alternatives/jre
lrwxrwxrwx. 1 root root   27 Aug  5 15:58 jre-1.8.0 -> /etc/alternatives/jre_1.8.0
lrwxrwxrwx. 1 root root   35 Aug  5 15:58 jre-1.8.0-openjdk -> /etc/alternatives/jre_1.8.0_openjdk
lrwxrwxrwx. 1 root root   50 Jul 28 08:32 jre-1.8.0-openjdk-1.8.0.265.b01-1.fc32.x86_64 -> java-1.8.0-openjdk-1.8.0.265.b01-1.fc32.x86_64/jre
lrwxrwxrwx. 1 root root   29 Aug  5 15:58 jre-openjdk -> /etc/alternatives/jre_openjdk

and

$ alternatives --list | grep -ie java
java_sdk_1.8.0          auto    /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.265.b01-1.fc32.x86_64
java_sdk_openjdk        auto    /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.265.b01-1.fc32.x86_64
jre_openjdk             auto    /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.265.b01-1.fc32.x86_64/jre
javac                   auto    /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.265.b01-1.fc32.x86_64/bin/javac
javadocdir              auto    /usr/share/javadoc/java-1.8.0-openjdk-1.8.0.265.b01-1.fc32/api
javaws.noarch           auto    /usr/bin/javaws.itweb
java                    auto    /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.265.b01-1.fc32.x86_64/jre/bin/java
jre_1.8.0               auto    /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.265.b01-1.fc32.x86_64/jre
java_sdk_1.8.0_openjdk  auto    /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.265.b01-1.fc32.x86_64

Those directories may contain some Java leftovers for backward compatibility.

Assuming locations supposed to be owned by packages, if you list it recursively and find no files owned by packages, typically you can safely remove it.

I will prefer to not manually act in a location typically handled by dnf or other system tools.

There is a dnf.conf option, “installonlypkgs” (I have not tried it), whose description brings your symptoms to mind - it updates a package without deleting the old version. The outcome would be very noticeable for Java, because each new minor version of Java occupies a distinctly-named directory instead of overwriting the same old set of files. I have only seen Fedora 32 keep 1 version of Java 8, plus 1 version of Java 11 (so /usr/lib/jvm contains two actual subdirectories and fourteen symlinks).