Hacker News new | past | comments | ask | show | jobs | submit login
Java 23 / JDK 23: General Availability (openjdk.org)
57 points by carimura 5 months ago | hide | past | favorite | 21 comments



From the link/mailing list announcement:

“JDK 23, the reference implementation of Java 23, is now Generally Available. We shipped build 37 as the second Release Candidate of JDK 23 on 21 August, and no P1 bugs have been reported since then. Build 37 is therefore now the GA build, ready for production use.

GPL-licensed OpenJDK builds from Oracle are available here:

  https://jdk.java.net/23
Builds from other vendors will no doubt be available soon.

This release includes twelve JEPs [1], including the switch of ZGC’s default mode to the generational mode (474):

  455: Primitive Types in Patterns, instanceof, and switch (Preview)
  466: Class-File API (Second Preview)
  467: Markdown Documentation Comments
  469: Vector API (Eighth Incubator)
  473: Stream Gatherers (Second Preview)
  471: Deprecate the Memory-Access Methods in sun.misc.Unsafe for Removal
  474: ZGC: Generational Mode by Default
  476: Module Import Declarations (Preview)
  477: Implicitly Declared Classes and Instance Main Methods (Third Preview)
  480: Structured Concurrency (Third Preview)
  481: Scoped Values (Third Preview)
  482: Flexible Constructor Bodies (Second Preview)
This release also includes, as usual, hundreds of smaller enhancements and thousands of bug fixes.

Thank you to everyone who contributed this release, whether by designing and implementing features or enhancements, by fixing bugs, or by downloading and testing the early-access builds!

- Mark

[1] https://openjdk.org/projects/jdk/2/“


I need someone to sell me on Java. I might need to learn it soon for a project but it never before occurred to me that it is something I should use.

I came up in coding in the early 00's. To me Java was that slow, buggy, sometimes dangerous browser plug-in that I think most people loathed?

On Mac OS X at least Java desktop apps were always slow, ugly, and broke the platform UI conventions.

Then Java was that language Google used for Android and then ended up in a long, expensive lawsuit over it with Java's owner Oracle.

It is cross-platform as a big selling point but then people use it to write monolithic server applications where cross-platform capability isn't useful.

It seems to be kinda, sorta open source but don't fuck up with the licenses or Larry's lawyers will come for you. I'd rather just use a fully open language where the community can guide its progress.

I am sincerely not trying to start a flame war or be condenscending. I would like to expand my thinking and understand what I am missing out on.


With respect to being open source - it’s GPL licensed (with classpath exception), and there are several vendor-supported builds of the JDK. People typically use these or OpenJDK. You only run into licensing trouble if you use the gratis, commercial build of Java provided by Oracle, which you would only do if you’re a newbie or have a highly unusual usecase (there’s really no other reason to use it, even in industry). Java has a massive ecosystem which has the benefit of having both extremely stable, old libraries and newer stuff. It’s the language of industry and middleware; it’s verbose (but less so in recent versions); it’s reliable and easy to reason about. Its strong/static/declared typing is something that some people don’t get around, which is fine for them but really it’s just nice for sanity when working with a code base that’s more than a few thousand lines or that someone else wrote. I reckon it’s the Corolla of programming languages. For what it’s worth I think it’s also pretty fast, even though its zero-to-sixty might not be very impressive.


Very intersting, thanks. If I was going to dip my toe OpenJDK would be the place to start then?


Java is mostly used for server applications and occasionally for desktop apps (e.g. IntelliJ) these days. Applets aren't relevant anymore since all browsers removed them.

Java is memory-safe, multi-threaded and JIT-compiled. Faster than python, safer than Go or C. It has good tooling (debuggers, profilers, IDEs). It was one of the first languages to bring safe shared-memory multi-threading to the table, its memory-model came before C++'s. Its FFI story has been lacking for a long time, but this has been improving with java.lang.native.

Over the years it has adopted a lot of nice features that other languages have mainstreamed. So 2000s Java is not 2020s Java.

