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

Java Development Kit (64-bit)

Java Development Kit (64-bit)

  -  205.21 MB  -  Freeware
  • Latest Version

    Java JDK 23.0.1 (64-bit) LATEST

  • Review by

    Daniel Leblanc

  • Operating System

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

  • User Rating

    Click to vote
  • Author / Product

    Oracle / External Link

  • Filename

    jdk-23_windows-x64_bin.exe

  • MD5 Checksum

    260679d3c9fc020af5f1ab1a6771c26c

Java Development Kit (JDK) is a powerful software package designed for Java developers. It provides a comprehensive set of tools, libraries, and documentation necessary for developing, debugging, and deploying Java applications. With its robust features and extensive support, the JDK 2024 has become an indispensable resource in the world of Java development.



Java Development Kit (JDK) 64bit is a software package developed by Oracle Corporation that serves as a complete development environment for Java applications. It includes a collection of programming tools, such as compilers, debuggers, and other utilities, along with a rich set of libraries and documentation. It ensures that developers have all the necessary components to create, test, and deploy Java programs efficiently.

Features

Compiler and Runtime Environment
It comes with the Java Compiler, which translates Java source code into bytecode that can run on any Java Virtual Machine (JVM). It also includes the Java Runtime Environment (JRE) that allows you to execute Java applications on your machine.

Libraries and APIs
It provides a vast set of libraries and APIs that simplify the development process. These libraries cover a wide range of functionalities, including database access, networking, graphical user interface (GUI) development, and much more.

Java Development Kit (64-bit) Screenshot 1

Integrated Development Environment (IDE) Support
Although the app itself does not include an IDE, it seamlessly integrates with popular Java IDEs like Eclipse, IntelliJ IDEA, and NetBeans. This allows developers to leverage the JDK's capabilities within their preferred development environment.

Documentation
It offers extensive documentation, including the Java API documentation, which serves as a valuable resource for understanding the available classes, methods, and their usage. It also includes guides, tutorials, and sample code to assist developers in mastering Java development.

Debugging and Profiling Tools
The JDK incorporates powerful debugging tools like jdb and jstack, which aid developers in identifying and resolving issues in their code. Additionally, it provides profiling tools like JConsole and VisualVM for performance analysis and optimization.

JDK 20 is available now!

Java Development Kit (JDK) 20 is the most recent release of the Java SE Platform, while JDK 17 LTS (Long-Term Support) is the latest long-term support release. The JDK 20 binaries can be used freely in production and redistributed without any cost, as per the Oracle No-Fee Terms and Conditions.

Under these terms, JDK 20 will continue to receive updates until September 2023. After that, it will be succeeded by JDK 21.

How to Use

Download and Installation: To use the app, visit the official Oracle website or FileHorse and download the appropriate JDK version for your operating system.

Setup and Configuration: Follow the installation instructions provided by Oracle to set up the JDK 2024 on your machine. Ensure that you configure the environment variables correctly to enable command-line access to the tools.

Writing and Compiling Java Code: Use a text editor or an IDE to write your Java code. Save the code with the .java extension. Open a command prompt or terminal, navigate to the directory where the code is saved, and use the Javac command to compile the Java source code into bytecode.

Running Java Applications: After compiling the code, use the Java command followed by the name of the class containing the main method to execute the Java application.

FAQ

Q1. What is the difference between the JDK and the JRE?
A1. The JDK (Java Development Kit) is a complete development environment that includes the Java Compiler, libraries, and tools required for developing Java applications. The JRE (Java Runtime Environment), on the other hand, is a subset of the app and only provides the necessary components to run Java applications.

Q2. Can I use the JDK for commercial purposes?
A2. Yes, it can be used for both commercial and non-commercial purposes. However, it's essential to review and comply with Oracle's licensing terms and conditions.

Q3. Is the JDK compatible with multiple operating systems?
A3. Yes, the app is available for various operating systems, including Windows, macOS, and Linux distributions. Ensure that you download the appropriate version for your specific operating system.

Q4. Are there any alternatives to the JDK for Java development?
A4. Yes, some alternatives to the app include OpenJDK, Amazon Corretto, and IBM SDK for Java. These alternatives offer similar features and functionalities, and you can choose the one that best suits your needs.

Q5. Does the JDK support the latest version of the Java programming language?
A5. Yes, the JDK is regularly updated to support the latest version of the Java programming language. It is recommended to keep your app version up to date to leverage the newest language features and enhancements.

Pricing

The JDK is FREE to download and use. However, for commercial use, it is important to review and comply with Oracle's licensing terms and conditions.

PROS
  • Comprehensive development environment with all the necessary tools and libraries.
  • Extensive documentation and resources for Java developers.
  • Regular updates and compatibility with the latest Java programming language versions.
  • Seamless integration with popular Java IDEs.
  • Robust debugging and profiling tools.
CONS
  • The licensing terms for commercial use can be complex and may require careful review.
  • Setting up and configuring the environment variables can be challenging for beginners.
  • The installation package can be relatively large, requiring significant disk space.
Conclusion

The Java Development Kit (JDK) is an indispensable software package for Java developers, providing a complete development environment with powerful tools, libraries, and documentation. With its extensive features, seamless integration with popular IDEs, and support for the latest Java language versions, it empowers developers to build robust and scalable Java applications.

While the licensing terms for commercial use can be complex, the tool remains the go-to choice for professional Java development. Whether you are a beginner or an experienced developer, the JDK is a must-have toolset for unleashing the full potential of Java programming.

