# openjdk

OpenJDK is an open-source implementation of the Java Platform, Standard Edition, developed through projects and groups that maintain JDK code, releases, and related technologies.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Java 27 Reaches GA With The G1 Garbage Collector By Default Everywhere

DevFeed: [Java 27 Reaches GA With The G1 Garbage Collector By Default Everywhere](<https://devfeed.tech/articles/java-27-reaches-ga-with-the-g1-garbage-collector-by-default-everywhere-26765.md>)

Original publisher: [Read original article](<https://www.phoronix.com/news/OpenJDK-27-Java-27>)

Author: Michael Larabel

Published: 2026-09-15T13:39:00Z

Content type: news

Language: en

Sources: [Phoronix](<https://devfeed.tech/sources/phoronix.md>)

Topics: [Java](<https://devfeed.tech/topics/java.md>), [openjdk](<https://devfeed.tech/topics/openjdk.md>), [releases](<https://devfeed.tech/topics/releases.md>), [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [Post-Quantum](<https://devfeed.tech/topics/post-quantum.md>), [TLS (Transport Layer Security)](<https://devfeed.tech/topics/tls.md>)

Tags: [availability](<https://devfeed.tech/tags/availability.md>), [concurrency](<https://devfeed.tech/tags/concurrency.md>), [desktop-linux](<https://devfeed.tech/tags/desktop-linux.md>), [java](<https://devfeed.tech/tags/java.md>), [linux-benchmarking](<https://devfeed.tech/tags/linux-benchmarking.md>), [linux-hardware-benchmarks](<https://devfeed.tech/tags/linux-hardware-benchmarks.md>), [linux-hardware-reviews](<https://devfeed.tech/tags/linux-hardware-reviews.md>), [linux-how-to](<https://devfeed.tech/tags/linux-how-to.md>), [linux-performance](<https://devfeed.tech/tags/linux-performance.md>), [linux-server-benchmarks](<https://devfeed.tech/tags/linux-server-benchmarks.md>), [open-source-graphics](<https://devfeed.tech/tags/open-source-graphics.md>), [openjdk](<https://devfeed.tech/tags/openjdk.md>), [phoronix](<https://devfeed.tech/tags/phoronix.md>), [phoronix-test-suite](<https://devfeed.tech/tags/phoronix-test-suite.md>), [post-quantum](<https://devfeed.tech/tags/post-quantum.md>), [release](<https://devfeed.tech/tags/release.md>), [structured-concurrency](<https://devfeed.tech/tags/structured-concurrency.md>), [tls](<https://devfeed.tech/tags/tls.md>), [ubuntu-benchmarks](<https://devfeed.tech/tags/ubuntu-benchmarks.md>), [ubuntu-hardware](<https://devfeed.tech/tags/ubuntu-hardware.md>)

### AI overview

OpenJDK 27 has reached general availability. Its G1 garbage collector is now enabled by default across environments, replacing Serial as the default in constrained environments after improvements in throughput, latency, and memory usage. The release also includes post-quantum hybrid key exchange for TLS 1.3, preview features for lazy constants and structured concurrency, compact object headers by default, and an incubating Vector API.

### Source excerpt

Oracle christened Java 27 today with the OpenJDK 27 release reaching general availability (GA) status...

## Episode 69 "Declassifying Java 27" \[IJN\]

DevFeed: [Episode 69 "Declassifying Java 27" \[IJN\]](<https://devfeed.tech/articles/episode-69-declassifying-java-27-ijn-15131.md>)

Original publisher: [Read original article](<https://inside.java/2026/09/10/podcast-069/>)

Author: Billy Korando

Published: 2026-09-10T00:00:00Z

Content type: news

Language: en

Sources: [Inside Java](<https://devfeed.tech/sources/inside-java.md>)

Topics: [Java](<https://devfeed.tech/topics/java.md>), [openjdk](<https://devfeed.tech/topics/openjdk.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [java](<https://devfeed.tech/tags/java.md>), [jdk](<https://devfeed.tech/tags/jdk.md>), [jdk-27](<https://devfeed.tech/tags/jdk-27.md>), [news](<https://devfeed.tech/tags/news.md>), [openjdk](<https://devfeed.tech/tags/openjdk.md>), [podcast](<https://devfeed.tech/tags/podcast.md>), [release](<https://devfeed.tech/tags/release.md>)

### AI overview

This episode discusses Java 27, scheduled for release on September 15, and reviews developer-impacting changes, including new features and changes to existing behavior.

### Source excerpt

Java 27 is set to be released on September 15th, let's review what's coming!

## Episode 68 "Operator Overloading with Type Classes" \[AtA\]

DevFeed: [Episode 68 "Operator Overloading with Type Classes" \[AtA\]](<https://devfeed.tech/articles/episode-68-operator-overloading-with-type-classes-ata-15128.md>)

Original publisher: [Read original article](<https://inside.java/2026/08/27/podcast-068/>)

Author: Nicolai Parlog

Published: 2026-08-27T00:00:00Z

Content type: article

Language: en

Sources: [Inside Java](<https://devfeed.tech/sources/inside-java.md>)

Topics: [Java](<https://devfeed.tech/topics/java.md>), [openjdk](<https://devfeed.tech/topics/openjdk.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [classes](<https://devfeed.tech/tags/classes.md>), [java](<https://devfeed.tech/tags/java.md>), [java-language](<https://devfeed.tech/tags/java-language.md>), [openjdk](<https://devfeed.tech/tags/openjdk.md>), [project-valhalla](<https://devfeed.tech/tags/project-valhalla.md>), [valhalla](<https://devfeed.tech/tags/valhalla.md>)

### AI overview

An Ask the Architects episode discusses how OpenJDK's Project Valhalla is improving Java's support for custom numerical types, including possible limited operator overloading for custom value types.

### Source excerpt

How OpenJDK's Project Valhalla is improving Java's support for custom numerical types.

## Java's String.indexOf can be slow (quadratic)

DevFeed: [Java's String.indexOf can be slow (quadratic)](<https://devfeed.tech/articles/java-s-string-indexof-can-be-slow-quadratic-29424.md>)

Original publisher: [Read original article](<https://lemire.me/blog/2026/08/22/javas-string-indexof-can-be-slow-quadratic/>)

Author: Daniel Lemire

Published: 2026-08-22T14:56:16Z

Content type: article

Language: en

Sources: [Daniel Lemire](<https://devfeed.tech/sources/daniel-lemire.md>)

Topics: [Java](<https://devfeed.tech/topics/java.md>), [openjdk](<https://devfeed.tech/topics/openjdk.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [algorithm](<https://devfeed.tech/tags/algorithm.md>), [complexity](<https://devfeed.tech/tags/complexity.md>), [cpu](<https://devfeed.tech/tags/cpu.md>), [java](<https://devfeed.tech/tags/java.md>), [openjdk](<https://devfeed.tech/tags/openjdk.md>), [programming-language](<https://devfeed.tech/tags/programming-language.md>)

### AI overview

Java's String.indexOf can exhibit O(n-m) behavior on adversarial inputs with long substrings. The article compares it with the Two-Way algorithm and explains why Java's implementation remains suitable for typical workloads.

### Source excerpt

In Java, you find the location of a substring using indexOf. String haystack = "The quick brown fox jumps over the lazy dog"; String needle = "fox"; int index = haystack.indexOf(needle); Naively, you might implement indexOf by a loop inside a loop, like so. int naiveIndexOf(String haystack, String needle) { for (int i = 0; ... Continue reading Java's String.indexOf can be slow (quadratic)

## Quality Outreach Heads-up - JDK 28: Named Group Information Captured in the TLSHandshake JFR Event

DevFeed: [Quality Outreach Heads-up - JDK 28: Named Group Information Captured in the TLSHandshake JFR Event](<https://devfeed.tech/articles/quality-outreach-heads-up-jdk-28-named-group-information-captured-in-the-tlshandshake-jfr-event-15125.md>)

Original publisher: [Read original article](<https://inside.java/2026/08/21/quality-heads-up/>)

Author: Ana-Maria Mihalceanu

Published: 2026-08-21T00:00:00Z

Content type: release

Language: en

Sources: [Inside Java](<https://devfeed.tech/sources/inside-java.md>)

Topics: [JDK 28](<https://devfeed.tech/topics/jdk-28.md>), [Flight](<https://devfeed.tech/topics/flight.md>), [TLS (Transport Layer Security)](<https://devfeed.tech/topics/tls.md>), [Security](<https://devfeed.tech/topics/security.md>), [openjdk](<https://devfeed.tech/topics/openjdk.md>)

Tags: [jdk-28](<https://devfeed.tech/tags/jdk-28.md>), [jdk-flight-recorder](<https://devfeed.tech/tags/jdk-flight-recorder.md>), [openjdk](<https://devfeed.tech/tags/openjdk.md>), [release](<https://devfeed.tech/tags/release.md>), [security](<https://devfeed.tech/tags/security.md>), [tls](<https://devfeed.tech/tags/tls.md>), [tls-handshake](<https://devfeed.tech/tags/tls-handshake.md>), [update](<https://devfeed.tech/tags/update.md>)

### AI overview

The OpenJDK Quality Group announces that, starting with JDK 28, the jdk.TLSHandshake JFR event records the named group negotiated between the client and server during key exchange. The event is disabled by default and requires explicit enablement.

### Source excerpt

This Heads-Up is part of the regular communication sent to the projects involved; it covers that the named group information is included in the jdk.TLSHandshake JFR event.

## Security Baked Into the JVM: why fork Apache River and OpenJDK?

DevFeed: [Security Baked Into the JVM: why fork Apache River and OpenJDK?](<https://devfeed.tech/articles/security-baked-into-the-jvm-why-fork-apache-river-and-openjdk-18928.md>)

Original publisher: [Read original article](<https://blog.frankel.ch/security-baked-into-jvm/1/>)

Author: Peter Firmstone

Published: 2026-06-28T00:00:00Z

Content type: opinion

Language: en

Sources: [Nicolas Fränkel](<https://devfeed.tech/sources/nicolas-frankel.md>)

Topics: [Security](<https://devfeed.tech/topics/security.md>), [Java](<https://devfeed.tech/topics/java.md>), [openjdk](<https://devfeed.tech/topics/openjdk.md>), [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>), [Remote Procedure Call (RPC)](<https://devfeed.tech/topics/rpc.md>), [Networks](<https://devfeed.tech/topics/networks.md>)

Tags: [authorization](<https://devfeed.tech/tags/authorization.md>), [dirtychai](<https://devfeed.tech/tags/dirtychai.md>), [discovery](<https://devfeed.tech/tags/discovery.md>), [distributed](<https://devfeed.tech/tags/distributed.md>), [ipv6](<https://devfeed.tech/tags/ipv6.md>), [java](<https://devfeed.tech/tags/java.md>), [jgdms](<https://devfeed.tech/tags/jgdms.md>), [jini](<https://devfeed.tech/tags/jini.md>), [jvm](<https://devfeed.tech/tags/jvm.md>), [lock-free](<https://devfeed.tech/tags/lock-free.md>), [microservices](<https://devfeed.tech/tags/microservices.md>), [openjdk](<https://devfeed.tech/tags/openjdk.md>), [rpc](<https://devfeed.tech/tags/rpc.md>), [security](<https://devfeed.tech/tags/security.md>), [self-healing](<https://devfeed.tech/tags/self-healing.md>), [technical](<https://devfeed.tech/tags/technical.md>)

### AI overview

This article introduces DirtyChai, a community fork of OpenJDK that restores Java authorization infrastructure, and JGDMS, a security-hardened fork of Apache River for dynamically discoverable microservices over IPv6. It argues that distributed systems require security beyond network firewalls and outlines the projects' complementary roles, including authorization, service discovery, hardened deserialization, transport security, proxy trust verification, and codebase safety checks.

### Source excerpt

The more distributed a system, the harder it is to secure. Code crosses JVM boundaries. Objects are serialized across trust boundaries. Third-party proxies run inside your process. The usual answer is a network firewall. It helps, but it operates at the wrong level. Java 17 deprecated the SecurityManager, Java 24 put the final nail in its coffin. Most developers didn't notice.

## Using Java's Foreign Function & Memory API to simplify Pi4J native interactions

DevFeed: [Using Java's Foreign Function & Memory API to simplify Pi4J native interactions](<https://devfeed.tech/articles/the-ffm-api-how-openjdk-changed-the-game-for-native-interactions-and-made-pi4j-better-23017.md>)

Original publisher: [Read original article](<https://www.javaadvent.com/2025/12/ffm-api-for-java-on-raspberry-pi.html>)

Author: Frank Delporte

Published: 2025-12-16T03:03:39Z

Content type: article

Language: en

Sources: [Java Advent Calendar](<https://devfeed.tech/sources/java-advent-calendar.md>)

Topics: [Raspberry Pi](<https://devfeed.tech/topics/raspberry-pi.md>), [openjdk](<https://devfeed.tech/topics/openjdk.md>), [Java](<https://devfeed.tech/topics/java.md>), [Library](<https://devfeed.tech/topics/library.md>), [Memory Safety](<https://devfeed.tech/topics/memory-safety.md>)

Tags: [2025](<https://devfeed.tech/tags/2025.md>), [code](<https://devfeed.tech/tags/code.md>), [java](<https://devfeed.tech/tags/java.md>), [library](<https://devfeed.tech/tags/library.md>), [memory-safety](<https://devfeed.tech/tags/memory-safety.md>), [openjdk](<https://devfeed.tech/tags/openjdk.md>), [raspberry-pi](<https://devfeed.tech/tags/raspberry-pi.md>)

### AI overview

The article explains how Java's Foreign Function & Memory API, finalized in Java 22, can simplify Pi4J's interaction with native libraries and memory on Raspberry Pi. It contrasts the API with Pi4J's earlier JNI and Java Native Access approach, focusing on memory safety, easier native-library access, and maintainability.

### Source excerpt

The Pi4J project is a Java library that allows you to control the GPIO pins and electronic components connected to a Raspberry Pi with pure Java code. It removes the complexity of using native libraries and the Java Native Interface (JNI), allowing you to focus on your application logic. In the Java Advent of 2020, I published "Light up [...] The post The FFM API: How OpenJDK Changed the Game for Native Interactions (And Made Pi4J Better!) appeared first on JVM Advent.

## A Glance at GPU Goodness in Java: LLM Inference with TornadoVM

DevFeed: [A Glance at GPU Goodness in Java: LLM Inference with TornadoVM](<https://devfeed.tech/articles/a-glance-at-gpu-goodness-in-java-llm-inference-with-tornadovm-23010.md>)

Original publisher: [Read original article](<https://www.javaadvent.com/2025/12/a-glance-at-gpu-goodness-in-java-llm-inference-with-tornadovm.html>)

Author: Edoardo Vacchi

Published: 2025-12-11T03:03:21Z

Content type: tutorial

Language: en

Sources: [Java Advent Calendar](<https://devfeed.tech/sources/java-advent-calendar.md>)

Topics: [TornadoVM](<https://devfeed.tech/topics/tornadovm.md>), [Large Language Model](<https://devfeed.tech/topics/llm.md>), [GPU](<https://devfeed.tech/topics/gpu.md>), [Inference](<https://devfeed.tech/topics/inference.md>), [Java](<https://devfeed.tech/topics/java.md>), [openjdk](<https://devfeed.tech/topics/openjdk.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [2025](<https://devfeed.tech/tags/2025.md>), [c-c-plus-plus](<https://devfeed.tech/tags/c-c-plus-plus.md>), [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [gpu](<https://devfeed.tech/tags/gpu.md>), [inference](<https://devfeed.tech/tags/inference.md>), [java](<https://devfeed.tech/tags/java.md>), [jdk](<https://devfeed.tech/tags/jdk.md>), [linux](<https://devfeed.tech/tags/linux.md>), [llama3](<https://devfeed.tech/tags/llama3.md>), [llm](<https://devfeed.tech/tags/llm.md>), [openjdk](<https://devfeed.tech/tags/openjdk.md>), [tornadovm](<https://devfeed.tech/tags/tornadovm.md>)

### AI overview

This tutorial introduces TornadoVM, an OpenJDK plugin that compiles annotated Java code for heterogeneous hardware, and explains how it can run LLM inference on GPUs. It covers installation, a basic GPU kernel, and the GPULlama3 project, which demonstrates running a Llama 3 model in Java with GPU acceleration.

### Source excerpt

It seems like it's become a tradition that I announce I have joined a new company for the Java Advent of Code. At least this time it's actually an old friend: I am excited to be back at Red Hat, in the llm-d team! Does that mean I forgot about Java? Of course not. If [...] The post A Glance at GPU Goodness in Java: LLM Inference with TornadoVM appeared first on JVM Advent.

## JEP 483: Ahead-of-Time Class Loading and Linking in Java 24

DevFeed: [JEP 483: Ahead-of-Time Class Loading and Linking in Java 24](<https://devfeed.tech/articles/let-s-take-a-look-at-jep-483-ahead-of-time-class-loading-linking-18841.md>)

Original publisher: [Read original article](<https://www.morling.dev/blog/jep-483-aot-class-loading-linking/>)

Published: 2025-03-27T13:00:00Z

Content type: article

Language: en

Sources: [Gunnar Morling](<https://devfeed.tech/sources/gunnar-morling.md>)

Topics: [Java](<https://devfeed.tech/topics/java.md>), [openjdk](<https://devfeed.tech/topics/openjdk.md>), [Kafka](<https://devfeed.tech/topics/kafka.md>), [apache-flink](<https://devfeed.tech/topics/apache-flink.md>)

Tags: [building](<https://devfeed.tech/tags/building.md>), [java](<https://devfeed.tech/tags/java.md>), [jvm](<https://devfeed.tech/tags/jvm.md>), [openjdk](<https://devfeed.tech/tags/openjdk.md>), [performance](<https://devfeed.tech/tags/performance.md>)

### AI overview

This article examines JEP 483, which loads and links Java classes ahead of time and caches the results to reduce application startup time. It explains the feature's role in Project Leyden, its relationship to AppCDS, the training-run and classpath requirements, and examples using Apache Kafka and Apache Flink.

### Source excerpt

Table of Contents Building an AOT Cache for Apache Kafka AOT Caching With Apache Flink Summary In the "Let's Take a Look at...!" blog series I am exploring interesting projects, developments and technologies in the data and streaming space. This can be KIPs and FLIPs, open-source projects, services, relevant improvements to Java and the JVM, and more. The idea is to get some hands-on experience, learn about potential use cases and applications, and understand the trade-offs involved. If you think there's a specific subject I should take a look at, let me know in the comments below. Java 24 got released last week, and what a meaty release it is: more than twenty Java Enhancement Proposals (JEPs) have been shipped, including highlights such as compact object headers (JEP 450, I hope to spend some time diving into that one some time soon), a new class-file API (JEP 484), and more flexible constructor bodies (JEP 492, third preview). One other JEP which might fly a bit under the radar is JEP 483 ("Ahead-of-Time Class Loading & Linking"). It promises to reduce the start-up time of Java applications without requiring any modifications to the application itself, what's not to be liked about that? Let's take a closer look!

## New Chainguard Images December 2024: Adoptium, AWX, CouchDB

DevFeed: [New Chainguard Images December 2024: Adoptium, AWX, CouchDB](<https://devfeed.tech/articles/new-chainguard-images-december-2024-adoptium-awx-couchdb-13175.md>)

Original publisher: [Read original article](<https://www.chainguard.dev/unchained/new-chainguard-images-december-2024-adoptium-awx-couchdb>)

Published: 2025-01-16T00:00:00Z

Content type: release

Language: en

Sources: [Chainguard: Unchained](<https://devfeed.tech/sources/chainguard-unchained.md>)

Topics: [Adoptium](<https://devfeed.tech/topics/adoptium.md>), [openjdk](<https://devfeed.tech/topics/openjdk.md>), [Ansible](<https://devfeed.tech/topics/ansible.md>), [Java](<https://devfeed.tech/topics/java.md>), [NoSQL](<https://devfeed.tech/topics/nosql.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Erlang](<https://devfeed.tech/topics/erlang.md>), [.NET MAUI](<https://devfeed.tech/topics/net-maui.md>), [Process](<https://devfeed.tech/topics/process.md>)

Tags: [adoptium](<https://devfeed.tech/tags/adoptium.md>), [ansible](<https://devfeed.tech/tags/ansible.md>), [apache](<https://devfeed.tech/tags/apache.md>), [awx](<https://devfeed.tech/tags/awx.md>), [chainguard](<https://devfeed.tech/tags/chainguard.md>), [chainguard-images](<https://devfeed.tech/tags/chainguard-images.md>), [container-images](<https://devfeed.tech/tags/container-images.md>), [couchdb](<https://devfeed.tech/tags/couchdb.md>), [erlang](<https://devfeed.tech/tags/erlang.md>), [helm](<https://devfeed.tech/tags/helm.md>), [java](<https://devfeed.tech/tags/java.md>), [jdk](<https://devfeed.tech/tags/jdk.md>), [linkerd](<https://devfeed.tech/tags/linkerd.md>), [net-11](<https://devfeed.tech/tags/net-11.md>), [nosql](<https://devfeed.tech/tags/nosql.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [opentofu](<https://devfeed.tech/tags/opentofu.md>)

### AI overview

Chainguard describes its December 2024 batch of 39 new Chainguard Images, highlighting images for Adoptium, AWX, and Apache CouchDB. The article notes FIPS-enabled variants and summarizes the intended uses and image characteristics.

### Source excerpt

Chainguard released several new images in December 2024, including images for Adoptium, AWX, CouchDB, and others. Check out the full list.

## Keycloak 26.1.0 released

DevFeed: [Keycloak 26.1.0 released](<https://devfeed.tech/articles/keycloak-26-1-0-released-31680.md>)

Original publisher: [Read original article](<https://www.keycloak.org/2025/01/keycloak-2610-released>)

Author: Keycloak Team

Published: 2025-01-15T00:00:00Z

Content type: release

Language: en

Sources: [Keycloak Blog](<https://devfeed.tech/sources/keycloak-blog.md>)

Topics: [Keycloak](<https://devfeed.tech/topics/keycloak.md>), [Database](<https://devfeed.tech/topics/database.md>), [Cloud](<https://devfeed.tech/topics/cloud.md>), [OpenTelemetry](<https://devfeed.tech/topics/opentelemetry.md>), [tracing](<https://devfeed.tech/topics/tracing.md>), [openjdk](<https://devfeed.tech/topics/openjdk.md>), [version](<https://devfeed.tech/topics/version.md>)

Tags: [cloud](<https://devfeed.tech/tags/cloud.md>), [database](<https://devfeed.tech/tags/database.md>), [deprecated](<https://devfeed.tech/tags/deprecated.md>), [idm](<https://devfeed.tech/tags/idm.md>), [jdbc](<https://devfeed.tech/tags/jdbc.md>), [kerberos](<https://devfeed.tech/tags/kerberos.md>), [keycloak](<https://devfeed.tech/tags/keycloak.md>), [keycloak-release](<https://devfeed.tech/tags/keycloak-release.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [ldap](<https://devfeed.tech/tags/ldap.md>), [openid-connect](<https://devfeed.tech/tags/openid-connect.md>), [openjdk](<https://devfeed.tech/tags/openjdk.md>), [opentelemetry](<https://devfeed.tech/tags/opentelemetry.md>), [release](<https://devfeed.tech/tags/release.md>), [saml](<https://devfeed.tech/tags/saml.md>), [sso](<https://devfeed.tech/tags/sso.md>), [tracing](<https://devfeed.tech/tags/tracing.md>), [version](<https://devfeed.tech/tags/version.md>)

### AI overview

Keycloak 26.1.0 changes the default cluster transport stack to database-based discovery, simplifying cloud deployments by removing the need for multicast and dynamic TCP ports. The release also enables virtual threads on OpenJDK 21, makes OpenTelemetry tracing fully supported and enabled by default, and includes configuration and credential-issuance improvements.

### Source excerpt

To download the release go to Keycloak downloads. Highlights Transport stack jdbc-ping as new default Keycloak now uses by default its database to discover other nodes of the same cluster, which removes the need of additional network related configurations especially for cloud providers. It is also a default that will work out-of-the-box in cloud environments. Previous versions of Keycloak used as a default UDP multicast to discover other nodes to form a cluster and to synchronize the replicated caches of Keycloak. This required multicast to be available and to be configured correctly, which is usually not the case in cloud environments. Starting with this version, the default changes to the jdbc-ping configuration which uses Keycloak's database to discover other nodes. As this removes the need for multicast network capabilities and UDP and no longer using dynamic ports for the TCP-based failure detection, this is a simplification and a drop-in replacement for environments which used the previous default. To enable the previous behavior, choose the transport stack udp which is now deprecated. The Keycloak Operator will continue to configure kubernetes as a transport stack. See the Configuring distributed caches guide for more information. Virtual Threads enabled for Infinispan and JGroups thread pools Starting from this release, Keycloak automatically enables the virtual thread pool support in both the embedded Infinispan and JGroups when running on OpenJDK 21. This removes the need to configure the JGroups thread pool, the need to align the JGroups thread pool with the HTTP worker thread pool, and reduces the overall memory footprint. OpenTelemetry Tracing supported In the previous release, the OpenTelemetry Tracing feature was preview and is fully supported now. It means the opentelemetry feature is enabled by default. There were made multiple improvements to the tracing capabilities in Keycloak such as: Configuration via Keycloak CR in Keycloak Operator Custom sp

## Building OpenJDK From Source On macOS

DevFeed: [Building OpenJDK From Source On macOS](<https://devfeed.tech/articles/building-openjdk-from-source-on-macos-18803.md>)

Original publisher: [Read original article](<https://www.morling.dev/blog/building-openjdk-from-source-on-macos/>)

Published: 2024-11-16T14:25:00Z

Content type: tutorial

Language: en

Sources: [Gunnar Morling](<https://devfeed.tech/sources/gunnar-morling.md>)

Topics: [openjdk](<https://devfeed.tech/topics/openjdk.md>), [macOS](<https://devfeed.tech/topics/macos.md>), [Xcode](<https://devfeed.tech/topics/xcode.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>)

Tags: [compiler](<https://devfeed.tech/tags/compiler.md>), [installation](<https://devfeed.tech/tags/installation.md>), [jdk](<https://devfeed.tech/tags/jdk.md>), [macos](<https://devfeed.tech/tags/macos.md>), [openjdk](<https://devfeed.tech/tags/openjdk.md>), [release](<https://devfeed.tech/tags/release.md>), [xcode](<https://devfeed.tech/tags/xcode.md>)

### AI overview

A practical guide to building JDK 24 from OpenJDK source on macOS 14.7.1. It covers the required boot JDK, Xcode, Autoconf, source checkout, configuration, and build steps, and notes a clang issue in Xcode 16.1 with alternatives.

### Source excerpt

Every now and then, it can come in very handy to build OpenJDK from source yourself, for instance if you want to explore a feature which is under development on a branch for which no builds are published. For some reason I always thought that building OpenJDK is a very complex processing, requiring the installation of arcane tool chains etc. But as it turns out, this actually not true: the project does a great job of documenting what's needed and only a few steps are necessary to build your very own JDK.

## Chainguard's OpenJDK Java images are now JCK conformant

DevFeed: [Chainguard's OpenJDK Java images are now JCK conformant](<https://devfeed.tech/articles/chainguard-s-openjdk-java-images-are-now-jck-conformant-12991.md>)

Original publisher: [Read original article](<https://www.chainguard.dev/unchained/chainguards-openjdk-java-images-are-now-jck-conformant>)

Published: 2024-06-25T00:00:00Z

Content type: release

Language: en

Sources: [Chainguard: Unchained](<https://devfeed.tech/sources/chainguard-unchained.md>)

Topics: [openjdk](<https://devfeed.tech/topics/openjdk.md>), [chainguard images](<https://devfeed.tech/topics/chainguard-images.md>), [Java](<https://devfeed.tech/topics/java.md>), [Security](<https://devfeed.tech/topics/security.md>), [interoperability](<https://devfeed.tech/topics/interoperability.md>)

Tags: [chainguard](<https://devfeed.tech/tags/chainguard.md>), [chainguard-images](<https://devfeed.tech/tags/chainguard-images.md>), [compatibility](<https://devfeed.tech/tags/compatibility.md>), [deployment](<https://devfeed.tech/tags/deployment.md>), [interoperability](<https://devfeed.tech/tags/interoperability.md>), [java](<https://devfeed.tech/tags/java.md>), [jck](<https://devfeed.tech/tags/jck.md>), [openjdk](<https://devfeed.tech/tags/openjdk.md>), [security](<https://devfeed.tech/tags/security.md>), [testing](<https://devfeed.tech/tags/testing.md>), [validation](<https://devfeed.tech/tags/validation.md>)

### AI overview

Chainguard announces that its OpenJDK Java 21.0.3 and Java 22.0.1 JDK and JRE builds passed all tests in Oracle's Java Compatibility Kit. The conformance also applies to specified Chainguard Images containing openjdk-21 and openjdk-22 packages.

### Source excerpt

Ensure Java compatibility & security with Chainguard's JCK-conformant OpenJDK images. Streamline development and deployment with trusted, verified Java runtimes.

## Ideal iOS KMP Setup - Kevin Galligan

DevFeed: [Ideal iOS KMP Setup - Kevin Galligan](<https://devfeed.tech/articles/ideal-ios-kmp-setup-kevin-galligan-38222.md>)

Original publisher: [Read original article](<https://touchlab.co/ideal-ios-kmp-setup>)

Published: 2024-05-18T00:00:00Z

Content type: tutorial

Language: en

Sources: [Touchlab | Enterprise Mobile Innovation & Development](<https://devfeed.tech/sources/touchlab-enterprise-mobile-innovation-development.md>)

Topics: [iOS development](<https://devfeed.tech/topics/ios-development.md>), [Development](<https://devfeed.tech/topics/development.md>), [Xcode](<https://devfeed.tech/topics/xcode.md>), [Tooling](<https://devfeed.tech/topics/tooling.md>), [Developer experience](<https://devfeed.tech/topics/developer-experience.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [openjdk](<https://devfeed.tech/topics/openjdk.md>), [SDK](<https://devfeed.tech/topics/sdk.md>), [configuration](<https://devfeed.tech/topics/configuration.md>), [Homebrew](<https://devfeed.tech/topics/homebrew.md>), [debugging](<https://devfeed.tech/topics/debugging.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>)

Tags: [configuration](<https://devfeed.tech/tags/configuration.md>), [debugging](<https://devfeed.tech/tags/debugging.md>), [developer-tools](<https://devfeed.tech/tags/developer-tools.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [homebrew](<https://devfeed.tech/tags/homebrew.md>), [installation](<https://devfeed.tech/tags/installation.md>), [ios-development](<https://devfeed.tech/tags/ios-development.md>), [java](<https://devfeed.tech/tags/java.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [openjdk](<https://devfeed.tech/tags/openjdk.md>), [security](<https://devfeed.tech/tags/security.md>)

### AI overview

A practical guide to setting up an iOS development environment for Kotlin Multiplatform (KMP), covering JVM installation and management, Xcode version management, and Touchlab's Kotlin Xcode Plugin for Kotlin-aware debugging.

### Source excerpt

To maximize your iOS developer experience with KMP, you'll want to install the best tools available and configure them appropriately. There are many options available, but this is Touchlab's preferred iOS development setup.

## How to install Java on macOS

DevFeed: [How to install Java on macOS](<https://devfeed.tech/articles/how-to-install-java-on-macos-7977.md>)

Original publisher: [Read original article](<https://snyk.io/blog/install-java-on-macos/>)

Author: Liran Tal

Published: 2024-04-17T05:00:00Z

Content type: tutorial

Language: en

Sources: [Blog RSS Feed | Snyk](<https://devfeed.tech/sources/blog-rss-feed-snyk.md>)

Topics: [Java](<https://devfeed.tech/topics/java.md>), [macOS](<https://devfeed.tech/topics/macos.md>), [openjdk](<https://devfeed.tech/topics/openjdk.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [GNU General Public License](<https://devfeed.tech/topics/gpl.md>)

Tags: [acquisition](<https://devfeed.tech/tags/acquisition.md>), [ai](<https://devfeed.tech/tags/ai.md>), [application-security](<https://devfeed.tech/tags/application-security.md>), [applications](<https://devfeed.tech/tags/applications.md>), [awareness](<https://devfeed.tech/tags/awareness.md>), [blog](<https://devfeed.tech/tags/blog.md>), [container-security](<https://devfeed.tech/tags/container-security.md>), [developer](<https://devfeed.tech/tags/developer.md>), [development](<https://devfeed.tech/tags/development.md>), [devrel](<https://devfeed.tech/tags/devrel.md>), [guide](<https://devfeed.tech/tags/guide.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [ibm](<https://devfeed.tech/tags/ibm.md>), [install](<https://devfeed.tech/tags/install.md>), [java](<https://devfeed.tech/tags/java.md>), [macos](<https://devfeed.tech/tags/macos.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [open-source-security](<https://devfeed.tech/tags/open-source-security.md>), [openjdk](<https://devfeed.tech/tags/openjdk.md>), [oracle](<https://devfeed.tech/tags/oracle.md>), [red-hat](<https://devfeed.tech/tags/red-hat.md>), [snyk-container](<https://devfeed.tech/tags/snyk-container.md>), [snyk-open-source](<https://devfeed.tech/tags/snyk-open-source.md>)

### AI overview

This tutorial explains Java and why it is useful on macOS, then introduces OpenJDK and contrasts it with Oracle's JDK, including differences in licensing and production use.

### Source excerpt

In the following post, we will guide you through installing Java on macOS, ensuring you're ready to start developing applications in no time.

## How old are Official Docker images? 2024 Edition

DevFeed: [How old are Official Docker images? 2024 Edition](<https://devfeed.tech/articles/how-old-are-official-docker-images-2024-edition-27702.md>)

Original publisher: [Read original article](<https://gagor.pro/2024/03/how-old-are-official-docker-images-2024-edition/>)

Author: Tom

Published: 2024-03-24T00:00:00Z

Content type: article

Language: en

Sources: [Tomasz Gągor](<https://devfeed.tech/sources/tomasz-gagor.md>)

Topics: [Docker](<https://devfeed.tech/topics/docker.md>), [docker images](<https://devfeed.tech/topics/docker-images.md>), [Docker Hub](<https://devfeed.tech/topics/docker-hub.md>), [centos](<https://devfeed.tech/topics/centos.md>), [Debian](<https://devfeed.tech/topics/debian.md>), [Ubuntu](<https://devfeed.tech/topics/ubuntu.md>), [openjdk](<https://devfeed.tech/topics/openjdk.md>), [Bash](<https://devfeed.tech/topics/bash.md>), [Script](<https://devfeed.tech/topics/script.md>), [deprecated](<https://devfeed.tech/topics/deprecated.md>)

Tags: [bash](<https://devfeed.tech/tags/bash.md>), [centos](<https://devfeed.tech/tags/centos.md>), [centos-docker-image](<https://devfeed.tech/tags/centos-docker-image.md>), [debian](<https://devfeed.tech/tags/debian.md>), [debian-docker-image](<https://devfeed.tech/tags/debian-docker-image.md>), [deprecated](<https://devfeed.tech/tags/deprecated.md>), [docker](<https://devfeed.tech/tags/docker.md>), [docker-hub](<https://devfeed.tech/tags/docker-hub.md>), [docker-image-age](<https://devfeed.tech/tags/docker-image-age.md>), [docker-image-updates](<https://devfeed.tech/tags/docker-image-updates.md>), [docker-images](<https://devfeed.tech/tags/docker-images.md>), [dockerfiles](<https://devfeed.tech/tags/dockerfiles.md>), [eclipse](<https://devfeed.tech/tags/eclipse.md>), [end-of-life](<https://devfeed.tech/tags/end-of-life.md>), [images](<https://devfeed.tech/tags/images.md>), [official-docker-images](<https://devfeed.tech/tags/official-docker-images.md>), [openjdk](<https://devfeed.tech/tags/openjdk.md>), [script](<https://devfeed.tech/tags/script.md>), [ubuntu](<https://devfeed.tech/tags/ubuntu.md>), [ubuntu-docker-image](<https://devfeed.tech/tags/ubuntu-docker-image.md>)

### AI overview

An analysis of the age and update status of official Docker images in 2024. It reports that modern OS images are generally reasonably current, while CentOS and OpenJDK images have reached important lifecycle or maintenance milestones.

### Source excerpt

Discover the current age and update status of various official Docker images, including CentOS, Ubuntu, and Debian, in the 2024 edition of this analysis.

## The One Billion Row Challenge

DevFeed: [The One Billion Row Challenge](<https://devfeed.tech/articles/the-one-billion-row-challenge-18855.md>)

Original publisher: [Read original article](<https://www.morling.dev/blog/one-billion-row-challenge/>)

Published: 2023-12-31T23:00:00Z

Content type: article

Language: en

Sources: [Gunnar Morling](<https://devfeed.tech/sources/gunnar-morling.md>)

Topics: [Java](<https://devfeed.tech/topics/java.md>), [openjdk](<https://devfeed.tech/topics/openjdk.md>), [C++](<https://devfeed.tech/topics/c-plus-plus.md>), [Go Language](<https://devfeed.tech/topics/go-language.md>), [Rust](<https://devfeed.tech/topics/rust.md>)

Tags: [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [github](<https://devfeed.tech/tags/github.md>), [go](<https://devfeed.tech/tags/go.md>), [java](<https://devfeed.tech/tags/java.md>), [measurement](<https://devfeed.tech/tags/measurement.md>), [openjdk](<https://devfeed.tech/tags/openjdk.md>), [pull-request](<https://devfeed.tech/tags/pull-request.md>), [rust](<https://devfeed.tech/tags/rust.md>)

### AI overview

The One Billion Row Challenge asks participants to write the fastest Java program that reads one billion temperature measurements and calculates the minimum, mean, and maximum for each weather station. The challenge runs from January 1 through January 31, with submissions evaluated under specified hardware and dependency rules.

### Source excerpt

Update Jan 4: Wow, this thing really took off! 1BRC is discussed at a couple of places on the internet, including Hacker News, lobste.rs, and Reddit. For folks to show-case non-Java solutions, there is a "Show & Tell" now, check that one out for 1BRC implementations in Rust, Go, C++, and others. Some interesting related write-ups include 1BRC in SQL with DuckDB by Robin Moffatt and 1 billion rows challenge in PostgreSQL and ClickHouse by Francesco Tisiot. Thanks a lot for all the submissions, this is going way beyond what I'd have expected! I am behind a bit with evalutions due to the sheer amount of entries, I will work through them bit by bit. I have also made a few clarifications to the rules of the challenge; please make sure to read them before submitting any entries. Let's kick off 2024 true coder style--I'm excited to announce the One Billion Row Challenge (1BRC), running from Jan 1 until Jan 31. Your mission, should you decide to accept it, is deceptively simple: write a Java program for retrieving temperature measurement values from a text file and calculating the min, mean, and max temperature per weather station. There's just one caveat: the file has 1,000,000,000 rows!

## Introducing Chainguard Images for Node.js LTS 20, Python 3.12 and OpenJDK/JRE 21

DevFeed: [Introducing Chainguard Images for Node.js LTS 20, Python 3.12 and OpenJDK/JRE 21](<https://devfeed.tech/articles/introducing-chainguard-images-for-node-js-lts-20-python-3-12-and-openjdk-jre-21-13111.md>)

Original publisher: [Read original article](<https://www.chainguard.dev/unchained/introducing-chainguard-images-for-node-js-lts-20-python-3-12-and-openjdk-jre-21>)

Published: 2023-10-11T00:00:00Z

Content type: article

Language: en

Sources: [Chainguard: Unchained](<https://devfeed.tech/sources/chainguard-unchained.md>)

Topics: [chainguard images](<https://devfeed.tech/topics/chainguard-images.md>), [Node.js](<https://devfeed.tech/topics/node-js.md>), [openjdk](<https://devfeed.tech/topics/openjdk.md>), [Python](<https://devfeed.tech/topics/python.md>), [Java](<https://devfeed.tech/topics/java.md>), [Security](<https://devfeed.tech/topics/security.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>)

Tags: [chainguard](<https://devfeed.tech/tags/chainguard.md>), [chainguard-images](<https://devfeed.tech/tags/chainguard-images.md>), [java](<https://devfeed.tech/tags/java.md>), [lts](<https://devfeed.tech/tags/lts.md>), [node](<https://devfeed.tech/tags/node.md>), [node-js](<https://devfeed.tech/tags/node-js.md>), [openjdk](<https://devfeed.tech/tags/openjdk.md>), [python](<https://devfeed.tech/tags/python.md>), [release](<https://devfeed.tech/tags/release.md>), [releases](<https://devfeed.tech/tags/releases.md>), [sboms](<https://devfeed.tech/tags/sboms.md>), [security](<https://devfeed.tech/tags/security.md>)

### AI overview

Chainguard introduces updated Chainguard Images for Node.js 20, Python 3.12, and OpenJDK/JRE 21. The images include minimal CVEs, SBOMs, signatures, and a hardened Wolfi-based architecture, with changes to version and LTS tags scheduled for October 2023.

### Source excerpt

Get the latest versions for Java 21 (OpenJDK and JRE), Python 3.12, and Node.js 20 complete with minimal CVEs, SBOMs, signatures, and hardened architecture.

## Fully bootstrapping Java from source in Wolfi

DevFeed: [Fully bootstrapping Java from source in Wolfi](<https://devfeed.tech/articles/fully-bootstrapping-java-from-source-in-wolfi-13054.md>)

Original publisher: [Read original article](<https://www.chainguard.dev/unchained/fully-bootstrapping-java-from-source-in-wolfi>)

Published: 2023-06-02T00:00:00Z

Content type: article

Language: en

Sources: [Chainguard: Unchained](<https://devfeed.tech/sources/chainguard-unchained.md>)

Topics: [Java](<https://devfeed.tech/topics/java.md>), [openjdk](<https://devfeed.tech/topics/openjdk.md>), [supply-chain-security](<https://devfeed.tech/topics/supply-chain-security.md>), [chainguard](<https://devfeed.tech/topics/chainguard.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [gcc](<https://devfeed.tech/topics/gcc.md>)

Tags: [bootstrapping](<https://devfeed.tech/tags/bootstrapping.md>), [chainguard](<https://devfeed.tech/tags/chainguard.md>), [chainguard-images](<https://devfeed.tech/tags/chainguard-images.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [distribution](<https://devfeed.tech/tags/distribution.md>), [eclipse-compiler-for-java](<https://devfeed.tech/tags/eclipse-compiler-for-java.md>), [gcc](<https://devfeed.tech/tags/gcc.md>), [gnu-linux](<https://devfeed.tech/tags/gnu-linux.md>), [java](<https://devfeed.tech/tags/java.md>), [jdk](<https://devfeed.tech/tags/jdk.md>), [linux](<https://devfeed.tech/tags/linux.md>), [openjdk](<https://devfeed.tech/tags/openjdk.md>), [programming](<https://devfeed.tech/tags/programming.md>), [programming-languages](<https://devfeed.tech/tags/programming-languages.md>), [provenance](<https://devfeed.tech/tags/provenance.md>), [security](<https://devfeed.tech/tags/security.md>), [software](<https://devfeed.tech/tags/software.md>), [software-supply-chain](<https://devfeed.tech/tags/software-supply-chain.md>), [software-supply-chain-security](<https://devfeed.tech/tags/software-supply-chain-security.md>), [supply-chain-security](<https://devfeed.tech/tags/supply-chain-security.md>), [wolfi](<https://devfeed.tech/tags/wolfi.md>)

### AI overview

Chainguard describes how it is fully bootstrapping Java from source in Wolfi. The process builds a chain of OpenJDK packages with provenance extending from source code to final binary packages, using GNU Classpath, GNU Compiler for Java, and the Eclipse Compiler for Java to overcome historical bootstrapping dependencies.

### Source excerpt

Learn how Chainguard engineers created a chain of OpenJDK packages to provide full provenance from pure source code for the entire Java ecosystem in Wolfi.

## Deploying an Uberjar to Dokku

DevFeed: [Deploying an Uberjar to Dokku](<https://devfeed.tech/articles/deploying-an-uberjar-to-dokku-27453.md>)

Original publisher: [Read original article](<https://ariya.io/2023/02/deploying-an-uberjar-to-dokku/>)

Published: 2023-02-23T19:37:36Z

Content type: tutorial

Language: en

Sources: [Ariya Hidayat](<https://devfeed.tech/sources/ariya-hidayat.md>)

Topics: [Deployment](<https://devfeed.tech/topics/deployment.md>), [Platform as a Service (PaaS)](<https://devfeed.tech/topics/platform-as-a-service-paas.md>), [Self-hosted](<https://devfeed.tech/topics/self-hosted.md>), [Containers](<https://devfeed.tech/topics/containers.md>), [Java](<https://devfeed.tech/topics/java.md>), [openjdk](<https://devfeed.tech/topics/openjdk.md>)

Tags: [adoptium](<https://devfeed.tech/tags/adoptium.md>), [containers](<https://devfeed.tech/tags/containers.md>), [deployment](<https://devfeed.tech/tags/deployment.md>), [java](<https://devfeed.tech/tags/java.md>), [linux](<https://devfeed.tech/tags/linux.md>), [openjdk](<https://devfeed.tech/tags/openjdk.md>), [paas-solutions](<https://devfeed.tech/tags/paas-solutions.md>), [scala](<https://devfeed.tech/tags/scala.md>), [self-hosted](<https://devfeed.tech/tags/self-hosted.md>)

### AI overview

This tutorial explains how to deploy a Java Uberjar to Dokku by sending the packaged artifact directly instead of creating a container image. It covers the required application files, packaging, Dokku application setup, and an OpenJDK 17 base image example using Metabase.

### Source excerpt

Dokku is a self-hosted Platform-as-a-Service (PaaS) that offers a compelling alternative to popular PaaS solutions like Heroku. With built-in support for Linux containers, deploying an application on Dokku is straightforward. However, there is a lesser-known deployment method that involves sending a build artifact, such as a JAR package for Java apps, directly to Dokku.

## FIPS 140-2 experimental support

DevFeed: [FIPS 140-2 experimental support](<https://devfeed.tech/articles/fips-140-2-experimental-support-31601.md>)

Original publisher: [Read original article](<https://www.keycloak.org/2022/11/fips>)

Author: Marek Posolda

Published: 2022-11-16T00:00:00Z

Content type: release

Language: en

Sources: [Keycloak Blog](<https://devfeed.tech/sources/keycloak-blog.md>)

Topics: [Keycloak](<https://devfeed.tech/topics/keycloak.md>), [Cryptography](<https://devfeed.tech/topics/cryptography.md>), [Security](<https://devfeed.tech/topics/security.md>), [openjdk](<https://devfeed.tech/topics/openjdk.md>), [rhel](<https://devfeed.tech/topics/rhel.md>)

Tags: [cryptography](<https://devfeed.tech/tags/cryptography.md>), [fips](<https://devfeed.tech/tags/fips.md>), [idm](<https://devfeed.tech/tags/idm.md>), [isaac](<https://devfeed.tech/tags/isaac.md>), [kerberos](<https://devfeed.tech/tags/kerberos.md>), [keycloak](<https://devfeed.tech/tags/keycloak.md>), [ldap](<https://devfeed.tech/tags/ldap.md>), [openid-connect](<https://devfeed.tech/tags/openid-connect.md>), [openjdk](<https://devfeed.tech/tags/openjdk.md>), [release](<https://devfeed.tech/tags/release.md>), [rhel](<https://devfeed.tech/tags/rhel.md>), [saml](<https://devfeed.tech/tags/saml.md>), [security](<https://devfeed.tech/tags/security.md>), [sso](<https://devfeed.tech/tags/sso.md>)

### AI overview

Keycloak 20 introduces experimental support for FIPS 140-2. The article explains its reliance on Java cryptography providers and BouncyCastle, describes running Keycloak on a FIPS-compliant RHEL and Java environment, and notes limitations affecting SAML, Kerberos/SPNEGO, X.509 authentication, and password length in stricter mode.

### Source excerpt

We are glad to announce that latest Keycloak 20 release contains experimental support for FIPS 140-2! The FIPS 140-2 standard is a set of requirements for cryptography modules, which needs to be met for the software used by U.S. governments and related parties. The FIPS compliant software should use only secure cryptography algorithms allowed by the FIPS specification and must use them in a secured way. Keycloak does not directly implement any cryptography algorithms, however it internally needs to use lots of cryptography functionalities. For this purpose, Keycloak mostly relies on the Java cryptography SPI and 3rd party libraries for implementing cryptography related functionality - especially the BouncyCastle library. FIPS support is usually enabled at the OS level. For example, during installation of RHEL 8.6 , you can enable kernel flag during OS installation to make sure that your OS is FIPS compliant. When FIPS is enabled at the OS level, it means that various packages including OpenJDK are also set to be FIPS compliant and are pre-configured to rely on FIPS approved functions. For example java.security configuration file is pre-configured to contain only FIPS compliant security providers. The FIPS support in Keycloak means that the Keycloak server can run on the FIPS compliant OS with FIPS compliant Java. It also means that the Keycloak server is FIPS compliant and can be used by parties, which strictly require FIPS 140-2 support. Even if you do not use the FIPS enabled OS, you can still try the FIPS enabled Keycloak server by using custom java.security file with only BouncyCastle-FIPS security providers configured as described in the instructions below in the step 4. Thanks to David Anderson, who contributed parts of this feature. Also, thanks to Sudeep Das and Isaac Jensen for their initial prototype effort, which was used as an inspiration. Instructions Instructions for how to try FIPS support in Keycloak are here. Conclusion We will be happy for you to t

## Loom and Thread Fairness

DevFeed: [Loom and Thread Fairness](<https://devfeed.tech/articles/loom-and-thread-fairness-18849.md>)

Original publisher: [Read original article](<https://www.morling.dev/blog/loom-and-thread-fairness/>)

Published: 2022-05-27T08:20:00Z

Content type: tutorial

Language: en

Sources: [Gunnar Morling](<https://devfeed.tech/sources/gunnar-morling.md>)

Topics: [Java](<https://devfeed.tech/topics/java.md>), [openjdk](<https://devfeed.tech/topics/openjdk.md>), [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [Concurrent Programming](<https://devfeed.tech/topics/concurrent-programming.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [reactive](<https://devfeed.tech/topics/reactive.md>)

Tags: [http](<https://devfeed.tech/tags/http.md>), [io](<https://devfeed.tech/tags/io.md>), [java](<https://devfeed.tech/tags/java.md>), [openjdk](<https://devfeed.tech/tags/openjdk.md>), [project-loom](<https://devfeed.tech/tags/project-loom.md>), [reactive-programming](<https://devfeed.tech/tags/reactive-programming.md>), [thread](<https://devfeed.tech/tags/thread.md>), [threads](<https://devfeed.tech/tags/threads.md>)

### AI overview

This technical article examines thread scheduling fairness for CPU-bound workloads running on Project Loom's virtual threads. It introduces Loom's virtual-thread model and contrasts it with operating-system threads and reactive programming for handling highly concurrent applications.

### Source excerpt

Table of Contents Project Loom Scheduling Discussion Project Loom (JEP 425) is probably amongst the most awaited feature additions to Java ever; its implementation of virtual threads (or "green threads") promises developers the ability to create highly concurrent applications, for instance with hundreds of thousands of open HTTP connections, sticking to the well-known thread-per-request programming model, without having to resort to less familiar and often more complex to use reactive approaches. Having been in the workings for several years, Loom got merged into the mainline of OpenJDK just recently and is available as a preview feature in the latest Java 19 early access builds. I.e. it's the perfect time to get your hands onto virtual threads and explore the new feature. In this post I'm going to share an interesting aspect I learned about thread scheduling fairness for CPU-bound workloads running on Loom.

## Running JDK Mission Control on Apple M1

DevFeed: [Running JDK Mission Control on Apple M1](<https://devfeed.tech/articles/running-jdk-mission-control-on-apple-m1-18867.md>)

Original publisher: [Read original article](<https://www.morling.dev/blog/running-jmc-on-apple-m1/>)

Published: 2022-05-17T08:20:00Z

Content type: tutorial

Language: en

Sources: [Gunnar Morling](<https://devfeed.tech/sources/gunnar-morling.md>)

Topics: [Java](<https://devfeed.tech/topics/java.md>), [JDK Flight Recorder](<https://devfeed.tech/topics/jdk-flight-recorder.md>), [macOS](<https://devfeed.tech/topics/macos.md>), [Mac Mini](<https://devfeed.tech/topics/mac-mini.md>), [openjdk](<https://devfeed.tech/topics/openjdk.md>), [Adoptium](<https://devfeed.tech/topics/adoptium.md>)

Tags: [adoptium](<https://devfeed.tech/tags/adoptium.md>), [apple-m1](<https://devfeed.tech/tags/apple-m1.md>), [arm](<https://devfeed.tech/tags/arm.md>), [jdk](<https://devfeed.tech/tags/jdk.md>), [jdk-flight-recorder](<https://devfeed.tech/tags/jdk-flight-recorder.md>), [mac-mini](<https://devfeed.tech/tags/mac-mini.md>), [macos](<https://devfeed.tech/tags/macos.md>), [openjdk](<https://devfeed.tech/tags/openjdk.md>), [permission](<https://devfeed.tech/tags/permission.md>), [plist](<https://devfeed.tech/tags/plist.md>)

### AI overview

A troubleshooting guide for running JDK Mission Control on an Apple M1 Mac. It explains that JMC is currently shipped as an x64 application, so configuring it to use an x64 Temurin JDK through Rosetta resolves the startup error, while other applications can continue using an AArch64 JDK.

### Source excerpt

JDK Mission Control (JMC) is invaluable for analysing performance data recording using JDK Flight Recorder (JFR). The other day, I ran into a problem when trying to run JMC on my Mac Mini M1. Mostly for my own reference, here's what I did to overcome it.

## The JDK Flight Recorder File Format

DevFeed: [The JDK Flight Recorder File Format](<https://devfeed.tech/articles/the-jdk-flight-recorder-file-format-18840.md>)

Original publisher: [Read original article](<https://www.morling.dev/blog/jdk-flight-recorder-file-format/>)

Published: 2022-02-20T20:15:00Z

Content type: tutorial

Language: en

Sources: [Gunnar Morling](<https://devfeed.tech/sources/gunnar-morling.md>)

Topics: [JDK Flight Recorder](<https://devfeed.tech/topics/jdk-flight-recorder.md>), [Java](<https://devfeed.tech/topics/java.md>), [openjdk](<https://devfeed.tech/topics/openjdk.md>), [Parser](<https://devfeed.tech/topics/parser.md>)

Tags: [format](<https://devfeed.tech/tags/format.md>), [java](<https://devfeed.tech/tags/java.md>), [jdk](<https://devfeed.tech/tags/jdk.md>), [jdk-flight-recorder](<https://devfeed.tech/tags/jdk-flight-recorder.md>), [openjdk](<https://devfeed.tech/tags/openjdk.md>), [parsing](<https://devfeed.tech/tags/parsing.md>)

### AI overview

This article examines the JDK Flight Recorder file format. It explains that JFR records high-performance runtime events in recording files, notes that the format has no official specification and is an OpenJDK implementation detail, and describes investigating its structure through JDK and JDK Mission Control source code.

### Source excerpt

The JDK Flight Recorder (JFR) is one of Java's secret weapons; deeply integrated into the Hotspot VM, it's a high-performance event collection framework, which lets you collect metrics on runtime aspects like object allocation and garbage collection, class loading, file and network I/O, and lock contention, do method profiling, and much more. JFR data is persisted in recording files (since Java 14, also "realtime" event streaming is supported), which can be loaded for analysis into tools like JDK Mission Control (JMC), or the jfr utility coming with OpenJDK itself.

[Next page](<https://devfeed.tech/topics/openjdk.md?cursor=WyIyMDIyLTAyLTIwVDIwOjE1OjAwKzAwOjAwIiwgIjA1NjBkOGIyLWI1YmEtNGZkMC04MmFlLWRjOGUxZjIxNDFhNiJd>)