<div dir="ltr"><div>Hi all,</div><div><br></div><div>The sun.awt.OSInfo class seems to replicate the functionality in jdk.internal.util.OperatingSystem, with one additional capability: distinguishing between different versions of Windows. However, the Windows versions included are Windows 95 through Windows 7, which hasn't been an officially-supported platform for the JDK since Java 7. There are Windows version checks which rely on OSInfo sprinkled throughout the java.desktop module, but all of them are checking for Windows versions which are not even supported anymore, as far as I can tell. Would a PR which removes OSInfo be accepted, or is there a reason to keep it around that I'm missing?</div><div><br></div><div>Thanks!</div><div><br></div><div>Daniel</div><div><br></div><div>(Somewhat related: <a href="https://bugs.openjdk.org/browse/JDK-8305777">https://bugs.openjdk.org/browse/JDK-8305777</a>)</div><div><br></div><div>---</div><div><br></div><div>$ grep -r --include "*.java" OSInfo src/java.desktop/<br>src/java.desktop/windows/classes/sun/awt/windows/WTaskbarPeer.java:import sun.awt.OSInfo;<br>src/java.desktop/windows/classes/sun/awt/windows/WTaskbarPeer.java:            supported = OSInfo.getWindowsVersion()<br>src/java.desktop/windows/classes/sun/awt/windows/WTaskbarPeer.java:                    .compareTo(OSInfo.WINDOWS_7) >= 0<br>src/java.desktop/windows/classes/sun/awt/shell/Win32ShellFolderManager2.java:import sun.awt.OSInfo;<br>src/java.desktop/windows/classes/sun/awt/shell/Win32ShellFolderManager2.java:                if (recentFolder != null && OSInfo.getWindowsVersion().compareTo(OSInfo.WINDOWS_2000) >= 0) {<br>src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java:import sun.awt.OSInfo;<br>src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java:        return OSInfo.getOSType() == OSInfo.OSType.WINDOWS;<br>src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java:        if (OSInfo.getWindowsVersion().compareTo(OSInfo.WINDOWS_95) <= 0) {<br>src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java:        isClassicWindows = OSInfo.getWindowsVersion().compareTo(OSInfo.WINDOWS_95) <= 0;<br>src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java:                (OSInfo.getOSType() == OSInfo.OSType.WINDOWS &&<br>src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java:                OSInfo.getWindowsVersion().compareTo(OSInfo.WINDOWS_XP) >= 0)) {<br>src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java:        return OSInfo.getOSType() == OSInfo.OSType.WINDOWS<br>src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java:                && OSInfo.getWindowsVersion().compareTo(OSInfo.WINDOWS_VISTA) >= 0;<br>src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java:        return OSInfo.getOSType() == OSInfo.OSType.WINDOWS<br>src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java:                && OSInfo.getWindowsVersion().compareTo(OSInfo.WINDOWS_7) >= 0;<br>src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java:            if (OSInfo.getOSType() == OSInfo.OSType.WINDOWS &&<br>src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java:                    OSInfo.getWindowsVersion().compareTo(OSInfo.WINDOWS_XP) < 0) {<br>src/java.desktop/unix/classes/sun/print/PrintServiceLookupProvider.java:import sun.awt.OSInfo;<br>src/java.desktop/unix/classes/sun/print/PrintServiceLookupProvider.java:        return OSInfo.getOSType() == OSInfo.OSType.MACOSX;<br>src/java.desktop/unix/classes/sun/print/PrintServiceLookupProvider.java:        return OSInfo.getOSType() == OSInfo.OSType.LINUX;<br>src/java.desktop/unix/classes/sun/print/PrintServiceLookupProvider.java:        return (OSInfo.getOSType() == OSInfo.OSType.LINUX ||<br>src/java.desktop/unix/classes/sun/print/PrintServiceLookupProvider.java:                OSInfo.getOSType() == OSInfo.OSType.MACOSX);<br>src/java.desktop/unix/classes/sun/print/PrintServiceLookupProvider.java:        return OSInfo.getOSType() == OSInfo.OSType.AIX;<br>src/java.desktop/unix/classes/sun/awt/X11/XScrollbarPeer.java:import sun.awt.OSInfo;<br>src/java.desktop/unix/classes/sun/awt/X11/XScrollbarPeer.java:        if (OSInfo.getOSType() == OSInfo.OSType.LINUX) {<br>src/java.desktop/unix/classes/sun/awt/X11/MotifColorUtilities.java:import sun.awt.OSInfo;<br>src/java.desktop/unix/classes/sun/awt/X11/MotifColorUtilities.java:        int numOfColor = OSInfo.getOSType() == OSInfo.OSType.AIX ? 8 : 4;<br>src/java.desktop/unix/classes/sun/awt/X11/MotifColorUtilities.java:        if (OSInfo.getOSType() == OSInfo.OSType.LINUX) { // Load motif default colors on Linux.<br>src/java.desktop/share/classes/javax/swing/PopupFactory.java:import sun.awt.OSInfo;<br>src/java.desktop/share/classes/javax/swing/PopupFactory.java:            if ((OSInfo.getOSType() == OSInfo.OSType.MACOSX) && (owner != null) &&<br>src/java.desktop/share/classes/javax/swing/plaf/nimbus/NimbusLookAndFeel.java:import sun.awt.OSInfo;<br>src/java.desktop/share/classes/javax/swing/plaf/nimbus/NimbusLookAndFeel.java:            boolean isWindows = OSInfo.getOSType() == OSInfo.OSType.WINDOWS;<br>src/java.desktop/share/classes/javax/swing/plaf/metal/MetalLookAndFeel.java:import sun.awt.OSInfo;<br>src/java.desktop/share/classes/javax/swing/plaf/metal/MetalLookAndFeel.java:            if (OSInfo.getOSType() == OSInfo.OSType.WINDOWS) {<br>src/java.desktop/share/classes/javax/swing/UIManager.java:import sun.awt.OSInfo;<br>src/java.desktop/share/classes/javax/swing/UIManager.java:        OSInfo.OSType osType = OSInfo.getOSType();<br>src/java.desktop/share/classes/javax/swing/UIManager.java:        if (osType == OSInfo.OSType.WINDOWS) {<br>src/java.desktop/share/classes/javax/swing/UIManager.java:        else if (osType == OSInfo.OSType.MACOSX) {<br>src/java.desktop/share/classes/javax/swing/UIManager.java:        OSInfo.OSType osType = OSInfo.getOSType();<br>src/java.desktop/share/classes/javax/swing/UIManager.java:        if (osType == OSInfo.OSType.WINDOWS) {<br>src/java.desktop/share/classes/javax/swing/UIManager.java:            if (osType == OSInfo.OSType.MACOSX) {<br>src/java.desktop/share/classes/javax/swing/UIManager.java:            if (OSInfo.getOSType() == OSInfo.OSType.MACOSX) {<br>src/java.desktop/share/classes/sun/awt/OSInfo.java:import static sun.awt.OSInfo.OSType.*;<br>src/java.desktop/share/classes/sun/awt/OSInfo.java:public class OSInfo {<br>src/java.desktop/share/classes/sun/awt/OSInfo.java:    private static final Map<String, WindowsVersion> windowsVersionMap = new HashMap<String, OSInfo.WindowsVersion>();<br>src/java.desktop/share/classes/sun/awt/OSInfo.java:    private OSInfo() {<br>src/java.desktop/share/classes/sun/awt/FontConfiguration.java:                if (OSInfo.getOSType() == OSInfo.OSType.WINDOWS) {<br>src/java.desktop/share/classes/sun/awt/shell/ShellFolder.java:import sun.awt.OSInfo;<br>src/java.desktop/share/classes/sun/awt/shell/ShellFolder.java:        if (f.equals(canonical) || OSInfo.getOSType() == OSInfo.OSType.WINDOWS) {<br>src/java.desktop/share/classes/sun/print/PSPrinterJob.java:import sun.awt.OSInfo;<br>src/java.desktop/share/classes/sun/print/PSPrinterJob.java:        isMac = OSInfo.getOSType() == OSInfo.OSType.MACOSX;<br>src/java.desktop/share/classes/sun/print/PSPrinterJob.java:        if (OSInfo.getOSType() == OSInfo.OSType.LINUX ||<br>src/java.desktop/share/classes/sun/print/PSPrinterJob.java:                OSInfo.getOSType() == OSInfo.OSType.MACOSX) {<br>src/java.desktop/share/classes/sun/print/ServiceDialog.java:import sun.awt.OSInfo;<br>src/java.desktop/share/classes/sun/print/ServiceDialog.java:            if (OSInfo.getOSType() != OSInfo.OSType.WINDOWS) {<br>src/java.desktop/share/classes/sun/font/FontManagerNativeLibrary.java:import sun.awt.OSInfo;<br>src/java.desktop/share/classes/sun/font/FontManagerNativeLibrary.java:       if (OSInfo.getOSType() == OSInfo.OSType.WINDOWS) {<br>src/java.desktop/share/classes/sun/font/FontUtilities.java:import sun.awt.OSInfo;<br>src/java.desktop/share/classes/sun/font/FontUtilities.java:        isLinux = OSInfo.getOSType() == OSInfo.OSType.LINUX;<br>src/java.desktop/share/classes/sun/font/FontUtilities.java:        isMacOSX = OSInfo.getOSType() == OSInfo.OSType.MACOSX;<br>src/java.desktop/share/classes/sun/font/FontUtilities.java:        isWindows = OSInfo.getOSType() == OSInfo.OSType.WINDOWS;<br>src/java.desktop/share/classes/sun/swing/WindowsPlacesBar.java:import sun.awt.OSInfo;<br>src/java.desktop/share/classes/sun/swing/WindowsPlacesBar.java:        boolean isXPPlatform = (OSInfo.getOSType() == OSInfo.OSType.WINDOWS &&<br>src/java.desktop/share/classes/sun/swing/WindowsPlacesBar.java:                OSInfo.getWindowsVersion().compareTo(OSInfo.WINDOWS_XP) >= 0);<br>src/java.desktop/share/classes/com/sun/media/sound/SoftSynthesizer.java:import sun.awt.OSInfo;<br>src/java.desktop/share/classes/com/sun/media/sound/SoftSynthesizer.java:                    if (OSInfo.getOSType() == OSInfo.OSType.LINUX) {<br>src/java.desktop/share/classes/com/sun/media/sound/SoftSynthesizer.java:                    if (OSInfo.getOSType() == OSInfo.OSType.WINDOWS) {<br><br></div></div>