%27%20fill-opacity%3D%27.5%27%3E%3Cellipse%20fill%3D%22%23c3c3c3%22%20fill-opacity%3D%22.5%22%20rx%3D%221%22%20ry%3D%221%22%20transform%3D%22matrix(78.19084%2042.10143%20-62.71071%20116.46644%20285.4%2069.2)%22%2F%3E%3Cellipse%20fill%3D%22%230e0e0e%22%20fill-opacity%3D%22.5%22%20rx%3D%221%22%20ry%3D%221%22%20transform%3D%22matrix(-130.69655%20-39.45962%2089.496%20-296.42507%20.8%20119.1)%22%2F%3E%3Cellipse%20fill%3D%22%23dfdfdf%22%20fill-opacity%3D%22.5%22%20rx%3D%221%22%20ry%3D%221%22%20transform%3D%22matrix(-27.0966%20-17.19603%2021.51733%20-33.90589%20278%2084.8)%22%2F%3E%3Cellipse%20fill%3D%22%23212121%22%20fill-opacity%3D%22.5%22%20rx%3D%221%22%20ry%3D%221%22%20transform%3D%22rotate(-40.9%20453.7%20-440.5)%20scale(73.73841%2043.12433)%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E)

Unnamed Variables and Patterns in Java
Sven WoltmannDecember 4, 2023Variables & patterns that we have to define but do not need can be designated with '_'. Find out what you need to bear in mind.
%22%20transform%3D%22translate(.8%20.8)%20scale(1.5625)%22%20fill-opacity%3D%22.5%22%3E%3Cellipse%20fill%3D%22%2333bacc%22%20rx%3D%221%22%20ry%3D%221%22%20transform%3D%22matrix(56.4921%2027.18781%20-63.94236%20132.86242%20249.8%20127.4)%22%2F%3E%3Cellipse%20fill%3D%22%23ff9eff%22%20cx%3D%2292%22%20cy%3D%2238%22%20rx%3D%2268%22%20ry%3D%2288%22%2F%3E%3Cellipse%20fill%3D%22%238b90ce%22%20rx%3D%221%22%20ry%3D%221%22%20transform%3D%22matrix(27.59142%2016.47194%20-42.09551%2070.51234%20193.5%2055.3)%22%2F%3E%3Cpath%20fill%3D%22%238b92cf%22%20d%3D%22M59%20155l-75%204L2-16z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E)

Hexagonal Architecture With Quarkus
[Tutorial]
Sven WoltmannOctober 30, 2023In the fourth part of the series on hexagonal architecture, we migrate the existing application to a Quarkus application... without changing a line of code in the application core.
%22%20transform%3D%22translate(.8%20.8)%20scale(1.5625)%22%20fill-opacity%3D%22.5%22%3E%3Cpath%20fill%3D%22%231840e4%22%20d%3D%22M261.5%2082h-171V52h171z%22%2F%3E%3Cellipse%20fill%3D%22%2300153a%22%20rx%3D%221%22%20ry%3D%221%22%20transform%3D%22matrix(0%20-15.71396%20129.5204%200%2094%20137.2)%22%2F%3E%3Cellipse%20fill%3D%22%23001539%22%20cx%3D%2283%22%20cy%3D%224%22%20rx%3D%22145%22%20ry%3D%2212%22%2F%3E%3Cellipse%20fill%3D%22%23175478%22%20cx%3D%2271%22%20cy%3D%2235%22%20rx%3D%22199%22%20ry%3D%2221%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E)

Ports and Adapters Java Tutorial: Adding a Database Adapter
Sven WoltmannOctober 4, 2023In the third part of the series on hexagonal architecture, we extend the application with a JPA adapter that stores the data in a MySQL database.
%27%20fill-opacity%3D%27.5%27%3E%3Cellipse%20fill%3D%22%234db9d5%22%20fill-opacity%3D%22.5%22%20rx%3D%221%22%20ry%3D%221%22%20transform%3D%22rotate(-50.1%20200.6%20-153.3)%20scale(87.7799%2065.94855)%22%2F%3E%3Cellipse%20fill%3D%22%2300315f%22%20fill-opacity%3D%22.5%22%20rx%3D%221%22%20ry%3D%221%22%20transform%3D%22matrix(-42.04515%20-264.70698%2048.44872%20-7.69543%20392.1%2077.5)%22%2F%3E%3Cellipse%20fill%3D%22%2300305d%22%20fill-opacity%3D%22.5%22%20rx%3D%221%22%20ry%3D%221%22%20transform%3D%22matrix(-30.72145%20-2.84994%2023.82667%20-256.84367%2016%20105.3)%22%2F%3E%3Cellipse%20fill%3D%22%2314b2bc%22%20fill-opacity%3D%22.5%22%20rx%3D%221%22%20ry%3D%221%22%20transform%3D%22matrix(-41.40788%20-1.59073%202.00254%20-52.12763%20184%20102.3)%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E)

