diff --git a/java/java-impl/src/META-INF/JavaPlugin.xml b/java/java-impl/src/META-INF/JavaPlugin.xml
index 3b08e7e5ba9a..7fd6e39094a9 100644
--- a/java/java-impl/src/META-INF/JavaPlugin.xml
+++ b/java/java-impl/src/META-INF/JavaPlugin.xml
@@ -432,6 +432,7 @@
+
diff --git a/java/java-impl/src/com/intellij/pom/java/JdkVersionCollector.kt b/java/java-impl/src/com/intellij/pom/java/JdkVersionCollector.kt
new file mode 100644
index 000000000000..4db669ee624b
--- /dev/null
+++ b/java/java-impl/src/com/intellij/pom/java/JdkVersionCollector.kt
@@ -0,0 +1,39 @@
+// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
+package com.intellij.pom.java
+
+import com.intellij.internal.statistic.beans.MetricEvent
+import com.intellij.internal.statistic.beans.newMetric
+import com.intellij.internal.statistic.eventLog.FeatureUsageData
+import com.intellij.internal.statistic.service.fus.collectors.ProjectUsagesCollector
+import com.intellij.openapi.module.ModuleManager
+import com.intellij.openapi.project.Project
+import com.intellij.openapi.roots.ModuleRootManager
+import com.intellij.util.lang.JavaVersion
+import java.util.*
+
+class JdkVersionCollector : ProjectUsagesCollector() {
+ override fun getGroupId(): String {
+ return "java.jdk.version"
+ }
+
+ public override fun getMetrics(project: Project): Set {
+ val sdks = ModuleManager.getInstance(project).modules.mapNotNullTo(HashSet()) {
+ ModuleRootManager.getInstance(it).sdk
+ }
+
+ val jdkVersions = sdks.mapTo(HashSet()) {
+ JavaVersion.tryParse(it.versionString)
+ }
+
+ return jdkVersions.mapTo(HashSet()) {
+ newMetric("MODULE_JDK_VERSION", FeatureUsageData().apply {
+ addData("feature", it?.feature ?: -1)
+ addData("minor", it?.minor ?: -1)
+ addData("update", it?.update ?: -1)
+ addData("ea", it?.ea ?: false)
+ })
+ }
+ }
+
+ override fun requiresReadAccess() = true
+}