[{"data":1,"prerenderedAt":1627},["ShallowReactive",2],{"blog-blog_de-page-2":3},{"posts":4,"totalPosts":1626,"totalPages":197,"currentPage":179},[5,271,499,811,1041,1301],{"id":6,"title":7,"body":8,"cover":256,"date":257,"description":258,"draft":259,"extension":260,"meta":261,"navigation":193,"path":262,"seo":263,"stem":264,"tags":265,"__hash__":270},"blog_de\u002Fde\u002Fblog\u002Fkubernetes-patch-release-go-cve-update-februar-2026.md","Kubernetes: Out-of-band Patch-Releases für Go-CVEs",{"type":9,"value":10,"toc":251},"minimark",[11,28,33,36,87,94,98,101,141,144,151,236,240,247],[12,13,14,15,19,20,23,24,27],"p",{},"Patch-Releases folgen in Kubernetes meist einem monatlichen Rhythmus. Ende Februar 2026 wurden jedoch mehrere Branches außerplanmäßig aktualisiert, um eine neue ",[16,17,18],"strong",{},"Go-Version"," einzuziehen und damit mehrere ",[16,21,22],{},"Go-CVEs"," zu beheben. Die Release-Notizen betonen: ",[16,25,26],{},"keine weiteren Änderungen",".",[29,30,32],"h2",{"id":31},"was-out-of-band-konkret-bedeutet","Was „out-of-band“ konkret bedeutet",[12,34,35],{},"Ein out-of-band Patch ist operational anders zu behandeln als ein regulärer Monats-Patch:",[37,38,39,46,53,63,78,84],"ul",{},[40,41,42,43],"li",{},"Release-Termin außerhalb des Patch-Kalenders, ausgelöst durch ",[16,44,45],{},"Security-Intake",[40,47,48,49,52],{},"Änderung ist im Wesentlichen ein ",[16,50,51],{},"Toolchain-Update"," (Go) statt Feature-Fixes",[40,54,55,56,59,60],{},"Neu gebaute Binaries und Images für Komponenten wie ",[16,57,58],{},"kube-apiserver"," und ",[16,61,62],{},"kubelet",[40,64,65,66,70,71,70,74,77],{},"Gleichzeitige Patches für mehrere Minor-Linien (z. B. ",[67,68,69],"code",{},"1.35.x",", ",[67,72,73],{},"1.34.x",[67,75,76],{},"1.33.x",")",[40,79,80,81],{},"Patches können auch dann notwendig sein, wenn Workloads unverändert bleiben - die Abhängigkeit ist die ",[16,82,83],{},"Go-Runtime",[40,85,86],{},"Managed-Angebote übernehmen solche Releases typischerweise in eigene Rollout-Zeitpläne und Wartungsfenster",[12,88,89],{},[90,91],"img",{"alt":92,"src":93},"Diagramm: Go-CVEs → Out-of-band Patch → Rollout","\u002Fimg\u002Fblog\u002Fkubernetes-patch-release-go-cve-update-februar-2026-diagram.svg",[29,95,97],{"id":96},"praktische-auswirkungen-auf-upgrade-prozesse","Praktische Auswirkungen auf Upgrade-Prozesse",[12,99,100],{},"Für Plattform-Teams ergeben sich klare Prozess-Anforderungen:",[37,102,103,110,117,124,131,138],{},[40,104,105,106,109],{},"Monitoring der offiziellen ",[16,107,108],{},"Patch-Release-Historie"," und Security-Announcements",[40,111,112,113,116],{},"Nutzung eines ",[16,114,115],{},"Staging-Clusters"," für schnelle Validierung bei engen Zeitfenstern",[40,118,119,120,123],{},"Abstimmung von ",[16,121,122],{},"Change Windows"," für Cluster, die in Sicherheits-SLAs laufen",[40,125,126,127,130],{},"Rebuilds für eigene Komponenten, falls Kubernetes aus ",[16,128,129],{},"Source Builds"," betrieben wird",[40,132,133,134,137],{},"Berücksichtigung von ",[16,135,136],{},"Version Skew"," (Control Plane vs. Nodes) beim Rollout",[40,139,140],{},"Node-Upgrades in Wellen (z. B. nach Node-Pools) mit PDBs und Kapazitätsplanung",[12,142,143],{},"Bei selbstverwalteten Clustern ist der Rebuild eigener Images und Artefakte oft Teil des Upgrades, sobald Kubernetes aus Source- oder Vendor-Builds abgeleitet wird.",[12,145,146,147,150],{},"Ein Minimalpfad für ein Patch-Upgrade mit ",[67,148,149],{},"kubeadm"," sieht typischerweise so aus:",[152,153,158],"pre",{"className":154,"code":155,"language":156,"meta":157,"style":157},"language-bash shiki shiki-themes github-light github-dark","kubectl version --short\nkubeadm upgrade plan\n\n# Beispiel: Upgrade auf ein konkretes Patch-Release\nsudo kubeadm upgrade apply v1.35.2\nkubectl get nodes -o wide\n","bash","",[67,159,160,177,188,195,202,219],{"__ignoreMap":157},[161,162,165,169,173],"span",{"class":163,"line":164},"line",1,[161,166,168],{"class":167},"sScJk","kubectl",[161,170,172],{"class":171},"sZZnC"," version",[161,174,176],{"class":175},"sj4cs"," --short\n",[161,178,180,182,185],{"class":163,"line":179},2,[161,181,149],{"class":167},[161,183,184],{"class":171}," upgrade",[161,186,187],{"class":171}," plan\n",[161,189,191],{"class":163,"line":190},3,[161,192,194],{"emptyLinePlaceholder":193},true,"\n",[161,196,198],{"class":163,"line":197},4,[161,199,201],{"class":200},"sJ8bj","# Beispiel: Upgrade auf ein konkretes Patch-Release\n",[161,203,205,208,211,213,216],{"class":163,"line":204},5,[161,206,207],{"class":167},"sudo",[161,209,210],{"class":171}," kubeadm",[161,212,184],{"class":171},[161,214,215],{"class":171}," apply",[161,217,218],{"class":171}," v1.35.2\n",[161,220,222,224,227,230,233],{"class":163,"line":221},6,[161,223,168],{"class":167},[161,225,226],{"class":171}," get",[161,228,229],{"class":171}," nodes",[161,231,232],{"class":175}," -o",[161,234,235],{"class":171}," wide\n",[29,237,239],{"id":238},"warum-das-wichtig-ist","Warum das wichtig ist",[12,241,242,243,246],{},"Security-Fixes sind nicht immer an den monatlichen Patch-Zyklus gebunden. Out-of-band Releases erfordern Upgrade-Fähigkeit auf ",[16,244,245],{},"kurzer Vorlaufzeit",", klare Kommunikation in Richtung Anwendungsteams und eine operationalisierte Pipeline für Validierung und Rollout.",[248,249,250],"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":157,"searchDepth":179,"depth":179,"links":252},[253,254,255],{"id":31,"depth":179,"text":32},{"id":96,"depth":179,"text":97},{"id":238,"depth":179,"text":239},"\u002Fimg\u002Fblog\u002Fkubernetes-patch-release-go-cve-update-februar-2026-cover.jpg","2026-03-28","Am 26. Februar 2026 wurden mehrere Kubernetes-Patch-Releases außerhalb des Monatsrhythmus veröffentlicht, um Go-CVEs zu adressieren.",false,"md",{},"\u002Fde\u002Fblog\u002Fkubernetes-patch-release-go-cve-update-februar-2026",{"title":7,"description":258},"de\u002Fblog\u002Fkubernetes-patch-release-go-cve-update-februar-2026",[266,267,268,269],"Kubernetes","Security","Go","Operations","V78wDhgNuZtvo_tLYwCsfts4kn2Y7gtq557ql9ry3ys",{"id":272,"title":273,"body":274,"cover":487,"date":488,"description":489,"draft":259,"extension":260,"meta":490,"navigation":193,"path":491,"seo":492,"stem":493,"tags":494,"__hash__":498},"blog_de\u002Fde\u002Fblog\u002Fjava-26-http3-aot-cache-und-security-aenderungen.md","Java 26 ist verfügbar: HTTP\u002F3, AOT-Object-Caching und Security-Updates",{"type":9,"value":275,"toc":482},[276,292,296,299,348,354,358,361,393,396,470,472,479],[12,277,278,279,282,283,70,286,59,289,291],{},"Mit Java 26 ist im März 2026 ein neues Feature-Release im halbjährlichen Takt erschienen. Der Release bündelt Änderungen in ",[16,280,281],{},"Language Features"," (teilweise Preview), ",[16,284,285],{},"Libraries",[16,287,288],{},"Performance",[16,290,267],{}," und wird damit zu einem relevanten Update-Punkt für Cloud-native Java-Stacks.",[29,293,295],{"id":294},"wichtige-änderungen-in-java-26","Wichtige Änderungen in Java 26",[12,297,298],{},"Im Fokus stehen mehrere Cluster, die sich direkt auf Runtime- und Build-Umgebungen auswirken:",[37,300,301,308,311,322,329,335,345],{},[40,302,303,304,307],{},"Verbesserungen an der Sprache über ",[16,305,306],{},"Preview\u002FIncubator","-Features und Weiterentwicklung bestehender JEPs",[40,309,310],{},"Preview-Features erfordern oft explizite Aktivierung und wirken auf Test- und Rollout-Policies",[40,312,313,314,317,318,321],{},"Library-Updates wie ",[16,315,316],{},"HTTP\u002F3","-Support im ",[67,319,320],{},"HttpClient"," (je nach Implementierungsstand)",[40,323,324,325,328],{},"Performance-Themen wie ",[16,326,327],{},"Ahead-of-Time Object Caching"," zur Reduktion von Startup-Kosten",[40,330,331,332,77],{},"Maintenance & Cleanup, unter anderem das Entfernen historischer APIs (z. B. ",[16,333,334],{},"Applet API",[40,336,337,338,341,342,77],{},"Vorbereitung auf strengere Semantik bei ",[67,339,340],{},"final"," (z. B. ",[16,343,344],{},"Prepare to Make Final Mean Final",[40,346,347],{},"Security-Änderungen, die Default-Verhalten, TLS-Stacks und Kryptographie betreffen",[12,349,350],{},[90,351],{"alt":352,"src":353},"Diagramm: Java-26 Änderungen nach Kategorien","\u002Fimg\u002Fblog\u002Fjava-26-http3-aot-cache-und-security-aenderungen-diagram.svg",[29,355,357],{"id":356},"relevanz-für-cloud-native-java-stacks","Relevanz für Cloud-native Java-Stacks",[12,359,360],{},"In produktiven Umgebungen sind Java-Releases weniger eine Code- als eine Plattformfrage:",[37,362,363,370,377,380,386],{},[40,364,365,366,369],{},"Aktualisierung von ",[16,367,368],{},"Base Images"," und Runtime-Layern in Container-Registries",[40,371,372,373,376],{},"Anpassung der ",[16,374,375],{},"Toolchains"," in Maven\u002FGradle (z. B. Compiler, jlink, native-image)",[40,378,379],{},"Test-Matrizen für Libraries, Frameworks und Agenten (Observability, Security, Profiling)",[40,381,382,383],{},"Deprecations und Removal-Notices als Input für ",[16,384,385],{},"Modernisierungs-Roadmaps",[40,387,388,389,392],{},"Entscheidung zwischen ",[16,390,391],{},"Feature Release"," und LTS-Upgrade entlang der Plattform-Strategie",[12,394,395],{},"Ein konkreter Einstieg ist die Toolchain-Pin in Gradle:",[152,397,401],{"className":398,"code":399,"language":400,"meta":157,"style":157},"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":157},[161,404,405],{"class":163,"line":164},[161,406,407],{"class":200},"\u002F\u002F build.gradle.kts\n",[161,409,410,412],{"class":163,"line":179},[161,411,400],{"class":167},[161,413,415],{"class":414},"sVt8B"," {\n",[161,417,418,421,424,427],{"class":163,"line":190},[161,419,420],{"class":167},"  jvmToolchain",[161,422,423],{"class":414},"(",[161,425,426],{"class":175},"26",[161,428,429],{"class":414},")\n",[161,431,432],{"class":163,"line":197},[161,433,434],{"class":414},"}\n",[161,436,437],{"class":163,"line":204},[161,438,194],{"emptyLinePlaceholder":193},[161,440,441,444,447,450,453],{"class":163,"line":221},[161,442,443],{"class":414},"tasks.",[161,445,446],{"class":167},"withType",[161,448,449],{"class":414},"\u003C",[161,451,452],{"class":167},"Test",[161,454,455],{"class":414},"> {\n",[161,457,459,462],{"class":163,"line":458},7,[161,460,461],{"class":167},"  useJUnitPlatform",[161,463,464],{"class":414},"()\n",[161,466,468],{"class":163,"line":467},8,[161,469,434],{"class":414},[29,471,239],{"id":238},[12,473,474,475,478],{},"Der halbjährliche Java-Zyklus verkürzt die Zeitspanne zwischen Major-Runtime-Änderungen. Teams, die Toolchain-Upgrades, Container-Images und Abhängigkeiten kontinuierlich pflegen, reduzieren Migrationsrisiken und sind schneller auf ",[16,476,477],{},"Security- und Performance-Verbesserungen"," aus neuen Releases vorbereitet.",[248,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":157,"searchDepth":179,"depth":179,"links":483},[484,485,486],{"id":294,"depth":179,"text":295},{"id":356,"depth":179,"text":357},{"id":238,"depth":179,"text":239},"\u002Fimg\u002Fblog\u002Fjava-26-http3-aot-cache-und-security-aenderungen-cover.jpg","2026-03-25","JDK 26 bringt neue JEPs für Sprache, Libraries, Performance und Sicherheit und setzt den halbjährlichen Release-Zyklus fort.",{},"\u002Fde\u002Fblog\u002Fjava-26-http3-aot-cache-und-security-aenderungen",{"title":273,"description":489},"de\u002Fblog\u002Fjava-26-http3-aot-cache-und-security-aenderungen",[495,496,267,497],"Java","JDK","Cloud-Native","soubBN3ktDcJJPBFEmcYEBsSIY1EJ4CFUkVgAF_Bzgg",{"id":500,"title":501,"body":502,"cover":799,"date":800,"description":801,"draft":259,"extension":260,"meta":802,"navigation":193,"path":803,"seo":804,"stem":805,"tags":806,"__hash__":810},"blog_de\u002Fde\u002Fblog\u002Fzero-trust-architektur-sicherheit-jenseits-des-perimeters.md","Zero Trust Architektur: Sicherheit jenseits des Perimeters",{"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],{},"Klassische Sicherheitsmodelle basieren auf einem einfachen Prinzip: Innerhalb des Netzwerks wird vertraut, ausserhalb nicht. In Zeiten von Remote-Arbeit, Cloud-Migration und zunehmenden Supply-Chain-Angriffen reicht dieser Ansatz nicht mehr aus. ",[16,508,509],{},"Zero Trust Architecture (ZTA)"," kehrt dieses Modell um.",[29,512,514],{"id":513},"was-ist-zero-trust","Was ist Zero Trust?",[12,516,517,518,521,522,525],{},"Zero Trust ist ein Sicherheitsparadigma, das auf dem Grundsatz ",[16,519,520],{},"\"Never trust, always verify\""," basiert. Kein Benutzer, kein Geraet und kein Netzwerksegment erhaelt automatisch Vertrauen - unabhaengig vom Standort. Das ",[16,523,524],{},"NIST Special Publication 800-207"," definiert den Referenzrahmen fuer die Umsetzung und beschreibt drei zentrale logische Komponenten:",[37,527,528,534,540],{},[40,529,530,533],{},[16,531,532],{},"Policy Engine (PE)"," - trifft Zugriffsentscheidungen auf Basis von Richtlinien, Risikobewertungen und Identitaetsdaten",[40,535,536,539],{},[16,537,538],{},"Policy Administrator (PA)"," - setzt die Entscheidungen der Policy Engine in konkrete Aktionen um",[40,541,542,545],{},[16,543,544],{},"Policy Enforcement Point (PEP)"," - erzwingt die Zugriffsentscheidungen am Netzwerkuebergang",[12,547,548],{},[90,549],{"alt":550,"src":551},"Vergleich: Perimeter-Modell vs. Zero Trust","\u002Fimg\u002Fblog\u002Fzero-trust-vergleich.png",[29,553,555],{"id":554},"kernprinzipien-und-umsetzung","Kernprinzipien und Umsetzung",[12,557,558],{},"Die drei Kernprinzipien von Zero Trust lauten:",[37,560,561,567,573],{},[40,562,563,566],{},[16,564,565],{},"Explizite Verifizierung"," - Jede Anfrage wird anhand von Identitaet, Geraetezustand, Standort und Verhaltensmuster geprueft",[40,568,569,572],{},[16,570,571],{},"Least Privilege Access"," - Zugriff wird nur in dem Umfang gewaehrt, der fuer die jeweilige Aufgabe erforderlich ist",[40,574,575,578],{},[16,576,577],{},"Assume Breach"," - Das System geht davon aus, dass ein Angreifer bereits im Netzwerk ist, und minimiert den Blast Radius",[12,580,581,582,585,586,589],{},"In ",[16,583,584],{},"Kubernetes-Umgebungen"," laesst sich Zero Trust durch ",[16,587,588],{},"NetworkPolicies"," umsetzen. Diese erzwingen Mikrosegmentierung auf Pod-Ebene:",[152,591,595],{"className":592,"code":593,"language":594,"meta":157,"style":157},"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":157},[161,598,599,603,606],{"class":163,"line":164},[161,600,602],{"class":601},"s9eBZ","apiVersion",[161,604,605],{"class":414},": ",[161,607,608],{"class":171},"networking.k8s.io\u002Fv1\n",[161,610,611,614,616],{"class":163,"line":179},[161,612,613],{"class":601},"kind",[161,615,605],{"class":414},[161,617,618],{"class":171},"NetworkPolicy\n",[161,620,621,624],{"class":163,"line":190},[161,622,623],{"class":601},"metadata",[161,625,626],{"class":414},":\n",[161,628,629,632,634],{"class":163,"line":197},[161,630,631],{"class":601},"  name",[161,633,605],{"class":414},[161,635,636],{"class":171},"allow-frontend-to-backend\n",[161,638,639,642,644],{"class":163,"line":204},[161,640,641],{"class":601},"  namespace",[161,643,605],{"class":414},[161,645,646],{"class":171},"production\n",[161,648,649,652],{"class":163,"line":221},[161,650,651],{"class":601},"spec",[161,653,626],{"class":414},[161,655,656,659],{"class":163,"line":458},[161,657,658],{"class":601},"  podSelector",[161,660,626],{"class":414},[161,662,663,666],{"class":163,"line":467},[161,664,665],{"class":601},"    matchLabels",[161,667,626],{"class":414},[161,669,671,674,676],{"class":163,"line":670},9,[161,672,673],{"class":601},"      app",[161,675,605],{"class":414},[161,677,678],{"class":171},"backend\n",[161,680,682,685],{"class":163,"line":681},10,[161,683,684],{"class":601},"  policyTypes",[161,686,626],{"class":414},[161,688,690,693],{"class":163,"line":689},11,[161,691,692],{"class":414},"    - ",[161,694,695],{"class":171},"Ingress\n",[161,697,699,702],{"class":163,"line":698},12,[161,700,701],{"class":601},"  ingress",[161,703,626],{"class":414},[161,705,707,709,712],{"class":163,"line":706},13,[161,708,692],{"class":414},[161,710,711],{"class":601},"from",[161,713,626],{"class":414},[161,715,717,720,723],{"class":163,"line":716},14,[161,718,719],{"class":414},"        - ",[161,721,722],{"class":601},"podSelector",[161,724,626],{"class":414},[161,726,728,731],{"class":163,"line":727},15,[161,729,730],{"class":601},"            matchLabels",[161,732,626],{"class":414},[161,734,736,739,741],{"class":163,"line":735},16,[161,737,738],{"class":601},"              app",[161,740,605],{"class":414},[161,742,743],{"class":171},"frontend\n",[161,745,747,750],{"class":163,"line":746},17,[161,748,749],{"class":601},"      ports",[161,751,626],{"class":414},[161,753,755,757,760,762],{"class":163,"line":754},18,[161,756,719],{"class":414},[161,758,759],{"class":601},"protocol",[161,761,605],{"class":414},[161,763,764],{"class":171},"TCP\n",[161,766,768,771,773],{"class":163,"line":767},19,[161,769,770],{"class":601},"          port",[161,772,605],{"class":414},[161,774,775],{"class":175},"8080\n",[12,777,778],{},"Diese Policy erlaubt ausschliesslich Traffic von Frontend-Pods zum Backend auf Port 8080. Jeglicher anderer eingehender Verkehr wird implizit blockiert.",[29,780,239],{"id":238},[12,782,783,784,59,787,790],{},"Die zunehmende Verlagerung von Workloads in die Cloud und die Verbreitung hybrider Arbeitsmodelle machen den klassischen Netzwerkperimeter obsolet. Zero Trust adressiert diese Realitaet, indem Sicherheit nicht an Netzwerkgrenzen, sondern an Identitaeten und Richtlinien gebunden wird. Mit der wachsenden Unterstuetzung durch CNI-Technologien wie ",[16,785,786],{},"Calico",[16,788,789],{},"Cilium"," wird die Umsetzung in containerisierten Umgebungen zunehmend praktikabler.",[248,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":157,"searchDepth":179,"depth":179,"links":795},[796,797,798],{"id":513,"depth":179,"text":514},{"id":554,"depth":179,"text":555},{"id":238,"depth":179,"text":239},"\u002Fimg\u002Fblog\u002Fzero-trust-cover.jpg","2026-03-24","Zero Trust ersetzt das klassische Perimeter-Modell durch kontinuierliche Verifizierung und minimale Zugriffsrechte.",{},"\u002Fde\u002Fblog\u002Fzero-trust-architektur-sicherheit-jenseits-des-perimeters",{"title":501,"description":801},"de\u002Fblog\u002Fzero-trust-architektur-sicherheit-jenseits-des-perimeters",[807,808,809],"Zero Trust","Cybersecurity","Architecture","wzJ2M-zU0YMB9azX6JGGfbol5G5n1WLuuG4kypOXheA",{"id":812,"title":813,"body":814,"cover":1028,"date":1029,"description":1030,"draft":259,"extension":260,"meta":1031,"navigation":193,"path":1032,"seo":1033,"stem":1034,"tags":1035,"__hash__":1040},"blog_de\u002Fde\u002Fblog\u002Fkotlin-2-3-20-tooling-release-build-performance.md","Kotlin 2.3.20: Tooling-Release mit Fokus auf Compiler und Build-Stabilität",{"type":9,"value":815,"toc":1023},[816,823,827,830,852,859,865,869,872,912,915,1011,1013,1020],[12,817,818,819,822],{},"Tooling-Releases sind für Kotlin-Teams oft wichtiger als einzelne Language-Features, weil sie direkt Build-Zeiten, IDE-Integrationen und Release-Pipelines beeinflussen. Mitte März 2026 wurde ",[16,820,821],{},"Kotlin 2.3.20"," als Update mit Schwerpunkt auf Compiler- und Standardbibliotheks-Fixes veröffentlicht.",[29,824,826],{"id":825},"was-im-release-enthalten-ist","Was im Release enthalten ist",[12,828,829],{},"Das Release adressiert mehrere Stellen, die in CI und lokalen Builds sichtbar werden:",[37,831,832,835,846,849],{},[40,833,834],{},"Performance-Optimierung: In der IR-Pipeline wird redundante Initialisierung vermieden",[40,836,837,838,841,842,845],{},"Stabilitätsfix: Behebung einer ",[16,839,840],{},"Race Condition"," in ",[67,843,844],{},"Duration.parse"," der Standardbibliothek",[40,847,848],{},"Tooling-Fokus: Änderungen, die vor allem Build- und IDE-Workflows betreffen",[40,850,851],{},"Reduzierte Build-Varianz, wenn mehrere Module parallel kompiliert und gecacht werden",[12,853,854,855,858],{},"Gerade in Multi-Module-Projekten wirken sich solche Fixes direkt auf ",[16,856,857],{},"Incremental Compilation"," und Wiederholbarkeit von CI-Läufen aus.",[12,860,861],{},[90,862],{"alt":863,"src":864},"Diagramm: Kotlin Tooling im Build","\u002Fimg\u002Fblog\u002Fkotlin-2-3-20-tooling-release-build-performance-diagram.svg",[29,866,868],{"id":867},"upgrade-in-gradle-und-ci","Upgrade in Gradle und CI",[12,870,871],{},"Ein Kotlin-Upgrade hat in der Praxis mehrere Berührungspunkte:",[37,873,874,884,891,898,905],{},[40,875,876,877,880,881,77],{},"Update des ",[16,878,879],{},"Kotlin Gradle Plugins"," (und ggf. Kotlin DSL in ",[67,882,883],{},"build.gradle.kts",[40,885,886,887,890],{},"Konsistenz zwischen ",[16,888,889],{},"lokaler Toolchain"," und CI-Images",[40,892,893,894,897],{},"Review von Compiler-Flags, insbesondere wenn Warnings als ",[16,895,896],{},"Gate"," genutzt werden",[40,899,900,901,904],{},"Abgleich von Build-Plugins (z. B. ",[16,902,903],{},"KSP",", Dokka, Static Analysis) auf Kompatibilität zur neuen Kotlin-Version",[40,906,907,908,911],{},"Stabilitätsprüfung von Gradle-Features wie ",[16,909,910],{},"Configuration Cache"," und Daemon-Settings",[12,913,914],{},"Beispiel für ein zentrales Version-Pinning:",[152,916,918],{"className":398,"code":917,"language":400,"meta":157,"style":157},"\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,919,920,924,931,947,951,955,992,1007],{"__ignoreMap":157},[161,921,922],{"class":163,"line":164},[161,923,407],{"class":200},[161,925,926,929],{"class":163,"line":179},[161,927,928],{"class":167},"plugins",[161,930,415],{"class":414},[161,932,933,936,938,941,944],{"class":163,"line":190},[161,934,935],{"class":167},"  kotlin",[161,937,423],{"class":414},[161,939,940],{"class":171},"\"jvm\"",[161,942,943],{"class":414},") version ",[161,945,946],{"class":171},"\"2.3.20\"\n",[161,948,949],{"class":163,"line":197},[161,950,434],{"class":414},[161,952,953],{"class":163,"line":204},[161,954,194],{"emptyLinePlaceholder":193},[161,956,957,959,961,963,966,968,971,973,975,977,980,982,985,987,990],{"class":163,"line":221},[161,958,443],{"class":414},[161,960,446],{"class":167},[161,962,449],{"class":414},[161,964,965],{"class":167},"org",[161,967,27],{"class":414},[161,969,970],{"class":167},"jetbrains",[161,972,27],{"class":414},[161,974,400],{"class":167},[161,976,27],{"class":414},[161,978,979],{"class":167},"gradle",[161,981,27],{"class":414},[161,983,984],{"class":167},"tasks",[161,986,27],{"class":414},[161,988,989],{"class":167},"KotlinCompile",[161,991,455],{"class":414},[161,993,994,997,1000,1002,1005],{"class":163,"line":458},[161,995,996],{"class":414},"  compilerOptions.freeCompilerArgs.",[161,998,999],{"class":167},"add",[161,1001,423],{"class":414},[161,1003,1004],{"class":171},"\"-Xjsr305=strict\"",[161,1006,429],{"class":414},[161,1008,1009],{"class":163,"line":467},[161,1010,434],{"class":414},[29,1012,239],{"id":238},[12,1014,1015,1016,1019],{},"In großen Kotlin-Codebases sind Build-Latenz und Reproduzierbarkeit entscheidend für Durchsatz in CI\u002FCD. Tooling-Releases wie 2.3.20 sind deshalb ein direkter Hebel für ",[16,1017,1018],{},"stabile Pipelines",", geringere Rebuild-Kosten und weniger flakiness durch Runtime- und Stdlib-Randfälle.",[248,1021,1022],{},"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":157,"searchDepth":179,"depth":179,"links":1024},[1025,1026,1027],{"id":825,"depth":179,"text":826},{"id":867,"depth":179,"text":868},{"id":238,"depth":179,"text":239},"\u002Fimg\u002Fblog\u002Fkotlin-2-3-20-tooling-release-build-performance-cover.jpg","2026-03-22","Kotlin 2.3.20 liefert ein Tooling-Update, verbessert die Performance in der IR-Pipeline und behebt eine Race Condition in der Standardbibliothek.",{},"\u002Fde\u002Fblog\u002Fkotlin-2-3-20-tooling-release-build-performance",{"title":813,"description":1030},"de\u002Fblog\u002Fkotlin-2-3-20-tooling-release-build-performance",[1036,1037,1038,1039],"Kotlin","JVM","Build Tools","Developer Tools","PDtoNzU8AhDcvYnTDPG_a7fSvlUU255ByaR-mu0tmbM",{"id":1042,"title":1043,"body":1044,"cover":1291,"date":1292,"description":1293,"draft":259,"extension":260,"meta":1294,"navigation":193,"path":1295,"seo":1296,"stem":1297,"tags":1298,"__hash__":1300},"blog_de\u002Fde\u002Fblog\u002Fquarkus-3-20-lts-maintenance-und-cve-fixes.md","Quarkus 3.20 LTS: Maintenance-Release 3.20.6 mit Security-Fixes",{"type":9,"value":1045,"toc":1286},[1046,1057,1061,1064,1090,1096,1100,1103,1128,1131,1271,1273,1283],[12,1047,1048,1049,1052,1053,1056],{},"Cloud-native Java-Stacks stehen unter permanentem Patch-Druck: Frameworks, Container-Basen und Abhängigkeiten müssen gleichzeitig stabil und aktuell bleiben. Mit der LTS-Linie ",[16,1050,1051],{},"Quarkus 3.20"," wird dieses Spannungsfeld über einen Maintenance-Prozess adressiert; Ende März 2026 erschien dazu das Maintenance-Release ",[16,1054,1055],{},"3.20.6"," inklusive Security-Fixes.",[29,1058,1060],{"id":1059},"was-lts-bei-quarkus-bedeutet","Was LTS bei Quarkus bedeutet",[12,1062,1063],{},"Ein LTS-Branch ist kein Feature-Stream, sondern ein stabiler Korridor für Produktion:",[37,1065,1066,1073,1080,1087],{},[40,1067,1068,1069,1072],{},"Selektive ",[16,1070,1071],{},"Backports"," statt kontinuierlicher Feature-Additionen",[40,1074,1075,1076,1079],{},"Regelmäßige ",[16,1077,1078],{},"Maintenance-Releases"," mit Bugfixes und Security-Updates",[40,1081,1082,1083,1086],{},"Ausrichtung auf eine stabile ",[16,1084,1085],{},"Platform BOM",", die Extension- und Dependency-Versionen bündelt",[40,1088,1089],{},"Ziel: planbare Updates für Services mit langen Betriebszyklen",[12,1091,1092],{},[90,1093],{"alt":1094,"src":1095},"Diagramm: LTS-Branch → BOM → Produktion","\u002Fimg\u002Fblog\u002Fquarkus-3-20-lts-maintenance-und-cve-fixes-diagram.svg",[29,1097,1099],{"id":1098},"was-in-der-praxis-zu-aktualisieren-ist","Was in der Praxis zu aktualisieren ist",[12,1101,1102],{},"Ein Quarkus-Update betrifft mehr als nur eine Versionsnummer:",[37,1104,1105,1111,1118,1121],{},[40,1106,1107,1108,1110],{},"Aktualisierung der ",[16,1109,1085],{}," in Maven\u002FGradle (Extensions folgen dem BOM-Set)",[40,1112,1113,1114,1117],{},"Rebuild von Container-Images inkl. ",[16,1115,1116],{},"SBOM"," und CVE-Scanning",[40,1119,1120],{},"Verifikation von Observability- und Security-Agenten (OpenTelemetry, TLS, OAuth)",[40,1122,1123,1124,1127],{},"Ueberprüfung von ",[16,1125,1126],{},"native-image"," Builds, falls genutzt",[12,1129,1130],{},"Beispiel für das Importieren einer Quarkus Platform BOM:",[152,1132,1136],{"className":1133,"code":1134,"language":1135,"meta":157,"style":157},"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,1137,1138,1143,1153,1163,1173,1188,1202,1216,1230,1244,1253,1262],{"__ignoreMap":157},[161,1139,1140],{"class":163,"line":164},[161,1141,1142],{"class":200},"\u003C!-- pom.xml -->\n",[161,1144,1145,1147,1150],{"class":163,"line":179},[161,1146,449],{"class":414},[161,1148,1149],{"class":601},"dependencyManagement",[161,1151,1152],{"class":414},">\n",[161,1154,1155,1158,1161],{"class":163,"line":190},[161,1156,1157],{"class":414},"  \u003C",[161,1159,1160],{"class":601},"dependencies",[161,1162,1152],{"class":414},[161,1164,1165,1168,1171],{"class":163,"line":197},[161,1166,1167],{"class":414},"    \u003C",[161,1169,1170],{"class":601},"dependency",[161,1172,1152],{"class":414},[161,1174,1175,1178,1181,1184,1186],{"class":163,"line":204},[161,1176,1177],{"class":414},"      \u003C",[161,1179,1180],{"class":601},"groupId",[161,1182,1183],{"class":414},">io.quarkus.platform\u003C\u002F",[161,1185,1180],{"class":601},[161,1187,1152],{"class":414},[161,1189,1190,1192,1195,1198,1200],{"class":163,"line":221},[161,1191,1177],{"class":414},[161,1193,1194],{"class":601},"artifactId",[161,1196,1197],{"class":414},">quarkus-bom\u003C\u002F",[161,1199,1194],{"class":601},[161,1201,1152],{"class":414},[161,1203,1204,1206,1209,1212,1214],{"class":163,"line":458},[161,1205,1177],{"class":414},[161,1207,1208],{"class":601},"version",[161,1210,1211],{"class":414},">3.20.6\u003C\u002F",[161,1213,1208],{"class":601},[161,1215,1152],{"class":414},[161,1217,1218,1220,1223,1226,1228],{"class":163,"line":467},[161,1219,1177],{"class":414},[161,1221,1222],{"class":601},"type",[161,1224,1225],{"class":414},">pom\u003C\u002F",[161,1227,1222],{"class":601},[161,1229,1152],{"class":414},[161,1231,1232,1234,1237,1240,1242],{"class":163,"line":670},[161,1233,1177],{"class":414},[161,1235,1236],{"class":601},"scope",[161,1238,1239],{"class":414},">import\u003C\u002F",[161,1241,1236],{"class":601},[161,1243,1152],{"class":414},[161,1245,1246,1249,1251],{"class":163,"line":681},[161,1247,1248],{"class":414},"    \u003C\u002F",[161,1250,1170],{"class":601},[161,1252,1152],{"class":414},[161,1254,1255,1258,1260],{"class":163,"line":689},[161,1256,1257],{"class":414},"  \u003C\u002F",[161,1259,1160],{"class":601},[161,1261,1152],{"class":414},[161,1263,1264,1267,1269],{"class":163,"line":698},[161,1265,1266],{"class":414},"\u003C\u002F",[161,1268,1149],{"class":601},[161,1270,1152],{"class":414},[29,1272,239],{"id":238},[12,1274,1275,1276,59,1279,1282],{},"LTS-Linien strukturieren Updates in produktiven Plattformen und reduzieren Risiko durch kontrollierte Backports. Gleichzeitig bleibt Security-Patching zwingend. Maintenance-Releases wie 3.20.6 sind deshalb ein zentraler Baustein, um ",[16,1277,1278],{},"stabile Laufzeiten",[16,1280,1281],{},"schnelle CVE-Reaktionen"," zusammenzubringen.",[248,1284,1285],{},"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":157,"searchDepth":179,"depth":179,"links":1287},[1288,1289,1290],{"id":1059,"depth":179,"text":1060},{"id":1098,"depth":179,"text":1099},{"id":238,"depth":179,"text":239},"\u002Fimg\u002Fblog\u002Fquarkus-3-20-lts-maintenance-und-cve-fixes-cover.jpg","2026-03-18","Quarkus 3.20 wird als LTS-Linie über Maintenance-Releases aktualisiert; Version 3.20.6 kombiniert Bugfixes, Plattform-Updates und CVE-Fixes.",{},"\u002Fde\u002Fblog\u002Fquarkus-3-20-lts-maintenance-und-cve-fixes",{"title":1043,"description":1293},"de\u002Fblog\u002Fquarkus-3-20-lts-maintenance-und-cve-fixes",[1299,495,497,267],"Quarkus","qvsORkhXD6KI_AAzj1XD6LlPTVcpmcxMmTuV3CiP7Yo",{"id":1302,"title":1303,"body":1304,"cover":1617,"date":1618,"description":1619,"draft":259,"extension":260,"meta":1620,"navigation":193,"path":1621,"seo":1622,"stem":1623,"tags":1624,"__hash__":1625},"blog_de\u002Fde\u002Fblog\u002Fquarkus-und-cloud-native-java.md","Quarkus und die Zukunft von Cloud-Native Java",{"type":9,"value":1305,"toc":1612},[1306,1312,1316,1326,1362,1365,1555,1559,1566,1572,1575,1604,1606,1609],[12,1307,1308,1309,1311],{},"Traditionelle Java-Anwendungen starten in mehreren Sekunden und belegen hunderte Megabyte Arbeitsspeicher -- Eigenschaften, die im Zeitalter von Container-Orchestrierung und Serverless-Architekturen zum Nachteil werden. ",[16,1310,1299],{}," adressiert genau diese Problematik. Mit der aktuellen Version 3.20 und der kontinuierlichen Unterstützung durch Red Hat hat sich das Framework als eine der führenden Lösungen für Cloud-Native Java und Kotlin etabliert.",[29,1313,1315],{"id":1314},"was-macht-quarkus-besonders","Was macht Quarkus besonders?",[12,1317,1318,1319,59,1322,1325],{},"Quarkus ist als ",[16,1320,1321],{},"Container-first",[16,1323,1324],{},"Kubernetes-natives"," Framework konzipiert. Im Gegensatz zu klassischen Java-Frameworks verlagert Quarkus einen Großteil der Initialisierung von der Laufzeit in die Build-Phase. Die wichtigsten Merkmale:",[37,1327,1328,1334,1340,1346,1352],{},[40,1329,1330,1333],{},[16,1331,1332],{},"GraalVM Native Compilation",": Kompilierung zu nativen Executables mit Start in Millisekunden",[40,1335,1336,1339],{},[16,1337,1338],{},"Dev Services",": Automatisches Starten von Datenbanken und Diensten im Entwicklungsmodus",[40,1341,1342,1345],{},[16,1343,1344],{},"Continuous Testing",": Tests laufen automatisch bei Code-Änderungen im Hintergrund",[40,1347,1348,1351],{},[16,1349,1350],{},"Reactive und Imperative",": Einheitliches Programmiermodell für beide Paradigmen",[40,1353,1354,1357,1358,1361],{},[16,1355,1356],{},"Kotlin-Unterstützung",": Volle Coroutine-Integration mit ",[67,1359,1360],{},"suspend","-Funktionen in REST-Endpunkten",[12,1363,1364],{},"Ein reaktiver REST-Endpunkt in Kotlin mit Quarkus:",[152,1366,1368],{"className":398,"code":1367,"language":400,"meta":157,"style":157},"@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,1369,1370,1382,1390,1402,1416,1421,1426,1454,1464,1468,1472,1484,1517,1527,1551],{"__ignoreMap":157},[161,1371,1372,1375,1377,1380],{"class":163,"line":164},[161,1373,1374],{"class":167},"@Path",[161,1376,423],{"class":414},[161,1378,1379],{"class":171},"\"\u002Fproducts\"",[161,1381,429],{"class":414},[161,1383,1384,1387],{"class":163,"line":179},[161,1385,1386],{"class":167},"@Produces",[161,1388,1389],{"class":414},"(MediaType.APPLICATION_JSON)\n",[161,1391,1392,1396,1399],{"class":163,"line":190},[161,1393,1395],{"class":1394},"szBVR","class",[161,1397,1398],{"class":167}," ProductResource",[161,1400,1401],{"class":414},"(\n",[161,1403,1404,1407,1410,1413],{"class":163,"line":197},[161,1405,1406],{"class":1394},"    private",[161,1408,1409],{"class":1394}," val",[161,1411,1412],{"class":414}," repository: ",[161,1414,1415],{"class":167},"ProductRepository\n",[161,1417,1418],{"class":163,"line":204},[161,1419,1420],{"class":414},") {\n",[161,1422,1423],{"class":163,"line":221},[161,1424,1425],{"class":167},"    @GET\n",[161,1427,1428,1431,1434,1437,1440,1443,1445,1448,1451],{"class":163,"line":458},[161,1429,1430],{"class":1394},"    suspend",[161,1432,1433],{"class":1394}," fun",[161,1435,1436],{"class":167}," listAll",[161,1438,1439],{"class":414},"(): ",[161,1441,1442],{"class":167},"List",[161,1444,449],{"class":414},[161,1446,1447],{"class":167},"Product",[161,1449,1450],{"class":414},"> ",[161,1452,1453],{"class":1394},"=\n",[161,1455,1456,1459,1462],{"class":163,"line":467},[161,1457,1458],{"class":414},"        repository.",[161,1460,1461],{"class":167},"findAll",[161,1463,464],{"class":414},[161,1465,1466],{"class":163,"line":670},[161,1467,194],{"emptyLinePlaceholder":193},[161,1469,1470],{"class":163,"line":681},[161,1471,1425],{"class":167},[161,1473,1474,1477,1479,1482],{"class":163,"line":689},[161,1475,1476],{"class":167},"    @Path",[161,1478,423],{"class":414},[161,1480,1481],{"class":171},"\"\u002F{id}\"",[161,1483,429],{"class":414},[161,1485,1486,1488,1490,1493,1495,1498,1500,1503,1506,1509,1512,1514],{"class":163,"line":698},[161,1487,1430],{"class":1394},[161,1489,1433],{"class":1394},[161,1491,1492],{"class":167}," findById",[161,1494,423],{"class":414},[161,1496,1497],{"class":167},"@PathParam",[161,1499,423],{"class":414},[161,1501,1502],{"class":171},"\"id\"",[161,1504,1505],{"class":414},") id: ",[161,1507,1508],{"class":167},"Long",[161,1510,1511],{"class":414},"): ",[161,1513,1447],{"class":167},[161,1515,1516],{"class":1394}," =\n",[161,1518,1519,1521,1524],{"class":163,"line":706},[161,1520,1458],{"class":414},[161,1522,1523],{"class":167},"findById",[161,1525,1526],{"class":414},"(id)\n",[161,1528,1529,1532,1535,1538,1540,1543,1546,1549],{"class":163,"line":716},[161,1530,1531],{"class":414},"            ?: ",[161,1533,1534],{"class":1394},"throw",[161,1536,1537],{"class":167}," NotFoundException",[161,1539,423],{"class":414},[161,1541,1542],{"class":171},"\"Product ",[161,1544,1545],{"class":175},"$id",[161,1547,1548],{"class":171}," not found\"",[161,1550,429],{"class":414},[161,1552,1553],{"class":163,"line":727},[161,1554,434],{"class":414},[29,1556,1558],{"id":1557},"native-compilation-und-kubernetes-integration","Native Compilation und Kubernetes-Integration",[12,1560,1561,1562,1565],{},"Die ",[16,1563,1564],{},"GraalVM Ahead-of-Time-Compilation"," transformiert Java-Bytecode in plattformspezifischen Maschinencode. Das Ergebnis: Startzeiten im einstelligen Millisekundenbereich und ein Speicherverbrauch, der um den Faktor 5 bis 10 unter dem einer klassischen JVM-Anwendung liegt.",[12,1567,1568],{},[90,1569],{"alt":1570,"src":1571},"Quarkus Performance-Vergleich: Startzeit und Speicherverbrauch","\u002Fimg\u002Fblog\u002Fquarkus-performance.png",[12,1573,1574],{},"Die Kubernetes-Integration geht über einfaches Deployment hinaus:",[37,1576,1577,1583,1592,1598],{},[40,1578,1579,1582],{},[16,1580,1581],{},"Automatische Manifest-Generierung"," für Kubernetes und OpenShift",[40,1584,1585,59,1588,1591],{},[16,1586,1587],{},"Health Checks",[16,1589,1590],{},"Metrics"," sind standardmäßig integriert",[40,1593,1594,1597],{},[16,1595,1596],{},"Reflexionsfreie Jackson-Serialisierung"," in Quarkus 3.20 für optimierte Native Builds",[40,1599,1600,1603],{},[16,1601,1602],{},"Eclipse MicroProfile","-Kompatibilität für standardisierte Cloud-Native-Patterns",[29,1605,239],{"id":238},[12,1607,1608],{},"Java dominiert weiterhin die Enterprise-Entwicklung, steht aber im Cloud-Native-Umfeld in direkter Konkurrenz zu Go und Rust. Quarkus schließt die Lücke zwischen dem Java-Ökosystem mit seinen Millionen von Entwicklern und den Anforderungen moderner Container-Plattformen. Die native Compilation macht Java-Anwendungen konkurrenzfähig in Szenarien, die bisher anderen Sprachen vorbehalten waren -- von Serverless-Funktionen bis hin zu ressourcenoptimierten Microservices.",[248,1610,1611],{},"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":157,"searchDepth":179,"depth":179,"links":1613},[1614,1615,1616],{"id":1314,"depth":179,"text":1315},{"id":1557,"depth":179,"text":1558},{"id":238,"depth":179,"text":239},"\u002Fimg\u002Fblog\u002Fquarkus-cover.jpg","2026-03-14","Quarkus etabliert sich als führendes Framework für Cloud-Native Java und Kotlin mit nativer GraalVM-Compilation und Kubernetes-Integration.",{},"\u002Fde\u002Fblog\u002Fquarkus-und-cloud-native-java",{"title":1303,"description":1619},"de\u002Fblog\u002Fquarkus-und-cloud-native-java",[1299,495,1036,497],"k_5W4xYRFcQ6rsKpEYNSckXcAjUU3XKIN1qxG444T0A",21,1775892933581]