Hexagonal Architecture with Java – Tutorial
Sven WoltmannJuly 4, 2023In this article, I will show you step by step how to implement a Java application with hexagonal architecture – and how to enforce compliance with the architectural rules using Maven and the library “ArchUnit”.
%22%20transform%3D%22translate(.8%20.8)%20scale(1.5625)%22%20fill-opacity%3D%22.5%22%3E%3Cellipse%20fill%3D%22%23676767%22%20rx%3D%221%22%20ry%3D%221%22%20transform%3D%22rotate(167.9%2057%2038)%20scale(51.28876%2064.90872)%22%2F%3E%3Cellipse%20fill%3D%22%23adadad%22%20rx%3D%221%22%20ry%3D%221%22%20transform%3D%22rotate(164.2%20103.8%2060.7)%20scale(31.78389%20254.99997)%22%2F%3E%3Cellipse%20fill%3D%22%23adadad%22%20rx%3D%221%22%20ry%3D%221%22%20transform%3D%22matrix(66.04294%2037.39286%20-16.28193%2028.757%2053.6%20118.8)%22%2F%3E%3Cellipse%20fill%3D%22%23464646%22%20cx%3D%22123%22%20cy%3D%2266%22%20rx%3D%2221%22%20ry%3D%2221%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E)

Structured Concurrency in Java with StructuredTaskScope
Sven WoltmannJune 14, 2023What is Structured Concurrency and why do we need it? How does StructuredTaskScope work? What is the advantage of Structured Concurrency?
%27%20fill-opacity%3D%27.5%27%3E%3Cellipse%20fill%3D%22%23d9d9d9%22%20fill-opacity%3D%22.5%22%20rx%3D%221%22%20ry%3D%221%22%20transform%3D%22matrix(7.72985%20-72.32998%20120.95843%2012.92673%20346.6%2040)%22%2F%3E%3Cellipse%20fill-opacity%3D%22.5%22%20rx%3D%221%22%20ry%3D%221%22%20transform%3D%22matrix(25.42935%20-259.34862%2082.6429%208.1032%2059%20112.7)%22%2F%3E%3Cellipse%20fill%3D%22%23e8e8e8%22%20fill-opacity%3D%22.5%22%20rx%3D%221%22%20ry%3D%221%22%20transform%3D%22rotate(85.7%20190%20208.4)%20scale(22.04118%2056.50011)%22%2F%3E%3Cellipse%20fill%3D%22%23717171%22%20fill-opacity%3D%22.5%22%20rx%3D%221%22%20ry%3D%221%22%20transform%3D%22matrix(21.19512%20-130.86263%2044.70305%207.24031%20220.4%20100.6)%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E)

Java 21 Features
(with Examples)
Sven WoltmannJune 8, 2023The new Java 21 features with examples: Virtual Threads, Sequenced Collections, Record Patterns, Pattern Matching for switch; new preview features: String Templates, Unnamed Patterns and Variables, Unnamed Classes and Instance Main Methods ... and more!
%22%20transform%3D%22translate(.8%20.8)%20scale(1.5625)%22%20fill-opacity%3D%22.5%22%3E%3Cellipse%20fill%3D%22%23939393%22%20rx%3D%221%22%20ry%3D%221%22%20transform%3D%22matrix(20.58564%20-31.21976%2037.64626%2024.82314%20162.6%2048.7)%22%2F%3E%3Cellipse%20rx%3D%221%22%20ry%3D%221%22%20transform%3D%22matrix(-6.46474%20-31.49535%2090.17421%20-18.50917%2064.4%20126.4)%22%2F%3E%3Cellipse%20rx%3D%221%22%20ry%3D%221%22%20transform%3D%22matrix(-29.30743%203.69888%20-16.2251%20-128.55686%20246.4%2048.5)%22%2F%3E%3Cellipse%20fill%3D%22%234d4d4d%22%20cx%3D%2255%22%20rx%3D%2298%22%20ry%3D%2298%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E)

