🌐
Oracle
oracle.com › java › technologies › javase › jdk17-archive-downloads.html
Java Archive Downloads - Java SE 17.0.12 and earlier
Go to the Oracle Java Archive page. This page includes archive downloads for JDK 17 updates 17.0.12 and earlier.
🌐
Oracle
oracle.com › java › technologies › downloads
Download the Latest Java LTS Free
Download the Java including the latest version 17 LTS on the Java SE Platform. These downloads can be used for any purpose, at no cost, under the Java SE binary code license.
Discussions

What are some big changes between Java 12 and 17?
Target 25 , it is the lts version you should focus on. More on reddit.com
🌐 r/java
68
37
October 23, 2025
macOS - How to install Java 17 - Stack Overflow
Could someone please let me know the steps to install Java on a Mac. I did brew install java I get this Warning: openjdk 17.0.1 is already installed and up-to-date. To reinstall 17.0.1, run: brew More on stackoverflow.com
🌐 stackoverflow.com
So is Temurin is the de-facto standard JDK?
Nevertheless, every single step away from Oracle is always nice. Considering how scummy they are for not providing LTS Updates for their own trademark product in order to force them to use the commerical JDK instead. That is a really uncharitable take. OpenJDK is primarily developed and maintained by Oracle, and is provided as completely free software (even for commercial use and redistribution). Nobody is forcing anyone to use LTS versions, or to buy commercial support. The team frequently participates on this subreddit (in this thread, even) and are always helpful. Please be a bit more gentle. More on reddit.com
🌐 r/java
70
85
March 6, 2024
[Question] Does Adoptium support LTS version further than Oracle OpenJDK?
https://adoptium.net/de/support/ As a general philosophy, Adoptium will continue to build binaries for LTS releases as long as the corresponding upstream source is actively maintained. More on reddit.com
🌐 r/java
9
11
April 3, 2024
🌐
Oracle
java.com › releases
JDK Releases
March 17, 2026 - Prior to April 2022 the rule was Tuesday closest to the 17th of those months. Full details can be found here, along with instructions on how to subscribe to CPU Alert notifications. Feature releases are scheduled for release in the middle of March and September.
🌐
Oracle
oracle.com › java › technologies › java se
Oracle Java SE Support Roadmap
3 weeks ago - Oracle provides Customers with Oracle Premier Support on Oracle Java SE products as described in the Oracle Lifetime Support Policy. For product releases after Java SE 8, Oracle will provide Long-Term-Support (LTS) on specific releases. Java SE 8, 11, 17, 21, and 25 are LTS releases.
🌐
Oracle
jdk.java.net › 17
JDK 17 Releases
JDK 17 has been superseded. Please visit jdk.java.net for the current version.
Find elsewhere
🌐
OpenJDK
openjdk.org › projects › jdk › 17
JDK 17
Production-ready binaries under ... the JEP 2.0 proposal. The release was produced using the JDK Release Process (JEP 3). JDK 17 will be a long-term support (LTS) release from most vendors....
🌐
SD Times
sdtimes.com › home › java 17 released with updates to lts schedule
Java 17 released with updates to LTS schedule - SD Times
September 14, 2021 - Java 17 is a long-term support (LTS) release and along with this release Oracle announced updates to the schedule for Java LTS releases.
🌐
Reddit
reddit.com › r/java › what are some big changes between java 12 and 17?
r/java on Reddit: What are some big changes between Java 12 and 17?
October 23, 2025 -

Stepped out of a SWE job a few years back when we just moved up to 12. Now it looks like 17 is currently the most popular version.

I did some searching and it looks like records was a big new feature, as well as a new way to handle conditionals.

Are there any big features that are actually being used regularly in prod environments?

Edit: just want to say thank y'all who not only gave me some good resources to figure it out myself but also gave a good "so what" of why some features stood out.

