Eliminate sun.awt.OSInfo?
Philip Race
philip.race at oracle.com
Mon Mar 24 22:25:40 UTC 2025
I am not a huge fan of sun.awt.OSInfo and I know a lot of uses are
out-dated,
and probably could be removed.
Whether that ends up in not needing OSInfo is another a question.
But I would *not* want to migrate to a jdk.internal API.
I have a goal of someday having zero cases of java.base "exports FOO to
java.desktop"
Its not a top priority to complete, but at the same time I don't want to
needlessly go in the opposite direction.
-phil.
On 3/24/25 3:18 PM, Daniel Gredler wrote:
> Hi all,
>
> 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?
>
> Thanks!
>
> Daniel
>
> (Somewhat related: https://bugs.openjdk.org/browse/JDK-8305777)
>
> ---
>
> $ grep -r --include "*.java" OSInfo src/java.desktop/
> src/java.desktop/windows/classes/sun/awt/windows/WTaskbarPeer.java:import
> sun.awt.OSInfo;
> src/java.desktop/windows/classes/sun/awt/windows/WTaskbarPeer.java:
> supported = OSInfo.getWindowsVersion()
> src/java.desktop/windows/classes/sun/awt/windows/WTaskbarPeer.java:
> .compareTo(OSInfo.WINDOWS_7) >= 0
> src/java.desktop/windows/classes/sun/awt/shell/Win32ShellFolderManager2.java:import
> sun.awt.OSInfo;
> src/java.desktop/windows/classes/sun/awt/shell/Win32ShellFolderManager2.java:
> if (recentFolder != null &&
> OSInfo.getWindowsVersion().compareTo(OSInfo.WINDOWS_2000) >= 0) {
> src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java:import
> sun.awt.OSInfo;
> src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java:
> return OSInfo.getOSType() == OSInfo.OSType.WINDOWS;
> src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java:
> if (OSInfo.getWindowsVersion().compareTo(OSInfo.WINDOWS_95) <= 0) {
> src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java:
> isClassicWindows =
> OSInfo.getWindowsVersion().compareTo(OSInfo.WINDOWS_95) <= 0;
> src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java:
> (OSInfo.getOSType() == OSInfo.OSType.WINDOWS &&
> src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java:
> OSInfo.getWindowsVersion().compareTo(OSInfo.WINDOWS_XP) >= 0)) {
> src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java:
> return OSInfo.getOSType() == OSInfo.OSType.WINDOWS
> src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java:
> &&
> OSInfo.getWindowsVersion().compareTo(OSInfo.WINDOWS_VISTA) >= 0;
> src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java:
> return OSInfo.getOSType() == OSInfo.OSType.WINDOWS
> src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java:
> &&
> OSInfo.getWindowsVersion().compareTo(OSInfo.WINDOWS_7) >= 0;
> src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java:
> if (OSInfo.getOSType() == OSInfo.OSType.WINDOWS &&
> src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java:
> OSInfo.getWindowsVersion().compareTo(OSInfo.WINDOWS_XP) < 0) {
> src/java.desktop/unix/classes/sun/print/PrintServiceLookupProvider.java:import
> sun.awt.OSInfo;
> src/java.desktop/unix/classes/sun/print/PrintServiceLookupProvider.java:
> return OSInfo.getOSType() == OSInfo.OSType.MACOSX;
> src/java.desktop/unix/classes/sun/print/PrintServiceLookupProvider.java:
> return OSInfo.getOSType() == OSInfo.OSType.LINUX;
> src/java.desktop/unix/classes/sun/print/PrintServiceLookupProvider.java:
> return (OSInfo.getOSType() == OSInfo.OSType.LINUX ||
> src/java.desktop/unix/classes/sun/print/PrintServiceLookupProvider.java:
> OSInfo.getOSType() == OSInfo.OSType.MACOSX);
> src/java.desktop/unix/classes/sun/print/PrintServiceLookupProvider.java:
> return OSInfo.getOSType() == OSInfo.OSType.AIX;
> src/java.desktop/unix/classes/sun/awt/X11/XScrollbarPeer.java:import
> sun.awt.OSInfo;
> src/java.desktop/unix/classes/sun/awt/X11/XScrollbarPeer.java:
> if (OSInfo.getOSType() == OSInfo.OSType.LINUX) {
> src/java.desktop/unix/classes/sun/awt/X11/MotifColorUtilities.java:import
> sun.awt.OSInfo;
> src/java.desktop/unix/classes/sun/awt/X11/MotifColorUtilities.java:
> int numOfColor = OSInfo.getOSType() == OSInfo.OSType.AIX ? 8 : 4;
> src/java.desktop/unix/classes/sun/awt/X11/MotifColorUtilities.java:
> if (OSInfo.getOSType() == OSInfo.OSType.LINUX) { // Load motif
> default colors on Linux.
> src/java.desktop/share/classes/javax/swing/PopupFactory.java:import
> sun.awt.OSInfo;
> src/java.desktop/share/classes/javax/swing/PopupFactory.java:
> if ((OSInfo.getOSType() == OSInfo.OSType.MACOSX) && (owner != null) &&
> src/java.desktop/share/classes/javax/swing/plaf/nimbus/NimbusLookAndFeel.java:import
> sun.awt.OSInfo;
> src/java.desktop/share/classes/javax/swing/plaf/nimbus/NimbusLookAndFeel.java:
> boolean isWindows = OSInfo.getOSType() ==
> OSInfo.OSType.WINDOWS;
> src/java.desktop/share/classes/javax/swing/plaf/metal/MetalLookAndFeel.java:import
> sun.awt.OSInfo;
> src/java.desktop/share/classes/javax/swing/plaf/metal/MetalLookAndFeel.java:
> if (OSInfo.getOSType() == OSInfo.OSType.WINDOWS) {
> src/java.desktop/share/classes/javax/swing/UIManager.java:import
> sun.awt.OSInfo;
> src/java.desktop/share/classes/javax/swing/UIManager.java:
> OSInfo.OSType osType = OSInfo.getOSType();
> src/java.desktop/share/classes/javax/swing/UIManager.java: if
> (osType == OSInfo.OSType.WINDOWS) {
> src/java.desktop/share/classes/javax/swing/UIManager.java: else if
> (osType == OSInfo.OSType.MACOSX) {
> src/java.desktop/share/classes/javax/swing/UIManager.java:
> OSInfo.OSType osType = OSInfo.getOSType();
> src/java.desktop/share/classes/javax/swing/UIManager.java: if
> (osType == OSInfo.OSType.WINDOWS) {
> src/java.desktop/share/classes/javax/swing/UIManager.java: if
> (osType == OSInfo.OSType.MACOSX) {
> src/java.desktop/share/classes/javax/swing/UIManager.java: if
> (OSInfo.getOSType() == OSInfo.OSType.MACOSX) {
> src/java.desktop/share/classes/sun/awt/OSInfo.java:import static
> sun.awt.OSInfo.OSType.*;
> src/java.desktop/share/classes/sun/awt/OSInfo.java:public class OSInfo {
> src/java.desktop/share/classes/sun/awt/OSInfo.java: private static
> final Map<String, WindowsVersion> windowsVersionMap = new
> HashMap<String, OSInfo.WindowsVersion>();
> src/java.desktop/share/classes/sun/awt/OSInfo.java: private OSInfo() {
> src/java.desktop/share/classes/sun/awt/FontConfiguration.java:
> if (OSInfo.getOSType() == OSInfo.OSType.WINDOWS) {
> src/java.desktop/share/classes/sun/awt/shell/ShellFolder.java:import
> sun.awt.OSInfo;
> src/java.desktop/share/classes/sun/awt/shell/ShellFolder.java:
> if (f.equals(canonical) || OSInfo.getOSType() == OSInfo.OSType.WINDOWS) {
> src/java.desktop/share/classes/sun/print/PSPrinterJob.java:import
> sun.awt.OSInfo;
> src/java.desktop/share/classes/sun/print/PSPrinterJob.java: isMac
> = OSInfo.getOSType() == OSInfo.OSType.MACOSX;
> src/java.desktop/share/classes/sun/print/PSPrinterJob.java: if
> (OSInfo.getOSType() == OSInfo.OSType.LINUX ||
> src/java.desktop/share/classes/sun/print/PSPrinterJob.java:
> OSInfo.getOSType() == OSInfo.OSType.MACOSX) {
> src/java.desktop/share/classes/sun/print/ServiceDialog.java:import
> sun.awt.OSInfo;
> src/java.desktop/share/classes/sun/print/ServiceDialog.java:
> if (OSInfo.getOSType() != OSInfo.OSType.WINDOWS) {
> src/java.desktop/share/classes/sun/font/FontManagerNativeLibrary.java:import
> sun.awt.OSInfo;
> src/java.desktop/share/classes/sun/font/FontManagerNativeLibrary.java:
> if (OSInfo.getOSType() == OSInfo.OSType.WINDOWS) {
> src/java.desktop/share/classes/sun/font/FontUtilities.java:import
> sun.awt.OSInfo;
> src/java.desktop/share/classes/sun/font/FontUtilities.java:
> isLinux = OSInfo.getOSType() == OSInfo.OSType.LINUX;
> src/java.desktop/share/classes/sun/font/FontUtilities.java:
> isMacOSX = OSInfo.getOSType() == OSInfo.OSType.MACOSX;
> src/java.desktop/share/classes/sun/font/FontUtilities.java:
> isWindows = OSInfo.getOSType() == OSInfo.OSType.WINDOWS;
> src/java.desktop/share/classes/sun/swing/WindowsPlacesBar.java:import
> sun.awt.OSInfo;
> src/java.desktop/share/classes/sun/swing/WindowsPlacesBar.java:
> boolean isXPPlatform = (OSInfo.getOSType() == OSInfo.OSType.WINDOWS &&
> src/java.desktop/share/classes/sun/swing/WindowsPlacesBar.java:
> OSInfo.getWindowsVersion().compareTo(OSInfo.WINDOWS_XP) >= 0);
> src/java.desktop/share/classes/com/sun/media/sound/SoftSynthesizer.java:import
> sun.awt.OSInfo;
> src/java.desktop/share/classes/com/sun/media/sound/SoftSynthesizer.java:
> if (OSInfo.getOSType() == OSInfo.OSType.LINUX) {
> src/java.desktop/share/classes/com/sun/media/sound/SoftSynthesizer.java:
> if (OSInfo.getOSType() == OSInfo.OSType.WINDOWS) {
>
More information about the client-libs-dev
mailing list