<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[High-Level Developer]]></title><description><![CDATA[Here you will find some articles related to software development best practices and key concepts, to help you become a High-Level programmer, fully confident in your abilities, and unlock the next level in your career]]></description><link>https://devjava.substack.com</link><image><url>https://substackcdn.com/image/fetch/$s_!E170!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1afba9fe-52a1-423b-b5a1-05f3da32b2ba_1024x1024.png</url><title>High-Level Developer</title><link>https://devjava.substack.com</link></image><generator>Substack</generator><lastBuildDate>Mon, 01 Jun 2026 06:14:43 GMT</lastBuildDate><atom:link href="https://devjava.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Thiago Bomfim]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[devjava@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[devjava@substack.com]]></itunes:email><itunes:name><![CDATA[Thiago Bomfim]]></itunes:name></itunes:owner><itunes:author><![CDATA[Thiago Bomfim]]></itunes:author><googleplay:owner><![CDATA[devjava@substack.com]]></googleplay:owner><googleplay:email><![CDATA[devjava@substack.com]]></googleplay:email><googleplay:author><![CDATA[Thiago Bomfim]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Spring I/O 2026 - Recap]]></title><description><![CDATA[Spring I/O is one of the most important events for Java and Spring developers.]]></description><link>https://devjava.substack.com/p/spring-io-2026-recap</link><guid isPermaLink="false">https://devjava.substack.com/p/spring-io-2026-recap</guid><dc:creator><![CDATA[Thiago Bomfim]]></dc:creator><pubDate>Sun, 10 May 2026 09:10:56 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!rqyG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1235aa3d-48d7-4970-a545-e45da90e1f99_1402x1122.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rqyG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1235aa3d-48d7-4970-a545-e45da90e1f99_1402x1122.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rqyG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1235aa3d-48d7-4970-a545-e45da90e1f99_1402x1122.png 424w, https://substackcdn.com/image/fetch/$s_!rqyG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1235aa3d-48d7-4970-a545-e45da90e1f99_1402x1122.png 848w, https://substackcdn.com/image/fetch/$s_!rqyG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1235aa3d-48d7-4970-a545-e45da90e1f99_1402x1122.png 1272w, https://substackcdn.com/image/fetch/$s_!rqyG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1235aa3d-48d7-4970-a545-e45da90e1f99_1402x1122.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rqyG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1235aa3d-48d7-4970-a545-e45da90e1f99_1402x1122.png" width="1402" height="1122" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1235aa3d-48d7-4970-a545-e45da90e1f99_1402x1122.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1122,&quot;width&quot;:1402,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2201579,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://devjava.substack.com/i/196585618?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1235aa3d-48d7-4970-a545-e45da90e1f99_1402x1122.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!rqyG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1235aa3d-48d7-4970-a545-e45da90e1f99_1402x1122.png 424w, https://substackcdn.com/image/fetch/$s_!rqyG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1235aa3d-48d7-4970-a545-e45da90e1f99_1402x1122.png 848w, https://substackcdn.com/image/fetch/$s_!rqyG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1235aa3d-48d7-4970-a545-e45da90e1f99_1402x1122.png 1272w, https://substackcdn.com/image/fetch/$s_!rqyG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1235aa3d-48d7-4970-a545-e45da90e1f99_1402x1122.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Spring I/O is one of the most important events for Java and Spring developers.</p><p>The 2026 edition happened in Barcelona (April 13&#8211;15) and brought what we expected: <strong>strong updates in Spring and a big focus on AI</strong>.</p><p>If you don&#8217;t have time to watch everything, here are the talks worth your attention.</p><div><hr></div><h2>&#127811; Spring Boot 4 in Practice</h2><p>Spring Boot 4 continues the same philosophy: <strong>developer productivity first</strong>, now with even broader capabilities.</p><p>If you want a quick overview, watch this session from Josh Long:</p><p>&#128073; <em><a href="https://www.youtube.com/watch?v=6zfuCPQzrwE">Bootiful Spring Boot 4 &#8212; Josh Long</a></em></p><div><hr></div><h2>&#129302; AI Is Now Real for Java Developers</h2><p>AI was a central theme across multiple talks:</p><ul><li><p><em><a href="https://www.youtube.com/watch?v=PmW4-tcMQbc">Claude Code for Spring Developers by Thomas Schilling</a></em></p></li><li><p><em><a href="https://www.youtube.com/watch?v=To724qB8yEk&amp;list=PLe6FX2SlkJdQZ3N0SW9Abo4cN7eO5dU-U">Comparing Agentic AI Frameworks for Java by Timo Salm / Sandra Ahlgrimm</a></em></p></li><li><p><em><a href="https://www.youtube.com/watch?v=35dH6q18UtI&amp;list=PLe6FX2SlkJdQZ3N0SW9Abo4cN7eO5dU-U&amp;index=6">Spec-driven Development: How AI Changed Everything (And Nothing) by Simon Martinelli</a></em></p></li></ul><div><hr></div><h2>&#9654;&#65039; Watch the Full Event</h2><p>If you want to go deeper, you can watch all sessions here:</p><p>&#128073; <a href="https://www.youtube.com/watch?v=To724qB8yEk&amp;list=PLe6FX2SlkJdQZ3N0SW9Abo4cN7eO5dU-U">Spring IO 2026 - Playlist</a></p><div><hr></div><h2>Conclusion</h2><p>Big tech events are focusing more and more on <strong>AI</strong>, and Spring I/O 2026 clearly shows this trend.</p><p>If you want to stay relevant as a Java engineer, it&#8217;s important to keep learning how AI is being used in real applications. Spring I/O has many talks that can help you with that.</p><p>Have you attended the event or watched any sessions?<br>Share your opinion, and any talks you enjoyed.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://devjava.substack.com/p/spring-io-2026-recap/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://devjava.substack.com/p/spring-io-2026-recap/comments"><span>Leave a comment</span></a></p>]]></content:encoded></item><item><title><![CDATA[How to Keep Up with Java, Spring, and the JVM Ecosystem]]></title><description><![CDATA[Keeping up with the Java ecosystem is not easy.]]></description><link>https://devjava.substack.com/p/how-to-keep-up-with-java-spring-and</link><guid isPermaLink="false">https://devjava.substack.com/p/how-to-keep-up-with-java-spring-and</guid><dc:creator><![CDATA[Thiago Bomfim]]></dc:creator><pubDate>Sun, 03 May 2026 09:10:47 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!VZKz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa912a27e-17b3-4c76-9cb2-237c6217604f_1402x1122.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VZKz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa912a27e-17b3-4c76-9cb2-237c6217604f_1402x1122.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VZKz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa912a27e-17b3-4c76-9cb2-237c6217604f_1402x1122.png 424w, https://substackcdn.com/image/fetch/$s_!VZKz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa912a27e-17b3-4c76-9cb2-237c6217604f_1402x1122.png 848w, https://substackcdn.com/image/fetch/$s_!VZKz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa912a27e-17b3-4c76-9cb2-237c6217604f_1402x1122.png 1272w, https://substackcdn.com/image/fetch/$s_!VZKz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa912a27e-17b3-4c76-9cb2-237c6217604f_1402x1122.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VZKz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa912a27e-17b3-4c76-9cb2-237c6217604f_1402x1122.png" width="1402" height="1122" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a912a27e-17b3-4c76-9cb2-237c6217604f_1402x1122.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1122,&quot;width&quot;:1402,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2185288,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://devjava.substack.com/i/195805261?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa912a27e-17b3-4c76-9cb2-237c6217604f_1402x1122.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!VZKz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa912a27e-17b3-4c76-9cb2-237c6217604f_1402x1122.png 424w, https://substackcdn.com/image/fetch/$s_!VZKz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa912a27e-17b3-4c76-9cb2-237c6217604f_1402x1122.png 848w, https://substackcdn.com/image/fetch/$s_!VZKz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa912a27e-17b3-4c76-9cb2-237c6217604f_1402x1122.png 1272w, https://substackcdn.com/image/fetch/$s_!VZKz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa912a27e-17b3-4c76-9cb2-237c6217604f_1402x1122.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Keeping up with the Java ecosystem is not easy.</p><p>New frameworks, JVM updates, Spring improvements, and architecture trends appear all the time. If you don&#8217;t have a system, it&#8217;s easy to fall behind.</p><p>You can start here on DevJava where I share key updates, events, and practical insights. But to stay truly sharp, it&#8217;s important to follow multiple high-quality sources.</p><p>Here are some of the best ones I recommend.</p><h3>&#9749; Oracle Java Blog</h3><p>&#128073; <a href="https://dev.java/news/">https://dev.java/news/</a></p><p>The official Java blog from Oracle.<br>Best place to learn about <strong>new Java releases, language features, and JVM updates</strong> directly from the source.</p><h3>&#128236; Graciano Weekly Newsletter</h3><p>&#128073; <a href="https://graciano.dev/2024/11/01/weekend-reading-list-249/">https://graciano.dev/2024/11/01/weekend-reading-list-249/</a></p><p>A personal, well-curated list of articles and insights.<br>Perfect for discovering <strong>useful reads you might not find on your own</strong>.</p><h3>&#129513; InfoQ Java Articles</h3><p>&#128073; <a href="https://www.infoq.com/java/articles/">https://www.infoq.com/java/articles/</a></p><p>Deep technical articles focused on <strong>architecture, scalability, and real-world systems</strong>.<br>Ideal for engineers who want to go beyond basics.</p><h3>&#127757; Foojay (Friends of OpenJDK)</h3><p>&#128073; <a href="https://foojay.io/">https://foojay.io/</a></p><p>A community-driven platform around OpenJDK.<br>Covers <strong>tools, news, and ecosystem updates</strong> with contributions from experts.</p><h3>&#127811; Spring Engineering Blog</h3><p>&#128073; <a href="https://spring.io/blog/category/engineering?filter=series">https://spring.io/blog/category/engineering?filter=series</a></p><p>Official Spring content with real engineering insights.<br>Great for learning about <strong>Spring Boot and Spring framework.</strong></p><h3>&#129489;&#8205;&#128187; DevJava (This Blog)</h3><p>A focused, practical view on Java backend, microservices, and productivity.<br>&#128073; The goal: help you become a <strong>better, faster, and more confident engineer</strong>.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://devjava.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://devjava.substack.com/subscribe?"><span>Subscribe now</span></a></p><h2>&#9989; Final Thoughts</h2><p>Staying updated is not about consuming more, it&#8217;s about consuming <strong>the right information</strong>.</p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[Beyond Prompting: Spec-Driven and Harness Engineering for LLMs]]></title><description><![CDATA[Most developers start using AI with simple prompts, and that works&#8230; until it doesn&#8217;t.]]></description><link>https://devjava.substack.com/p/beyond-prompting-spec-driven-and</link><guid isPermaLink="false">https://devjava.substack.com/p/beyond-prompting-spec-driven-and</guid><dc:creator><![CDATA[Thiago Bomfim]]></dc:creator><pubDate>Sun, 26 Apr 2026 09:10:49 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!RRZQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb87d90de-19db-46fa-a9c6-72cd93e18b90_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RRZQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb87d90de-19db-46fa-a9c6-72cd93e18b90_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RRZQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb87d90de-19db-46fa-a9c6-72cd93e18b90_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!RRZQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb87d90de-19db-46fa-a9c6-72cd93e18b90_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!RRZQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb87d90de-19db-46fa-a9c6-72cd93e18b90_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!RRZQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb87d90de-19db-46fa-a9c6-72cd93e18b90_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RRZQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb87d90de-19db-46fa-a9c6-72cd93e18b90_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b87d90de-19db-46fa-a9c6-72cd93e18b90_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1812718,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://devjava.substack.com/i/194124827?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb87d90de-19db-46fa-a9c6-72cd93e18b90_1024x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!RRZQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb87d90de-19db-46fa-a9c6-72cd93e18b90_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!RRZQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb87d90de-19db-46fa-a9c6-72cd93e18b90_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!RRZQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb87d90de-19db-46fa-a9c6-72cd93e18b90_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!RRZQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb87d90de-19db-46fa-a9c6-72cd93e18b90_1024x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Most developers start using AI with simple prompts, and that works&#8230; until it doesn&#8217;t.</p><p>As soon as you need consistency, quality, and reliability, &#8220;just prompting&#8221; is not enough. You need structure, clear intent, and validation, just like in backend engineering.</p><p>That&#8217;s why prompt engineering is evolving into something bigger: a progression from quick experiments to <strong>well-designed, production-ready systems</strong>.</p><h2>&#129504; The 4 Levels of Prompt Engineering</h2><h3>1. Ad-hoc Prompting (Beginner)</h3><p>You just ask the model and see what happens.</p><ul><li><p>&#10004;&#65039; Fast</p></li><li><p>&#10060; Inconsistent</p></li></ul><p>&#128073; <em>Good for exploration, not for real systems.</em></p><h3>2. Structured Prompting (Intermediate)</h3><p>You start adding:</p><ul><li><p>Roles</p></li><li><p>Examples</p></li><li><p>Constraints</p></li></ul><p>Prompts become reusable.</p><ul><li><p>&#10004;&#65039; More reliable</p></li><li><p>&#10004;&#65039; Repeatable</p></li><li><p>&#10060; Still manual</p></li></ul><h3>3. System Prompting (Advanced)</h3><p>Now prompts are part of a <strong>system</strong>:</p><ul><li><p>Templates</p></li><li><p>Tools</p></li><li><p>Guardrails</p></li></ul><p>&#128073; This is where prompting becomes engineering.</p><h3>4. Spec-Driven Prompting (Expert)</h3><p>You define a <strong>specification first</strong>, then generate prompts from it.</p><ul><li><p>Spec = intent</p></li><li><p>Prompt = execution</p></li></ul><p>&#128073; This aligns with how we design good APIs: <strong>contract first, implementation later</strong>.</p><div><hr></div><h2>&#9881;&#65039; The 3 Paradigms You Should Know</h2><h3>1. Vibe Coding (Exploration-first)</h3><p>You describe what you want, and the AI figures it out.</p><ul><li><p>&#10004;&#65039; Very fast</p></li><li><p>&#10060; Unpredictable</p></li></ul><p>&#128073; Great for prototypes, risky for production.</p><h3>2. Spec-Driven Development (Intent-first)</h3><p>You define:</p><ul><li><p>Inputs</p></li><li><p>Outputs</p></li><li><p>Rules</p></li><li><p>Edge cases</p></li><li><p>&#10004;&#65039; Clear and consistent</p></li><li><p>&#10060; Requires discipline</p></li></ul><p>&#128073; Similar to designing a clean service contract in microservices.</p><h3>3. Harness Engineering (System-first)</h3><p>You build a system <strong>around</strong> the model:</p><ul><li><p>Tests</p></li><li><p>Evaluations</p></li><li><p>Feedback loops</p></li><li><p>Retries</p></li></ul><p>&#128073; Core idea: <em>Don&#8217;t trust the model, validate it.</em></p><ul><li><p>&#10004;&#65039; Production-ready</p></li><li><p>&#10004;&#65039; Measurable quality</p></li><li><p>&#10060; More complex</p></li></ul><div><hr></div><h2>Conclusion</h2><p>You start with <strong>Vibe</strong> to explore ideas fast.<br>Then move to <strong>Spec</strong> to bring clarity and structure.<br>And finally, use <strong>Harness</strong> to guarantee quality and reliability.</p><p>If you build Java backends, this flow should feel natural:</p><ul><li><p>You experiment</p></li><li><p>You define contracts</p></li><li><p>You add tests and validation</p></li></ul><p>&#128073; Prompt engineering follows the same path.</p><p>Treat it like software engineering, with clear intent, good design, and strong feedback loops, and you&#8217;ll build AI systems that are not just impressive, but <strong>reliable and production-ready</strong>.</p><div><hr></div><h2>&#128218; References</h2><ul><li><p><a href="https://martinfowler.com/articles/exploring-gen-ai/sdd-3-tools.html">https://martinfowler.com/articles/exploring-gen-ai/sdd-3-tools.html</a></p></li><li><p><a href="https://martinfowler.com/articles/harness-engineering.html">https://martinfowler.com/articles/harness-engineering.html</a></p></li><li><p><a href="https://www.ibm.com/think/topics/vibe-coding">https://www.ibm.com/think/topics/vibe-coding</a></p></li><li><p><a href="https://learn.microsoft.com/pt-br/training/modules/spec-driven-development-github-spec-kit-greenfield-intro/">https://learn.microsoft.com/pt-br/training/modules/spec-driven-development-github-spec-kit-greenfield-intro/</a></p></li><li><p></p><p></p></li></ul>]]></content:encoded></item><item><title><![CDATA[JCON Europe 2026 — Embrace your Java Journey]]></title><description><![CDATA[If you are serious about growing as a Java backend engineer, events like JCON Europe are worth your attention.]]></description><link>https://devjava.substack.com/p/jcon-europe-2026-embrace-your-java</link><guid isPermaLink="false">https://devjava.substack.com/p/jcon-europe-2026-embrace-your-java</guid><dc:creator><![CDATA[Thiago Bomfim]]></dc:creator><pubDate>Sun, 19 Apr 2026 09:10:44 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!fmnQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadaae423-9659-4304-9946-8272b613b028_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fmnQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadaae423-9659-4304-9946-8272b613b028_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fmnQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadaae423-9659-4304-9946-8272b613b028_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!fmnQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadaae423-9659-4304-9946-8272b613b028_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!fmnQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadaae423-9659-4304-9946-8272b613b028_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!fmnQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadaae423-9659-4304-9946-8272b613b028_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fmnQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadaae423-9659-4304-9946-8272b613b028_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/adaae423-9659-4304-9946-8272b613b028_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1898847,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://devjava.substack.com/i/193513401?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadaae423-9659-4304-9946-8272b613b028_1024x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!fmnQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadaae423-9659-4304-9946-8272b613b028_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!fmnQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadaae423-9659-4304-9946-8272b613b028_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!fmnQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadaae423-9659-4304-9946-8272b613b028_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!fmnQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadaae423-9659-4304-9946-8272b613b028_1024x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>If you are serious about growing as a Java backend engineer, events like JCON Europe are worth your attention.</p><p>JCON Europe 2026 is one of the most relevant Java conferences in Europe, bringing together developers, architects, and community leaders to share real-world knowledge.</p><h2>&#128197; What is JCON Europe?</h2><p>JCON Europe is organized by the Java User Group Oberpfalz in collaboration with JAVAPRO Magazine.</p><p>The 2026 edition will take place on <strong>April 20th&#8211;23rd</strong> and includes:</p><ul><li><p>1 full <strong>workshop day</strong></p></li><li><p>3 days of <strong>conference sessions</strong></p></li></ul><p>You can expect topics like:</p><ul><li><p>Java and JVM internals</p></li><li><p>Spring and microservices</p></li><li><p>Cloud-native architecture</p></li><li><p>Performance and scalability</p></li></ul><p>This is not just theory, sessions usually focus on <strong>practical use cases and real production challenges</strong>.</p><div><hr></div><h2>&#127903;&#65039; Free Ticket? Yes.</h2><p>If you are part of a Java User Group (JUG), you can get a <strong>free ticket</strong> for all standard sessions.</p><p>&#128073; Get your ticket here: <a href="https://2026.europe.jcon.one/tickets">https://2026.europe.jcon.one/tickets</a></p><p>This is a great opportunity to learn from experts <strong>without spending money</strong>.</p><div><hr></div><h2>&#127909; Can&#8217;t Attend? Watch Online</h2><p>Most sessions are streamed on the JAVAPRO YouTube channel.</p><p>&#128073; Check out previous talks here:<br><a href="https://www.youtube.com/@JAVAPRO-channel/search?query=jcon%202025">https://www.youtube.com/@JAVAPRO-channel/search?query=jcon%202025</a></p><p>Even if you can&#8217;t attend live, you can still:</p><ul><li><p>Learn new concepts</p></li><li><p>Stay updated with the Java ecosystem</p></li><li><p>Improve your engineering skills</p></li></ul><div><hr></div><h2>&#128161; Why You Should Care</h2><p>Events like JCON are not just about watching talks. They help you:</p><ul><li><p>Stay relevant in a fast-changing ecosystem</p></li><li><p>Learn from engineers solving real problems</p></li><li><p>Discover better ways to design and build systems</p><p></p></li></ul><div><hr></div><h2>Final Thoughts</h2><p>JCON Europe 2026 is a great chance to invest in your growth, either by attending or watching online.</p><p>Have you attended JCON before? Or are you planning to join this year? Please, share your experience or expectations</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://devjava.substack.com/p/jcon-europe-2026-embrace-your-java/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://devjava.substack.com/p/jcon-europe-2026-embrace-your-java/comments"><span>Leave a comment</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[Book Resume: Big Trust — Rewire Self-Doubt, Find Your Confidence, and Fuel Success]]></title><description><![CDATA[Big Trust: Rewire Self-Doubt, Find Your Confidence, and Fuel Success, written by Shade Zahrai, is a powerful book about overcoming self-doubt and building confidence.]]></description><link>https://devjava.substack.com/p/book-resume-big-trust-rewire-self</link><guid isPermaLink="false">https://devjava.substack.com/p/book-resume-big-trust-rewire-self</guid><dc:creator><![CDATA[Thiago Bomfim]]></dc:creator><pubDate>Sun, 12 Apr 2026 09:10:36 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!6uSG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34e449ea-6bea-4afd-83e5-99d5867e2590_993x1500.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6uSG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34e449ea-6bea-4afd-83e5-99d5867e2590_993x1500.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6uSG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34e449ea-6bea-4afd-83e5-99d5867e2590_993x1500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!6uSG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34e449ea-6bea-4afd-83e5-99d5867e2590_993x1500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!6uSG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34e449ea-6bea-4afd-83e5-99d5867e2590_993x1500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!6uSG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34e449ea-6bea-4afd-83e5-99d5867e2590_993x1500.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6uSG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34e449ea-6bea-4afd-83e5-99d5867e2590_993x1500.jpeg" width="993" height="1500" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/34e449ea-6bea-4afd-83e5-99d5867e2590_993x1500.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1500,&quot;width&quot;:993,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:121583,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://devjava.substack.com/i/191189466?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34e449ea-6bea-4afd-83e5-99d5867e2590_993x1500.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!6uSG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34e449ea-6bea-4afd-83e5-99d5867e2590_993x1500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!6uSG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34e449ea-6bea-4afd-83e5-99d5867e2590_993x1500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!6uSG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34e449ea-6bea-4afd-83e5-99d5867e2590_993x1500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!6uSG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34e449ea-6bea-4afd-83e5-99d5867e2590_993x1500.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em><a href="https://www.amazon.com/dp/0063378159/">Big Trust: Rewire Self-Doubt, Find Your Confidence, and Fuel Success</a></em><a href="https://www.amazon.com/dp/0063378159/">,</a> written by Shade Zahrai, is a powerful book about overcoming self-doubt and building confidence.</p><p>It focuses on helping you get out of your comfort zone and break mental blocks that hold you back, something many developers experience during their careers.</p><h2><strong>The Doubt Profile</strong></h2><p>The book introduces four key attributes that shape how we deal with self-doubt:</p><ol><li><p><strong>Acceptance</strong> &#8212; Do you believe you&#8217;re enough as you are?</p></li><li><p><strong>Agency</strong> &#8212; Do you trust your skills and abilities?</p></li><li><p><strong>Autonomy</strong> &#8212; Do you feel you can shape your own path?</p></li><li><p><strong>Adaptability</strong> &#8212; Can you stay emotionally grounded when doubt appears?</p></li></ol><p>These attributes help you understand where your self-doubt comes from, and how to improve it.</p><h2><strong>Why Agency Matters (Especially for Developers)</strong></h2><p>One concept that stood out to me is <strong>Agency</strong>.</p><p>Agency means believing that you can figure things out.<br>It&#8217;s not just about what you already know, it&#8217;s about trusting your ability to learn, adapt, and solve problems.</p><p>For developers, this is essential.</p><p>We often face problems that:</p><ul><li><p>don&#8217;t have clear solutions</p></li><li><p>have never been solved before</p></li><li><p>require experimentation and learning</p></li></ul><p>Being a developer means being a <strong>problem solver</strong>.<br>And without agency, it&#8217;s easy to feel stuck or overwhelmed.</p><blockquote><p>When you experience a sense of Agency, you believe that you can figure things out. You not only believe that you have the skills you need, but also trust that you have the ability to adapt, learn, and solve problems as they come.</p></blockquote><h2><strong>A Practical Reflection</strong></h2><p>If you don&#8217;t trust yourself to:</p><ul><li><p>handle new projects</p></li><li><p>work on unfamiliar features</p></li><li><p>fix complex bugs</p></li></ul><p>then self-doubt may be limiting your growth.</p><p>Feeling fear when facing something new is normal.<br>But being frozen by that fear is what holds you back.</p><p>This book gives practical ways to reframe that fear and move forward with confidence.</p><h2><strong>Conclusion</strong></h2><p><em>Big Trust</em> is a great read if you struggle with self-doubt or want to build more confidence in your career.</p><p>I didn&#8217;t go deep into all four attributes here, but if this topic resonates with you, I recommend reading the book and exploring it further.</p><p>You can also take a free assessment here:<br>&#128073; <a href="https://www.shadezahrai.com/doubtprofile">https://www.shadezahrai.com/doubtprofile</a></p><p>If you enjoyed this review, <strong>subscribe to the newsletter</strong> and share it with someone who might need more confidence in their journey &#128640;</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://devjava.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading High-Level Developer! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[Java GC Basics: Important Concepts Explained]]></title><description><![CDATA[Hello!]]></description><link>https://devjava.substack.com/p/java-gc-basics-important-concepts</link><guid isPermaLink="false">https://devjava.substack.com/p/java-gc-basics-important-concepts</guid><dc:creator><![CDATA[Thiago Bomfim]]></dc:creator><pubDate>Sun, 05 Apr 2026 09:10:40 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!GEpz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb12fb311-1ff7-4ef2-9c06-f1d30d6639c8_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GEpz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb12fb311-1ff7-4ef2-9c06-f1d30d6639c8_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GEpz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb12fb311-1ff7-4ef2-9c06-f1d30d6639c8_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!GEpz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb12fb311-1ff7-4ef2-9c06-f1d30d6639c8_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!GEpz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb12fb311-1ff7-4ef2-9c06-f1d30d6639c8_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!GEpz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb12fb311-1ff7-4ef2-9c06-f1d30d6639c8_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GEpz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb12fb311-1ff7-4ef2-9c06-f1d30d6639c8_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b12fb311-1ff7-4ef2-9c06-f1d30d6639c8_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1991913,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://devjava.substack.com/i/189824661?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb12fb311-1ff7-4ef2-9c06-f1d30d6639c8_1024x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!GEpz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb12fb311-1ff7-4ef2-9c06-f1d30d6639c8_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!GEpz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb12fb311-1ff7-4ef2-9c06-f1d30d6639c8_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!GEpz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb12fb311-1ff7-4ef2-9c06-f1d30d6639c8_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!GEpz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb12fb311-1ff7-4ef2-9c06-f1d30d6639c8_1024x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Hello! Let&#8217;s quickly review some common terms related to the <strong>Garbage Collector (GC)</strong> in the JVM.<br>Understanding these concepts can help you better analyze memory usage and performance issues in Java applications.</p><ul><li><p><strong>Stop The World (STW):</strong><br>A moment when the JVM pauses all application threads to perform garbage collection tasks. During this pause, your application is temporarily stopped while the Garbage Collector reclaims memory or reorganizes the heap.</p></li><li><p><strong>Latency:</strong><br>The time it takes for your application to respond to a request. GC pauses can increase latency because the application is temporarily stopped.</p></li><li><p><strong>Throughput:</strong><br>The amount of work the application completes over time. Some garbage collectors focus on maximizing throughput instead of minimizing pause time.</p><p>Example: <strong>Parallel GC</strong>, which focuses on completing more work even if pauses are longer.</p></li><li><p><strong>Pause Time:</strong><br>The duration of a GC pause. Different collectors are designed to reduce pause times depending on the system&#8217;s needs.</p><p>Example: <strong>ZGC</strong>, which is designed to keep pause times very small, usually in the microseconds range.</p></li><li><p><strong>Java Heap:</strong><br>The <strong>Java Heap</strong> is the area of memory where objects are allocated.</p><p>This is the main memory space managed by the Garbage Collector. When objects are no longer referenced, the GC frees that memory.</p></li><li><p><strong>Young Generation:</strong><br>The part of the heap where new objects are first allocated. Most objects have a short life and are collected here. Objects that survive several collections may be promoted to the Old Generation.</p></li><li><p><strong>Old Generation:</strong><br>Objects that survive longer are moved here. Garbage collections in this area happen less often but are usually heavier.</p></li><li><p><strong>Metaspace:</strong><br>The memory area where class metadata is stored, such as class definitions and method information. It replaced PermGen in Java 8 and uses native memory.</p></li></ul><p>Understanding these basic terms makes it easier to reason about JVM performance and garbage collection behavior.</p><p>If you&#8217;d like a deeper explanation of how different <strong>Garbage Collectors work</strong>, let me know in the comments &#128640;</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://devjava.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://devjava.substack.com/subscribe?"><span>Subscribe now</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[Garbage Collector: Do not use the default]]></title><description><![CDATA[Do you know what the Garbage Collector (GC) in the JVM is?]]></description><link>https://devjava.substack.com/p/garbage-collector-do-not-use-the</link><guid isPermaLink="false">https://devjava.substack.com/p/garbage-collector-do-not-use-the</guid><dc:creator><![CDATA[Thiago Bomfim]]></dc:creator><pubDate>Sun, 29 Mar 2026 09:10:39 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!o4XP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27d52749-33bb-498b-9867-6f2ca36641e8_1024x1536.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!o4XP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27d52749-33bb-498b-9867-6f2ca36641e8_1024x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!o4XP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27d52749-33bb-498b-9867-6f2ca36641e8_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!o4XP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27d52749-33bb-498b-9867-6f2ca36641e8_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!o4XP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27d52749-33bb-498b-9867-6f2ca36641e8_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!o4XP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27d52749-33bb-498b-9867-6f2ca36641e8_1024x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!o4XP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27d52749-33bb-498b-9867-6f2ca36641e8_1024x1536.png" width="1024" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/27d52749-33bb-498b-9867-6f2ca36641e8_1024x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3339496,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://devjava.substack.com/i/189710810?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27d52749-33bb-498b-9867-6f2ca36641e8_1024x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!o4XP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27d52749-33bb-498b-9867-6f2ca36641e8_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!o4XP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27d52749-33bb-498b-9867-6f2ca36641e8_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!o4XP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27d52749-33bb-498b-9867-6f2ca36641e8_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!o4XP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27d52749-33bb-498b-9867-6f2ca36641e8_1024x1536.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Do you know what the Garbage Collector (GC) in the JVM is?</p><p>If not, you can think of it as the silent hero of memory management. It quietly frees unused memory and saves developers from manual memory deallocation.</p><p>I won&#8217;t explain how it works here. If you&#8217;d like a deep dive on that, leave a comment, and I&#8217;ll write about it.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://devjava.substack.com/p/garbage-collector-do-not-use-the/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://devjava.substack.com/p/garbage-collector-do-not-use-the/comments"><span>Leave a comment</span></a></p><p>What I want to talk about today is something practical: <strong>don&#8217;t just rely on the default Garbage Collector.</strong></p><div><hr></div><h2>How Many Garbage Collectors Do We Have?</h2><p>Depending on your Java version, OpenJDK offers five main Garbage Collectors:</p><ul><li><p><strong>Serial GC</strong></p></li><li><p><strong>Parallel GC</strong></p></li><li><p><strong>G1 GC</strong></p></li><li><p><strong>ZGC</strong></p></li><li><p><strong>Shenandoah</strong></p></li></ul><p>Each GC is designed for different goals. Some focus on <strong>throughput</strong>, others on <strong>low latency</strong>. They also manage heap memory differently, which can significantly impact your application&#8217;s performance.</p><p>Choosing the wrong GC for your workload can cost you performance, stability, or memory efficiency.</p><div><hr></div><h2>What Is the Default GC?</h2><p>The answer is: it depends &#128517;</p><p>According to the OpenJDK source code:</p><ul><li><p>If you have <strong>one processor or up to ~1.8 GB of RAM</strong>, the JVM uses <strong>Serial GC</strong>.</p></li><li><p>If you have <strong>2 or more processors and 1.8 GB+ of RAM</strong>, it uses <strong>G1 GC</strong>.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!acMG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffacb2d15-0cd0-400d-90c7-06b81232d997_574x264.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!acMG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffacb2d15-0cd0-400d-90c7-06b81232d997_574x264.png 424w, https://substackcdn.com/image/fetch/$s_!acMG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffacb2d15-0cd0-400d-90c7-06b81232d997_574x264.png 848w, https://substackcdn.com/image/fetch/$s_!acMG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffacb2d15-0cd0-400d-90c7-06b81232d997_574x264.png 1272w, https://substackcdn.com/image/fetch/$s_!acMG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffacb2d15-0cd0-400d-90c7-06b81232d997_574x264.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!acMG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffacb2d15-0cd0-400d-90c7-06b81232d997_574x264.png" width="574" height="264" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/facb2d15-0cd0-400d-90c7-06b81232d997_574x264.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:264,&quot;width&quot;:574,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:76121,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://devjava.substack.com/i/189710810?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffacb2d15-0cd0-400d-90c7-06b81232d997_574x264.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!acMG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffacb2d15-0cd0-400d-90c7-06b81232d997_574x264.png 424w, https://substackcdn.com/image/fetch/$s_!acMG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffacb2d15-0cd0-400d-90c7-06b81232d997_574x264.png 848w, https://substackcdn.com/image/fetch/$s_!acMG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffacb2d15-0cd0-400d-90c7-06b81232d997_574x264.png 1272w, https://substackcdn.com/image/fetch/$s_!acMG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffacb2d15-0cd0-400d-90c7-06b81232d997_574x264.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><a href="https://github.com/openjdk/jdk/blob/63c1cb3ad1cc3be22fd8b401894acf37683dad67/src/hotspot/share/runtime/os.cpp#L1918">https://github.com/openjdk/jdk/blob/63c1cb3ad1cc3be22fd8b401894acf37683dad67/src/hotspot/share/runtime/os.cpp#L1918</a></figcaption></figure></div><p>The default choice may work well, but that does not mean it is optimal for your system.</p><div><hr></div><h2>What About Microservices?</h2><p>If you are running microservices, especially in containers, memory configuration becomes critical.</p><p>Many teams experience memory issues because they rely on defaults without understanding how the JVM behaves inside Kubernetes or Docker.</p><p>In many microservice scenarios, <strong>G1 GC</strong> is a solid and balanced choice. It provides good throughput and predictable pause times.</p><p>You can configure it explicitly, for example:</p><pre><code>-XX:+UseG1GC
-XX:MaxRAMPercentage=75
-XX:InitialRAMPercentage=75</code></pre><p>Heap sizing and RAM percentage tuning can make a big difference in container environments.</p><div><hr></div><h2>Learn More</h2><p>If you want to understand how Java behaves in containers, I recommend these articles: </p><ul><li><p><a href="https://learn.microsoft.com/en-us/azure/developer/java/containers/overview">https://learn.microsoft.com/en-us/azure/developer/java/containers/overview</a></p></li><li><p><a href="https://docs.oracle.com/en/java/javase/21/gctuning/ergonomics.html">https://docs.oracle.com/en/java/javase/21/gctuning/ergonomics.html</a></p></li></ul><p>And also this great talk by Bruno Borges: <strong><a href="https://www.youtube.com/watch?v=UtFQ7mMb7ZA">Secrets of Performance Tuning Java on Kubernetes</a></strong></p><div><hr></div><h2>Final Thought</h2><p>The Garbage Collector is not just an internal JVM detail. It directly affects performance, latency, and stability.</p><p>Don&#8217;t just use the default.</p><p>Understand your workload.<br>Test different configurations.<br>Measure the impact.</p><p>Performance tuning starts with awareness.</p><p></p>]]></content:encoded></item><item><title><![CDATA[Java 26 Released: Get Up to Date with What’s New]]></title><description><![CDATA[Hello!]]></description><link>https://devjava.substack.com/p/java-26-released-get-up-to-date-with</link><guid isPermaLink="false">https://devjava.substack.com/p/java-26-released-get-up-to-date-with</guid><dc:creator><![CDATA[Thiago Bomfim]]></dc:creator><pubDate>Sun, 22 Mar 2026 09:10:12 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!YfPt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F519c2640-b6e0-4d46-90b9-e65d7a06d1fa_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YfPt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F519c2640-b6e0-4d46-90b9-e65d7a06d1fa_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YfPt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F519c2640-b6e0-4d46-90b9-e65d7a06d1fa_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!YfPt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F519c2640-b6e0-4d46-90b9-e65d7a06d1fa_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!YfPt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F519c2640-b6e0-4d46-90b9-e65d7a06d1fa_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!YfPt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F519c2640-b6e0-4d46-90b9-e65d7a06d1fa_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YfPt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F519c2640-b6e0-4d46-90b9-e65d7a06d1fa_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/519c2640-b6e0-4d46-90b9-e65d7a06d1fa_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2106143,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://devjava.substack.com/i/191413107?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F519c2640-b6e0-4d46-90b9-e65d7a06d1fa_1024x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!YfPt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F519c2640-b6e0-4d46-90b9-e65d7a06d1fa_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!YfPt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F519c2640-b6e0-4d46-90b9-e65d7a06d1fa_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!YfPt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F519c2640-b6e0-4d46-90b9-e65d7a06d1fa_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!YfPt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F519c2640-b6e0-4d46-90b9-e65d7a06d1fa_1024x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Hello! Java <strong>26</strong> was officially released this week, on <strong>March 17, 2026</strong> &#128640;</p><p>A few weeks ago, I shared a preview of this version. If you want to revisit it, you can check it here:</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;f929a6bb-7b1e-4f0d-a4f5-d0ac87a2c780&quot;,&quot;caption&quot;:&quot;Java 26 is getting closer and is scheduled to be released in March 2026.&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Staying Ahead: Key Highlights from Java 26&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:69209621,&quot;name&quot;:&quot;Thiago Bomfim&quot;,&quot;bio&quot;:&quot;I help Java backend developers design better applications, increase their productivity, and become high-performance, confident engineers, so they can deliver better solutions, unlock better career opportunities, and gain more time for what matters&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f05e9ccf-2436-4fe5-90a1-c40691990c81_256x256.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-02-22T09:10:31.618Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!f21k!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3433a86-404e-4355-8a5c-2d53e24d4a07_1024x1536.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://devjava.substack.com/p/staying-ahead-key-highlights-from&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:186665625,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:1,&quot;comment_count&quot;:2,&quot;publication_id&quot;:1988540,&quot;publication_name&quot;:&quot;High-Level Developer&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!E170!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1afba9fe-52a1-423b-b5a1-05f3da32b2ba_1024x1024.png&quot;,&quot;belowTheFold&quot;:false,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>I also created a GitHub repository with examples of some of the new features. Feel free to explore it if you want to try things out in practice.</p><h2><strong>Want to Learn More?</strong></h2><p>If you want a deeper understanding of what Java 26 brings, I highly recommend the videos by <strong>Billy Korando</strong>.</p><p>Depending on how much time you have:</p><ul><li><p>&#9201; <strong>No time?</strong><br><a href="https://www.youtube.com/watch?v=1ERvyBqPihs">Java 26 in definitely UNDER 3 minutes</a></p></li><li><p>&#9203; <strong>A bit of time?</strong><br><a href="https://www.youtube.com/watch?v=njfzpKH4K2A">Unboxing Java 26 for Developers - Inside Java Newscast #108</a></p></li><li><p>&#128197; <strong>More time available?</strong><br><a href="https://www.youtube.com/watch?v=3fLCOqpIfI0">Java for an AI World - JavaOne Keynote</a></p></li></ul><p>This last one is especially worth watching. It&#8217;s the keynote from <strong>JavaOne</strong>, one of the biggest Java events in the world, and it gives great insights into the future of Java.</p><h2><strong>Conclusion</strong></h2><p>Java 26 brings several interesting updates, and even if you don&#8217;t plan to use it in production yet, it&#8217;s worth staying up to date.</p><p>&#128073; If you enjoy this kind of content, subscribe to stay updated with Java news and insights &#128640;</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://devjava.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading High-Level Developer! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[Book Review: Working Effectively With Legacy Code ]]></title><description><![CDATA[Working Effectively with Legacy Code (Robert C.]]></description><link>https://devjava.substack.com/p/book-review-working-effectively-with</link><guid isPermaLink="false">https://devjava.substack.com/p/book-review-working-effectively-with</guid><dc:creator><![CDATA[Thiago Bomfim]]></dc:creator><pubDate>Sun, 15 Mar 2026 09:10:39 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!arWc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F611cf9e6-fd6c-4fea-bacc-a5f61076688c_1131x1500.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!arWc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F611cf9e6-fd6c-4fea-bacc-a5f61076688c_1131x1500.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!arWc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F611cf9e6-fd6c-4fea-bacc-a5f61076688c_1131x1500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!arWc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F611cf9e6-fd6c-4fea-bacc-a5f61076688c_1131x1500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!arWc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F611cf9e6-fd6c-4fea-bacc-a5f61076688c_1131x1500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!arWc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F611cf9e6-fd6c-4fea-bacc-a5f61076688c_1131x1500.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!arWc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F611cf9e6-fd6c-4fea-bacc-a5f61076688c_1131x1500.jpeg" width="1131" height="1500" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/611cf9e6-fd6c-4fea-bacc-a5f61076688c_1131x1500.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1500,&quot;width&quot;:1131,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:163940,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://devjava.substack.com/i/189709367?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F611cf9e6-fd6c-4fea-bacc-a5f61076688c_1131x1500.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!arWc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F611cf9e6-fd6c-4fea-bacc-a5f61076688c_1131x1500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!arWc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F611cf9e6-fd6c-4fea-bacc-a5f61076688c_1131x1500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!arWc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F611cf9e6-fd6c-4fea-bacc-a5f61076688c_1131x1500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!arWc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F611cf9e6-fd6c-4fea-bacc-a5f61076688c_1131x1500.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em><a href="https://www.amazon.com/Working-Effectively-Legacy-Michael-Feathers/dp/0131177052">Working Effectively with Legacy Code</a></em><a href="https://www.amazon.com/Working-Effectively-Legacy-Michael-Feathers/dp/0131177052"> (Robert C. Martin Series)</a>, written by <strong>Michael Feathers</strong> in 2004, is not a new book, but it is still extremely relevant.</p><p>If you work with legacy systems, this book can save you time, reduce stress, and help you avoid serious problems.</p><h2><strong>What Can We Do with Code?</strong></h2><p>Michael Feathers explains that there are four types of changes we usually make in a system:</p><ul><li><p><strong>Bug fixes</strong></p></li><li><p><strong>Adding new features</strong></p></li><li><p><strong>Refactoring the code structure</strong></p></li><li><p><strong>Optimization</strong></p></li></ul><p>When fixing bugs, we adjust existing behavior.<br>When adding features, we introduce new behavior.<br>When refactoring, we change the internal structure of the code.<br>When optimizing, we improve resource usage, similar to refactoring, but focused on performance.</p><p>Refactoring and optimization must preserve the same behavior. If behavior changes unintentionally, we introduce bugs.</p><p>And this is where the real challenge begins: how can we modify legacy code safely?</p><h2>Two Ways to Change Code</h2><p>According to the book, there are two common approaches:</p><h3>Pray and Cover</h3><p>This is probably the most common approach. You make the change carefully, run manual tests, and hope nothing breaks.</p><p>It feels fast, but it is risky.</p><h3>Cover and Modify</h3><p>This is the safer approach. Before changing the code, you add tests that protect the current behavior. Then you modify the code with confidence.</p><p>This idea connects directly to one of the most powerful lessons in the book.</p><h2><strong>Two Powerful Lessons</strong></h2><p>Here are two key ideas from the book:</p><blockquote><p>&#8220;Dependency is one of the most critical problems in software development. Much legacy code work involves breaking dependencies so that change can be easier.&#8221;</p></blockquote><p>Much of legacy work is about breaking dependencies so that change becomes easier and safer.</p><blockquote><p>&#8220;Legacy code is simply code without tests.&#8221;</p></blockquote><p>This idea changes everything. Legacy is not about age, it is about safety. If code has no tests, modifying it becomes risky.</p><h2><strong>Conclusion</strong></h2><p>This book teaches practical techniques to safely modify legacy systems while minimizing the risk of introducing bugs. It shows why tests are essential and how to add them even when the code was not designed for testing.</p><p>If you work with legacy systems, this book is highly recommended.</p><p>And now I&#8217;m curious:<br>&#128218; <strong>What is one book that has helped you grow as a developer? Share it in the comments.</strong></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://devjava.substack.com/p/book-review-working-effectively-with/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://devjava.substack.com/p/book-review-working-effectively-with/comments"><span>Leave a comment</span></a></p><p>If you enjoyed this review, subscribe to the newsletter and share it with someone dealing with legacy code &#128640;</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://devjava.substack.com/p/book-review-working-effectively-with?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading High-Level Developer! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://devjava.substack.com/p/book-review-working-effectively-with?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://devjava.substack.com/p/book-review-working-effectively-with?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[Book Review: Essentialism — The Disciplined Pursuit of Less]]></title><description><![CDATA[It has been a while since I read Essentialism: The Disciplined Pursuit of Less by Greg McKeown.]]></description><link>https://devjava.substack.com/p/book-review-essentialism-the-disciplined</link><guid isPermaLink="false">https://devjava.substack.com/p/book-review-essentialism-the-disciplined</guid><dc:creator><![CDATA[Thiago Bomfim]]></dc:creator><pubDate>Sun, 08 Mar 2026 09:10:36 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!0BZQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d6571cb-5c37-4c87-8b17-d6ed8bcdd856_796x1200.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0BZQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d6571cb-5c37-4c87-8b17-d6ed8bcdd856_796x1200.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0BZQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d6571cb-5c37-4c87-8b17-d6ed8bcdd856_796x1200.jpeg 424w, https://substackcdn.com/image/fetch/$s_!0BZQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d6571cb-5c37-4c87-8b17-d6ed8bcdd856_796x1200.jpeg 848w, https://substackcdn.com/image/fetch/$s_!0BZQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d6571cb-5c37-4c87-8b17-d6ed8bcdd856_796x1200.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!0BZQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d6571cb-5c37-4c87-8b17-d6ed8bcdd856_796x1200.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0BZQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d6571cb-5c37-4c87-8b17-d6ed8bcdd856_796x1200.jpeg" width="796" height="1200" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2d6571cb-5c37-4c87-8b17-d6ed8bcdd856_796x1200.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1200,&quot;width&quot;:796,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:83244,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://devjava.substack.com/i/187849873?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d6571cb-5c37-4c87-8b17-d6ed8bcdd856_796x1200.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!0BZQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d6571cb-5c37-4c87-8b17-d6ed8bcdd856_796x1200.jpeg 424w, https://substackcdn.com/image/fetch/$s_!0BZQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d6571cb-5c37-4c87-8b17-d6ed8bcdd856_796x1200.jpeg 848w, https://substackcdn.com/image/fetch/$s_!0BZQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d6571cb-5c37-4c87-8b17-d6ed8bcdd856_796x1200.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!0BZQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d6571cb-5c37-4c87-8b17-d6ed8bcdd856_796x1200.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>It has been a while since I read <em><a href="https://www.amazon.com/Essentialism-Disciplined-Pursuit-Greg-McKeown/dp/0804137382">Essentialism: The Disciplined Pursuit of Less</a></em> by Greg McKeown. Recently, I revisited my notes and decided to share some key ideas &#8212; because this book can truly change how you think about work and life.</p><p>At its core, Essentialism is simple:</p><blockquote><p>&#8220;The wisdom of life consists in eliminating what is non-essential.&#8221; </p><p>&#8212; Lin Yutang</p></blockquote><p>Being an essentialist means focusing on <strong>less, but better</strong>.<br>It means choosing what really matters instead of trying to do everything.</p><div><hr></div><h2>The Problem: We Try to Do Too Much</h2><p>The book challenges three common beliefs:</p><ul><li><p>&#8220;I have to do it.&#8221;</p></li><li><p>&#8220;Everything is important.&#8221;</p></li><li><p>&#8220;I can do both.&#8221;</p></li></ul><p>Essentialism replaces them with:</p><ul><li><p>&#8220;I choose to do it.&#8221;</p></li><li><p>&#8220;Only a few things truly matter.&#8221;</p></li><li><p><strong>&#8220;I can do anything, but not everything.&#8221;</strong></p></li></ul><p>If you feel overwhelmed, busy but not productive, or constantly moving without progress, this book speaks directly to you.</p><blockquote><p>&#8220;If we don&#8217;t prioritize our life, someone else will.&#8221;</p></blockquote><div><hr></div><h2>The Paradox of Success</h2><p>One powerful idea in the book is the <strong>paradox of success</strong>:</p><ol><li><p>We succeed because we are clear about our purpose.</p></li><li><p>Success brings more opportunities.</p></li><li><p>More opportunities create overload.</p></li><li><p>Overload destroys the clarity that made us successful.</p></li></ol><p>Micro-managing everything does not scale. Focus does.</p><div><hr></div><h2>Essentialism in Practice</h2><p>The path of the essentialist has three steps:</p><h3>1. Explore</h3><p>Ask yourself:<br><em>Which activity makes the highest contribution to my goal?</em></p><blockquote><p>&#8220;Where is the wisdom we have lost in knowledge?&#8221; </p><p>&#8212; T. S. Eliot</p></blockquote><p>Exploration requires space to think. Jeff Weiner (former LinkedIn CEO) blocks time in his calendar just to reflect. Thinking is not a luxury &#8212; it is strategy.</p><h3>2. Eliminate</h3><p>Saying no is one of the most important skills.</p><blockquote><p>&#8220;Half the troubles of this life can be traced to saying yes too quickly and not saying no soon enough.&#8221; </p><p>&#8212; Josh Billings</p></blockquote><p>A clear &#8220;no&#8221; is often kinder than a vague &#8220;maybe.&#8221;<br>Essentialists do not say yes to everything. They say yes to what truly matters.</p><h3>3. Execute</h3><p>Execution in Essentialism is not about moving faster. It is about preparing better.</p><blockquote><p>&#8220;Give me six hours to chop down a tree and I will spend the first four sharpening the axe.&#8221;<br>&#8212; Abraham Lincoln</p></blockquote><p>Preparation is not a waste of time, it is what makes execution easier.</p><p>The author talks about <strong>comprehensive preparation</strong>. When he was studying at Stanford, he planned the entire semester as soon as he received the syllabus. He identified major projects early and started working on them immediately. That small investment reduced stress for months. Even when unexpected events happened, he had enough margin to adapt.</p><p>Two practical lessons:</p><ul><li><p><strong>Use comprehensive preparation.</strong> Plan ahead and give yourself margin for error. The future is uncertain, but preparation gives you control.</p></li><li><p><strong>Add 50% to your estimated time.</strong> Most people underestimate how long tasks take. Adding extra time reduces pressure and increases quality.</p></li></ul><div><hr></div><h2>Final Thought</h2><blockquote><p>&#8220;Strategy is about making choices; it&#8217;s about deliberately choosing to be different&#8221; </p><p>&#8212; Michael Porter</p></blockquote><p>The best outcome you can have from this book is to apply this rule:</p><p>When facing a decision, ask yourself: <strong>&#8220;What is essential?&#8221;<br></strong>Answer honestly and eliminate the rest.</p><p>If this reflection helped you, subscribe to the newsletter and share it with someone who feels overwhelmed. Sometimes the real growth starts by doing less. &#128640;</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://devjava.substack.com/p/book-review-essentialism-the-disciplined?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading High-Level Developer! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://devjava.substack.com/p/book-review-essentialism-the-disciplined?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://devjava.substack.com/p/book-review-essentialism-the-disciplined?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div><p></p>]]></content:encoded></item><item><title><![CDATA[Book Review: Microservices Up & Running]]></title><description><![CDATA[A Step-by-Step Guide to Building a Microservices Architecture]]></description><link>https://devjava.substack.com/p/book-review-microservices-up-and</link><guid isPermaLink="false">https://devjava.substack.com/p/book-review-microservices-up-and</guid><dc:creator><![CDATA[Thiago Bomfim]]></dc:creator><pubDate>Sun, 01 Mar 2026 09:10:26 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!qpCk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac5b2e22-276f-4f6a-b469-d7c616ba7786_1143x1500.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qpCk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac5b2e22-276f-4f6a-b469-d7c616ba7786_1143x1500.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qpCk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac5b2e22-276f-4f6a-b469-d7c616ba7786_1143x1500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!qpCk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac5b2e22-276f-4f6a-b469-d7c616ba7786_1143x1500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!qpCk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac5b2e22-276f-4f6a-b469-d7c616ba7786_1143x1500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!qpCk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac5b2e22-276f-4f6a-b469-d7c616ba7786_1143x1500.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qpCk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac5b2e22-276f-4f6a-b469-d7c616ba7786_1143x1500.jpeg" width="1143" height="1500" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ac5b2e22-276f-4f6a-b469-d7c616ba7786_1143x1500.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1500,&quot;width&quot;:1143,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:145072,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://devjava.substack.com/i/187848016?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac5b2e22-276f-4f6a-b469-d7c616ba7786_1143x1500.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!qpCk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac5b2e22-276f-4f6a-b469-d7c616ba7786_1143x1500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!qpCk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac5b2e22-276f-4f6a-b469-d7c616ba7786_1143x1500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!qpCk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac5b2e22-276f-4f6a-b469-d7c616ba7786_1143x1500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!qpCk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac5b2e22-276f-4f6a-b469-d7c616ba7786_1143x1500.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The book <em><a href="https://www.amazon.com.br/Microservices-Step-Step-Microservice-Architecture/dp/1492075450">Microservices Up &amp; Running: A Step-by-Step Guide to Building a Microservices Architecture</a></em> is a practical book for developers working with microservices or planning to migrate from a monolith.</p><p>The book starts by explaining what microservices really are, not just small services, but systems organized around business responsibilities. The authors discuss <strong>Domain-Driven Design (DDD)</strong>, <strong>Event Storming</strong>, and how team structure influences architecture.</p><p>One important message from the book is:</p><blockquote><p><em>Microservices can make complex systems simpler, but they are not a silver bullet. Complexity is shifted, not magically removed.</em></p></blockquote><p>This is a key lesson. Microservices do not eliminate complexity, they redistribute it. That requires discipline and good design.</p><p>The book also covers:</p><ul><li><p>ACID and consistency in distributed systems</p></li><li><p>Event Sourcing and CQRS</p></li><li><p>Infrastructure with AWS, Terraform, and Kubernetes</p></li><li><p>CI/CD with GitHub Actions</p></li><li><p>Deployment strategies like Canary and Blue-Green</p></li></ul><p>Even though it is concise, the book touches on many essential subjects. If you are using microservices, or thinking about adopting them, understanding these concepts is an important step to avoid common struggles and truly benefit from this architecture style.</p><p>This book is realistic and practical. It explains both the technical and organizational sides of microservices.</p><p>If you are designing distributed systems or moving from a monolith, this is a valuable read.</p><p>If you enjoyed this review, <strong>subscribe to the newsletter</strong> and share it with someone working on microservices &#128640;</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://devjava.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://devjava.substack.com/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[Staying Ahead: Key Highlights from Java 26]]></title><description><![CDATA[Java 26 is getting closer and is scheduled to be released in March 2026.]]></description><link>https://devjava.substack.com/p/staying-ahead-key-highlights-from</link><guid isPermaLink="false">https://devjava.substack.com/p/staying-ahead-key-highlights-from</guid><dc:creator><![CDATA[Thiago Bomfim]]></dc:creator><pubDate>Sun, 22 Feb 2026 09:10:31 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!f21k!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3433a86-404e-4355-8a5c-2d53e24d4a07_1024x1536.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!f21k!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3433a86-404e-4355-8a5c-2d53e24d4a07_1024x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!f21k!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3433a86-404e-4355-8a5c-2d53e24d4a07_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!f21k!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3433a86-404e-4355-8a5c-2d53e24d4a07_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!f21k!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3433a86-404e-4355-8a5c-2d53e24d4a07_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!f21k!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3433a86-404e-4355-8a5c-2d53e24d4a07_1024x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!f21k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3433a86-404e-4355-8a5c-2d53e24d4a07_1024x1536.png" width="1024" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a3433a86-404e-4355-8a5c-2d53e24d4a07_1024x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3062175,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://devjava.substack.com/i/186665625?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3433a86-404e-4355-8a5c-2d53e24d4a07_1024x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!f21k!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3433a86-404e-4355-8a5c-2d53e24d4a07_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!f21k!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3433a86-404e-4355-8a5c-2d53e24d4a07_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!f21k!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3433a86-404e-4355-8a5c-2d53e24d4a07_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!f21k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3433a86-404e-4355-8a5c-2d53e24d4a07_1024x1536.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Java <strong>26</strong> is getting closer and is scheduled to be released in <strong>March 2026</strong>.<br>You can already access <strong>Early Access</strong> builds and start experimenting with the new features.</p><p>Java 26 will probably not be used by many projects in production, since most vendors will not support it as an LTS release, the next LTS target will be Java 29.</p><p>Even so, staying updated with non-LTS releases is important, because it helps you prepare and benefit more when the next LTS becomes available.</p><p>Let&#8217;s take a look at what&#8217;s new in Java 26.</p><h2><strong>What&#8217;s New in Java 26</strong></h2><p>Java 26 includes the following JEPs:</p><ul><li><p><strong>JEP 500</strong> &#8211; Prepare to Make Final Mean Final</p></li><li><p><strong>JEP 504</strong> &#8211; Remove the Applet API</p></li><li><p><strong>JEP 516</strong> &#8211; Ahead-of-Time Object Caching with Any GC</p></li><li><p><strong>JEP 517</strong> &#8211; HTTP/3 for the HTTP Client API</p></li><li><p><strong>JEP 522</strong> &#8211; G1 GC: Improve Throughput by Reducing Synchronization</p></li><li><p><strong>JEP 524</strong> &#8211; PEM Encodings of Cryptographic Objects (Second Preview)</p></li><li><p><strong>JEP 525</strong> &#8211; Structured Concurrency (Sixth Preview)</p></li><li><p><strong>JEP 526</strong> &#8211; Lazy Constants (Second Preview)</p></li><li><p><strong>JEP 529</strong> &#8211; Vector API (Eleventh Incubator)</p></li><li><p><strong>JEP 530</strong> &#8211; Primitive Types in Patterns, instanceof, and switch (Fourth Preview)</p></li></ul><p>As you can see, Java 26 brings some improvements in <strong>garbage collection and performance</strong>. The Applet API is finally gone &#128546;, but we&#8217;ll skip that topic for now. Instead, let&#8217;s focus on two updates that are especially interesting: <strong>JEP 526</strong> and <strong>JEP 525</strong>.</p><h3>JEP 526: Lazy Constants (Second Preview)</h3><p>Lazy Constants allow you to initialize constants <strong>only when they are actually used</strong>, instead of during class loading. This can help reduce startup time and avoid unnecessary initialization.</p><pre><code><code>public class LazyConstantExample {

    private static final LazyConstant&lt;LazyClass&gt; lazyClass = LazyConstant.of(() -&gt; new LazyClass());

    public static void main(String[] args) {
        System.out.println(&#8221;Initialize&#8221;);
        lazyClass.get().printClassName();
        System.out.println(&#8221;End&#8221;);
    }

    private static class LazyClass {

        LazyClass() {
            System.out.println(&#8221;LazyClass created&#8221;);
        }

        public void printClassName() {
            System.out.println(this.getClass().getName());
        }
    }
}</code></code></pre><p>The output from this class is:</p><pre><code>Initialize
LazyClass created
com.bomfim.java26.LazyConstantExample$LazyClass
End</code></pre><p>As shown, the class is created only when <code>get()</code> is called.</p><h3><strong>JEP 525: Structured Concurrency (Sixth Preview)</strong></h3><p>Structured Concurrency is still evolving, and I wanted to mention it here because I&#8217;ve already written about this topic before here:</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;b9ad09a5-016a-4b76-b085-717841936784&quot;,&quot;caption&quot;:&quot;Structured Concurrency scopes give you a clean way to run multiple subtasks and then join them with a clear policy. That policy is defined by a Joiner.&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Structured Concurrency &#8212; Joiners&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:69209621,&quot;name&quot;:&quot;Thiago Bomfim&quot;,&quot;bio&quot;:&quot;I help Java backend developers design better applications, increase their productivity, and become high-performance, confident engineers, so they can deliver better solutions, unlock better career opportunities, and gain more time for what matters&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f05e9ccf-2436-4fe5-90a1-c40691990c81_256x256.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-11-30T09:10:05.516Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!wcDX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F578458d0-bddb-4cb2-a948-1781416c9d64_1024x1024.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://devjava.substack.com/p/structured-concurrency-joiners&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:179051239,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:2,&quot;comment_count&quot;:0,&quot;publication_id&quot;:1988540,&quot;publication_name&quot;:&quot;High-Level Developer&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!E170!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1afba9fe-52a1-423b-b5a1-05f3da32b2ba_1024x1024.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>That said, the API has changed a bit in Java 26, and yes, there are <strong>breaking changes</strong> &#128562;</p><p>But don&#8217;t worry, breaking changes are expected for <strong>preview features</strong>. This is exactly why you should be careful when using them in production.</p><p>The changes are not huge, mostly renaming and small adjustments. However if you followed my previous article on Structured Concurrency, that code will no longer work as-is.</p><p>Once this feature becomes stable, I&#8217;ll share an updated guide showing how to use it properly and how you can take advantage of it.</p><p>So feel free to subscribe to stay up to date with the latest Java news.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://devjava.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading High-Level Developer! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>If you want to access the code, you can check it out here: <a href="https://github.com/ThiagoBfim/java-news">https://github.com/ThiagoBfim/java-news</a></p><p>For more details about Java 26, I recommend taking a look at the official documentation: <a href="https://openjdk.org/projects/jdk/26/">https://openjdk.org/projects/jdk/26/</a></p><p></p>]]></content:encoded></item><item><title><![CDATA[Book Review: Developer Career Masterplan ]]></title><description><![CDATA[Build your path to senior level and beyond with practical insights from industry experts]]></description><link>https://devjava.substack.com/p/book-review-developer-career-masterplan</link><guid isPermaLink="false">https://devjava.substack.com/p/book-review-developer-career-masterplan</guid><dc:creator><![CDATA[Thiago Bomfim]]></dc:creator><pubDate>Sun, 15 Feb 2026 09:10:18 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!L2SJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb5bb274-51d8-4e23-b3cd-e2a53e124c09_1103x1360.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!L2SJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb5bb274-51d8-4e23-b3cd-e2a53e124c09_1103x1360.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!L2SJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb5bb274-51d8-4e23-b3cd-e2a53e124c09_1103x1360.jpeg 424w, https://substackcdn.com/image/fetch/$s_!L2SJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb5bb274-51d8-4e23-b3cd-e2a53e124c09_1103x1360.jpeg 848w, https://substackcdn.com/image/fetch/$s_!L2SJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb5bb274-51d8-4e23-b3cd-e2a53e124c09_1103x1360.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!L2SJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb5bb274-51d8-4e23-b3cd-e2a53e124c09_1103x1360.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!L2SJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb5bb274-51d8-4e23-b3cd-e2a53e124c09_1103x1360.jpeg" width="1103" height="1360" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bb5bb274-51d8-4e23-b3cd-e2a53e124c09_1103x1360.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1360,&quot;width&quot;:1103,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:114511,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://devjava.substack.com/i/185744564?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb5bb274-51d8-4e23-b3cd-e2a53e124c09_1103x1360.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!L2SJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb5bb274-51d8-4e23-b3cd-e2a53e124c09_1103x1360.jpeg 424w, https://substackcdn.com/image/fetch/$s_!L2SJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb5bb274-51d8-4e23-b3cd-e2a53e124c09_1103x1360.jpeg 848w, https://substackcdn.com/image/fetch/$s_!L2SJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb5bb274-51d8-4e23-b3cd-e2a53e124c09_1103x1360.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!L2SJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb5bb274-51d8-4e23-b3cd-e2a53e124c09_1103x1360.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em><a href="https://www.amazon.com/Developer-Career-Masterplan-practical-insights-ebook/dp/B0CFLBHZXZ">Developer Career Masterplan: Build Your Path to Senior Level and Beyond with Practical Insights from Industry Experts</a></em>, written by <strong>Bruno Souza</strong> and <strong>Heather Vancura</strong>, is one of the best career-focused books I&#8217;ve read.</p><p>This book is not about code, frameworks, or tools. It&#8217;s about <strong>building a sustainable and intentional career in software development</strong>, from junior to senior and beyond.</p><h2><strong>What the Book Is About</strong></h2><p>The authors share practical lessons that help developers grow professionally, such as:</p><ul><li><p>Getting out of your comfort zone</p></li><li><p>Building and maintaining a strong network</p></li><li><p>Developing soft skills</p></li><li><p>Participating in communities</p></li><li><p>Mentoring and being mentored</p></li><li><p>Taking ownership of your career path</p></li></ul><p>It&#8217;s a great read for developers who want more than just technical growth.</p><h2><strong>What Makes This Book Stand Out</strong></h2><p>One of the strongest points of this book is the <strong>interviews with industry professionals</strong>.<br>Through different perspectives, the book explores real experiences, challenges, and lessons learned across various career paths.</p><h2><strong>The Most Important Lesson (In My Opinion)</strong></h2><p>If I had to highlight one key message, it would be this:</p><p>&#128073; <strong>Be part of a community. Participate. Be visible.</strong></p><p>You grow faster when you:</p><ul><li><p>Share what you know</p></li><li><p>Share what you are learning</p></li><li><p>Help others whenever you can</p></li></ul><p>You don&#8217;t need to be an expert to contribute. Visibility comes from <strong>consistency and being a giver</strong>, not perfection.</p><h2><strong>Conclusion</strong></h2><p><em>Developer Career Masterplan</em> is a must-read for anyone who wants to take control of their career in IT. It reminds us that technical skills matter, but <strong>people, communication, and community matter just as much</strong>.</p><p>If this review helped you, <strong>subscribe to the newsletter</strong> and share it with someone who wants to grow their developer career &#128640;</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://devjava.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://devjava.substack.com/subscribe?"><span>Subscribe now</span></a></p><p><br></p><p><br><br><br><br></p>]]></content:encoded></item><item><title><![CDATA[5 Lessons from the Book Forever Strong]]></title><description><![CDATA[Recently, I read Forever Strong: A New, Science-Based Strategy for Aging Well by Dr.]]></description><link>https://devjava.substack.com/p/5-lessons-from-the-book-forever-strong</link><guid isPermaLink="false">https://devjava.substack.com/p/5-lessons-from-the-book-forever-strong</guid><dc:creator><![CDATA[Thiago Bomfim]]></dc:creator><pubDate>Sun, 08 Feb 2026 09:10:47 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!jwaX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1f329ee-8d0e-41cd-b5a8-40316b9efd95_988x1500.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jwaX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1f329ee-8d0e-41cd-b5a8-40316b9efd95_988x1500.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jwaX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1f329ee-8d0e-41cd-b5a8-40316b9efd95_988x1500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!jwaX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1f329ee-8d0e-41cd-b5a8-40316b9efd95_988x1500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!jwaX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1f329ee-8d0e-41cd-b5a8-40316b9efd95_988x1500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!jwaX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1f329ee-8d0e-41cd-b5a8-40316b9efd95_988x1500.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jwaX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1f329ee-8d0e-41cd-b5a8-40316b9efd95_988x1500.jpeg" width="988" height="1500" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d1f329ee-8d0e-41cd-b5a8-40316b9efd95_988x1500.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1500,&quot;width&quot;:988,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:283602,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://devjava.substack.com/i/183959657?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1f329ee-8d0e-41cd-b5a8-40316b9efd95_988x1500.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jwaX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1f329ee-8d0e-41cd-b5a8-40316b9efd95_988x1500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!jwaX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1f329ee-8d0e-41cd-b5a8-40316b9efd95_988x1500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!jwaX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1f329ee-8d0e-41cd-b5a8-40316b9efd95_988x1500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!jwaX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1f329ee-8d0e-41cd-b5a8-40316b9efd95_988x1500.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Recently, I read <strong><a href="https://www.amazon.com.br/Forever-Strong-Science-Based-Strategy-Aging/dp/1668007878">Forever Strong: A New, Science-Based Strategy for Aging Well</a></strong> by Dr. Gabrielle Lyon.<br>This book is especially valuable for people who are not in good physical shape or physically active.</p><p>Most developers spend long hours sitting in front of a computer. Over time, this affects not only our bodies, but also our <strong>energy, focus, and productivity</strong>. Strength training and healthy eating are essential for a more vital life.</p><p>The book shares <strong>five fundamental attributes</strong> that apply not only to fitness, but also to career growth, and life in general. To become healthier or better at your job, the first step is changing your <strong>mindset</strong>. </p><h3><strong>1. Be Brave</strong></h3><p>Being brave is your best defence against unexpected changes.</p><p>Life and career will force you into uncomfortable situations. Instead of holding on to excuses about your past or present, bravery means facing problems directly and moving forward, even when it&#8217;s hard.</p><p>Growth always starts outside your comfort zone.</p><h3><strong>2. Perseverance</strong></h3><p>Perseverance is the ability to keep going despite difficulties or delayed rewards.</p><p>You will fail. Probably many times.<br>What matters is your willingness to get up again.</p><p>Patience and self-compassion are essential. Perseverance works quietly, but over time, it creates real change.</p><h3><strong>3. Self-Discipline</strong></h3><p>Discipline imposed from outside is limited. Self-discipline comes from internal control.</p><p>The best way to improve self-discipline is to <strong>plan for your weaknesses</strong>. Don&#8217;t rely on motivation alone; design your environment and routine, so the right choice becomes the easy one.</p><h3><strong>4. Adaptability</strong></h3><p>Perfectionism is a trap, especially when it comes to health and long-term plans.</p><p>Adaptability is your best ally.<br>When the unexpected breaks your routine, commit to finding <strong>solutions instead of excuses</strong>. Adjust the plan, but don&#8217;t abandon it.</p><h3><strong>5. Resilience</strong></h3><p>Resilience is the ability to return to balance after a setback.</p><p>Unexpected events can break routines, delay goals, and trigger negative thoughts. Resilience means regaining emotional strength, refocusing, and continuing, without letting temporary failures define you.</p><h2><strong>Conclusion</strong></h2><p><em>Forever Strong</em> is not just about muscles, it&#8217;s about building a mindset that supports long-term success. These five attributes apply equally to health, career, and personal growth.</p><p><br>Small habits, repeated consistently, create strong people &#128170;</p>]]></content:encoded></item><item><title><![CDATA[Mastering API Architecture — My personal Review]]></title><description><![CDATA[Understanding the &#8220;why&#8221; makes every technical decision better]]></description><link>https://devjava.substack.com/p/mastering-api-architecture-my-personal</link><guid isPermaLink="false">https://devjava.substack.com/p/mastering-api-architecture-my-personal</guid><dc:creator><![CDATA[Thiago Bomfim]]></dc:creator><pubDate>Sun, 01 Feb 2026 09:10:17 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!zq_l!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0aaf8b92-49de-43cd-8ea6-9b008b131652_1143x1500.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zq_l!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0aaf8b92-49de-43cd-8ea6-9b008b131652_1143x1500.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zq_l!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0aaf8b92-49de-43cd-8ea6-9b008b131652_1143x1500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!zq_l!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0aaf8b92-49de-43cd-8ea6-9b008b131652_1143x1500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!zq_l!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0aaf8b92-49de-43cd-8ea6-9b008b131652_1143x1500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!zq_l!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0aaf8b92-49de-43cd-8ea6-9b008b131652_1143x1500.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zq_l!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0aaf8b92-49de-43cd-8ea6-9b008b131652_1143x1500.jpeg" width="1143" height="1500" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0aaf8b92-49de-43cd-8ea6-9b008b131652_1143x1500.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1500,&quot;width&quot;:1143,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:153371,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://devjava.substack.com/i/183455089?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0aaf8b92-49de-43cd-8ea6-9b008b131652_1143x1500.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zq_l!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0aaf8b92-49de-43cd-8ea6-9b008b131652_1143x1500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!zq_l!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0aaf8b92-49de-43cd-8ea6-9b008b131652_1143x1500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!zq_l!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0aaf8b92-49de-43cd-8ea6-9b008b131652_1143x1500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!zq_l!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0aaf8b92-49de-43cd-8ea6-9b008b131652_1143x1500.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>Mastering API Architecture</em> approaches REST and API design from a <strong>theoretical and architectural perspective</strong>. Instead of focusing on implementation details, it explains <strong>how and why</strong> API-based systems should be designed, operated, and evolved.</p><p>The book covers topics such as:</p><ul><li><p>REST principles and architectural trade-offs</p></li><li><p>Testing strategies</p></li><li><p>API Gateways and Service Mesh</p></li><li><p>Security considerations</p></li><li><p>Deployment and evolution patterns</p></li></ul><p>It is recommended for <strong>senior developers, architects, and tech leads</strong>. Mid-level engineers can also benefit, especially those who want to deepen their architectural understanding.</p><div><hr></div><h3><strong>What Makes This Book Different</strong></h3><p>This is <strong>not</strong> a step-by-step or beginner-friendly guide.<br>Although it includes examples and a journey from a monolith to a cloud-based system, the focus is not on &#8220;how to code&#8221;, but on <strong>decision-making</strong>.</p><p>The authors rely heavily on:</p><ul><li><p><strong>Architectural Decision Records (ADRs)</strong></p></li><li><p>Clear explanations of trade-offs</p></li><li><p>Long-term API evolution strategies</p></li></ul><p>This makes the book especially valuable for professionals responsible for <strong>API stability, governance, and growth</strong>.</p><div><hr></div><h3><strong>Book Details</strong></h3><ul><li><p><strong>Title:</strong> <a href="https://www.amazon.com/Mastering-API-Architecture-Operate-API-Based/dp/1492090638">Mastering API Architecture: Design, Operate, and Evolve API-Based Systems</a></p></li><li><p><strong>Authors:</strong> James Gough, Daniel Bryant, Matthew Auburn</p></li><li><p><strong>Published:</strong> 2022</p></li><li><p><strong>Pages:</strong> 286</p></li></ul><div><hr></div><h3><strong>Conclusion</strong></h3><p>If you want to improve how you <strong>think</strong> about API architecture, this book is an excellent choice. It helps you understand trade-offs and make better decisions when evolving APIs, skills that truly matter at senior levels.</p><p>&#128073; <strong>If this review helped you, subscribe to the newsletter and share it with someone who designs APIs.</strong><br>More content like this is coming every week &#128640;<br></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://devjava.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://devjava.substack.com/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[Spring Framework 7.0 and Spring Boot 4.0]]></title><description><![CDATA[Consistency in upgrades keeps your platform secure, supported, and ready for what&#8217;s next]]></description><link>https://devjava.substack.com/p/spring-framework-70-and-spring-boot</link><guid isPermaLink="false">https://devjava.substack.com/p/spring-framework-70-and-spring-boot</guid><dc:creator><![CDATA[Thiago Bomfim]]></dc:creator><pubDate>Sun, 25 Jan 2026 09:10:29 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Zhvp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61486d85-ebfd-4072-8e38-113275759098_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Zhvp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61486d85-ebfd-4072-8e38-113275759098_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Zhvp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61486d85-ebfd-4072-8e38-113275759098_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!Zhvp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61486d85-ebfd-4072-8e38-113275759098_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!Zhvp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61486d85-ebfd-4072-8e38-113275759098_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!Zhvp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61486d85-ebfd-4072-8e38-113275759098_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Zhvp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61486d85-ebfd-4072-8e38-113275759098_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/61486d85-ebfd-4072-8e38-113275759098_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2349584,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://devjava.substack.com/i/181517469?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61486d85-ebfd-4072-8e38-113275759098_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Zhvp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61486d85-ebfd-4072-8e38-113275759098_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!Zhvp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61486d85-ebfd-4072-8e38-113275759098_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!Zhvp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61486d85-ebfd-4072-8e38-113275759098_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!Zhvp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61486d85-ebfd-4072-8e38-113275759098_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Spring Boot 4.0</strong> was released on <strong>November 20, 2025</strong>, built on top of <strong>Spring Framework 7.0</strong>.<br>After almost three years since Spring Boot 3 (late 2022), this new major release brings important improvements and new features across the platform.</p><h2><strong>Support status: why this matters</strong></h2><p>Looking at the current support timeline:</p><ul><li><p><strong>Spring Boot 3.4</strong> &#8594; <strong>OSS support has ended</strong></p></li><li><p><strong>Spring Boot 3.5</strong> &#8594; <strong>short OSS support</strong>, ending on <strong>30 Jun 2026</strong></p></li><li><p><strong>Spring Boot 4.0</strong> &#8594; <strong>nearly one year of OSS support</strong> (until <strong>31 Dec 2026</strong>) and a longer commercial window</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Joqi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1ee4094-c175-48a7-9f54-b85af0e3305f_730x310.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Joqi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1ee4094-c175-48a7-9f54-b85af0e3305f_730x310.png 424w, https://substackcdn.com/image/fetch/$s_!Joqi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1ee4094-c175-48a7-9f54-b85af0e3305f_730x310.png 848w, https://substackcdn.com/image/fetch/$s_!Joqi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1ee4094-c175-48a7-9f54-b85af0e3305f_730x310.png 1272w, https://substackcdn.com/image/fetch/$s_!Joqi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1ee4094-c175-48a7-9f54-b85af0e3305f_730x310.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Joqi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1ee4094-c175-48a7-9f54-b85af0e3305f_730x310.png" width="730" height="310" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d1ee4094-c175-48a7-9f54-b85af0e3305f_730x310.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:310,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:58894,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://devjava.substack.com/i/181517469?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1ee4094-c175-48a7-9f54-b85af0e3305f_730x310.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Joqi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1ee4094-c175-48a7-9f54-b85af0e3305f_730x310.png 424w, https://substackcdn.com/image/fetch/$s_!Joqi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1ee4094-c175-48a7-9f54-b85af0e3305f_730x310.png 848w, https://substackcdn.com/image/fetch/$s_!Joqi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1ee4094-c175-48a7-9f54-b85af0e3305f_730x310.png 1272w, https://substackcdn.com/image/fetch/$s_!Joqi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1ee4094-c175-48a7-9f54-b85af0e3305f_730x310.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">https://endoflife.date/spring-boot</figcaption></figure></div><p>If you&#8217;re on 3.4, upgrading is no longer optional. If you&#8217;re on 3.5, the clock is ticking. Moving to <strong>4.0</strong> gives you <strong>more runway</strong> and access to the newest features built on Spring Framework 7.0.</p><h2><strong>What&#8217;s new?</strong></h2><p>Spring Boot 4.0 and Spring Framework 7.0 bring several enhancements. Here&#8217;s a practical overview of some of the highlights:</p><p>&#128073; <strong>Spring Framework 7.0 &#8211; API Versioning</strong></p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;0d02a675-c93a-4fb0-9e46-8f59b7456f6a&quot;,&quot;caption&quot;:&quot;Spring Framework 7.0, released on November 13, 2025, introduces several new features, and one of the most useful for API work is the new API versioning support.&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Spring Framework 7.0 - API Version &quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:69209621,&quot;name&quot;:&quot;Thiago Bomfim&quot;,&quot;bio&quot;:&quot;I help Java backend developers design better applications, increase their productivity, and become high-performance, confident engineers, so they can deliver better solutions, unlock better career opportunities, and gain more time for what matters&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f05e9ccf-2436-4fe5-90a1-c40691990c81_256x256.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-12-28T09:10:19.596Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!gfRD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4caaf577-2aa9-4268-b909-c10186179633_1536x1024.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://devjava.substack.com/p/spring-framework-70-api-version&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:178121654,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:2,&quot;comment_count&quot;:0,&quot;publication_id&quot;:1988540,&quot;publication_name&quot;:&quot;High-Level Developer&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!E170!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1afba9fe-52a1-423b-b5a1-05f3da32b2ba_1024x1024.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;6869a2d5-b3f5-46a3-af25-d6257b3ef524&quot;,&quot;caption&quot;:&quot;Spring Framework 7.0 introduces out-of-the-box resilience features, making it easier to protect your application against overload and instability. These features are part of the spring-context module and can be enabled with: @EnableResilientMethods&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Spring Framework 7.0 &#8212; Resilience Features &quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:69209621,&quot;name&quot;:&quot;Thiago Bomfim&quot;,&quot;bio&quot;:&quot;I help Java backend developers design better applications, increase their productivity, and become high-performance, confident engineers, so they can deliver better solutions, unlock better career opportunities, and gain more time for what matters&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f05e9ccf-2436-4fe5-90a1-c40691990c81_256x256.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-01-11T09:10:15.066Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!_GaR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8bc6fc9-631a-4b7e-bc5b-7e41a24f8f85_1024x1024.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://devjava.substack.com/p/spring-framework-70-resilience-features&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:178121686,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:1,&quot;comment_count&quot;:0,&quot;publication_id&quot;:1988540,&quot;publication_name&quot;:&quot;High-Level Developer&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!E170!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1afba9fe-52a1-423b-b5a1-05f3da32b2ba_1024x1024.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><h2><strong>How to upgrade safely</strong></h2><p>The Spring team provides a clear, step-by-step migration guide covering breaking changes and required adjustments:</p><p>&#128073; <strong>Spring Boot 4.0 Migration Guide</strong><br><a href="https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-4.0-Migration-Guide">https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-4.0-Migration-Guide</a></p><p>To understand what&#8217;s new at the framework level, review the official notes:</p><p>&#128073; <strong>Spring Framework 7.0 Release Notes</strong><br><a href="https://github.com/spring-projects/spring-framework/wiki/Spring-Framework-7.0-Release-Notes">https://github.com/spring-projects/spring-framework/wiki/Spring-Framework-7.0-Release-Notes</a></p><div><hr></div><h3>&#128640; Enjoyed this update?</h3><p><strong>&#128073; Subscribe for free</strong> to get weekly Spring &amp; Java insights<br><strong>&#128077; Like</strong> this post to help DevJava reach more developers</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://devjava.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://devjava.substack.com/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[JSpecify and Spring Null-safety]]></title><description><![CDATA[Null-safety turns hidden runtime failures into visible compile-time guarantees]]></description><link>https://devjava.substack.com/p/jspecify-and-spring-null-safety</link><guid isPermaLink="false">https://devjava.substack.com/p/jspecify-and-spring-null-safety</guid><dc:creator><![CDATA[Thiago Bomfim]]></dc:creator><pubDate>Sun, 18 Jan 2026 09:10:19 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!etH2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16502a28-41da-45bd-9257-8260e5b0b0ed_1024x1536.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!etH2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16502a28-41da-45bd-9257-8260e5b0b0ed_1024x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!etH2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16502a28-41da-45bd-9257-8260e5b0b0ed_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!etH2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16502a28-41da-45bd-9257-8260e5b0b0ed_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!etH2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16502a28-41da-45bd-9257-8260e5b0b0ed_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!etH2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16502a28-41da-45bd-9257-8260e5b0b0ed_1024x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!etH2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16502a28-41da-45bd-9257-8260e5b0b0ed_1024x1536.png" width="1024" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/16502a28-41da-45bd-9257-8260e5b0b0ed_1024x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3009759,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://devjava.substack.com/i/178121590?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16502a28-41da-45bd-9257-8260e5b0b0ed_1024x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!etH2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16502a28-41da-45bd-9257-8260e5b0b0ed_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!etH2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16502a28-41da-45bd-9257-8260e5b0b0ed_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!etH2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16502a28-41da-45bd-9257-8260e5b0b0ed_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!etH2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16502a28-41da-45bd-9257-8260e5b0b0ed_1024x1536.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Spring Framework <strong>7.0</strong> now supports <strong>JSpecify</strong>, introducing first-class&nbsp;<strong>null safety</strong> into the Spring ecosystem. This means Spring can understand nullability contracts and help you detect potential <code>NullPointerException</code> issues at compile time, not in production.</p><div><hr></div><h2><strong>What Is Null-safety?</strong></h2><p>Null-safety makes your code safer by catching null-related mistakes early. It creates clear expectations:</p><ul><li><p>What <strong>can</strong> be null</p></li><li><p>What <strong>cannot</strong> be null</p></li><li><p>What APIs require strict checks</p></li></ul><p>This leads to fewer runtime surprises and more reliable applications.</p><div><hr></div><h2><strong>What Is JSpecify?</strong></h2><p><strong>JSpecify</strong> defines standard annotations such as:</p><ul><li><p><code>@NonNull</code></p></li><li><p><code>@Nullable</code></p></li><li><p><code>@NullMarked</code></p></li></ul><p>Spring 7 understands these annotations and applies null-safety rules consistently across your beans and application logic.</p><p>&#128216; JSpecify guide: <a href="https://jspecify.dev/docs/user-guide/">https://jspecify.dev/docs/user-guide/</a><br>&#128216; Spring null-safety docs: <a href="https://docs.spring.io/spring-framework/reference/core/null-safety.html">https://docs.spring.io/spring-framework/reference/core/null-safety.html</a></p><div><hr></div><h2><strong>How to Enable Null-safety Checks (Maven)</strong></h2><p>To validate null-safety automatically, we use <strong>NullAway</strong>, Uber&#8217;s fast, compile-time checker, together with <strong>Error Prone</strong>:</p><pre><code><code>&lt;plugin&gt;
    &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
    &lt;artifactId&gt;maven-compiler-plugin&lt;/artifactId&gt;
    &lt;version&gt;3.11.0&lt;/version&gt;
    &lt;configuration&gt;
        &lt;source&gt;17&lt;/source&gt;
        &lt;target&gt;8&lt;/target&gt;
        &lt;encoding&gt;UTF-8&lt;/encoding&gt;
        &lt;compilerArgs&gt;
            &lt;arg&gt;-XDcompilePolicy=simple&lt;/arg&gt;
            &lt;arg&gt;--should-stop=ifError=FLOW&lt;/arg&gt;
            &lt;arg&gt;-Xplugin:ErrorProne
                -XepOpt:NullAway:AnnotatedPackages=com.bomfim
                -Xep:NullAway:ERROR
                -XepExcludedPaths:.*/src/test/java/.*
            &lt;/arg&gt;
        &lt;/compilerArgs&gt;
        &lt;annotationProcessorPaths&gt;
            &lt;path&gt;
                &lt;groupId&gt;com.google.errorprone&lt;/groupId&gt;
                &lt;artifactId&gt;error_prone_core&lt;/artifactId&gt;
                &lt;version&gt;2.42.0&lt;/version&gt;
            &lt;/path&gt;
            &lt;path&gt;
                &lt;groupId&gt;com.uber.nullaway&lt;/groupId&gt;
                &lt;artifactId&gt;nullaway&lt;/artifactId&gt;
                &lt;version&gt;0.12.12&lt;/version&gt;
            &lt;/path&gt;
        &lt;/annotationProcessorPaths&gt;
    &lt;/configuration&gt;
&lt;/plugin&gt;
</code></code></pre><h3><strong>What this setup gives you</strong></h3><ul><li><p>Compile-time null-safety enforcement</p></li><li><p>Clear errors when annotations are violated</p></li><li><p>Automatic protection against accidental <code>null</code> values</p></li></ul><p>More details:<br>&#128216; NullAway JSpecify Support: <a href="https://github.com/uber/NullAway/wiki/JSpecify-Support">https://github.com/uber/NullAway/wiki/JSpecify-Support</a></p><p>You can access the code here: <a href="https://github.com/ThiagoBfim/spring-news">https://github.com/ThiagoBfim/spring-news</a></p><div><hr></div><h2><strong>Using Gradle?</strong></h2><p>This talk explains it perfectly:<br>&#127909; <em><a href="https://www.youtube.com/watch?v=5Lbxq6LP7FY">Null Safety in Java with JSpecify and NullAway &#8212; S&#233;bastien Deleuze (Spring I/O 2025)</a></em></p><div><hr></div><h2><strong>Conclusion</strong></h2><p>With Spring 7 + JSpecify + NullAway, Java finally gets a practical, lightweight approach to null-safety. You get earlier warnings, clearer APIs, and fewer runtime surprises, all with minimal setup.</p><p>If you found this useful, <strong>subscribe for free</strong> and hit <strong>like</strong>, more Spring &amp; Java tips coming every week &#128640;</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://devjava.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://devjava.substack.com/subscribe?"><span>Subscribe now</span></a></p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[Spring Framework 7.0 — Resilience Features ]]></title><description><![CDATA[Scalability without control is just a different kind of risk.]]></description><link>https://devjava.substack.com/p/spring-framework-70-resilience-features</link><guid isPermaLink="false">https://devjava.substack.com/p/spring-framework-70-resilience-features</guid><dc:creator><![CDATA[Thiago Bomfim]]></dc:creator><pubDate>Sun, 11 Jan 2026 09:10:15 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!_GaR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8bc6fc9-631a-4b7e-bc5b-7e41a24f8f85_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_GaR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8bc6fc9-631a-4b7e-bc5b-7e41a24f8f85_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_GaR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8bc6fc9-631a-4b7e-bc5b-7e41a24f8f85_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!_GaR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8bc6fc9-631a-4b7e-bc5b-7e41a24f8f85_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!_GaR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8bc6fc9-631a-4b7e-bc5b-7e41a24f8f85_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!_GaR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8bc6fc9-631a-4b7e-bc5b-7e41a24f8f85_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_GaR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8bc6fc9-631a-4b7e-bc5b-7e41a24f8f85_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c8bc6fc9-631a-4b7e-bc5b-7e41a24f8f85_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1655377,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://devjava.substack.com/i/178121686?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8bc6fc9-631a-4b7e-bc5b-7e41a24f8f85_1024x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!_GaR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8bc6fc9-631a-4b7e-bc5b-7e41a24f8f85_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!_GaR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8bc6fc9-631a-4b7e-bc5b-7e41a24f8f85_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!_GaR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8bc6fc9-631a-4b7e-bc5b-7e41a24f8f85_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!_GaR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8bc6fc9-631a-4b7e-bc5b-7e41a24f8f85_1024x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Spring Framework <strong>7.0</strong> introduces <strong>out-of-the-box resilience features</strong>, making it easier to protect your application against overload and instability. These features are part of the <strong>spring-context</strong> module and can be enabled with: <code>@EnableResilientMethods</code></p><p>Spring 7 brings two main resilience annotations:</p><ul><li><p><code>@ConcurrencyLimit</code></p></li><li><p><code>@Retryable</code></p></li></ul><p>In this article, we&#8217;ll focus on <code>@ConcurrencyLimit</code> and why it becomes especially important in the era of <strong>Virtual Threads</strong>.</p><div><hr></div><h2><strong>Why Concurrency Control Matters</strong></h2><p>With <strong>Virtual Threads</strong>, Java applications can handle a much higher number of concurrent requests. This is great for throughput and responsiveness, but it also introduces new risks:</p><ul><li><p>Higher memory usage</p></li><li><p>Increased pressure on databases and external services</p></li><li><p>Risk of overwhelming downstream systems</p></li></ul><p>Scaling without limits can easily turn into <strong>self-inflicted denial of service</strong>.</p><p>That&#8217;s exactly the problem <code>@ConcurrencyLimit</code> helps solve.</p><div><hr></div><h2><strong>What </strong><code>@ConcurrencyLimit</code><strong> Does</strong></h2><p>The <code>@ConcurrencyLimit</code> annotation allows you to define <strong>how many concurrent executions</strong> a method can have.</p><p>When the limit is reached:</p><ul><li><p>Additional calls are <strong>queued internally</strong></p></li><li><p>No extra threads are created</p></li><li><p>The system remains stable and predictable</p></li></ul><p>This is especially useful when enabling Virtual Threads but still needing to <strong>protect external dependencies</strong>.</p><div><hr></div><h2><strong>Example Usage</strong></h2><pre><code><code>@Async
@ConcurrencyLimit(100)
public CompletableFuture&lt;List&lt;Application&gt;&gt; findAll() {
    try {
        Thread.sleep(500);
    } catch (InterruptedException e) {
        Thread.currentThread().interrupt();
        throw new RuntimeException(e);
    }
    return CompletableFuture.completedFuture(
            List.of(new Application(Thread.currentThread().getName()))
    );
}
</code></code></pre><h3><strong>What&#8217;s happening here</strong></h3><ul><li><p>The method can run <strong>at most 100 times in parallel</strong></p></li><li><p>Extra calls wait in an internal queue</p></li><li><p>This prevents overload while still allowing high concurrency</p></li></ul><p>This is a simple but powerful safety net when working with Virtual Threads.</p><p>You can access the code here: <a href="https://github.com/ThiagoBfim/spring-news">https://github.com/ThiagoBfim/spring-news</a></p><div><hr></div><h2><strong>When Should You Use It?</strong></h2><p><code>@ConcurrencyLimit</code> is a great choice when:</p><ul><li><p>You&#8217;re adopting Virtual Threads</p></li><li><p>Your application depends on slower or fragile external systems</p></li><li><p>You want controlled scalability instead of unlimited parallelism</p></li></ul><div><hr></div><h2><strong>Conclusion</strong></h2><p>Spring Framework 7.0 makes resilience easier and more accessible.<br><code>@ConcurrencyLimit</code> gives you a simple way to scale safely, especially in modern, highly concurrent applications.</p><p>If you want to go deeper into <strong>Virtual Threads</strong>, I&#8217;ve written about them here:</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;f75771fc-9a4d-404f-9c9a-441a85302785&quot;,&quot;caption&quot;:&quot;&#8220;Knowing how to use something is important, but understanding how it works is essential.&#8221;&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Modern Concurrency in Java by A N M Bazlur Rahman&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:69209621,&quot;name&quot;:&quot;Thiago Bomfim&quot;,&quot;bio&quot;:&quot;I help Java backend developers design better applications, increase their productivity, and become high-performance, confident engineers, so they can deliver better solutions, unlock better career opportunities, and gain more time for what matters&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f05e9ccf-2436-4fe5-90a1-c40691990c81_256x256.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-11-16T09:10:42.598Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!6pCJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0ea47cc-18a1-454a-8f75-6aefe5591548_400x525.jpeg&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://devjava.substack.com/p/modern-concurrency-in-java-by-a-n&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:178575635,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:2,&quot;comment_count&quot;:0,&quot;publication_id&quot;:1988540,&quot;publication_name&quot;:&quot;High-Level Developer&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!E170!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1afba9fe-52a1-423b-b5a1-05f3da32b2ba_1024x1024.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>If you enjoyed this content, <strong>subscribe for free</strong> and hit the <strong>like</strong> button.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://devjava.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://devjava.substack.com/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><h3><strong>References</strong></h3><ul><li><p><a href="https://docs.spring.io/spring/reference/core/resilience.html">Spring Framework Resilience Documentation</a></p></li><li><p><a href="https://spring.io/blog/2025/09/09/core-spring-resilience-features">Core Spring Resilience Features: @ConcurrencyLimit, @Retryable, and RetryTemplate </a></p><p></p></li></ul>]]></content:encoded></item><item><title><![CDATA[2026 — New Year, New Goals]]></title><description><![CDATA[Consistency is the bridge between where you are and where you want to be]]></description><link>https://devjava.substack.com/p/2026-new-year-new-goals</link><guid isPermaLink="false">https://devjava.substack.com/p/2026-new-year-new-goals</guid><dc:creator><![CDATA[Thiago Bomfim]]></dc:creator><pubDate>Sun, 04 Jan 2026 09:10:14 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!FOSA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d2dfb69-48dc-468c-8dc9-4363a2997750_1024x1536.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FOSA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d2dfb69-48dc-468c-8dc9-4363a2997750_1024x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FOSA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d2dfb69-48dc-468c-8dc9-4363a2997750_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!FOSA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d2dfb69-48dc-468c-8dc9-4363a2997750_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!FOSA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d2dfb69-48dc-468c-8dc9-4363a2997750_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!FOSA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d2dfb69-48dc-468c-8dc9-4363a2997750_1024x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FOSA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d2dfb69-48dc-468c-8dc9-4363a2997750_1024x1536.png" width="1024" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9d2dfb69-48dc-468c-8dc9-4363a2997750_1024x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2504819,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://devjava.substack.com/i/181313642?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d2dfb69-48dc-468c-8dc9-4363a2997750_1024x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!FOSA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d2dfb69-48dc-468c-8dc9-4363a2997750_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!FOSA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d2dfb69-48dc-468c-8dc9-4363a2997750_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!FOSA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d2dfb69-48dc-468c-8dc9-4363a2997750_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!FOSA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d2dfb69-48dc-468c-8dc9-4363a2997750_1024x1536.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Have you already defined your goals for 2026? Should you?<br>Let&#8217;s take a moment to understand <strong>why having a clear path matters</strong> and how you can set goals that actually help you grow.</p><p>There&#8217;s a quote I really like:</p><blockquote><p><strong>&#8220;If you don&#8217;t know where you are going, any road will get you there&#8221;</strong></p></blockquote><p>In other words: If you don&#8217;t decide your destination, life will choose one for you.</p><div><hr></div><h2><strong>Why Goals Matter</strong></h2><p>The key to success is not perfection, it&#8217;s <strong>consistency</strong>.<br>Having a plan helps you stay on track, even when you&#8217;re tired, lazy, or not in your best moment.</p><p>You can fail along the way.<br>You can slow down.<br>But you cannot give up.</p><p>Another quote that fits perfectly here is the famous one from Michael Jordan:</p><blockquote><p><strong>&#8220;I&#8217;ve missed more than 9,000 shots in my career. I&#8217;ve lost almost 300 games. 26 times I&#8217;ve been trusted to take the game-winning shot and missed. I&#8217;ve failed over and over and over again in my life. And that is why I succeed.&#8221;</strong></p><p>&#8212; Michael Jordan</p></blockquote><p>Success is not about always winning, it&#8217;s about <strong>not stopping</strong>.</p><div><hr></div><h2><strong>Define Your Goals</strong></h2><p>Think about a few things you want to achieve this year. Examples:</p><ul><li><p>Run 10 km</p></li><li><p>Give a talk at an event</p></li><li><p>Earn 10% more</p></li></ul><p>These are great goals, but they are <strong>outcomes</strong>.<br>To make them real, you need to take <strong>action</strong>.</p><div><hr></div><h2><strong>Turn Goals into SMART Actions</strong></h2><p>SMART goals are a simple way to create clear and achievable objectives.</p><h3><strong>S &#8212; Specific</strong></h3><p>Clear and focused. You know exactly <em>what</em> you want.</p><h3><strong>M &#8212; Measurable</strong></h3><p>You can track progress with numbers or checkpoints.</p><h3><strong>A &#8212; Achievable</strong></h3><p>Realistic for your current situation, not impossible.</p><h3><strong>R &#8212; Relevant</strong></h3><p>Aligned with your bigger goals and what truly matters to you.</p><h3><strong>T &#8212; Time-bound</strong></h3><p>Has a deadline or timeframe to keep you accountable.</p><p><strong>Example:</strong><br>&#10060; <em>&#8220;I want to run more.&#8221;</em><br>&#10004;&#65039; <em>&#8220;I will run 10 km by June, adding 300 meters every week.&#8221;</em></p><p>SMART goals turn ideas into actions, and actions into progress.</p><h3><strong>Example: Run 10 km</strong></h3><p>Instead of trying to run 10 km right away, define:</p><ul><li><p><strong>Every Thursday and Sunday, run 300 meters more.</strong></p></li></ul><p>Start with 300 meters.<br>Next week: +300 meters.<br>Week after: +300 meters again.</p><p>Specific. Achievable. Consistent.</p><h3><strong>Example: Eat healthier</strong></h3><p>&#8220;Stop eating junk food&#8221; is too big and too vague.</p><p>Try something like:</p><ul><li><p><strong>Eat junk food at most 2 times per week.</strong></p></li><li><p><strong>Eat sugary food only once per week.</strong></p></li></ul><p>These rules are realistic and easy to follow. Over time, you can adjust them closer to your final goal.</p><div><hr></div><h2><strong>Action + Plan = Progress</strong></h2><p>A plan without action is just a dream.<br>Action without a plan is a path without direction.</p><p>But when you combine both, a clear plan + consistent action, you create real progress.</p><div><hr></div><h2><strong>Happy New Year &#127881;</strong></h2><p>I wish you an amazing 2026.<br>I hope you achieve your goals, grow your career, and move one step closer to the life you want.</p><p>Every week, I&#8217;ll be sharing a new post to help you grow as a developer, especially in the Java world.<br>This is also one of <strong>my goals</strong> for the year &#128516;.</p><p>If you want to follow this journey with me, <strong>subscribe for free</strong> and let&#8217;s grow together. &#128170;&#128640;</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://devjava.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading High-Level Developer! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Spring Framework 7.0 - API Version ]]></title><description><![CDATA[A good API evolves. A great API evolves without breaking trust.]]></description><link>https://devjava.substack.com/p/spring-framework-70-api-version</link><guid isPermaLink="false">https://devjava.substack.com/p/spring-framework-70-api-version</guid><dc:creator><![CDATA[Thiago Bomfim]]></dc:creator><pubDate>Sun, 28 Dec 2025 09:10:19 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!gfRD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4caaf577-2aa9-4268-b909-c10186179633_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gfRD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4caaf577-2aa9-4268-b909-c10186179633_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gfRD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4caaf577-2aa9-4268-b909-c10186179633_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!gfRD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4caaf577-2aa9-4268-b909-c10186179633_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!gfRD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4caaf577-2aa9-4268-b909-c10186179633_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!gfRD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4caaf577-2aa9-4268-b909-c10186179633_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gfRD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4caaf577-2aa9-4268-b909-c10186179633_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4caaf577-2aa9-4268-b909-c10186179633_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2337584,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://devjava.substack.com/i/178121654?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4caaf577-2aa9-4268-b909-c10186179633_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!gfRD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4caaf577-2aa9-4268-b909-c10186179633_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!gfRD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4caaf577-2aa9-4268-b909-c10186179633_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!gfRD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4caaf577-2aa9-4268-b909-c10186179633_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!gfRD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4caaf577-2aa9-4268-b909-c10186179633_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Spring Framework <strong>7.0</strong>, released on <strong>November 13, 2025</strong>, introduces several new features, and one of the most useful for API work is the new <strong>API versioning support</strong>.</p><p>Spring now provides a clean, built-in way to configure API versions using the <code>ApiVersionConfigurer</code>. You can set up versioning through Java configuration or <code>application.properties</code>, define default versions, and even configure deprecation handling.<br><br>In this guide, we look at a simple example using a <strong>custom HTTP header</strong> (<code>x-version</code>) as the versioning strategy.</p><div><hr></div><h2><strong>Configuring API Versioning</strong></h2><p>The first step is to implement the <code>configureApiVersioning</code> method:</p><pre><code><code>@Configuration
public class WebConfiguration implements WebMvcConfigurer {

    @Override
    public void configureApiVersioning(ApiVersionConfigurer configurer) {
        StandardApiVersionDeprecationHandler deprecationHandler =
                new StandardApiVersionDeprecationHandler();

        LocalDateTime deprecatedDate = LocalDateTime.of(2026, 5, 30, 0, 0);
        deprecationHandler.configureVersion(&#8221;v1&#8221;)
                .setDeprecationDate(ZonedDateTime.of(deprecatedDate, ZoneId.of(&#8221;UTC&#8221;)));

        configurer
                .useRequestHeader(&#8221;x-version&#8221;)
                .addSupportedVersions(&#8221;v1&#8221;, &#8220;v2&#8221;)
                .setDeprecationHandler(deprecationHandler)
                .setDefaultVersion(&#8221;v2&#8221;);
    }
}
</code></code></pre><p>In this configuration:</p><ul><li><p>We support two API versions: <strong>v1</strong> and <strong>v2</strong></p></li><li><p><strong>v1</strong> is marked as deprecated</p></li><li><p>Spring automatically adds a <strong>Deprecation</strong> header following <strong>RFC 9745</strong></p></li><li><p>You can also implement a <strong>Sunset</strong> header (RFC 8594) if needed</p></li><li><p>The default version is <strong>v2</strong></p></li></ul><h2><strong>Versioning in the Controller</strong></h2><p>Now let&#8217;s see a simple controller using versioned mappings.</p><pre><code><code>@RestController
public class ApplicationController {

    private final ApplicationService applicationService;

    public ApplicationController(ApplicationService applicationService) {
        this.applicationService = applicationService;
    }

    @GetMapping(value = &#8220;/app&#8221;, version = &#8220;v1&#8221;)
    public ResponseEntity&lt;List&lt;Application&gt;&gt; getApp() {
        return ResponseEntity.ok(applicationService.findAll().join());
    }

    @GetMapping(value = &#8220;/app&#8221;, version = &#8220;v2&#8221;)
    public ResponseEntity&lt;List&lt;Application&gt;&gt; getAppV2() {
        return ResponseEntity.ok(applicationService.findAll().join());
    }
}
</code></code></pre><h3><strong>What the Response Looks Like</strong></h3><h4><strong>Calling v1</strong></h4><pre><code><code>HTTP/1.1 200
Deprecation: @1780099200
Content-Type: application/json
</code></code></pre><p>You receive a <code>Deprecation</code> header because v1 has an expiry date.</p><h4><strong>Calling v2</strong></h4><pre><code><code>HTTP/1.1 200
Content-Type: application/json
</code></code></pre><h2><strong>Conclusion</strong></h2><p>In my opinion, this approach may not be the most practical solution for HTTP API versioning itself, but it is extremely helpful for:</p><ul><li><p>applying <strong><a href="https://datatracker.ietf.org/doc/rfc9745/">RFC 9745</a></strong> (Deprecation header)</p></li><li><p>applying <strong><a href="https://datatracker.ietf.org/doc/html/rfc8594">RFC 8594</a></strong> (Sunset header)</p></li><li><p>validating API versions and returning clear exceptions</p></li><li><p>keeping your API evolution predictable and well-structured</p></li></ul><p>If you want to dive deeper, here are two great resources:</p><p>&#128216; <a href="https://docs.spring.io/spring-framework/reference/web/webmvc/mvc-config/api-version.html">https://docs.spring.io/spring-framework/reference/web/webmvc/mvc-config/api-version.html</a><br>&#128216; <a href="https://www.danvega.dev/blog/spring-boot-4-api-versioning?ref=apisyouwonthate.com">https://www.danvega.dev/blog/spring-boot-4-api-versioning?ref=apisyouwonthate.com</a></p><p>You can access the code here: <a href="https://github.com/ThiagoBfim/spring-news">https://github.com/ThiagoBfim/spring-news</a></p>]]></content:encoded></item></channel></rss>