diff --git a/lib/config/migrations/custom/datasource-migration.spec.ts b/lib/config/migrations/custom/datasource-migration.spec.ts
index 08d768de893c24b1fd11dbe3b2840ec8d448b611..10eda1e06a710952c59a545f9fdad79eb78eff68 100644
--- a/lib/config/migrations/custom/datasource-migration.spec.ts
+++ b/lib/config/migrations/custom/datasource-migration.spec.ts
@@ -1,7 +1,18 @@
 import { DatasourceMigration } from './datasource-migration';
 
 describe('config/migrations/custom/datasource-migration', () => {
-  it('should migrate properly', () => {
+  it('should migrate adoptium-java', () => {
+    expect(DatasourceMigration).toMigrate(
+      {
+        datasource: 'adoptium-java',
+      },
+      {
+        datasource: 'java-version',
+      }
+    );
+  });
+
+  it('should migrate donet', () => {
     expect(DatasourceMigration).toMigrate(
       {
         datasource: 'dotnet',
diff --git a/lib/config/migrations/custom/datasource-migration.ts b/lib/config/migrations/custom/datasource-migration.ts
index 2f742930562a8043dbc72f9a7958a19c9214e79b..b20445935a09d614b425a9e90843887930a8873d 100644
--- a/lib/config/migrations/custom/datasource-migration.ts
+++ b/lib/config/migrations/custom/datasource-migration.ts
@@ -6,7 +6,15 @@ export class DatasourceMigration extends AbstractMigration {
 
   override run(value: unknown): void {
     if (is.string(value)) {
-      const newValue = value === 'dotnet' ? 'dotnet-version' : value;
+      let newValue = value;
+      switch (newValue) {
+        case 'adoptium-java':
+          newValue = 'java-version';
+          break;
+        case 'dotnet':
+          newValue = 'dotnet-version';
+          break;
+      }
 
       this.rewrite(newValue);
     }
diff --git a/lib/config/migrations/custom/match-datasources-migration.spec.ts b/lib/config/migrations/custom/match-datasources-migration.spec.ts
index 9c8187380e6cc24384c6bf3a58c81bd0b6b672e9..1a8c8ac579d3c31bce5cd6f46abd81626706fd4c 100644
--- a/lib/config/migrations/custom/match-datasources-migration.spec.ts
+++ b/lib/config/migrations/custom/match-datasources-migration.spec.ts
@@ -4,10 +4,10 @@ describe('config/migrations/custom/match-datasources-migration', () => {
   it('should migrate properly', () => {
     expect(MatchDatasourcesMigration).toMigrate(
       {
-        matchDatasources: ['dotnet'],
+        matchDatasources: ['adoptium-java', 'dotnet', 'npm'],
       },
       {
-        matchDatasources: ['dotnet-version'],
+        matchDatasources: ['java-version', 'dotnet-version', 'npm'],
       }
     );
   });
diff --git a/lib/config/migrations/custom/match-datasources-migration.ts b/lib/config/migrations/custom/match-datasources-migration.ts
index af9a043839ccab7580b344e740a1d0bd6bcb4462..5d87e57d453f19289160c7369e22375e3d7c6a9c 100644
--- a/lib/config/migrations/custom/match-datasources-migration.ts
+++ b/lib/config/migrations/custom/match-datasources-migration.ts
@@ -6,11 +6,16 @@ export class MatchDatasourcesMigration extends AbstractMigration {
 
   override run(value: unknown): void {
     if (Array.isArray(value)) {
-      const newValue = value
-        .filter(is.nonEmptyString)
-        .map((datasource) =>
-          datasource === 'dotnet' ? 'dotnet-version' : datasource
-        );
+      const newValue = value.filter(is.nonEmptyString).map((datasource) => {
+        switch (datasource) {
+          case 'adoptium-java':
+            return 'java-version';
+          case 'dotnet':
+            return 'dotnet-version';
+          default:
+            return datasource;
+        }
+      });
 
       this.rewrite(newValue);
     }
diff --git a/lib/config/migrations/migrations-service.ts b/lib/config/migrations/migrations-service.ts
index ca09438bd349099a3e754627df9bcb0b2800ef2e..fc23f576e39c9def95fdb9e5c170cc03817c55ae 100644
--- a/lib/config/migrations/migrations-service.ts
+++ b/lib/config/migrations/migrations-service.ts
@@ -73,6 +73,7 @@ export class MigrationsService {
   ]);
 
   static readonly renamedProperties: ReadonlyMap<string, string> = new Map([
+    ['adoptium-java', 'java-version'],
     ['endpoints', 'hostRules'],
     ['excludedPackageNames', 'excludePackageNames'],
     ['exposeEnv', 'exposeAllEnv'],
diff --git a/lib/config/presets/internal/workarounds.ts b/lib/config/presets/internal/workarounds.ts
index 3223d41c76c38848fd945bb045ac198eb8223990..03d13ce0da3539cd4c4dd13777354f4271a65829 100644
--- a/lib/config/presets/internal/workarounds.ts
+++ b/lib/config/presets/internal/workarounds.ts
@@ -82,7 +82,7 @@ export const presets: Record<string, Preset> = {
         allowedVersions: '/^(?:8|11|17)(?:\\.|-|$)/',
         description:
           'Limit Java runtime versions to LTS releases. To receive all major releases add `workarounds:javaLTSVersions` to the `ignorePresets` array.',
-        matchDatasources: ['docker', 'adoptium-java'],
+        matchDatasources: ['docker', 'java-version'],
         matchPackageNames: [
           'eclipse-temurin',
           'amazoncorretto',
diff --git a/lib/modules/datasource/api.ts b/lib/modules/datasource/api.ts
index 915f18e6b9b27e6482c2bfafd2508d9715b85cc3..c61d696bfa18ffc40f21b650ca66fed5c86e38a3 100644
--- a/lib/modules/datasource/api.ts
+++ b/lib/modules/datasource/api.ts
@@ -1,4 +1,3 @@
-import { AdoptiumJavaDatasource } from './adoptium-java';
 import { ArtifactoryDatasource } from './artifactory';
 import { AwsMachineImageDataSource } from './aws-machine-image';
 import { AwsRdsDataSource } from './aws-rds';
@@ -32,6 +31,7 @@ import { HelmDatasource } from './helm';
 import { HermitDatasource } from './hermit';
 import { HexDatasource } from './hex';
 import { HexpmBobDatasource } from './hexpm-bob';
+import { JavaVersionDatasource } from './java-version';
 import { JenkinsPluginsDatasource } from './jenkins-plugins';
 import { KubernetesApiDatasource } from './kubernetes-api';
 import { MavenDatasource } from './maven';
@@ -55,7 +55,6 @@ import type { DatasourceApi } from './types';
 const api = new Map<string, DatasourceApi>();
 export default api;
 
-api.set(AdoptiumJavaDatasource.id, new AdoptiumJavaDatasource());
 api.set(ArtifactoryDatasource.id, new ArtifactoryDatasource());
 api.set(AwsMachineImageDataSource.id, new AwsMachineImageDataSource());
 api.set(AwsRdsDataSource.id, new AwsRdsDataSource());
@@ -89,6 +88,7 @@ api.set(HelmDatasource.id, new HelmDatasource());
 api.set(HermitDatasource.id, new HermitDatasource());
 api.set(HexDatasource.id, new HexDatasource());
 api.set(HexpmBobDatasource.id, new HexpmBobDatasource());
+api.set(JavaVersionDatasource.id, new JavaVersionDatasource());
 api.set(JenkinsPluginsDatasource.id, new JenkinsPluginsDatasource());
 api.set(KubernetesApiDatasource.id, new KubernetesApiDatasource());
 api.set(MavenDatasource.id, new MavenDatasource());
diff --git a/lib/modules/datasource/adoptium-java/__fixtures__/jre.json b/lib/modules/datasource/java-version/__fixtures__/jre.json
similarity index 100%
rename from lib/modules/datasource/adoptium-java/__fixtures__/jre.json
rename to lib/modules/datasource/java-version/__fixtures__/jre.json
diff --git a/lib/modules/datasource/adoptium-java/__fixtures__/page.json b/lib/modules/datasource/java-version/__fixtures__/page.json
similarity index 100%
rename from lib/modules/datasource/adoptium-java/__fixtures__/page.json
rename to lib/modules/datasource/java-version/__fixtures__/page.json
diff --git a/lib/modules/datasource/adoptium-java/__snapshots__/index.spec.ts.snap b/lib/modules/datasource/java-version/__snapshots__/index.spec.ts.snap
similarity index 90%
rename from lib/modules/datasource/adoptium-java/__snapshots__/index.spec.ts.snap
rename to lib/modules/datasource/java-version/__snapshots__/index.spec.ts.snap
index d04abec922ce771b3978afb0237ab8d944e62e4d..77d3898dab4d9018c1b2279b7f12c70e59cc9f55 100644
--- a/lib/modules/datasource/adoptium-java/__snapshots__/index.spec.ts.snap
+++ b/lib/modules/datasource/java-version/__snapshots__/index.spec.ts.snap
@@ -1,6 +1,6 @@
 // Jest Snapshot v1, https://goo.gl/fbAQLP
 
-exports[`modules/datasource/adoptium-java/index getReleases pages 1`] = `
+exports[`modules/datasource/java-version/index getReleases pages 1`] = `
 {
   "homepage": "https://adoptium.net",
   "registryUrl": "https://api.adoptium.net/",
@@ -159,7 +159,7 @@ exports[`modules/datasource/adoptium-java/index getReleases pages 1`] = `
 }
 `;
 
-exports[`modules/datasource/adoptium-java/index getReleases processes real data (jre) 1`] = `
+exports[`modules/datasource/java-version/index getReleases processes real data (jre) 1`] = `
 {
   "homepage": "https://adoptium.net",
   "registryUrl": "https://api.adoptium.net/",
@@ -174,7 +174,7 @@ exports[`modules/datasource/adoptium-java/index getReleases processes real data
 }
 `;
 
-exports[`modules/datasource/adoptium-java/index getReleases processes real data 1`] = `
+exports[`modules/datasource/java-version/index getReleases processes real data 1`] = `
 {
   "homepage": "https://adoptium.net",
   "registryUrl": "https://api.adoptium.net/",
diff --git a/lib/modules/datasource/adoptium-java/common.ts b/lib/modules/datasource/java-version/common.ts
similarity index 86%
rename from lib/modules/datasource/adoptium-java/common.ts
rename to lib/modules/datasource/java-version/common.ts
index d65c51704fea2732f58b56a9d9d2e1e84d4c6d2f..1da35d036be1563994da2c070b480b0fc70bc4c4 100644
--- a/lib/modules/datasource/adoptium-java/common.ts
+++ b/lib/modules/datasource/java-version/common.ts
@@ -3,7 +3,7 @@ export const pageSize = 50;
 
 export const defaultRegistryUrl = 'https://api.adoptium.net/';
 
-export const datasource = 'adoptium-java';
+export const datasource = 'java-version';
 
 export function getImageType(packageName: string): string {
   switch (packageName) {
diff --git a/lib/modules/datasource/adoptium-java/index.spec.ts b/lib/modules/datasource/java-version/index.spec.ts
similarity index 98%
rename from lib/modules/datasource/adoptium-java/index.spec.ts
rename to lib/modules/datasource/java-version/index.spec.ts
index ee00651bd8c222f9c744a754d1839e1960295d15..d660e43a8fb297ea8fbf26f38687800675532a6a 100644
--- a/lib/modules/datasource/adoptium-java/index.spec.ts
+++ b/lib/modules/datasource/java-version/index.spec.ts
@@ -11,7 +11,7 @@ function getPath(page: number, imageType = 'jdk'): string {
 
 const depName = 'java';
 
-describe('modules/datasource/adoptium-java/index', () => {
+describe('modules/datasource/java-version/index', () => {
   describe('getReleases', () => {
     it('throws for error', async () => {
       httpMock
diff --git a/lib/modules/datasource/adoptium-java/index.ts b/lib/modules/datasource/java-version/index.ts
similarity index 85%
rename from lib/modules/datasource/adoptium-java/index.ts
rename to lib/modules/datasource/java-version/index.ts
index 4e532ab70402955ad4608499254a3a3ebc45b647..9dda77f541866369ef178a82b7a8afe66c6192f6 100644
--- a/lib/modules/datasource/adoptium-java/index.ts
+++ b/lib/modules/datasource/java-version/index.ts
@@ -12,7 +12,7 @@ import {
 } from './common';
 import type { AdoptiumJavaResponse } from './types';
 
-export class AdoptiumJavaDatasource extends Datasource {
+export class JavaVersionDatasource extends Datasource {
   static readonly id = datasource;
 
   constructor() {
@@ -55,8 +55,7 @@ export class AdoptiumJavaDatasource extends Datasource {
     namespace: `datasource-${datasource}`,
     key: ({ registryUrl, packageName }: GetReleasesConfig) =>
       // TODO: types (#7154)
-      // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
-      `${registryUrl}:${getImageType(packageName)}`,
+      `${registryUrl!}:${getImageType(packageName)}`,
   })
   async getReleases({
     registryUrl,
@@ -68,8 +67,7 @@ export class AdoptiumJavaDatasource extends Datasource {
       'fetching java release'
     );
     // TODO: types (#7154)
-    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
-    const url = `${registryUrl}v3/info/release_versions?page_size=${pageSize}&image_type=${imageType}&project=jdk&release_type=ga&sort_method=DATE&sort_order=DESC`;
+    const url = `${registryUrl!}v3/info/release_versions?page_size=${pageSize}&image_type=${imageType}&project=jdk&release_type=ga&sort_method=DATE&sort_order=DESC`;
 
     const result: ReleaseResult = {
       homepage: 'https://adoptium.net',
diff --git a/lib/modules/datasource/adoptium-java/readme.md b/lib/modules/datasource/java-version/readme.md
similarity index 100%
rename from lib/modules/datasource/adoptium-java/readme.md
rename to lib/modules/datasource/java-version/readme.md
diff --git a/lib/modules/datasource/adoptium-java/types.ts b/lib/modules/datasource/java-version/types.ts
similarity index 100%
rename from lib/modules/datasource/adoptium-java/types.ts
rename to lib/modules/datasource/java-version/types.ts
diff --git a/lib/modules/datasource/readme.md b/lib/modules/datasource/readme.md
index bb797f9e4d5011721258955e5cf36694cbeba254..ab2db82cb21e8a932c527d1b7ecfe4cd62505c44 100644
--- a/lib/modules/datasource/readme.md
+++ b/lib/modules/datasource/readme.md
@@ -5,7 +5,7 @@ Datasources are used in Renovate primarily to fetch released versions of package
 ## Follow the class-based programming style
 
 New datasources _must_ follow the class-based programming style.
-Use the `adoptium-java` datasource as a reference.
+Use the `java-version` datasource as a reference.
 
 Add the datasource to the API in [`api.ts`](api.ts) so that the new datasource is usable. If you find `Pending mocks!` errors in the Jest tests and your mocked URLs are correct, ensure the datasource is correctly registered.
 
diff --git a/lib/modules/manager/asdf/extract.spec.ts b/lib/modules/manager/asdf/extract.spec.ts
index 7c0771678e32327c8045efdbe998a6a13b7e76a5..4db8ccc25a6e0c4b02899e2fecbfdbc9234f1ebb 100644
--- a/lib/modules/manager/asdf/extract.spec.ts
+++ b/lib/modules/manager/asdf/extract.spec.ts
@@ -225,7 +225,7 @@ dummy 1.2.3
           },
           {
             currentValue: '16.0.0+36',
-            datasource: 'adoptium-java',
+            datasource: 'java-version',
             packageName: 'java-jdk',
             depName: 'java',
           },
@@ -369,7 +369,7 @@ dummy 1.2.3
         deps: [
           {
             currentValue: '16.0.0+36',
-            datasource: 'adoptium-java',
+            datasource: 'java-version',
             depName: 'java',
             packageName: 'java-jdk',
           },
@@ -380,7 +380,7 @@ dummy 1.2.3
         deps: [
           {
             currentValue: '16.0.0+36',
-            datasource: 'adoptium-java',
+            datasource: 'java-version',
             depName: 'java',
             packageName: 'java-jre',
           },
diff --git a/lib/modules/manager/asdf/index.ts b/lib/modules/manager/asdf/index.ts
index feaa1b6ee5bdcb8f22834e08e1cffaae648c6bb0..b8e647affde26b31c86e58ccee2e5fc19dca2471 100644
--- a/lib/modules/manager/asdf/index.ts
+++ b/lib/modules/manager/asdf/index.ts
@@ -1,8 +1,8 @@
-import { AdoptiumJavaDatasource } from '../../datasource/adoptium-java';
 import { DockerDatasource } from '../../datasource/docker';
 import { GithubReleasesDatasource } from '../../datasource/github-releases';
 import { GithubTagsDatasource } from '../../datasource/github-tags';
 import { HexpmBobDatasource } from '../../datasource/hexpm-bob';
+import { JavaVersionDatasource } from '../../datasource/java-version';
 import { NodeDatasource } from '../../datasource/node';
 import { RubyVersionDatasource } from '../../datasource/ruby-version';
 
@@ -15,7 +15,7 @@ export const defaultConfig = {
 };
 
 export const supportedDatasources = [
-  AdoptiumJavaDatasource.id,
+  JavaVersionDatasource.id,
   DockerDatasource.id,
   GithubReleasesDatasource.id,
   GithubTagsDatasource.id,
diff --git a/lib/modules/manager/asdf/upgradeable-tooling.ts b/lib/modules/manager/asdf/upgradeable-tooling.ts
index 62bad259df893396b6b004cee32ac5e2375d6a1f..3d85626c9f0039c28375a56d69cd396d574dfd6b 100644
--- a/lib/modules/manager/asdf/upgradeable-tooling.ts
+++ b/lib/modules/manager/asdf/upgradeable-tooling.ts
@@ -1,8 +1,8 @@
-import { AdoptiumJavaDatasource } from '../../datasource/adoptium-java';
 import { DockerDatasource } from '../../datasource/docker';
 import { GithubReleasesDatasource } from '../../datasource/github-releases';
 import { GithubTagsDatasource } from '../../datasource/github-tags';
 import { HexpmBobDatasource } from '../../datasource/hexpm-bob';
+import { JavaVersionDatasource } from '../../datasource/java-version';
 import { NodeDatasource } from '../../datasource/node';
 import { RubyVersionDatasource } from '../../datasource/ruby-version';
 import * as regexVersioning from '../../versioning/regex';
@@ -181,7 +181,7 @@ export const upgradeableTooling: Record<string, ToolingDefinition> = {
       );
       if (adoptOpenJdkMatches) {
         return {
-          datasource: AdoptiumJavaDatasource.id,
+          datasource: JavaVersionDatasource.id,
           packageName: 'java-jdk',
           currentValue: adoptOpenJdkMatches.groups!.version,
         };
@@ -191,7 +191,7 @@ export const upgradeableTooling: Record<string, ToolingDefinition> = {
       );
       if (adoptOpenJreMatches) {
         return {
-          datasource: AdoptiumJavaDatasource.id,
+          datasource: JavaVersionDatasource.id,
           packageName: 'java-jre',
           currentValue: adoptOpenJreMatches.groups!.version,
         };
diff --git a/lib/util/exec/containerbase.ts b/lib/util/exec/containerbase.ts
index e884728d042cb6b9a3523a9ac8583f114e45f6da..178f6b2944870294714e537dbeab2661d6b87987 100644
--- a/lib/util/exec/containerbase.ts
+++ b/lib/util/exec/containerbase.ts
@@ -71,7 +71,7 @@ const allToolConfig: Record<string, ToolConfig> = {
     versioning: semverVersioningId,
   },
   java: {
-    datasource: 'adoptium-java',
+    datasource: 'java-version',
     depName: 'java',
     versioning: npmVersioningId,
   },