How to Change Java Versions in Windows
(updated for Java 23)
Sven WoltmannMarch 21, 2023In this article, I'll show you how to install several Java versions simultaneously in Windows and how to switch between them on the command line with short commands.
%22%20transform%3D%22translate(.8%20.8)%20scale(1.5625)%22%20fill-opacity%3D%22.5%22%3E%3Cellipse%20fill%3D%22%239f351f%22%20rx%3D%221%22%20ry%3D%221%22%20transform%3D%22rotate(-160.9%2099.4%2031.2)%20scale(41.54054%2057.60183)%22%2F%3E%3Cellipse%20fill%3D%22%234a585a%22%20rx%3D%221%22%20ry%3D%221%22%20transform%3D%22matrix(-50.05696%20-52.58338%20106.96245%20-101.82333%2015.1%2024.8)%22%2F%3E%3Cellipse%20fill%3D%22%23051214%22%20rx%3D%221%22%20ry%3D%221%22%20transform%3D%22matrix(-23.1698%2058.81995%20-31.69038%20-12.48317%2082.2%20114)%22%2F%3E%3Cellipse%20fill%3D%22%23021012%22%20cx%3D%22253%22%20cy%3D%2260%22%20rx%3D%2224%22%20ry%3D%22254%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E)

Java 20 Features
(with Examples)
Sven WoltmannMarch 21, 2023The new Java 20 features with examples: Scoped Values (Incubator), Record Patterns (Second Preview), Pattern Matching for switch (Fourth Preview), Foreign Function & Memory API (Second Preview), Virtual Threads (Second Preview), Structured Concurrency (Second Incubator)
%22%20transform%3D%22translate(.8%20.8)%20scale(1.5625)%22%20fill-opacity%3D%22.5%22%3E%3Cellipse%20fill%3D%22%23243530%22%20cx%3D%22221%22%20cy%3D%2281%22%20rx%3D%2243%22%20ry%3D%22255%22%2F%3E%3Cellipse%20fill%3D%22%23706d6e%22%20rx%3D%221%22%20ry%3D%221%22%20transform%3D%22matrix(9.12655%20-100.28396%2074.83762%206.81076%20101.3%2068.2)%22%2F%3E%3Cellipse%20fill%3D%22%23006740%22%20cx%3D%22225%22%20cy%3D%22135%22%20rx%3D%2233%22%20ry%3D%2222%22%2F%3E%3Cellipse%20fill%3D%22%23312e2f%22%20cy%3D%2273%22%20rx%3D%2226%22%20ry%3D%22255%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E)

Hexagonal Architecture – What Is It? Why Use It?
Sven WoltmannJanuary 18, 2023What is Hexagonal Architecture (Ports & Adapters) – Advantages over Layered Architecture – Hexagonal Architecture, Microservices and DDD
%22%20transform%3D%22translate(.8%20.8)%20scale(1.5625)%22%20fill-opacity%3D%22.5%22%3E%3Cellipse%20fill%3D%22%23dbb217%22%20rx%3D%221%22%20ry%3D%221%22%20transform%3D%22matrix(29.36988%2038.07696%20-46.67399%2036.00101%20147.5%2025.2)%22%2F%3E%3Cellipse%20fill%3D%22%23ecbc9b%22%20cx%3D%22220%22%20cy%3D%22140%22%20rx%3D%22237%22%20ry%3D%2256%22%2F%3E%3Cellipse%20fill%3D%22%23bc863c%22%20cx%3D%22109%22%20cy%3D%2251%22%20rx%3D%2234%22%20ry%3D%2242%22%2F%3E%3Cellipse%20fill%3D%22%23ba7c59%22%20rx%3D%221%22%20ry%3D%221%22%20transform%3D%22matrix(12.9453%20-25.48008%2033.71126%2017.1272%20233.8%2016.2)%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E)

Scoped Values in Java – What They Are and How to Use Them
Sven WoltmannDecember 11, 2022What is a Scoped Value? How to use ScopedValue? How to inherit Scoped Values? What is the difference between ScopedValue and ThreadLocal?