From 42276ed18a21a1da2b7e3c61804f68459f4f73b0 Mon Sep 17 00:00:00 2001 From: MeenaGawande <45625809+MeenaGawande@users.noreply.github.com> Date: Sat, 7 Nov 2020 20:48:40 +0530 Subject: [PATCH] [BAEL-4556] How to Check if a Java Program Is Running in 64-Bit JVM or 32-Bit JVM (#10139) * How to Check if a Java Program Is Running in 64-Bit JVM or 32-Bit JVM How to Check if a Java Program Is Running in 64-Bit JVM or 32-Bit JVM * baeldung-articlesBAEL-4556 How can I tell if I'm running in 64-bit JVM or 32-bit JVM Changes as per review comments . 1.Package Name change 2.Variable change from static to instance 3.Test Method name change * Update JVMBitVersionUnitTest.java [BAEL-4556] How to Check if a Java Program Is Running in 64-Bit JVM or 32-Bit JVM * [BAEL-4556]Added code and Junits for JVMBitVersion * [BAEL-4556]Removed code and Junits for os.arch property to check JVMBitVersion Co-authored-by: MeenaGawande --- .../baeldung/jvmbitversion/JVMBitVersion.java | 24 ++++++++++ .../jvmbitversion/JVMBitVersionUnitTest.java | 46 +++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 java-native/src/main/java/com/baeldung/jvmbitversion/JVMBitVersion.java create mode 100644 java-native/src/test/java/com/baeldung/jvmbitversion/JVMBitVersionUnitTest.java diff --git a/java-native/src/main/java/com/baeldung/jvmbitversion/JVMBitVersion.java b/java-native/src/main/java/com/baeldung/jvmbitversion/JVMBitVersion.java new file mode 100644 index 0000000000..63684fec49 --- /dev/null +++ b/java-native/src/main/java/com/baeldung/jvmbitversion/JVMBitVersion.java @@ -0,0 +1,24 @@ +package com.baeldung.jvmbitversion; + +import com.sun.jna.Platform; + +public class JVMBitVersion { + + public String getUsingSystemClass() { + return System.getProperty("sun.arch.data.model") + "-bit"; + } + + public String getUsingNativeClass() { + if (com.sun.jna.Native.POINTER_SIZE == 8) { + return "64-bit"; + } else if (com.sun.jna.Native.POINTER_SIZE == 4) { + return "32-bit"; + } else + return "unknown"; + } + + public boolean getUsingPlatformClass() { + return (Platform.is64Bit()); + } + +} diff --git a/java-native/src/test/java/com/baeldung/jvmbitversion/JVMBitVersionUnitTest.java b/java-native/src/test/java/com/baeldung/jvmbitversion/JVMBitVersionUnitTest.java new file mode 100644 index 0000000000..152008e5e2 --- /dev/null +++ b/java-native/src/test/java/com/baeldung/jvmbitversion/JVMBitVersionUnitTest.java @@ -0,0 +1,46 @@ +package com.baeldung.jvmbitversion; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.Before; +import org.junit.Test; + +import com.baeldung.jvmbitversion.JVMBitVersion; +import com.sun.jna.Platform; + +public class JVMBitVersionUnitTest { + + private JVMBitVersion jvmVersion; + + @Before + public void setup() { + jvmVersion = new JVMBitVersion(); + } + + @Test + public void whenUsingSystemClass_thenOutputIsAsExpected() { + if (System.getProperty("sun.arch.data.model") == "64") { + assertEquals("64-bit", jvmVersion.getUsingSystemClass()); + } else if (System.getProperty("sun.arch.data.model") == "32") { + assertEquals("32-bit", jvmVersion.getUsingSystemClass()); + } + } + + @Test + public void whenUsingNativeClass_thenResultIsAsExpected() { + if (com.sun.jna.Native.POINTER_SIZE == 8) { + assertEquals("64-bit", jvmVersion.getUsingNativeClass()); + } else if (com.sun.jna.Native.POINTER_SIZE == 4) { + assertEquals("32-bit", jvmVersion.getUsingNativeClass()); + } + } + + @Test + public void whenUsingPlatformClass_thenResultIsAsExpected() { + if (Platform.is64Bit() == Boolean.TRUE) { + assertEquals(Boolean.TRUE, jvmVersion.getUsingPlatformClass()); + } else if (com.sun.jna.Native.POINTER_SIZE == 4) { + assertEquals(Boolean.FALSE, jvmVersion.getUsingPlatformClass()); + } + } +}