Also Available: Java Development Kit (32-bit) and Java Development Kit for Mac

  • Java JDK 23.0.1 (64-bit) Screenshots

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

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

What's new in this version:

install/install:
- ➜ JDK RPM Upgrade Leaves Orphan Alternatives Entry (JDK-8336107 (not public))
- Fixed the issue with entries in the "java" and "javac" groups not being properly managed during an RPM upgrade.
- Upgrading from an older Java RPM installed into a shared directory (/usr/lib/jvm/jdk-${FEATURE}-oracle-${ARCH}) to a Java RPM installing into a version-specific directory (/usr/lib/jvm/jdk-${VERSION}-oracle-${ARCH}), results in the older Java entries in the "java" and "javac" groups not being deleted.
- The issue does not manifest until the new Java is uninstalled. When it is uninstalled and Java from the lower release is installed, running Java commands like java or keytool without the full path specified will result in the "command not found" error. For example, install 21.0.3; upgrade it to 21.0.4; uninstall 21.0.4; install any Java update of 17 or 11 or 8 release; run "java" from the command line. The command will fail with the "command not found" error.
- Manually delete orphan Java entries in the "java" and "javac" groups to workaround the issue.

Other Notes:
core-libs/java.net:
- ➜ New Default Limits in the JDK HTTP Implementations (JDK-8328286 (not public))
- New Default limits have been added to HTTP in the JDK.
- The JDK built-in implementation of the legacy URL protocol handler for HTTP, HttpURLConnection, and the new HttpClient, in the module java.net.http, now have a default limit on the maximum response headers size they will accept from a remote party. The limit is set by default at 384kB (393216 bytes) and is computed as the cumulative size of all header names and header values plus an overhead of 32 bytes per header name value pair.
- The default value of the limit can be changed by specifying a positive value with the jdk.http.maxHeaderSize system property on the command line, or in the appropriate conf.properties or net.properties file. A negative or zero value is interpreted as no limit. If the limit is exceeded, the request will fail with a protocol exception.
- The JDK built-in implementation of the com.sun.net.httpserver.HttpServer (jdk.httpserver) implements a similar limit for the maximum request header size the server is prepared to accept. The HttpServer limit can be changed by specifying a positive value with the sun.net.httpserver.maxReqHeaderSize system property on the command line. A negative or zero value is interpreted as no limit. The limit is set by default at 384kB (393216 bytes) and the size is computed in the same way as explained above. If the limit is exceeded, the connection is closed.

In addition, the JDK built-in implementation of the new java.net.http.HttpClient enforces two additional limits:
- The system property jdk.httpclient.maxNonFinalResponses can be specified with a positive value on the java command line, or in the conf.properties or net.properties file, to control how many interim responses the client will accept before receiving a final response. An interim response is considered informational and is a response whose status is in the range [100, 199]. These responses are typically either handled internally or simply discarded by the implementation. The default limit is now set at a maximum of 8 interim responses before receiving the final response. A negative or zero value is interpreted as no limit. If the limit is exceeded, the request will fail with a protocol exception.
- The system property jdk.httpclient.maxLiteralWithIndexing can be specified with a positive value on the java command line, or in the conf.properties or net.properties file, to control how many additions a server may request a client to make to the HPack dynamic table when decoding a set of headers. The default maximum value is now set to 512. A negative or zero value is interpreted as no limit. If the limit is exceeded, the request will fail with a protocol exception.

security-libs/java.security:
- ➜ Added SSL.com TLS Root CA Certificates issued in 2022 (JDK-8341057)

The following root certificates have been added to the cacerts truststore:
- + SSL.com
- + ssltlsrootecc2022
- DN: CN=SSL.com TLS ECC Root CA 2022, O=SSL Corporation, C=US
- + SSL.com
- + ssltlsrootrsa2022
- DN: CN=SSL.com TLS RSA Root CA 2022, O=SSL Corporation, C=US
- security-libs/javax.net.ssl
- ➜ Distrust TLS Server Certificates Anchored by Entrust Root Certificates and Issued After Nov 11, 2024 (JDK-8337664)
- The JDK will stop trusting TLS server certificates issued after November 11, 2024 and anchored by Entrust root certificates, in line with similar plans recently announced by Google and Mozilla. The list of affected certificates includes certificates branded as AffirmTrust, which are managed by Entrust.
- TLS server certificates issued on or before November 11, 2024 will continue to be trusted until they expire. Certificates issued after that date, and anchored by any of the Certificate Authorities in the table below, will be rejected.
- The restrictions will be enforced in the JDK implementation (the SunJSSE Provider) of the Java Secure Socket Extension (JSSE) API. A TLS session will not be negotiated if the server's certificate chain is anchored by any of the Certificate Authorities in the table below and the certificate has been issued after November 11, 2024.

An application will receive an Exception with a message indicating the trust anchor is not trusted, for example:
- TLS server certificate issued after 2024-11-11 and anchored by a distrusted legacy Entrust root CA: CN=Entrust.net Certification Authority (2048),
- OU=(c) 1999 Entrust.net Limited, OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.), O=Entrust.net
- If necessary, and at your own risk, you can work around the restrictions by removing "ENTRUST_TLS" from the jdk.security.caDistrustPolicies security property in the java.security configuration file.

Fixed:
- TAB-key does not work in JTables after selecting details-view in JFileChooser
- (fs) BasicFileAttributes.creationTime() falls back to epoch if birth time is unavailable (Linux)
- Change Entrust TLS distrust date to November 12, 2024