Java 20 / JDK 20: General Availability

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • java-new-features

    Exploring Java 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23

  • Here are some resources I've found helpful and have read or are on my backlog to catch up with these developments:

    - https://github.com/wesleyegberto/java-new-features (terse, includes links to JEPs, good jumping off point)

    - https://github.com/winterbe/java8-tutorial (quick tour through features of Java 8)

    - https://winterbe.com/posts/2018/09/24/java-11-tutorial/ (same for Java 11)

    Books:

    - Java 8 in Action / Modern Java in Action (Raoul-Gabriel Urma, Alan Mycroft, Mario Fusco; 2014 and 2018 respectively)

    - The Well-Grounded Java Developer (Martijn Verburg, Benjamin Evans, Jason Clark; 2022) - not specifically focused on new features but does cover them in the context of going deeper into Java and the JVM.

  • Modern Java - A Guide to Java 8

    Modern Java - A Guide to Java 8

  • Here are some resources I've found helpful and have read or are on my backlog to catch up with these developments:

    - https://github.com/wesleyegberto/java-new-features (terse, includes links to JEPs, good jumping off point)

    - https://github.com/winterbe/java8-tutorial (quick tour through features of Java 8)

    - https://winterbe.com/posts/2018/09/24/java-11-tutorial/ (same for Java 11)

    Books:

    - Java 8 in Action / Modern Java in Action (Raoul-Gabriel Urma, Alan Mycroft, Mario Fusco; 2014 and 2018 respectively)

    - The Well-Grounded Java Developer (Martijn Verburg, Benjamin Evans, Jason Clark; 2022) - not specifically focused on new features but does cover them in the context of going deeper into Java and the JVM.

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • go

    The Go programming language

  • Yes.

    When you're in a "tight loop" (e.g. a matrix multiplication, which is basically 3 nested loops that only load data, do math, write data), Java's virtual threads just won't yield. So if you write your app in the "wrong" way, you lose concurrency.

    There's a lot of discussion about this from the Go side. The original issue was this one: runtime: tight loops should be preemptible https://github.com/golang/go/issues/10958

    > it's possible to write a tight loop (e.g., a numerical kernel or a spin on an atomic) with no calls or allocation that arbitrarily delays preemption. This can result in arbitrarily long pause times as the GC waits for all goroutines to stop.

    The proposed (and ultimately accepted solution) is described here: https://github.com/golang/go/issues/24543

    > has put significant effort into prototyping cooperative preemption points in loops, which is one way to solve this problem. However, even sophisticated approaches to this led to unacceptable slow-downs in tight loops (where slow-downs are generally least acceptable).

    > I propose that the Go implementation switch to non-cooperative preemption using stack and register maps at (essentially) every instruction. This would allow goroutines to be preempted without explicit

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts