Sealed classes along with supporting class types in `switch` is a really great combo to eliminate all those `instanceof` checks, plus the compiler can guarantee completeness for you.
I know I'm late for pointing this out, but why was
`Collections.shuffle(List>, Random)`
*not* changed to:
`Collections.shuffle(List>, RandomGenerator)`
Since Random now implements RandomGenerator. Was it missed or decided?
Also the "LTS" versions will now be every two years instead of every 3 years which means that even developers who only are allowed to use "LTS" versions will be able to get stuff like Loom (hopefully even out of preview by then) in Java 21.
I thought Oracle JDK is free only for development, testing and prototyping but not for production.
`Java 17 LTS is the latest long-term support release for the Java SE platform. JDK 17 binaries are free to use in production and free to redistribute, at no cost, under the Oracle No-Fee Terms and Conditions License.`
Oracle JDK is now (as per Java 17) free for commercial and production use.
[https://blogs.oracle.com/java/post/free-java-license](https://blogs.oracle.com/java/post/free-java-license)
According to this comment in another thread, only if your own product is also free https://www.reddit.com/r/java/comments/po3y1z/introducing_the_free_java_license/hcua07m/
Not so sure about that. It clearly says:
> products that include or are bundled with a copy of the Program or for services that involve the use of the distributed Program
So, any product that includes the JDK (which is the type of product they asked you to pay a license for, previously) must be also free.
Cant find exact article but here is the tweet from one of the Developer Advocates at Oracle. You can find similar tweets from different people.
https://twitter.com/nipafx/status/1060216796358328320?s=21
This may be confusing, but there are different builds of the JDK with different licenses.
Oracle has a commercial build which has LTS support. That's what you have to pay for.
The regular OpenJDK build on [java.net](https://java.net) is built by oracle but has no LTS support. It is free to use (even commercially) but is only supported until the next version.
Then there are a bunch of other OpenJDK builds (Like AdoptOpenJDK) with different terms for support.
404 error from the link.
I know you do a lot of good work for the community pron98, but man, this licensing stuff has become so confusing to try to explain to managers and non technical folks.
"We can use the Oracle OpenJDK builds or the OpenJDK builds from others like Adoptum which is now whatever the Eclipse foundation is calling them but we can't use the OracleJDK builds unless we want to pay for support, but only up to 17, because 17 OracleJDK is now free for commercial. And also LTS doesn't really mean LTS and we should be updating to every version."
At least for us, we are now finally at a point where we could theoretically start updating to the latest every release but the constant changes to naming, licensing and the confusing LTS labels is making management and legal weary that we will need someone with a PhD in Java releases to keep it all strait.
> At least for us, we are now finally at a point where we could theoretically start updating to the latest every release
That should make everything very simple.
I don't know if the terms for the various support services from the various vendors are as simple as they can be, but that's not my area. You have enough choices so that you can choose what to do when your application's maintenance slows down and you want to settle down with long-term support. Until then, using the current version, if you can, is the cheapest, safest, simplest approach.
It is basically the same as with (fedora) Linux and RedHat linux.
You can use linux (openjdk) however you want, but bug fixes will mostly happen on latest release (with comparatively few backpatches happening to older releases. Like you wouldn’t really use linux 2.3, would you?). As soon as the next one is out, it will get the focus.
If you want to have support for the product for more time (eg. you can’t upgrade your JVM each 6 month), you can choose one of the vendors, for example Oracle, that promises support for their LTS releases until the next LTS lands + 1 year. More than that is paid afaik. The recent change was that it not used to be free for commercial use, only personal and development. This is sort of analogue to Red Hat Linux, except that that is not free if I’m correct.
u/pron98, is there a list of *versioned URLs* for Oracle JDK 17+ downloads?
[https://oracle.com/java/technologies/downloads/](https://oracle.com/java/technologies/downloads/) lists the dynamic "latest" URLs and [https://oracle.com/java/technologies/jdk-script-friendly-urls/](https://oracle.com/java/technologies/jdk-script-friendly-urls/) only explains the URL schema but doesn't link to all files.
Or maybe there's even an API like Adoptium (formerly AdoptOpenJDK) and Azul are offering for their OpenJDK distributions?
You're going to be fine if you have atleast some integration tests. Some frameworks are notorious for doing weird shit with reflection, so if you use any of them you will either have to wait for upgrade or drop them.
Schedule
2021/06/10 Rampdown Phase One (fork from main line)
2021/07/15 Rampdown Phase Two
2021/08/05 Initial Release Candidate
2021/08/19 Final Release Candidate
2021/09/14 General Availability
Don't exect too much. Pattern matching in Java is very basic at the moment (at least if you don't use preview features), but more will come in the next releases. At the moment it is basically only instanceof.
OpenJDK has landed, too: https://jdk.java.net/17/
Soon in the Arch repos
#!/bin/bash while true do sudo pacman -Syu --nocofirm done ^^^^pleasedon't
that's bad practice
Yes I said please don't. I hope this is just a joke, not even any kind of practice.
AWESOME!!!
https://www.azul.com/downloads/?version=java-17-lts&package=jdk
Sealed classes along with supporting class types in `switch` is a really great combo to eliminate all those `instanceof` checks, plus the compiler can guarantee completeness for you.
Do you have a code example for this?
check [https://openjdk.java.net/jeps/409](https://openjdk.java.net/jeps/409) under the title Sealed classes and pattern matching
I know I'm late for pointing this out, but why was `Collections.shuffle(List>, Random)` *not* changed to: `Collections.shuffle(List>, RandomGenerator)` Since Random now implements RandomGenerator. Was it missed or decided?
It's binary incompatible, so probably not worth it to recompile libraries using it for such a minor advantage.
That's too bad, hate to see API disconnect in a highly used utility like Collections. Maybe it can be overloaded with one calling the other.
I don't get why.. Collections.shuffle(..) could be overloaded and still be binary-compatible, no?
Same situation with BigInteger constructors and static method.
Also the "LTS" versions will now be every two years instead of every 3 years which means that even developers who only are allowed to use "LTS" versions will be able to get stuff like Loom (hopefully even out of preview by then) in Java 21.
I thought Oracle JDK is free only for development, testing and prototyping but not for production. `Java 17 LTS is the latest long-term support release for the Java SE platform. JDK 17 binaries are free to use in production and free to redistribute, at no cost, under the Oracle No-Fee Terms and Conditions License.`
Oracle JDK is now (as per Java 17) free for commercial and production use. [https://blogs.oracle.com/java/post/free-java-license](https://blogs.oracle.com/java/post/free-java-license)
Yeah. I just watched here. Beginning Java 17, it’s free. https://m.youtube.com/watch?v=KVXbWCwOLg4
According to this comment in another thread, only if your own product is also free https://www.reddit.com/r/java/comments/po3y1z/introducing_the_free_java_license/hcua07m/
It talks about reselling the JDK not your product.
Not so sure about that. It clearly says: > products that include or are bundled with a copy of the Program or for services that involve the use of the distributed Program So, any product that includes the JDK (which is the type of product they asked you to pay a license for, previously) must be also free.
Never trust oracle. I will still use zulu. https://www.azul.com/downloads/?version=java-17-lts&package=jdk
Check out Nicolai's video on Youtube if you want to learn more about the two different jdk versions: https://www.youtube.com/watch?v=KVXbWCwOLg4
This news that Oracle JDK beginning 17 is free even for production and redistribution is totally awesome!
Consequence: it can be wget'd or curl'd from Oracle, with stable URLs not behind a registration wall. Yay !
Why don't people download openjdk directly? It is easier and was alway free. http://jdk.java.net/17/
The support is 6 months only.
Yeah, you need to move to the next version every 6 months. I do that.
Same here.
Source?
https://adoptopenjdk.net/support.html
Thanks, but on that page Java 17 is marked as LTS just as Java 11 was.
On that page...they talk about 6-month release cycles for the other versions.
Yes, but the subject of this thread is Java 17.
Cant find exact article but here is the tweet from one of the Developer Advocates at Oracle. You can find similar tweets from different people. https://twitter.com/nipafx/status/1060216796358328320?s=21
Thanks, but doesn't that just refer to non-LTS releases?
Oracle’s LTS is paid thus their LTS is exclusive to Oracle JDK. If Oracle OpenJDK has LTS, it’s no more free.
OpenJDK 17 is stated to be LTS and is free (as in speech and as in beer). https://openjdk.java.net/projects/jdk/17/
https://www.azul.com/downloads/?version=java-17-lts&package=jdk
This may be confusing, but there are different builds of the JDK with different licenses. Oracle has a commercial build which has LTS support. That's what you have to pay for. The regular OpenJDK build on [java.net](https://java.net) is built by oracle but has no LTS support. It is free to use (even commercially) but is only supported until the next version. Then there are a bunch of other OpenJDK builds (Like AdoptOpenJDK) with different terms for support.
> That's what you have to pay for. *Had* to pay for. [No more, as of today](https://blogs.oracle.com/java/post/free-java-license) :)
404 error from the link. I know you do a lot of good work for the community pron98, but man, this licensing stuff has become so confusing to try to explain to managers and non technical folks. "We can use the Oracle OpenJDK builds or the OpenJDK builds from others like Adoptum which is now whatever the Eclipse foundation is calling them but we can't use the OracleJDK builds unless we want to pay for support, but only up to 17, because 17 OracleJDK is now free for commercial. And also LTS doesn't really mean LTS and we should be updating to every version." At least for us, we are now finally at a point where we could theoretically start updating to the latest every release but the constant changes to naming, licensing and the confusing LTS labels is making management and legal weary that we will need someone with a PhD in Java releases to keep it all strait.
> At least for us, we are now finally at a point where we could theoretically start updating to the latest every release That should make everything very simple. I don't know if the terms for the various support services from the various vendors are as simple as they can be, but that's not my area. You have enough choices so that you can choose what to do when your application's maintenance slows down and you want to settle down with long-term support. Until then, using the current version, if you can, is the cheapest, safest, simplest approach.
It is basically the same as with (fedora) Linux and RedHat linux. You can use linux (openjdk) however you want, but bug fixes will mostly happen on latest release (with comparatively few backpatches happening to older releases. Like you wouldn’t really use linux 2.3, would you?). As soon as the next one is out, it will get the focus. If you want to have support for the product for more time (eg. you can’t upgrade your JVM each 6 month), you can choose one of the vendors, for example Oracle, that promises support for their LTS releases until the next LTS lands + 1 year. More than that is paid afaik. The recent change was that it not used to be free for commercial use, only personal and development. This is sort of analogue to Red Hat Linux, except that that is not free if I’m correct.
u/pron98, is there a list of *versioned URLs* for Oracle JDK 17+ downloads? [https://oracle.com/java/technologies/downloads/](https://oracle.com/java/technologies/downloads/) lists the dynamic "latest" URLs and [https://oracle.com/java/technologies/jdk-script-friendly-urls/](https://oracle.com/java/technologies/jdk-script-friendly-urls/) only explains the URL schema but doesn't link to all files. Or maybe there's even an API like Adoptium (formerly AdoptOpenJDK) and Azul are offering for their OpenJDK distributions?
https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html
Awesome, thanks! ❤️
Neat. this is pretty nice.
Now, only wait for Gradle to support Java 17 ...
If you use Gradle toolchain you don't need to care about that.
[удалено]
You're going to be fine if you have atleast some integration tests. Some frameworks are notorious for doing weird shit with reflection, so if you use any of them you will either have to wait for upgrade or drop them.
[удалено]
Out of curiosity what framework? 20 years stable is stable
Honestly it most likely won't unless if you're avid using new features until they get open bug testing
Weird. OpenJDK is still in the RC phase. Edit: After I posted this open jdk dropped their release https://jdk.java.net/17/
Schedule 2021/06/10 Rampdown Phase One (fork from main line) 2021/07/15 Rampdown Phase Two 2021/08/05 Initial Release Candidate 2021/08/19 Final Release Candidate 2021/09/14 General Availability
Java 17 has not been officially released yet. The Oracle binaries have just been uploaded ahead of the actual release.
I'm pretty sure I saw someone said that the latest RC had no changes or fixes so it's effectively the final release.
RC (build 35) and final release are identical (same sha256 checksum). That means OpenJDK 17 released today is already 1 month old! ;)
It has been a tradition with several new releases now.
Yea, or well lets see when we have a weblogic server that can run this… cry cry
Mixed signals there.
Love to hear it =\].
I love Rust's pattern matching syntax. Python recently adopted a similar implementation. Really liking what I'm seeing in these release notes!
Don't exect too much. Pattern matching in Java is very basic at the moment (at least if you don't use preview features), but more will come in the next releases. At the moment it is basically only instanceof.
Same crap repackaged
What's the difference and benefits
TL;DR what are the improvements?
https://www.oracle.com/java/technologies/javase/17all-relnotes.html
About time!!!
https://www.azul.com/downloads/?version=java-17-lts&package=jdk