[{"data":1,"prerenderedAt":1624},["ShallowReactive",2],{"blog-blog_en-page-2":3},{"posts":4,"totalPosts":1623,"totalPages":196,"currentPage":178},[5,270,499,811,1040,1299],{"id":6,"title":7,"body":8,"cover":255,"date":256,"description":257,"draft":258,"extension":259,"meta":260,"navigation":192,"path":261,"seo":262,"stem":263,"tags":264,"__hash__":269},"blog_en\u002Fen\u002Fblog\u002Fkubernetes-patch-release-go-cve-update-februar-2026.md","Kubernetes: Out-of-Band Patch Releases for Go CVEs",{"type":9,"value":10,"toc":250},"minimark",[11,28,33,36,87,94,98,101,140,143,150,235,239,246],[12,13,14,15,19,20,23,24,27],"p",{},"Kubernetes patch releases usually follow a monthly cadence. In late February 2026, multiple branches shipped out of band to pick up a new ",[16,17,18],"strong",{},"Go version"," and address several ",[16,21,22],{},"Go CVEs",". The patch-release notes explicitly state: ",[16,25,26],{},"no other changes",".",[29,30,32],"h2",{"id":31},"what-out-of-band-means-in-practice","What “Out of Band” Means in Practice",[12,34,35],{},"An out-of-band patch has different operational characteristics than a regular monthly patch:",[37,38,39,46,53,63,78,84],"ul",{},[40,41,42,43],"li",{},"Release timing outside the patch calendar, triggered by ",[16,44,45],{},"security intake",[40,47,48,49,52],{},"The change is primarily a ",[16,50,51],{},"toolchain update"," (Go) rather than feature fixes",[40,54,55,56,59,60],{},"Rebuilt binaries and images for components such as ",[16,57,58],{},"kube-apiserver"," and ",[16,61,62],{},"kubelet",[40,64,65,66,70,71,70,74,77],{},"Coordinated patches across multiple minor lines (for example ",[67,68,69],"code",{},"1.35.x",", ",[67,72,73],{},"1.34.x",[67,75,76],{},"1.33.x",")",[40,79,80,81],{},"Patches can be required even if workloads are unchanged - the dependency is the ",[16,82,83],{},"Go runtime",[40,85,86],{},"Managed offerings typically absorb such releases into their own rollout schedules and maintenance windows",[12,88,89],{},[90,91],"img",{"alt":92,"src":93},"Diagram: Go CVEs → out-of-band patch → rollout","\u002Fimg\u002Fblog\u002Fkubernetes-patch-release-go-cve-update-februar-2026-diagram.svg",[29,95,97],{"id":96},"practical-impact-on-upgrade-processes","Practical Impact on Upgrade Processes",[12,99,100],{},"For platform teams, this creates clear process requirements:",[37,102,103,110,117,124,130,137],{},[40,104,105,106,109],{},"Tracking the official ",[16,107,108],{},"patch-release history"," and security announcements",[40,111,112,113,116],{},"Maintaining a ",[16,114,115],{},"staging cluster"," for fast validation under tight timelines",[40,118,119,120,123],{},"Aligning ",[16,121,122],{},"change windows"," for clusters under security SLAs",[40,125,126,127],{},"Rebuilding internal components if Kubernetes is run from ",[16,128,129],{},"source builds",[40,131,132,133,136],{},"Accounting for ",[16,134,135],{},"version skew"," (control plane vs nodes) during rollout",[40,138,139],{},"Upgrading nodes in waves (for example by node pools) with PDBs and capacity planning",[12,141,142],{},"For self-managed clusters, rebuilding internal images and artifacts is often part of the upgrade whenever Kubernetes is derived from source or vendor builds.",[12,144,145,146,149],{},"A minimal upgrade path with ",[67,147,148],{},"kubeadm"," typically looks like this:",[151,152,157],"pre",{"className":153,"code":154,"language":155,"meta":156,"style":156},"language-bash shiki shiki-themes github-light github-dark","kubectl version --short\nkubeadm upgrade plan\n\n# Example: upgrade to a specific patch release\nsudo kubeadm upgrade apply v1.35.2\nkubectl get nodes -o wide\n","bash","",[67,158,159,176,187,194,201,218],{"__ignoreMap":156},[160,161,164,168,172],"span",{"class":162,"line":163},"line",1,[160,165,167],{"class":166},"sScJk","kubectl",[160,169,171],{"class":170},"sZZnC"," version",[160,173,175],{"class":174},"sj4cs"," --short\n",[160,177,179,181,184],{"class":162,"line":178},2,[160,180,148],{"class":166},[160,182,183],{"class":170}," upgrade",[160,185,186],{"class":170}," plan\n",[160,188,190],{"class":162,"line":189},3,[160,191,193],{"emptyLinePlaceholder":192},true,"\n",[160,195,197],{"class":162,"line":196},4,[160,198,200],{"class":199},"sJ8bj","# Example: upgrade to a specific patch release\n",[160,202,204,207,210,212,215],{"class":162,"line":203},5,[160,205,206],{"class":166},"sudo",[160,208,209],{"class":170}," kubeadm",[160,211,183],{"class":170},[160,213,214],{"class":170}," apply",[160,216,217],{"class":170}," v1.35.2\n",[160,219,221,223,226,229,232],{"class":162,"line":220},6,[160,222,167],{"class":166},[160,224,225],{"class":170}," get",[160,227,228],{"class":170}," nodes",[160,230,231],{"class":174}," -o",[160,233,234],{"class":170}," wide\n",[29,236,238],{"id":237},"why-this-matters","Why This Matters",[12,240,241,242,245],{},"Security fixes are not always aligned with the monthly patch schedule. Out-of-band releases require the ability to upgrade with ",[16,243,244],{},"short lead times",", clear communication toward application teams, and an operationalized pipeline for validation and rollout.",[247,248,249],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":156,"searchDepth":178,"depth":178,"links":251},[252,253,254],{"id":31,"depth":178,"text":32},{"id":96,"depth":178,"text":97},{"id":237,"depth":178,"text":238},"\u002Fimg\u002Fblog\u002Fkubernetes-patch-release-go-cve-update-februar-2026-cover.jpg","2026-03-28","On February 26, 2026, multiple Kubernetes patch releases shipped outside the monthly cadence to address Go CVEs.",false,"md",{},"\u002Fen\u002Fblog\u002Fkubernetes-patch-release-go-cve-update-februar-2026",{"title":7,"description":257},"en\u002Fblog\u002Fkubernetes-patch-release-go-cve-update-februar-2026",[265,266,267,268],"Kubernetes","Security","Go","Operations","LMo-I9TSi3m2Zk5TNB2ckDtiaI3cfJY1sHxiGwEumro",{"id":271,"title":272,"body":273,"cover":487,"date":488,"description":489,"draft":258,"extension":259,"meta":490,"navigation":192,"path":491,"seo":492,"stem":493,"tags":494,"__hash__":498},"blog_en\u002Fen\u002Fblog\u002Fjava-26-http3-aot-cache-und-security-aenderungen.md","Java 26 Is Available: HTTP\u002F3, AOT Object Caching, and Security Updates",{"type":9,"value":274,"toc":482},[275,293,297,300,349,355,359,362,393,396,470,472,479],[12,276,277,278,281,282,70,285,288,289,292],{},"Java 26 became available in March 2026 as the next feature release in the six-month cadence. The release bundles changes across ",[16,279,280],{},"language features"," (partly preview), ",[16,283,284],{},"libraries",[16,286,287],{},"performance",", and ",[16,290,291],{},"security",", making it a relevant upgrade point for cloud-native Java stacks.",[29,294,296],{"id":295},"key-changes-in-java-26","Key Changes in Java 26",[12,298,299],{},"Several clusters have direct impact on runtime and build environments:",[37,301,302,309,312,323,330,336,346],{},[40,303,304,305,308],{},"Language evolution through ",[16,306,307],{},"preview\u002Fincubator"," features and continued JEP progression",[40,310,311],{},"Preview features typically require explicit enablement and affect test and rollout policies",[40,313,314,315,318,319,322],{},"Library updates such as ",[16,316,317],{},"HTTP\u002F3"," support in ",[67,320,321],{},"HttpClient"," (depending on implementation maturity)",[40,324,325,326,329],{},"Performance work like ",[16,327,328],{},"ahead-of-time object caching"," to reduce startup costs",[40,331,332,333,77],{},"Maintenance and cleanup, including removal of legacy APIs (for example the ",[16,334,335],{},"Applet API",[40,337,338,339,342,343,77],{},"Preparatory work around stricter ",[67,340,341],{},"final"," semantics (for example ",[16,344,345],{},"Prepare to Make Final Mean Final",[40,347,348],{},"Security changes that affect defaults, TLS stacks, and cryptography behavior",[12,350,351],{},[90,352],{"alt":353,"src":354},"Diagram: Java 26 changes by category","\u002Fimg\u002Fblog\u002Fjava-26-http3-aot-cache-und-security-aenderungen-diagram.svg",[29,356,358],{"id":357},"relevance-for-cloud-native-java-stacks","Relevance for Cloud-Native Java Stacks",[12,360,361],{},"In production environments, Java releases are often more of a platform upgrade than a code change:",[37,363,364,371,377,380,386],{},[40,365,366,367,370],{},"Updating ",[16,368,369],{},"base images"," and runtime layers in container registries",[40,372,119,373,376],{},[16,374,375],{},"toolchains"," in Maven\u002FGradle (compiler, jlink, native-image)",[40,378,379],{},"Maintaining test matrices for frameworks and agents (observability, security, profiling)",[40,381,382,383],{},"Treating deprecations and removals as inputs for ",[16,384,385],{},"modernization roadmaps",[40,387,388,389,392],{},"Choosing between a ",[16,390,391],{},"feature release"," upgrade and an LTS track based on platform strategy",[12,394,395],{},"A practical entry point is pinning the toolchain in Gradle:",[151,397,401],{"className":398,"code":399,"language":400,"meta":156,"style":156},"language-kotlin shiki shiki-themes github-light github-dark","\u002F\u002F build.gradle.kts\nkotlin {\n  jvmToolchain(26)\n}\n\ntasks.withType\u003CTest> {\n  useJUnitPlatform()\n}\n","kotlin",[67,402,403,408,416,430,435,439,456,465],{"__ignoreMap":156},[160,404,405],{"class":162,"line":163},[160,406,407],{"class":199},"\u002F\u002F build.gradle.kts\n",[160,409,410,412],{"class":162,"line":178},[160,411,400],{"class":166},[160,413,415],{"class":414},"sVt8B"," {\n",[160,417,418,421,424,427],{"class":162,"line":189},[160,419,420],{"class":166},"  jvmToolchain",[160,422,423],{"class":414},"(",[160,425,426],{"class":174},"26",[160,428,429],{"class":414},")\n",[160,431,432],{"class":162,"line":196},[160,433,434],{"class":414},"}\n",[160,436,437],{"class":162,"line":203},[160,438,193],{"emptyLinePlaceholder":192},[160,440,441,444,447,450,453],{"class":162,"line":220},[160,442,443],{"class":414},"tasks.",[160,445,446],{"class":166},"withType",[160,448,449],{"class":414},"\u003C",[160,451,452],{"class":166},"Test",[160,454,455],{"class":414},"> {\n",[160,457,459,462],{"class":162,"line":458},7,[160,460,461],{"class":166},"  useJUnitPlatform",[160,463,464],{"class":414},"()\n",[160,466,468],{"class":162,"line":467},8,[160,469,434],{"class":414},[29,471,238],{"id":237},[12,473,474,475,478],{},"The six-month Java cadence shortens the distance between major runtime shifts. Teams that continuously maintain toolchain upgrades, container images, and dependencies reduce migration risk and stay ready to adopt ",[16,476,477],{},"security and performance improvements"," from new releases.",[247,480,481],{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":156,"searchDepth":178,"depth":178,"links":483},[484,485,486],{"id":295,"depth":178,"text":296},{"id":357,"depth":178,"text":358},{"id":237,"depth":178,"text":238},"\u002Fimg\u002Fblog\u002Fjava-26-http3-aot-cache-und-security-aenderungen-cover.jpg","2026-03-25","JDK 26 ships new JEPs across language, libraries, performance, and security, continuing the six-month release cadence.",{},"\u002Fen\u002Fblog\u002Fjava-26-http3-aot-cache-und-security-aenderungen",{"title":272,"description":489},"en\u002Fblog\u002Fjava-26-http3-aot-cache-und-security-aenderungen",[495,496,266,497],"Java","JDK","Cloud-Native","AWTxSHaUI88b7dvBWERUJegbkMvULUL1QG8-8CeryHU",{"id":500,"title":501,"body":502,"cover":799,"date":800,"description":801,"draft":258,"extension":259,"meta":802,"navigation":192,"path":803,"seo":804,"stem":805,"tags":806,"__hash__":810},"blog_en\u002Fen\u002Fblog\u002Fzero-trust-architektur-sicherheit-jenseits-des-perimeters.md","Zero Trust Architecture: Security Beyond the Perimeter",{"type":9,"value":503,"toc":794},[504,511,515,526,546,552,556,559,579,590,776,779,781,791],[12,505,506,507,510],{},"Traditional security models rely on a simple principle: trust everything inside the network, verify everything outside. In an era of remote work, cloud migration, and increasing supply chain attacks, this approach is no longer sufficient. ",[16,508,509],{},"Zero Trust Architecture (ZTA)"," inverts this model entirely.",[29,512,514],{"id":513},"what-is-zero-trust","What is Zero Trust?",[12,516,517,518,521,522,525],{},"Zero Trust is a security paradigm built on the principle of ",[16,519,520],{},"\"Never trust, always verify\"",". No user, device, or network segment receives implicit trust - regardless of location. ",[16,523,524],{},"NIST Special Publication 800-207"," defines the reference framework for implementation and describes three core logical components:",[37,527,528,534,540],{},[40,529,530,533],{},[16,531,532],{},"Policy Engine (PE)"," - makes access decisions based on policies, risk scores, and identity data",[40,535,536,539],{},[16,537,538],{},"Policy Administrator (PA)"," - translates Policy Engine decisions into concrete actions",[40,541,542,545],{},[16,543,544],{},"Policy Enforcement Point (PEP)"," - enforces access decisions at the network boundary",[12,547,548],{},[90,549],{"alt":550,"src":551},"Comparison: Perimeter Model vs. Zero Trust","\u002Fimg\u002Fblog\u002Fzero-trust-vergleich.png",[29,553,555],{"id":554},"core-principles-and-implementation","Core Principles and Implementation",[12,557,558],{},"The three core principles of Zero Trust are:",[37,560,561,567,573],{},[40,562,563,566],{},[16,564,565],{},"Verify Explicitly"," - Every request is evaluated based on identity, device health, location, and behavioral patterns",[40,568,569,572],{},[16,570,571],{},"Least Privilege Access"," - Access is granted only to the extent required for the specific task",[40,574,575,578],{},[16,576,577],{},"Assume Breach"," - The system assumes an attacker is already inside the network and minimizes the blast radius",[12,580,581,582,585,586,589],{},"In ",[16,583,584],{},"Kubernetes environments",", Zero Trust can be implemented through ",[16,587,588],{},"NetworkPolicies",". These enforce microsegmentation at the pod level:",[151,591,595],{"className":592,"code":593,"language":594,"meta":156,"style":156},"language-yaml shiki shiki-themes github-light github-dark","apiVersion: networking.k8s.io\u002Fv1\nkind: NetworkPolicy\nmetadata:\n  name: allow-frontend-to-backend\n  namespace: production\nspec:\n  podSelector:\n    matchLabels:\n      app: backend\n  policyTypes:\n    - Ingress\n  ingress:\n    - from:\n        - podSelector:\n            matchLabels:\n              app: frontend\n      ports:\n        - protocol: TCP\n          port: 8080\n","yaml",[67,596,597,609,619,627,637,647,654,661,668,679,687,696,704,714,725,733,744,752,765],{"__ignoreMap":156},[160,598,599,603,606],{"class":162,"line":163},[160,600,602],{"class":601},"s9eBZ","apiVersion",[160,604,605],{"class":414},": ",[160,607,608],{"class":170},"networking.k8s.io\u002Fv1\n",[160,610,611,614,616],{"class":162,"line":178},[160,612,613],{"class":601},"kind",[160,615,605],{"class":414},[160,617,618],{"class":170},"NetworkPolicy\n",[160,620,621,624],{"class":162,"line":189},[160,622,623],{"class":601},"metadata",[160,625,626],{"class":414},":\n",[160,628,629,632,634],{"class":162,"line":196},[160,630,631],{"class":601},"  name",[160,633,605],{"class":414},[160,635,636],{"class":170},"allow-frontend-to-backend\n",[160,638,639,642,644],{"class":162,"line":203},[160,640,641],{"class":601},"  namespace",[160,643,605],{"class":414},[160,645,646],{"class":170},"production\n",[160,648,649,652],{"class":162,"line":220},[160,650,651],{"class":601},"spec",[160,653,626],{"class":414},[160,655,656,659],{"class":162,"line":458},[160,657,658],{"class":601},"  podSelector",[160,660,626],{"class":414},[160,662,663,666],{"class":162,"line":467},[160,664,665],{"class":601},"    matchLabels",[160,667,626],{"class":414},[160,669,671,674,676],{"class":162,"line":670},9,[160,672,673],{"class":601},"      app",[160,675,605],{"class":414},[160,677,678],{"class":170},"backend\n",[160,680,682,685],{"class":162,"line":681},10,[160,683,684],{"class":601},"  policyTypes",[160,686,626],{"class":414},[160,688,690,693],{"class":162,"line":689},11,[160,691,692],{"class":414},"    - ",[160,694,695],{"class":170},"Ingress\n",[160,697,699,702],{"class":162,"line":698},12,[160,700,701],{"class":601},"  ingress",[160,703,626],{"class":414},[160,705,707,709,712],{"class":162,"line":706},13,[160,708,692],{"class":414},[160,710,711],{"class":601},"from",[160,713,626],{"class":414},[160,715,717,720,723],{"class":162,"line":716},14,[160,718,719],{"class":414},"        - ",[160,721,722],{"class":601},"podSelector",[160,724,626],{"class":414},[160,726,728,731],{"class":162,"line":727},15,[160,729,730],{"class":601},"            matchLabels",[160,732,626],{"class":414},[160,734,736,739,741],{"class":162,"line":735},16,[160,737,738],{"class":601},"              app",[160,740,605],{"class":414},[160,742,743],{"class":170},"frontend\n",[160,745,747,750],{"class":162,"line":746},17,[160,748,749],{"class":601},"      ports",[160,751,626],{"class":414},[160,753,755,757,760,762],{"class":162,"line":754},18,[160,756,719],{"class":414},[160,758,759],{"class":601},"protocol",[160,761,605],{"class":414},[160,763,764],{"class":170},"TCP\n",[160,766,768,771,773],{"class":162,"line":767},19,[160,769,770],{"class":601},"          port",[160,772,605],{"class":414},[160,774,775],{"class":174},"8080\n",[12,777,778],{},"This policy permits only traffic from frontend pods to the backend on port 8080. All other inbound traffic is implicitly blocked.",[29,780,238],{"id":237},[12,782,783,784,59,787,790],{},"The ongoing migration of workloads to the cloud and the spread of hybrid work models render the traditional network perimeter obsolete. Zero Trust addresses this reality by binding security to identities and policies rather than network boundaries. With growing support from CNI technologies such as ",[16,785,786],{},"Calico",[16,788,789],{},"Cilium",", implementation in containerized environments is becoming increasingly practical.",[247,792,793],{},"html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":156,"searchDepth":178,"depth":178,"links":795},[796,797,798],{"id":513,"depth":178,"text":514},{"id":554,"depth":178,"text":555},{"id":237,"depth":178,"text":238},"\u002Fimg\u002Fblog\u002Fzero-trust-cover.jpg","2026-03-24","Zero Trust replaces the traditional perimeter model with continuous verification and least-privilege access.",{},"\u002Fen\u002Fblog\u002Fzero-trust-architektur-sicherheit-jenseits-des-perimeters",{"title":501,"description":801},"en\u002Fblog\u002Fzero-trust-architektur-sicherheit-jenseits-des-perimeters",[807,808,809],"Zero Trust","Cybersecurity","Architecture","c_qDPHv17_EEDapkPkboE8fuw0mVMFEvQJrB-qBKJ9E",{"id":812,"title":813,"body":814,"cover":1027,"date":1028,"description":1029,"draft":258,"extension":259,"meta":1030,"navigation":192,"path":1031,"seo":1032,"stem":1033,"tags":1034,"__hash__":1039},"blog_en\u002Fen\u002Fblog\u002Fkotlin-2-3-20-tooling-release-build-performance.md","Kotlin 2.3.20: Tooling Release Focused on Compiler and Build Stability",{"type":9,"value":815,"toc":1022},[816,823,827,830,852,859,865,869,872,911,914,1010,1012,1019],[12,817,818,819,822],{},"For Kotlin teams, tooling releases often matter more than single language features because they directly affect build times, IDE integration, and release pipelines. In mid-March 2026, ",[16,820,821],{},"Kotlin 2.3.20"," shipped as an update focused on compiler and standard-library fixes.",[29,824,826],{"id":825},"what-the-release-includes","What the Release Includes",[12,828,829],{},"The release targets areas that become visible in CI and local builds:",[37,831,832,835,846,849],{},[40,833,834],{},"Performance optimization: redundant initialization is avoided in the IR pipeline",[40,836,837,838,841,842,845],{},"Stability fix: a ",[16,839,840],{},"race condition"," in the standard library’s ",[67,843,844],{},"Duration.parse"," is fixed",[40,847,848],{},"Tooling focus: changes that primarily impact build and IDE workflows",[40,850,851],{},"Reduced build variance when multiple modules compile and cache in parallel",[12,853,854,855,858],{},"Especially in multi-module projects, such fixes directly affect ",[16,856,857],{},"incremental compilation"," and CI repeatability.",[12,860,861],{},[90,862],{"alt":863,"src":864},"Diagram: Kotlin tooling in the build pipeline","\u002Fimg\u002Fblog\u002Fkotlin-2-3-20-tooling-release-build-performance-diagram.svg",[29,866,868],{"id":867},"upgrading-gradle-and-ci","Upgrading Gradle and CI",[12,870,871],{},"In practice, a Kotlin upgrade touches multiple integration points:",[37,873,874,884,891,897,904],{},[40,875,876,877,880,881,77],{},"Updating the ",[16,878,879],{},"Kotlin Gradle plugin"," (and potentially Kotlin DSL in ",[67,882,883],{},"build.gradle.kts",[40,885,886,887,890],{},"Keeping ",[16,888,889],{},"local toolchains"," aligned with CI images",[40,892,893,894],{},"Reviewing compiler flags, especially when warnings are used as ",[16,895,896],{},"quality gates",[40,898,899,900,903],{},"Checking build plugins (for example ",[16,901,902],{},"KSP",", Dokka, static analysis) for Kotlin-version compatibility",[40,905,906,907,910],{},"Validating Gradle features such as ",[16,908,909],{},"configuration cache"," and daemon settings for stability",[12,912,913],{},"Example of centralized version pinning:",[151,915,917],{"className":398,"code":916,"language":400,"meta":156,"style":156},"\u002F\u002F build.gradle.kts\nplugins {\n  kotlin(\"jvm\") version \"2.3.20\"\n}\n\ntasks.withType\u003Corg.jetbrains.kotlin.gradle.tasks.KotlinCompile> {\n  compilerOptions.freeCompilerArgs.add(\"-Xjsr305=strict\")\n}\n",[67,918,919,923,930,946,950,954,991,1006],{"__ignoreMap":156},[160,920,921],{"class":162,"line":163},[160,922,407],{"class":199},[160,924,925,928],{"class":162,"line":178},[160,926,927],{"class":166},"plugins",[160,929,415],{"class":414},[160,931,932,935,937,940,943],{"class":162,"line":189},[160,933,934],{"class":166},"  kotlin",[160,936,423],{"class":414},[160,938,939],{"class":170},"\"jvm\"",[160,941,942],{"class":414},") version ",[160,944,945],{"class":170},"\"2.3.20\"\n",[160,947,948],{"class":162,"line":196},[160,949,434],{"class":414},[160,951,952],{"class":162,"line":203},[160,953,193],{"emptyLinePlaceholder":192},[160,955,956,958,960,962,965,967,970,972,974,976,979,981,984,986,989],{"class":162,"line":220},[160,957,443],{"class":414},[160,959,446],{"class":166},[160,961,449],{"class":414},[160,963,964],{"class":166},"org",[160,966,27],{"class":414},[160,968,969],{"class":166},"jetbrains",[160,971,27],{"class":414},[160,973,400],{"class":166},[160,975,27],{"class":414},[160,977,978],{"class":166},"gradle",[160,980,27],{"class":414},[160,982,983],{"class":166},"tasks",[160,985,27],{"class":414},[160,987,988],{"class":166},"KotlinCompile",[160,990,455],{"class":414},[160,992,993,996,999,1001,1004],{"class":162,"line":458},[160,994,995],{"class":414},"  compilerOptions.freeCompilerArgs.",[160,997,998],{"class":166},"add",[160,1000,423],{"class":414},[160,1002,1003],{"class":170},"\"-Xjsr305=strict\"",[160,1005,429],{"class":414},[160,1007,1008],{"class":162,"line":467},[160,1009,434],{"class":414},[29,1011,238],{"id":237},[12,1013,1014,1015,1018],{},"In larger Kotlin codebases, build latency and reproducibility determine CI\u002FCD throughput. Tooling releases like 2.3.20 directly improve ",[16,1016,1017],{},"pipeline stability",", reduce rebuild cost, and lower flakiness from edge-case runtime and stdlib behavior.",[247,1020,1021],{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":156,"searchDepth":178,"depth":178,"links":1023},[1024,1025,1026],{"id":825,"depth":178,"text":826},{"id":867,"depth":178,"text":868},{"id":237,"depth":178,"text":238},"\u002Fimg\u002Fblog\u002Fkotlin-2-3-20-tooling-release-build-performance-cover.jpg","2026-03-22","Kotlin 2.3.20 is a tooling update improving IR pipeline performance and fixing a race condition in the standard library.",{},"\u002Fen\u002Fblog\u002Fkotlin-2-3-20-tooling-release-build-performance",{"title":813,"description":1029},"en\u002Fblog\u002Fkotlin-2-3-20-tooling-release-build-performance",[1035,1036,1037,1038],"Kotlin","JVM","Build Tools","Developer Tools","DSeq30JeHuNaCmIrZ-YyFbTFv1goaihyAcn9DYa1YGw",{"id":1041,"title":1042,"body":1043,"cover":1289,"date":1290,"description":1291,"draft":258,"extension":259,"meta":1292,"navigation":192,"path":1293,"seo":1294,"stem":1295,"tags":1296,"__hash__":1298},"blog_en\u002Fen\u002Fblog\u002Fquarkus-3-20-lts-maintenance-und-cve-fixes.md","Quarkus 3.20 LTS: Maintenance Release 3.20.6 with Security Fixes",{"type":9,"value":1044,"toc":1284},[1045,1056,1060,1063,1089,1095,1099,1102,1126,1129,1269,1271,1281],[12,1046,1047,1048,1051,1052,1055],{},"Cloud-native Java stacks operate under continuous patch pressure: frameworks, container bases, and dependencies must remain stable while staying current. The ",[16,1049,1050],{},"Quarkus 3.20"," LTS line addresses this tension through a maintenance process; in late March 2026, maintenance release ",[16,1053,1054],{},"3.20.6"," shipped with security fixes.",[29,1057,1059],{"id":1058},"what-lts-means-in-quarkus","What LTS Means in Quarkus",[12,1061,1062],{},"An LTS branch is not a feature stream but a stable corridor for production:",[37,1064,1065,1072,1079,1086],{},[40,1066,1067,1068,1071],{},"Selective ",[16,1069,1070],{},"backports"," instead of continuous feature additions",[40,1073,1074,1075,1078],{},"Regular ",[16,1076,1077],{},"maintenance releases"," with bug fixes and security updates",[40,1080,1081,1082,1085],{},"Alignment around a stable ",[16,1083,1084],{},"platform BOM"," bundling extension and dependency versions",[40,1087,1088],{},"Goal: predictable updates for services with long operational lifecycles",[12,1090,1091],{},[90,1092],{"alt":1093,"src":1094},"Diagram: LTS branch → BOM → production","\u002Fimg\u002Fblog\u002Fquarkus-3-20-lts-maintenance-und-cve-fixes-diagram.svg",[29,1096,1098],{"id":1097},"what-needs-updating-in-practice","What Needs Updating in Practice",[12,1100,1101],{},"A Quarkus update affects more than a single version bump:",[37,1103,1104,1109,1116,1119],{},[40,1105,876,1106,1108],{},[16,1107,1084],{}," in Maven\u002FGradle (extensions follow the BOM set)",[40,1110,1111,1112,1115],{},"Rebuilding container images including ",[16,1113,1114],{},"SBOM"," generation and CVE scanning",[40,1117,1118],{},"Validating observability and security agents (OpenTelemetry, TLS, OAuth)",[40,1120,1121,1122,1125],{},"Rechecking ",[16,1123,1124],{},"native-image"," builds, where used",[12,1127,1128],{},"Example of importing a Quarkus platform BOM:",[151,1130,1134],{"className":1131,"code":1132,"language":1133,"meta":156,"style":156},"language-xml shiki shiki-themes github-light github-dark","\u003C!-- pom.xml -->\n\u003CdependencyManagement>\n  \u003Cdependencies>\n    \u003Cdependency>\n      \u003CgroupId>io.quarkus.platform\u003C\u002FgroupId>\n      \u003CartifactId>quarkus-bom\u003C\u002FartifactId>\n      \u003Cversion>3.20.6\u003C\u002Fversion>\n      \u003Ctype>pom\u003C\u002Ftype>\n      \u003Cscope>import\u003C\u002Fscope>\n    \u003C\u002Fdependency>\n  \u003C\u002Fdependencies>\n\u003C\u002FdependencyManagement>\n","xml",[67,1135,1136,1141,1151,1161,1171,1186,1200,1214,1228,1242,1251,1260],{"__ignoreMap":156},[160,1137,1138],{"class":162,"line":163},[160,1139,1140],{"class":199},"\u003C!-- pom.xml -->\n",[160,1142,1143,1145,1148],{"class":162,"line":178},[160,1144,449],{"class":414},[160,1146,1147],{"class":601},"dependencyManagement",[160,1149,1150],{"class":414},">\n",[160,1152,1153,1156,1159],{"class":162,"line":189},[160,1154,1155],{"class":414},"  \u003C",[160,1157,1158],{"class":601},"dependencies",[160,1160,1150],{"class":414},[160,1162,1163,1166,1169],{"class":162,"line":196},[160,1164,1165],{"class":414},"    \u003C",[160,1167,1168],{"class":601},"dependency",[160,1170,1150],{"class":414},[160,1172,1173,1176,1179,1182,1184],{"class":162,"line":203},[160,1174,1175],{"class":414},"      \u003C",[160,1177,1178],{"class":601},"groupId",[160,1180,1181],{"class":414},">io.quarkus.platform\u003C\u002F",[160,1183,1178],{"class":601},[160,1185,1150],{"class":414},[160,1187,1188,1190,1193,1196,1198],{"class":162,"line":220},[160,1189,1175],{"class":414},[160,1191,1192],{"class":601},"artifactId",[160,1194,1195],{"class":414},">quarkus-bom\u003C\u002F",[160,1197,1192],{"class":601},[160,1199,1150],{"class":414},[160,1201,1202,1204,1207,1210,1212],{"class":162,"line":458},[160,1203,1175],{"class":414},[160,1205,1206],{"class":601},"version",[160,1208,1209],{"class":414},">3.20.6\u003C\u002F",[160,1211,1206],{"class":601},[160,1213,1150],{"class":414},[160,1215,1216,1218,1221,1224,1226],{"class":162,"line":467},[160,1217,1175],{"class":414},[160,1219,1220],{"class":601},"type",[160,1222,1223],{"class":414},">pom\u003C\u002F",[160,1225,1220],{"class":601},[160,1227,1150],{"class":414},[160,1229,1230,1232,1235,1238,1240],{"class":162,"line":670},[160,1231,1175],{"class":414},[160,1233,1234],{"class":601},"scope",[160,1236,1237],{"class":414},">import\u003C\u002F",[160,1239,1234],{"class":601},[160,1241,1150],{"class":414},[160,1243,1244,1247,1249],{"class":162,"line":681},[160,1245,1246],{"class":414},"    \u003C\u002F",[160,1248,1168],{"class":601},[160,1250,1150],{"class":414},[160,1252,1253,1256,1258],{"class":162,"line":689},[160,1254,1255],{"class":414},"  \u003C\u002F",[160,1257,1158],{"class":601},[160,1259,1150],{"class":414},[160,1261,1262,1265,1267],{"class":162,"line":698},[160,1263,1264],{"class":414},"\u003C\u002F",[160,1266,1147],{"class":601},[160,1268,1150],{"class":414},[29,1270,238],{"id":237},[12,1272,1273,1274,1277,1278,27],{},"LTS lines structure upgrades in production platforms and reduce risk through controlled backports. At the same time, security patching remains mandatory. Maintenance releases like 3.20.6 are a key mechanism to combine ",[16,1275,1276],{},"stable runtimes"," with ",[16,1279,1280],{},"fast CVE response",[247,1282,1283],{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":156,"searchDepth":178,"depth":178,"links":1285},[1286,1287,1288],{"id":1058,"depth":178,"text":1059},{"id":1097,"depth":178,"text":1098},{"id":237,"depth":178,"text":238},"\u002Fimg\u002Fblog\u002Fquarkus-3-20-lts-maintenance-und-cve-fixes-cover.jpg","2026-03-18","Quarkus 3.20 is maintained as an LTS line via maintenance releases; version 3.20.6 combines bug fixes, platform updates, and CVE fixes.",{},"\u002Fen\u002Fblog\u002Fquarkus-3-20-lts-maintenance-und-cve-fixes",{"title":1042,"description":1291},"en\u002Fblog\u002Fquarkus-3-20-lts-maintenance-und-cve-fixes",[1297,495,497,266],"Quarkus","RXt3E0JAosIK-PNSHd3nA5NMo0CobqwJW4UiJRuPy_c",{"id":1300,"title":1301,"body":1302,"cover":1614,"date":1615,"description":1616,"draft":258,"extension":259,"meta":1617,"navigation":192,"path":1618,"seo":1619,"stem":1620,"tags":1621,"__hash__":1622},"blog_en\u002Fen\u002Fblog\u002Fquarkus-und-cloud-native-java.md","Quarkus and the Future of Cloud-Native Java",{"type":9,"value":1303,"toc":1609},[1304,1310,1314,1324,1360,1363,1553,1557,1563,1569,1572,1601,1603,1606],[12,1305,1306,1307,1309],{},"Traditional Java applications start in multiple seconds and consume hundreds of megabytes of memory -- characteristics that become liabilities in the era of container orchestration and serverless architectures. ",[16,1308,1297],{}," addresses exactly this problem. With the current version 3.20 and continuous backing from Red Hat, the framework has established itself as one of the leading solutions for cloud-native Java and Kotlin.",[29,1311,1313],{"id":1312},"what-makes-quarkus-different","What Makes Quarkus Different?",[12,1315,1316,1317,59,1320,1323],{},"Quarkus is designed as a ",[16,1318,1319],{},"container-first",[16,1321,1322],{},"Kubernetes-native"," framework. Unlike traditional Java frameworks, Quarkus shifts a large portion of initialization from runtime to the build phase. Key features:",[37,1325,1326,1332,1338,1344,1350],{},[40,1327,1328,1331],{},[16,1329,1330],{},"GraalVM Native Compilation",": Compilation to native executables with startup in milliseconds",[40,1333,1334,1337],{},[16,1335,1336],{},"Dev Services",": Automatic provisioning of databases and services in development mode",[40,1339,1340,1343],{},[16,1341,1342],{},"Continuous Testing",": Tests run automatically in the background on code changes",[40,1345,1346,1349],{},[16,1347,1348],{},"Reactive and Imperative",": Unified programming model supporting both paradigms",[40,1351,1352,1355,1356,1359],{},[16,1353,1354],{},"Kotlin Support",": Full coroutine integration with ",[67,1357,1358],{},"suspend"," functions in REST endpoints",[12,1361,1362],{},"A reactive REST endpoint in Kotlin with Quarkus:",[151,1364,1366],{"className":398,"code":1365,"language":400,"meta":156,"style":156},"@Path(\"\u002Fproducts\")\n@Produces(MediaType.APPLICATION_JSON)\nclass ProductResource(\n    private val repository: ProductRepository\n) {\n    @GET\n    suspend fun listAll(): List\u003CProduct> =\n        repository.findAll()\n\n    @GET\n    @Path(\"\u002F{id}\")\n    suspend fun findById(@PathParam(\"id\") id: Long): Product =\n        repository.findById(id)\n            ?: throw NotFoundException(\"Product $id not found\")\n}\n",[67,1367,1368,1380,1388,1400,1414,1419,1424,1452,1462,1466,1470,1482,1515,1525,1549],{"__ignoreMap":156},[160,1369,1370,1373,1375,1378],{"class":162,"line":163},[160,1371,1372],{"class":166},"@Path",[160,1374,423],{"class":414},[160,1376,1377],{"class":170},"\"\u002Fproducts\"",[160,1379,429],{"class":414},[160,1381,1382,1385],{"class":162,"line":178},[160,1383,1384],{"class":166},"@Produces",[160,1386,1387],{"class":414},"(MediaType.APPLICATION_JSON)\n",[160,1389,1390,1394,1397],{"class":162,"line":189},[160,1391,1393],{"class":1392},"szBVR","class",[160,1395,1396],{"class":166}," ProductResource",[160,1398,1399],{"class":414},"(\n",[160,1401,1402,1405,1408,1411],{"class":162,"line":196},[160,1403,1404],{"class":1392},"    private",[160,1406,1407],{"class":1392}," val",[160,1409,1410],{"class":414}," repository: ",[160,1412,1413],{"class":166},"ProductRepository\n",[160,1415,1416],{"class":162,"line":203},[160,1417,1418],{"class":414},") {\n",[160,1420,1421],{"class":162,"line":220},[160,1422,1423],{"class":166},"    @GET\n",[160,1425,1426,1429,1432,1435,1438,1441,1443,1446,1449],{"class":162,"line":458},[160,1427,1428],{"class":1392},"    suspend",[160,1430,1431],{"class":1392}," fun",[160,1433,1434],{"class":166}," listAll",[160,1436,1437],{"class":414},"(): ",[160,1439,1440],{"class":166},"List",[160,1442,449],{"class":414},[160,1444,1445],{"class":166},"Product",[160,1447,1448],{"class":414},"> ",[160,1450,1451],{"class":1392},"=\n",[160,1453,1454,1457,1460],{"class":162,"line":467},[160,1455,1456],{"class":414},"        repository.",[160,1458,1459],{"class":166},"findAll",[160,1461,464],{"class":414},[160,1463,1464],{"class":162,"line":670},[160,1465,193],{"emptyLinePlaceholder":192},[160,1467,1468],{"class":162,"line":681},[160,1469,1423],{"class":166},[160,1471,1472,1475,1477,1480],{"class":162,"line":689},[160,1473,1474],{"class":166},"    @Path",[160,1476,423],{"class":414},[160,1478,1479],{"class":170},"\"\u002F{id}\"",[160,1481,429],{"class":414},[160,1483,1484,1486,1488,1491,1493,1496,1498,1501,1504,1507,1510,1512],{"class":162,"line":698},[160,1485,1428],{"class":1392},[160,1487,1431],{"class":1392},[160,1489,1490],{"class":166}," findById",[160,1492,423],{"class":414},[160,1494,1495],{"class":166},"@PathParam",[160,1497,423],{"class":414},[160,1499,1500],{"class":170},"\"id\"",[160,1502,1503],{"class":414},") id: ",[160,1505,1506],{"class":166},"Long",[160,1508,1509],{"class":414},"): ",[160,1511,1445],{"class":166},[160,1513,1514],{"class":1392}," =\n",[160,1516,1517,1519,1522],{"class":162,"line":706},[160,1518,1456],{"class":414},[160,1520,1521],{"class":166},"findById",[160,1523,1524],{"class":414},"(id)\n",[160,1526,1527,1530,1533,1536,1538,1541,1544,1547],{"class":162,"line":716},[160,1528,1529],{"class":414},"            ?: ",[160,1531,1532],{"class":1392},"throw",[160,1534,1535],{"class":166}," NotFoundException",[160,1537,423],{"class":414},[160,1539,1540],{"class":170},"\"Product ",[160,1542,1543],{"class":174},"$id",[160,1545,1546],{"class":170}," not found\"",[160,1548,429],{"class":414},[160,1550,1551],{"class":162,"line":727},[160,1552,434],{"class":414},[29,1554,1556],{"id":1555},"native-compilation-and-kubernetes-integration","Native Compilation and Kubernetes Integration",[12,1558,1559,1562],{},[16,1560,1561],{},"GraalVM Ahead-of-Time compilation"," transforms Java bytecode into platform-specific machine code. The result: startup times in the single-digit millisecond range and memory consumption 5 to 10 times lower than a traditional JVM application.",[12,1564,1565],{},[90,1566],{"alt":1567,"src":1568},"Quarkus Performance Comparison: Startup Time and Memory Usage","\u002Fimg\u002Fblog\u002Fquarkus-performance.png",[12,1570,1571],{},"Kubernetes integration extends beyond simple deployment:",[37,1573,1574,1580,1589,1595],{},[40,1575,1576,1579],{},[16,1577,1578],{},"Automatic manifest generation"," for Kubernetes and OpenShift",[40,1581,1582,59,1585,1588],{},[16,1583,1584],{},"Health checks",[16,1586,1587],{},"metrics"," are integrated by default",[40,1590,1591,1594],{},[16,1592,1593],{},"Reflection-free Jackson serialization"," in Quarkus 3.20 for optimized native builds",[40,1596,1597,1600],{},[16,1598,1599],{},"Eclipse MicroProfile"," compatibility for standardized cloud-native patterns",[29,1602,238],{"id":237},[12,1604,1605],{},"Java continues to dominate enterprise development but faces direct competition from Go and Rust in cloud-native environments. Quarkus bridges the gap between the Java ecosystem with its millions of developers and the requirements of modern container platforms. Native compilation makes Java applications competitive in scenarios previously reserved for other languages -- from serverless functions to resource-optimized microservices.",[247,1607,1608],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":156,"searchDepth":178,"depth":178,"links":1610},[1611,1612,1613],{"id":1312,"depth":178,"text":1313},{"id":1555,"depth":178,"text":1556},{"id":237,"depth":178,"text":238},"\u002Fimg\u002Fblog\u002Fquarkus-cover.jpg","2026-03-14","Quarkus establishes itself as a leading framework for cloud-native Java and Kotlin with native GraalVM compilation and Kubernetes integration.",{},"\u002Fen\u002Fblog\u002Fquarkus-und-cloud-native-java",{"title":1301,"description":1616},"en\u002Fblog\u002Fquarkus-und-cloud-native-java",[1297,495,1035,497],"H7xG3YMdMf5eFC8POg-Y-udfEXo8EbpxE-Bd_9D-3nw",21,1775892933950]