<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hüseyin Akdoğan on foojay.io - Friends of OpenJDK</title><link>https://foojayio.github.io/website/today/author/huseyin-akdogan/</link><description>Articles written by Hüseyin Akdoğan on foojay.io - Friends of OpenJDK</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Fri, 31 Jul 2026 08:00:37 +0000</lastBuildDate><atom:link href="https://foojayio.github.io/website/today/author/huseyin-akdogan/index.xml" rel="self" type="application/rss+xml"/><item><title>HTTP QUERY Method Explained: RFC 10008, Ecosystem Adoption, and a Quarkus Implementation</title><link>https://foojayio.github.io/website/today/http-query-method-explained-rfc-10008-ecosystem-adoption-and-a-quarkus-implementation/</link><pubDate>Fri, 31 Jul 2026 08:00:37 +0000</pubDate><guid>https://foojayio.github.io/website/today/http-query-method-explained-rfc-10008-ecosystem-adoption-and-a-quarkus-implementation/</guid><description>&lt;p&gt;When you build a search API, you usually start with HTTP GET, the natural choice for a read operation: it is safe, idempotent, and cacheable. Then the search form grows, filters multiply, and nested criteria appear. Since using GET means placing the query inside the URI, a length limit problem emerges. Worse, placing sensitive query values in the URI increases the chance of exposure through access logs, browser history, proxies, and monitoring systems. Because the HTTP protocol does not forbid it, sending a body with GET may look like a way out, but building your design on behavior the standards leave undefined is not a recommended practice. Elasticsearch&amp;rsquo;s GET-with-body search API is a well-known example, and &lt;a href="https://www.elastic.co/guide/en/elasticsearch/guide/current/_empty_search.html" target="_blank" rel="noopener noreferrer"&gt;Elastic&amp;rsquo;s own documentation&lt;/a&gt;
 openly acknowledges the problem:&lt;/p&gt;</description></item><item><title>DPoP: What It Is, How It Works, and Why Bearer Tokens Aren't Enough</title><link>https://foojayio.github.io/website/today/dpop-what-it-is-how-it-works-and-why-bearer-tokens-arent-enough/</link><pubDate>Mon, 09 Mar 2026 08:08:06 +0000</pubDate><guid>https://foojayio.github.io/website/today/dpop-what-it-is-how-it-works-and-why-bearer-tokens-arent-enough/</guid><description>&lt;p&gt;DPoP is one of the most exciting developments in the IAM (Identity and Access Management) space in recent years. Yet many backend developers either have not heard of it or are unsure what it actually changes. In this article, I will break down what DPoP is, what problem it solves, and walk through a working implementation with Keycloak and Quarkus.&lt;/p&gt;
&lt;h2 id="h2-0-what-is-dpop"&gt;What is DPoP?&lt;/h2&gt;
&lt;p&gt;DPoP (Demonstration of Proof-of-Possession) is an OAuth 2.0 security mechanism defined in &lt;a href="https://datatracker.ietf.org/doc/html/rfc9449" target="_blank" rel="noopener noreferrer"&gt;RFC 9449&lt;/a&gt;
. Its core purpose is simple: cryptographically bind an access token to the client that requested it. This way, even if a token is intercepted, it cannot be used by another client.&lt;/p&gt;</description></item><item><title>Introduction to intermediate operations modeler: Stream Gatherers</title><link>https://foojayio.github.io/website/today/introduction-to-intermediate-operations-modeler-stream-gatherers/</link><pubDate>Wed, 19 Mar 2025 13:04:14 +0000</pubDate><guid>https://foojayio.github.io/website/today/introduction-to-intermediate-operations-modeler-stream-gatherers/</guid><description>&lt;p&gt;&lt;strong&gt;Java is a programming language with many language features, specifications, and APIs. Even among experienced Java developers, being aware of all of these is quite rare. If a study were conducted, we might come across Java developers who have never worked with Threads, never used JPA, or never developed custom annotations. However, is there a Java developer who has worked with Java 8 or later but has never used the Stream API? I highly doubt it.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>The Basis of Virtual Threads: Continuations</title><link>https://foojayio.github.io/website/today/the-basis-of-virtual-threads-continuations/</link><pubDate>Fri, 28 Apr 2023 13:38:05 +0000</pubDate><guid>https://foojayio.github.io/website/today/the-basis-of-virtual-threads-continuations/</guid><description>&lt;p&gt;&lt;strong&gt;Virtual threads are lightweight implementations of java.lang.Thread and they promise to write highly scalable concurrent applications. This article turns the spotlight on the Continuations that are the basis of Virtual threads.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://openjdk.org/projects/loom/" target="_blank" rel="noopener noreferrer"&gt;Project Loom&lt;/a&gt;
 has been the focus of attention in the Java community since the day it was announced. Java developers were excited by Loom&amp;rsquo;s promise that, with virtual threads, they could write highly scalable applications that may utilize the hardware optimally, without changing their habits.&lt;/p&gt;</description></item><item><title>An Introduction to Scoped Values in Java</title><link>https://foojayio.github.io/website/today/an-introduction-to-scoped-values-in-java/</link><pubDate>Mon, 20 Feb 2023 11:32:20 +0000</pubDate><guid>https://foojayio.github.io/website/today/an-introduction-to-scoped-values-in-java/</guid><description>&lt;p&gt;After moving to the six-month release cadence, the Java language has entered a rapid development process.&lt;/p&gt;
&lt;p&gt;While the process introduces many new features, these new features sometimes cause updates to existing APIs and sometimes result in the development of new APIs.&lt;/p&gt;
&lt;p&gt;An example of the second is &lt;a href="https://openjdk.org/jeps/429" title="Scoped Values" target="_blank" rel="noopener noreferrer"&gt;Scoped Values&lt;/a&gt;
 which has been included in the JDK since Java 20 as an incubator API.&lt;/p&gt;
&lt;h3 id="h3-0-why-were-scoped-values-proposed"&gt;Why were Scoped Values proposed?&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://openjdk.org/jeps/425" title="Virtual threads" target="_blank" rel="noopener noreferrer"&gt;Virtual threads&lt;/a&gt;
 became a part of JDK as a preview feature in Java 19.&lt;/p&gt;</description></item></channel></rss>