The JVM can also run a bunch of other languages.

There are many 3rd-party, FOSS builds of the JDK, so you don't need to use oracle's builds.

GCs have improved a lot. Lower latency, more parallelism, more throughput. Though they still need a good amount of RAM as breathing room.

Startup times and memory consumption can still be an issue. They're working on value types that should help with memory efficiency too.

And as with any language: even if the base language is fine, a project can still make it hell. Extremely convoluted "Enterprise Java" projects that layer interceptors, factories, dependency injection and what-not on top of each other are infamous for that.


And it powers 70% of the world mobile phone market (even if ART isn't technically a JVM implementation), Xerox and Ricoh printers, Cisco inteligent phone terminals, M2M gateways, military battleships targeting systems, missile tracking systems, factory robots,....


> It is cross-platform as a big selling point but then people use it to write monolithic server applications where cross-platform capability isn't useful.

Being able to locally develop/debug on Windows/Mac and deploy to Linux servers is very useful. And changes like the Apple Silicon transition only required dropping in a new ARM JDK instead of updating hundreds of tools and libraries.


> I came up in coding in the early 00's.

almost twenty years have passed since the early 00's. the industry is completely different and so is java.


Ok, good to know, I didn't get the memo! ;)


I have been writing Java for a living for about 13 years. Prior to that I was doing C++.

If you have no case to use Java, use something else that takes your fancy. Java's strengths are not for the casual user. If you want a fun language to learn and do smaller projects, there are better choices.

If you want to run a company with a serious server side architecture, Java is a great choice.

I will repeat a previous post of mine for why. Java is a straight forward language with fewer gotchas than some others (but definitely not none). In our monorepo we have code that does not care terribly much about latency or garbage, while other code that cares very much about latency and garbage. Our hotpath is GC free and the code is written with this in mind. Yes, it is a slightly different style of code, but it is still Java and our developers don't have a lot of trouble jumping from one area of the codebase to another. That means we share many of the same abstractions, the same build, the same monitoring, the same deployments (sort of), and many other things and we only ever have to hire good Java developers. We can write very different styles of application, in the same codebase, very easily.

These days, garbage is also mostly a non-issue if you've got any sort of awareness and competence. With ZGC or other choices, even if your app generates a lot of garbage, you can still achieve very high performance. Again, to repeat, this means you can write code without caring _all that much_ if you're happy with "good enough". And you can tweak it later because there are just so many good tools for performing runtime analysis. And if you do care massively about performance, Java has it. It is possible to write Java code that will come close to C or C++ performance, and you don't need another language, build system, etc to achieve it.

That alone is probably the biggest selling point to larger firms in this space.

And on top of that, in my industry (finance), Java is quite ubiquitous, which means portable skills. It's attractive to developers because they're not risking a dead end skill. They know Java is everywhere in the industry, they're transferable, and finding talent isn't an impossible task. This is self reinforcing, meaning the choice of Java is as strong as ever.

Oh and modern Java is much nicer to work with than old school Java, and becoming better. We're very confident with our choice and we can see a good future ahead for the language.


It's an average imperative OO language that has a lot of devs, a lot of libraries, and world-class optimization of GC and method dispatch (Sun had acqui-hired the StrongTalk team).


I am a fan of Scala, personally, when it comes to its use as a more concise, more elegant Java - with full access to the Java ecosystem and its libraries.


Scala's great if you can end up in a code base that is "scala as a better java" instead of "scala as haskell on the jvm".


Thank you for the thoughtful replies, all. This is why HN is great.


I feel for the enterprise Java devs. Doesn’t matter how good the language becomes and what shiny new features it gets, they are forever tied to a version 20 years out of date. Working with a client right now with dozens to close to a hundred Java 8 apps still being maintained.


IIRC less than half of all deployments are on Java 8. Most of the community has moved past it.


This used to be true, but is it still? Docker and serverless have changed this considerably.




Which variant of JDk is common for personal use? Is it still Temurin?


Any of them except for the Oracle Commercial build.




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: