diff --git a/src/Xamarin.Android.Tools.AndroidSdk/JdkProperties.cs b/src/Xamarin.Android.Tools.AndroidSdk/JdkProperties.cs
new file mode 100644
index 0000000..314b1a5
--- /dev/null
+++ b/src/Xamarin.Android.Tools.AndroidSdk/JdkProperties.cs
@@ -0,0 +1,92 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Xamarin.Android.Tools
+{
+ public class JdkProperties
+ {
+ public string Vendor { get; set; }
+
+ public string Version { get; set; }
+
+ public static JdkProperties Get(string jsdkPath=null)
+ {
+ var props = new JdkProperties();
+
+ var javaPath = GetJavaPath(jsdkPath);
+
+ var processStartInfo = new ProcessStartInfo(javaPath, "-XshowSettings:properties -version");
+ processStartInfo.CreateNoWindow = true;
+ processStartInfo.RedirectStandardError = true;
+ processStartInfo.RedirectStandardOutput = true;
+ processStartInfo.UseShellExecute = false;
+
+ var process = new Process();
+ process.StartInfo = processStartInfo;
+
+ process.OutputDataReceived += (sender, e) =>
+ {
+ ProcessData (props, e.Data);
+ };
+
+ process.ErrorDataReceived += (sender, e) =>
+ {
+ ProcessData (props, e.Data);
+ };
+
+ process.Start();
+
+ process.BeginOutputReadLine();
+ process.BeginErrorReadLine();
+
+ process.WaitForExit(50);
+ while (!process.HasExited)
+ process.WaitForExit(50);
+
+ return props;
+ }
+
+ static void ProcessData(JdkProperties props, string data)
+ {
+ try
+ {
+ if (data != null && data.Contains("java.vm.vendor"))
+ props.Vendor = GetValue(data);
+ else if (data != null && data.Contains("java.version"))
+ props.Version = GetValue(data);
+
+ } catch {
+ // data was discarded
+ }
+ }
+
+ static string GetValue(string data)
+ {
+ var start = data.IndexOf("= ") + 2;
+ var end = data.Length;
+ return data.Substring(start, end - start).Trim();
+ }
+
+ static string GetJavaPath(string javaSdkPath)
+ {
+ string java = "java";
+
+ if (!string.IsNullOrEmpty(javaSdkPath))
+ {
+ java = Path.Combine(javaSdkPath, "bin");
+ java = Path.Combine(java, "java");
+ if (!File.Exists(java))
+ java += ".exe";
+ if (!File.Exists(java))
+ java = "java";
+ }
+
+ return java;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Xamarin.Android.Tools.AndroidSdk/Xamarin.Android.Tools.AndroidSdk.csproj b/src/Xamarin.Android.Tools.AndroidSdk/Xamarin.Android.Tools.AndroidSdk.csproj
index df78969..6a97bab 100644
--- a/src/Xamarin.Android.Tools.AndroidSdk/Xamarin.Android.Tools.AndroidSdk.csproj
+++ b/src/Xamarin.Android.Tools.AndroidSdk/Xamarin.Android.Tools.AndroidSdk.csproj
@@ -49,6 +49,7 @@
+