Top answer
1 of 14
66
Target 25 , it is the lts version you should focus on.
2 of 14
60
Are there any big features that are actually being used regularly in prod environments? If this is the bar, then there are a few for Java 12-17. Java 14 JEP 358 -- Helpful NullPointerExceptions This is on by default, but it made debugging so much easier. JEP 361 -- Switch Expressions This facilitates new forms of Exhaustiveness Checking in Java, and it improves with each release. I use Switch Expressions more frequently than I use IF Statements now. It's just that much more powerful. Java 15 JEP 377 -- ZGC: A Scalable Low-Latency Garbage Collector (Production) A new GC is always nice. Plus, this is a lifesaver if you are doing game development in Java. JEP 378 -- Text Blocks Anytime I need to write an SQL query in Java code, this is what I use. Almost completely obviated the old way. Java 16 JEP 392 -- jpackage Packaging Tool This isn't as frequently used, but if you want to turn your jar file into a .exe or .dmg file, now you have a way pre-built into the JDK to do so. JEP 394 -- Pattern Matching for instanceof Almost completely obviated the old way of using instanceof, and set the ground for Pattern-Matching. Pretty much all IDE suggestions default to this now. JEP 395 -- Records As you guessed, this is the big one. This cut out so much fluff from so many Java programs. What would have taken me 100 lines of code now takes me 5-10 lines of code. And that's ignoring the fact that this is our gateway to destructuring patterns. Probably my 2nd or 3rd favorite feature in Java, losing only to Enums (#1) and Switch Expressions (#2?). Java 17 JEP 409 -- Sealed Classes This is the final piece of the 3 piece puzzle to introduce Algebraic Data Types (ADT) to Java. Switch Expressions and Records are the other 2 pieces. Here is a useful article that talks about how ADT's can be applied effectively in Java -- Data-Oriented Programming . This is now my primary way of programming in Java. There's a lot more past Java 17, but this is what you asked for. Also, Java 12 and 13 had useful features, but most of them were still in preview or in the experimental phase.
🌐
Adobe Support Community
community.adobe.com › t5 › coldfusion-discussions › new-java-17-versions › m-p › 15180025
New Java 17 versions? | Community
February 26, 2025 - Go to the ColdFusion Downloads website and select the link "Java installers". You will then see a link to enable you to download JAVA SE 17.0.14 (LTS).
🌐
JRebel
jrebel.com › blog › java-lts
What is Java LTS and Why Does It Matter? | JRebel
A Java LTS version, or long term support version, is a Java version that will remain the industry standard for several years. Currently supported Java LTS versions include Java 17, Java 21 — and as of September 2025, Java 25.
🌐
PR Newswire
prnewswire.com › news-releases › oracle-releases-java-17-301375959.html
Oracle Releases Java 17
September 14, 2021 - Java 17 is the latest long-term support (LTS) release under Java's six-month release cadence and is the result of extensive collaboration between Oracle engineers and other members of the worldwide Java developer community via the OpenJDK Community ...
🌐
Bell Software
bell-sw.com › pages › downloads
Java Download | Java 8, Java 11, Java 17, Java 21, Java 25, Java 26 - OpenJDK Builds for Linux, Windows & macOS
Liberica JDK is a free, open-source Java Development Kit developed by BellSoft. It's TCK-certified for Java SE specifications and supports most Linux distributions, Windows, macOS, and Solaris. Liberica JDK is a drop-in replacement for Java 8, 11, 17, 21 and 25 (LTS versions), plus Java 9, 10, 12-16, 18-20, and 22-24.
🌐
Adoptium
adoptium.net › temurin › releases
Latest Releases | Adoptium
All VersionsJDK 25 - LTSJDK 21 - LTSJDK 17 - LTSJDK 11 - LTSJDK 8 - LTS
Top answer
1 of 13
406

In 2024, even if you can use just brew..

brew install openjdk@17 

Java will be installed here:

/opt/homebrew/opt/openjdk@17/bin/java

for Apple Intel path is /usr/local/... rather than /opt/homebrew/...

For the system Java wrappers to find this JDK, symlink it with:

sudo ln -sfn /opt/homebrew/opt/openjdk\@17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk

resp. for Intel

sudo ln -sfn /usr/local/opt/openjdk@17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk

Now, running /usr/libexec/java_home -V should show the path to JAVA 17, something like:

17.0.9 (x86_64) "Homebrew" - "OpenJDK 17.0.9" /opt/homebrew/Cellar/openjdk@17/17.0.9/libexec/openjdk.jdk/Contents/Home

(This is what you are missing btw, if javac or javac --version does not give you a command-not-found but an The operation couldn’t be completed. Unable to locate a Java Runtime.)

In case you see the wrong version, check if the path to JAVA_HOME is set correctly. If not, you could set it by:

export JAVA_HOME=\$(/usr/libexec/java_home)

...give a try to sdkman, it's far better than brew

curl -s "https://get.sdkman.io" | bash

then open a new shell and try list to see what you could install ;-)

sdk list java 

At time of writing you could use:

sdk install java 17.0.4.1-tem

Java will be installed here:

/Users/YOUR_USERNAME_HERE/.sdkman/candidates/java/17.0.4.1-tem
2 of 13
56

Java doesn't mind if you install multiple versions. This is often required; java is not backwards compatible (it tries to change little, but e.g. the java8 to java9 transition broke a ton of stuff, much of it needless and much of it not reasonably expectable or fixable by libraries and apps, so a bunch of java apps and libraries only run on java8 - just an example).

So, yes, you have installed JDK17. Also, yes, if you just run java without specifying which one you want, you so happen to get java13 here.

To see all installed javas, you can run:

/usr/libexec/java_home -V

to 'override', you can use something like (depends on which shell you're using on your mac):

export JAVA_HOME=`/usr/libexec/java_home -v 17`

(the backticks mean: Run this then take the output of it and treat that as the 'value' of the expression. here, assign it to the JAVA_HOME env var. -v 17 requests a path to java 17. The -V option lists all and is meant for your eyeballs, not for scripts. The -v option is mostly for scripting, and that's how we're using it here).

JAVA_HOME decides which java is used by some things, but the java you get when you just type java is /usr/bin/java, and that executable is actually just a wrapper that picks a java to run from amongst all installed versions. It uses JAVA_HOME to decide which java to actually run. There are wrappers for all the common commands (javac, too). You can always run e.g. which javac to see what that actually runs; you probably see /usr/bin/javac. Everything in /usr/bin is one of these wrapper thingies that looks at JAVA_HOME and then runs the binary it finds there.

🌐
Devapo
devapo.io › home › java 17 – what’s new?
Changes Between JDK 11 and the Java 17 LTS Release
January 30, 2023 - Java 17 was released on 21 September 2021 as the next Long Term Support (LTS) release.
🌐
ZDNET
zdnet.com › home › business › enterprise software
Oracle adds improvement cream to the newest LTS version of Java | ZDNET
September 14, 2021 - This is the first long-term support (LTS) release to see the light of day since JDK 11 three years ago. True, new versions of Java appear every six months, in March and September.
🌐
Oracle
jdk.java.net › archive
Archived OpenJDK GA Releases
Java SE 17 · Java SE 16 · Java SE 15 · Java SE 14 · Java SE 13 · Java SE 12 · Java SE 11 · Java SE 10 · Java SE 9 · Java SE 8 · Java SE 7 · Feedback · Report a bug · Archive · © 2026 Oracle Corporation and/or its affiliates · Terms of Use ·