The basic tool you need in order to create apps in Java

Java Development Kit (64-bit)

Java JDK 9.0.4 (64-bit)

  -  375.56 MB  -  Freeware
  • Latest Version

    Java JDK 23.0.1 (64-bit)

  • Operating System

    Windows Vista64 / Windows 7 64 / Windows 8 64 / Windows 10 64

  • User Rating

    Click to vote
  • Author / Product

    Oracle / External Link

  • Filename

    jdk-9.0.4_windows-x64_bin.exe

  • MD5 Checksum

    63ac5774cef6f1ce7d6486cc99a5b1be

Sometimes latest versions of the software can cause issues when installed on older devices or devices running an older version of the operating system.

Software makers usually fix these issues but it can take them some time. What you can do in the meantime is to download and install an older version of Java JDK 9.0.4 (64-bit).


For those interested in downloading the most recent release of Java Development Kit (64-bit) or reading our review, simply click here.


All old versions distributed on our website are completely virus-free and available for download at no cost.


We would love to hear from you

If you have any questions or ideas that you want to share with us - head over to our Contact page and let us know. We value your feedback!

  • Java JDK 9.0.4 (64-bit) Screenshots

    The images below have been resized. Click on them to view the screenshots in full size.

    Java JDK 9.0.4 (64-bit) Screenshot 1
  • Java JDK 9.0.4 (64-bit) Screenshot 2
  • Java JDK 9.0.4 (64-bit) Screenshot 3
  • Java JDK 9.0.4 (64-bit) Screenshot 4
  • Java JDK 9.0.4 (64-bit) Screenshot 5

What's new in this version:

NEW FEATURES IN OpenJDK 9:
security-libs/java.security:
- Open source the root certificates in Oracle's Java SE Root CA program
- The OpenJDK 9 binary for Linux x64 contains an empty cacerts keystore. This prevents TLS connections from being established because there are no Trusted Root Certificate Authorities installed. As a workaround for OpenJDK 9 binaries, users had to set the javax.net.ssl.trustStore System Property to use a different keystore.
- "JEP 319: Root Certificates" [1] addresses this problem by populating the cacerts keystore with a set of root certificates issued by the CAs of Oracle's Java SE Root CA Program. As a prerequisite, each CA must sign the Oracle Contributor Agreement (OCA) http://www.oracle.com/technetwork/community/oca-486395.html, or an equivalent agreement, to grant Oracle the right to open-source their certificates.

NEW FEATURES:
- security-libs/javax.net.ssl:
- Negotiated Finite Field Diffie-Hellman Ephemeral Parameters for TLS
- The JDK SunJSSE implementation now supports the TLS FFDHE mechanisms defined in RFC 7919. If a server cannot process the supported_groups TLS extension or the named groups in the extension, applications can either customize the supported group names with jdk.tls.namedGroups, or turn off the FFDHE mechanisms by setting the System Property jsse.enableFFDHEExtension to false.

other-libs/corba:
- Add additional IDL stub type checks to org.omg.CORBA.ORBstring_to_object method
- Applications that either explicitly or implicitly call org.omg.CORBA.ORB.string_to_object, and wish to ensure the integrity of the IDL stub type involved in the ORB::string_to_object call flow, should specify additional IDL stub type checking. This is an "opt in" feature and is not enabled by default.

To take advantage of the additional type checking, the list of valid IDL interface class names of IDL stub classes is configured by one of the following:
- Specifying the security property com.sun.CORBA.ORBIorTypeCheckRegistryFilter located in the file conf/security/java.security in Java SE 9 or in jre/lib/security/java.security in Java SE 8 and earlier.
- Specifying the system property com.sun.CORBA.ORBIorTypeCheckRegistryFilter with the list of classes. If the system property is set, its value overrides the corresponding property defined in the java.security configuration.
- If the com.sun.CORBA.ORBIorTypeCheckRegistryFilter property is not set, the type checking is only performed against a set of class names of the IDL interface types corresponding to the built-in IDL stub classes.

Changes:
security-libs/javax.crypto:
- RSA public key validation
- In 9.0.4, the RSA implementation in the SunRsaSign provider will reject any RSA public key that has an exponent that is not in the valid range as defined by PKCS#1 version 2.2. This change will affect JSSE connections as well as applications built on JCE.
- security-libs/javax.crypto
- Provider default key size is updated
- This change updates the JDK providers to use 2048 bits as the default key size for DSA instead of 1024 bits when applications have not explicitly initialized the java.security.KeyPairGenerator and java.security.AlgorithmParameterGenerator objects with a key size.
- If compatibility issues arise, existing applications can set the system property jdk.security.defaultKeySize introduced in JDK-8181048 with the algorithm and its desired default key size.
- security-libs/javax.crypto
- Stricter key generation
- The generateSecret(String) method has been mostly disabled in the javax.crypto.KeyAgreement services of the SUN and SunPKCS11 providers. Invoking this method for these providers will result in a NoSuchAlgorithmException for most algorithm string arguments. The previous behavior of this method can be re-enabled by setting the value of the jdk.crypto.KeyAgreement.legacyKDF system property to true (case insensitive). Re-enabling this method by setting this system property is not recommended.
- security-libs/javax.net.ssl
- Disable exportable cipher suites
- To improve the strength of SSL/TLS connections, exportable cipher suites have been disabled in SSL/TLS connections in the JDK by the jdk.tls.disabledAlgorithms Security Property.
- core-svc/javax.management
- JMX Connections need deserialization filters
- New public attributes, RMIConnectorServer.CREDENTIALS_FILTER_PATTERN and RMIConnectorServer.SERIAL_FILTER_PATTERN have been added to RMIConnectorServer.java. With these new attributes, users can specify the deserialization filter pattern strings to be used while making a RMIServer.newClient() remote call and while sending deserializing parameters over RMI to server respectively.
- The user can also provide a filter pattern string to the default agent via management.properties. As a result, a new attribute is added to management.properties.
- Existing attribute RMIConnectorServer.CREDENTIAL_TYPES is superseded by RMIConnectorServer.CREDENTIALS_FILTER_PATTERN and has been removed.

Bug fixes:
- deploy webstart:JNLP files won't launch from IE11 on Windows 10 Creators Update
- hotspot runtime: s390: Some java boolean checks are not correct
- javafx media: Provide media support for libav version 57
- javafx web: Underscore not visible in HTML combo box options inside webview
- javafx web: Possible crash due to use-after-free
- security-libsjava.security: Open-source the Oracle JDK Root Certificates
- security-libs javax.crypto: A comment in the java.security configuration file incorrectly says that "strong but limited" is the default value
- security-libs javax.net.ssl:Negotiated Finite Field Diffie-Hellman Ephemeral Parameters for TLS
- security-libs javax.net.ssl: Transport Layer Security (TLS) Session Hash and Extended Master Secret Extension
- security-libs javax.net.ssl: Restrict the use of EXPORT cipher suites
- security-libs javax.net.ssl: Increase the number of clones in the CloneableDigest