1<!DOCTYPE html> 2 3<html class="no-js" lang="en-US"> 4 5 <head profile="http://gmpg.org/xfn/11"> 6 7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 8 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" > 9 10 <meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' />
11<script>document.documentElement.className = document.documentElement.className.replace("no-js","js");</script>
11 12<!-- Jetpack Site Verification Tags --> 13<meta name="google-site-verification" content="nxwCqd78tXrmiHRFzHBUmse1FNbMpaFxhYTeBTS7pus"> 14<meta name="msvalidate.01" content="C5E83869E9A630D3937463911DD0F38C"> 15 16 <!-- This site is optimized with the Yoast SEO plugin v28.6 - https://yoast.com/product/yoast-seo-wordpress/ --> 17 <title>Calendar - JVM Advent</title> 18 <link rel="canonical" href="https://www.javaadvent.com/calendar" /> 19 <link rel="next" href="https://www.javaadvent.com/calendar/page/2" /> 20 <meta property="og:locale" content="en_US" /> 21 <meta property="og:type" content="article" /> 22 <meta property="og:title" content="Calendar - JVM Advent" /> 23 <meta property="og:url" content="https://www.javaadvent.com/calendar" /> 24 <meta property="og:site_name" content="JVM Advent" /> 25 <meta name="twitter:card" content="summary_large_image" /> 26 <meta name="twitter:site" content="@javaadvent" /> 27
27<script type="application/ld+json" class="yoast-schema-graph">{"@context":"https:\/\/schema.org","@graph":[{"@type":["WebPage","CollectionPage"],"@id":"https:\/\/www.javaadvent.com\/calendar","url":"https:\/\/www.javaadvent.com\/calendar","name":"Calendar - JVM Advent","isPartOf":{"@id":"https:\/\/www.javaadvent.com\/#website"},"datePublished":"2021-10-01T13:39:08+00:00","dateModified":"2023-11-26T05:47:00+00:00","breadcrumb":{"@id":"https:\/\/www.javaadvent.com\/calendar#breadcrumb"},"inLanguage":"en-US"},{"@type":"BreadcrumbList","@id":"https:\/\/www.javaadvent.com\/calendar#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.javaadvent.com\/"},{"@type":"ListItem","position":2,"name":"Calendar"}]},{"@type":"WebSite","@id":"https:\/\/www.javaadvent.com\/#website","url":"https:\/\/www.javaadvent.com\/","name":"JVM Advent","description":"The JVM Programming Advent Calendar","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.javaadvent.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}</script>
27 28 <!-- / Yoast SEO plugin. --> 29 30 31<link rel='dns-prefetch' href='//secure.gravatar.com' /> 32<link rel='dns-prefetch' href='//v0.wordpress.com' /> 33<link rel='dns-prefetch' href='//jetpack.wordpress.com' /> 34<link rel='dns-prefetch' href='//s0.wp.com' /> 35<link rel='dns-prefetch' href='//public-api.wordpress.com' /> 36<link rel='dns-prefetch' href='//widgets.wp.com' /> 37<link rel='dns-prefetch' href='//0.gravatar.com' /> 38<link rel='dns-prefetch' href='//1.gravatar.com' /> 39<link rel='dns-prefetch' href='//2.gravatar.com' /> 40<link rel='preconnect' href='//i0.wp.com' /> 41<link rel='preconnect' href='//c0.wp.com' /> 42<link rel="alternate" type="application/rss+xml" title="JVM Advent » Feed" href="http://feeds.feedburner.com/JavaAdventCalendar" /> 43<link rel="alternate" type="application/rss+xml" title="JVM Advent » Comments Feed" href="https://www.javaadvent.com/comments/feed" /> 44<style id="wp-img-auto-sizes-contain-inline-css"> 45img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px} 46/*# sourceURL=wp-img-auto-sizes-contain-inline-css */ 47</style> 48<style id="wp-emoji-styles-inline-css"> 49 50 img.wp-smiley, img.emoji { 51 display: inline !important; 52 border: none !important; 53 box-shadow: none !important; 54 height: 1em !important; 55 width: 1em !important; 56 margin: 0 0.07em !important; 57 vertical-align: -0.1em !important; 58 background: none !important; 59 padding: 0 !important; 60 } 61/*# sourceURL=wp-emoji-styles-inline-css */ 62</style> 63<style id="wp-block-library-inline-css"> 64:root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.wp-element-button{cursor:pointer}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-very-light-gray-color{color:#eee}:root .has-very-dark-gray-color{color:#313131}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}:root{--wp--preset--font-size--normal:16px;
64--wp--preset--font-size--huge:42px}.has-regular-font-size{font-size:1em}.has-larger-font-size{font-size:2.625em}.has-normal-font-size{font-size:var(--wp--preset--font-size--normal)}.has-huge-font-size{font-size:var(--wp--preset--font-size--huge)}:root .has-text-align-center{text-align:center}:root .has-text-align-left{text-align:left}:root .has-text-align-right{text-align:right}.has-fit-text{white-space:nowrap!important}#end-resizable-editor-section{display:none}.aligncenter{clear:both}.items-justified-left{justify-content:flex-start}.items-justified-center{justify-content:center}.items-justified-right{justify-content:flex-end}.items-justified-space-between{justify-content:space-between}.screen-reader-text{word-wrap:normal!important;border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-break:normal!important}.screen-reader-text:focus{background-color:#ddd;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}html :where(.has-border-color){border-style:solid}html :where([style^=border-color],[style*=";border-color"],[style*="; border-color"]){border-style:solid}html :where([style^=border-top-color],[style*=";border-top-color"],[style*="; border-top-color"]){border-top-style:solid}html :where([style^=border-right-color],[style*=";border-right-color"],[style*="; border-right-color"]){border-right-style:solid}html :where([style^=border-bottom-color],[style*=";border-bottom-color"],[style*="; border-bottom-color"]){border-bottom-style:solid}html :where([style^=border-left-color],[style*=";border-left-color"],[style*="; border-left-color"]){border-left-style:solid}html :where([style^=border-width],[style*=";border-width"],[style*="; border-width"]){border-style:solid}html :where([style^=border-top-width],[style*=";border-top-width"],[style*="; border-top-width"]){border-top-style:solid}html :where([style^=border-right-width],[style*=";border-right-width"],[style*="; border-right-width"]){border-right-style:solid}html :where([style^=border-bottom-width],[style*=";border-bottom-width"],[style*="; border-bottom-width"]){border-bottom-style:solid}html :where([style^=border-left-width],[style*=";border-left-width"],[style*="; border-left-width"]){border-left-style:solid}html :where(img[class*=wp-image-]){height:auto;max-width:100%}:where(figure){margin:0 0 1em}html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:var(--wp-admin--admin-bar--height,0px)}@media screen and (max-width:600px){html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:0px}} 65 66/*# sourceURL=/wp-includes/css/dist/block-library/common.min.css */ 67</style> 68<style id="classic-theme-styles-inline-css"> 69/*! This file is auto-generated */ 70.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none} 71/*# sourceURL=/wp-includes/css/classic-themes.min.css */ 72</style> 73 74<style id="global-styles-inline-css"> 75:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #1d1d1d;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #fff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--color--accent: #3bc492;--wp--preset--color--dark-gray: #555;--wp--preset--color--light-gray: #757575;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,
750) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 14px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 21px;--wp--preset--font-size--x-large: 42px;--wp--preset--font-size--normal: 16px;--wp--preset--font-size--larger: 26px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}.wp-block-button{--wp--preset--dimension--25: 25%;--wp--preset--dimension--50: 50%;--wp--preset--dimension--75: 75%;--wp--preset--dimension--100: 100%;}:where(body) { margin: 0; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}:root :where(.wp-element-button, .wp-block-button__link){background-color: #32373c;border-width: 0;color: #fff;font-family: inherit;font-size: inherit;font-style: inherit;font-weight: inherit;letter-spacing: inherit;line-height: inherit;padding-top: calc(0.667em + 2px);padding-right: calc(1.333em + 2px);padding-bottom: calc(0.667em + 2px);padding-left: calc(1.333em + 2px);text-decoration: none;text-transform: inherit;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-accent-color{color: var(--wp--preset--color--accent) !important;}.has-dark-gray-color{color: var(--wp--preset--color--dark-gray) !important;}.has-light-gray-color{color: var(--wp--preset--color--light-gray) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-accent-background-color{background-color: var(--wp--preset--color--accent) !important;}.has-dark-gray-background-color{background-color: var(--wp--preset--color--dark-gray) !important;}.has-light-gray-background-color{background-color: var(--wp--preset--color--light-gray) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-accent-border-color{border-color: var(--wp--preset--color--accent) !important;}.has-dark-gray-border-color{border-color: var(--wp--preset--color--dark-gray) !important;}.has-light-gray-border-color{border-color: var(--wp--preset--color--light-gray) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}
75.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}.has-normal-font-size{font-size: var(--wp--preset--font-size--normal) !important;}.has-larger-font-size{font-size: var(--wp--preset--font-size--larger) !important;} 76/*# sourceURL=global-styles-inline-css */ 77</style> 78 79<link rel='stylesheet' id='simple-banner-style-css' href='https://www.javaadvent.com/content/plugins/simple-banner/simple-banner.css?ver=3.3.2' media='all' /> 80<link rel='stylesheet' id='yawab-author-box-css' href='https://www.javaadvent.com/content/plugins/yawab/style.css?ver=20181228' media='all' /> 81<style id="jetpack-stats-inline-css"> 82img#wpstats{display:none} 83/*# sourceURL=jetpack-stats-inline-css */ 84</style> 85<style id="jetpack_likes-inline-css"> 86#jp-post-flair{padding-top:.5em}#content div.sharedaddy,#main div.sharedaddy,div.sharedaddy{clear:both}div.sharedaddy h3.sd-title{display:inline-block;font-size:9pt;font-weight:700;line-height:1.2;margin:0 0 1em}div.sharedaddy h3.sd-title:before{border-top:1px solid #dcdcde;content:"";display:block;margin-bottom:1em;min-width:30px;width:100%}div.jetpack-likes-widget-wrapper{min-height:50px;position:relative;width:100%}div.jetpack-likes-widget-wrapper .sd-link-color{font-size:12px}div.jetpack-comment-likes-widget-wrapper{min-height:31px;position:relative;width:100%}div.jetpack-comment-likes-widget-wrapper iframe{margin-bottom:0}#likes-other-gravatars{background-color:#fff;border:1px solid #dcdcde;border-radius:4px;box-shadow:none;display:none;height:auto;max-height:240px;min-width:220px;overflow:auto;padding:9px 12px 10px;position:absolute;z-index:1000}#likes-other-gravatars *{line-height:normal}#likes-other-gravatars .likes-text{color:#101517;font-size:12px;font-weight:500;padding-bottom:8px}#likes-other-gravatars :is(li,ul){list-style-type:none;margin:0;padding:0;text-indent:0}#likes-other-gravatars li:before{content:""}#likes-other-gravatars ul.wpl-avatars{display:block;max-height:190px;overflow:auto}#likes-other-gravatars ul.wpl-avatars li{float:none;height:28px;margin:0 0 4px;width:196px}#likes-other-gravatars ul.wpl-avatars li a{align-items:center;border-bottom:none!important;display:flex;gap:8px;margin:0 2px 0 0;text-decoration:none}#likes-other-gravatars ul.wpl-avatars li a span{color:#2c3338;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#likes-other-gravatars ul.wpl-avatars li a img{background:none;border:none;border-radius:50%;box-sizing:border-box;margin:0!important;padding:1px!important;position:static}div.sd-box{border-top:1px solid #00000021}.jetpack-likes-widget-loaded iframe,.jetpack-likes-widget-loading .likes-widget-placeholder,.jetpack-likes-widget-unloaded .likes-widget-placeholder{display:block}.jetpack-likes-widget-loaded .likes-widget-placeholder,.jetpack-likes-widget-loading iframe,.jetpack-likes-widget-unloaded iframe{display:none}.comment-likes-widget,.entry-content .post-likes-widget,.post-likes-widget{border-width:0;margin:0}.comment-likes-widget-placeholder,.post-likes-widget-placeholder{border-width:0;margin:0;position:relative}.comment-likes-widget-placeholder{display:flex;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;height:18px;position:absolute}.comment-likes-widget-placeholder:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0z'/%3E%3Cpath fill='%232ea2cc' d='m12 2 2.582 6.953L22 9.257l-5.822 4.602L18.18 21 12 16.89 5.82 21l2.002-7.14L2 9.256l7.418-.304'/%3E%3C/svg%3E");background-repeat:no-repeat;background-size:16px 16px;color:#2ea2cc;content:"";display:inline-block;height:16px;padding-right:5px;position:relative;top:3px;width:16px}.post-likes-widget-placeholder .button{display:none}:is(.comment-likes-widget-placeholder,.post-likes-widget-placeholder) .loading{color:#999;font-size:12px}.comment-likes-widget-placeholder .loading{align-self:center;color:#4e4e4e;margin-top:4px;padding-left:5px}
86div.sharedaddy.sd-like-enabled .sd-like h3{display:none}div.sharedaddy.sd-like-enabled .sd-like .post-likes-widget{float:none;position:absolute;top:0;width:100%}.comment-likes-widget{width:100%}.cs-rating,.pd-rating{display:block!important}.sd-gplus .sd-title{display:none}@media print{.jetpack-likes-widget-wrapper{display:none}} 87/*# sourceURL=https://www.javaadvent.com/content/plugins/jetpack/_inc/build/likes/style.min.css */ 88</style> 89<link rel='stylesheet' id='hitchcock_google_fonts-css' href='https://www.javaadvent.com/content/uploads/fonts/7ed5474470d445eb9888bc52a225318a/font.css?v=1783880475' media='all' /> 90<link rel='stylesheet' id='hitchcock_fontawesome-css' href='https://www.javaadvent.com/content/themes/hitchcock-advent-theme/assets/fonts/font-awesome/css/font-awesome.css?ver=2.2.1' media='all' /> 91<link rel='stylesheet' id='hitchcock_style-css' href='https://www.javaadvent.com/content/themes/hitchcock-advent-theme/style.css?ver=2.2.1' media='all' />
92<script id="jquery-core-js" src="https://c0.wp.com/c/7.1.2/wp-includes/js/jquery/jquery.min.js"></script>
vendor: 1 bytes, line 92
92
93<script id="jquery-migrate-js" src="https://c0.wp.com/c/7.1.2/wp-includes/js/jquery/jquery-migrate.min.js"></script>
vendor: 1 bytes, line 93
93
94<script id="simple-banner-script-js-before"> 95const simpleBannerScriptParams = {"pro_version_enabled":"","debug_mode":false,"id":5916,"version":"3.3.2","banner_params":[{"hide_simple_banner":"yes","simple_banner_prepend_element":"body","simple_banner_position":"","header_margin":"","header_padding":"","wp_body_open_enabled":"","wp_body_open":true,"simple_banner_z_index":"","disabled_on_current_page":false,"disabled_pages_array":[],"is_current_page_a_post":true,"disabled_on_posts":"","simple_banner_disabled_page_paths":false,"simple_banner_font_size":"","simple_banner_color":"","simple_banner_text_color":"","simple_banner_link_color":"","simple_banner_close_color":"","simple_banner_text":"Win a one-year license for one of Jetbrains' amazing IDEs. Enter the raffle <a href=\"https:\/\/tinyurl.com\/javaadvent22-raffle\" target=\"_blank\">here<\/a>.","simple_banner_custom_css":"","simple_banner_scrolling_custom_css":"","simple_banner_text_custom_css":"","simple_banner_button_css":"","site_custom_css":"","keep_site_custom_css":"","site_custom_js":"","keep_site_custom_js":"","close_button_enabled":"on","close_button_expiration":"","close_button_cookie_set":false,"current_date":{"date":"2026-10-03 22:00:54.649575","timezone_type":3,"timezone":"UTC"},"start_date":{"date":"2026-10-03 22:00:54.649606","timezone_type":3,"timezone":"UTC"},"end_date":{"date":"2026-10-03 22:00:54.649627","timezone_type":3,"timezone":"UTC"},"simple_banner_start_after_date":"","simple_banner_remove_after_date":"","simple_banner_insert_inside_element":""}]} 96//# sourceURL=simple-banner-script-js-before 97</script>
vendor: 1 bytes, line 97
97
98<script id="simple-banner-script-js" src="https://www.javaadvent.com/content/plugins/simple-banner/simple-banner.js?ver=3.3.2"></script>
vendor: 1 bytes, line 98
98
99<script id="hitchcock_flexslider-js" src="https://www.javaadvent.com/content/themes/hitchcock-advent-theme/assets/js/flexslider.js?ver=2.2.1"></script>
vendor: 1 bytes, line 99
99
100<script id="hitchcock_doubletaptogo-js" src="https://www.javaadvent.com/content/themes/hitchcock-advent-theme/assets/js/doubletaptogo.js?ver=2.2.1"></script>
vendor: 1 bytes, line 100
100
101<script id="hitchcock_global-js" src="https://www.javaadvent.com/content/themes/hitchcock-advent-theme/assets/js/global.js?ver=2.2.1"></script>
101 102<link rel="https://api.w.org/" href="https://www.javaadvent.com/wp-json/" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://www.javaadvent.com/xmlrpc.php?rsd" /> 103<meta name="generator" content="WordPress 7.1.2" /> 104 <meta charset="utf-8"> 105 <meta name="abstract" content="The JVM Programming Advent Calendar"> 106 <meta name="author" content="gpanther"> 107 <meta name="classification" content="@Primary, 2012, 2013, 2014, 2014 wrap up, 2015, 2015 wrap up, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 4financeit, achartengine, Actors, adopt openjdk, AI, Akka, Amazon Web Services, android, Apache OpenNLP, Apache Zeppelin, ArrayList, Artificial Intelligence, Atomic I/O, audio, Avatar, awesome graal, awk, bananas, bash, Bean Validation, benchmark, boot, Buffer, build, builders, bytecode, c/c++, Caching, CallableStatement, Camel, CI/CD, CircleCI, class file, Classloader, Cloud, CMS, code analysis, collections, command line, Composite, Continuous Query, CPU, cpu caches, debugging, Deep Learning, degraph, dependency, Dependency Injection, design pattern, developers, DevOps, distributed systems, Docker, Docker Image, DSL, executor, executorservice, Expect the unexpected, fork, free software, Friday 13, functional programming, functional relational programming, GAE, Gaming, garbage collection, GC, generics, Google App Engine, Google Cloud SQL, Google Cloud Storage, Graal Compiler, graalvm, gradle, groovy, guava, hardware counters, hg, High performance, hotspot, hybrid programming, I18N, iteration, java, java 8, java 9, Java Advent, java advent 2014, java agent, java closures, Java EE6, java self healing, javaagent, JavaEE, JavaScript, JAX-RS, JDBC, jdk, jdk 7, jdk 8, JDK 9, JEP, JInput, JIT, JMX, jni, join, jooq, JRebel, JSON API, JSR, JSR 353, jtreg, junit, JuPyteR, JuPyteR notebooks, JVM, JVM scripting, JVMCI, jypthon, jython, kawa, kotlin, lambda, LambdaJ, latency, lightweight, LinkedList, Linux, load testing, local, low latency, Machine Learning, macos, make, mathematics, maths, maven, mechanical sympathy, memory, Memory Barriers, memory mapped files, mercurial, messaging, meta, microservices, ML, mongodb, Murphy's Law, music, mutation, mutation testing, mutually recursive bounds, mx, MXBeans, MySQL, native-image, Natural Language Processing, netrexx, NetWeaver, NLP, Notebooks, Notes, Observable, Observer, open source, openjdk, oracle-labs-graalvm, other stuff, overseer, parallel, parameters, Performance, performance counters, performance testing, performance tuning, pipelines, PIT, PL/SQL, Programming, prototyping, python, Quercus, query, random rage, reactive, Realtime, reference, regular expression, repos, resource management, Resources, REST, rules, SAP, SAP HANA, Scala, script, self healing, serialization, service, Simon Maple, skynet, Spring, spring boot, SQL, statistics, stored procedure, streams, String, substring, T-SQL, test, testing, Things that go wrong, thread, threading, threadpool, transformations, truffle, type safety, Uncategorized, unit testing, unsafe, visualization, whatever can go wrong will go wrong, windows, Wordpress, work environment, ZeroTurnaround"> 108 <meta name="copyright" content="Copyright JVM Advent - All rights Reserved."> 109 <meta name="designer" content="Anders Norén, Holger Steinhauer"> 110 <meta name="distribution" content="Global"> 111 <meta name="language" content="en-US"> 112 <meta name="publisher" content="JVM Advent"> 113 <meta name="rating" content="General"> 114 <meta name="resource-type" content="Document"> 115 <meta name="revisit-after" content="3"> 116 <meta name="subject" content="@Primary, 2012, 2013, 2014, 2014 wrap up, 2015, 2015 wrap up, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 4financeit, achartengine, Actors, adopt openjdk, AI, Akka, Amazon Web Services, android, Apache OpenNLP, Apache Zeppelin, ArrayList, Artificial Intelligence, Atomic I/O, audio, Avatar, awesome graal, awk, bananas, bash, Bean Validation, benchmark, boot, Buffer, build, builders, bytecode, c/c++, Caching, CallableStatement, Camel, CI/CD, CircleCI, class file, Classloader, Cloud, CMS, code analysis, c
116ollections, command line, Composite, Continuous Query, CPU, cpu caches, debugging, Deep Learning, degraph, dependency, Dependency Injection, design pattern, developers, DevOps, distributed systems, Docker, Docker Image, DSL, executor, executorservice, Expect the unexpected, fork, free software, Friday 13, functional programming, functional relational programming, GAE, Gaming, garbage collection, GC, generics, Google App Engine, Google Cloud SQL, Google Cloud Storage, Graal Compiler, graalvm, gradle, groovy, guava, hardware counters, hg, High performance, hotspot, hybrid programming, I18N, iteration, java, java 8, java 9, Java Advent, java advent 2014, java agent, java closures, Java EE6, java self healing, javaagent, JavaEE, JavaScript, JAX-RS, JDBC, jdk, jdk 7, jdk 8, JDK 9, JEP, JInput, JIT, JMX, jni, join, jooq, JRebel, JSON API, JSR, JSR 353, jtreg, junit, JuPyteR, JuPyteR notebooks, JVM, JVM scripting, JVMCI, jypthon, jython, kawa, kotlin, lambda, LambdaJ, latency, lightweight, LinkedList, Linux, load testing, local, low latency, Machine Learning, macos, make, mathematics, maths, maven, mechanical sympathy, memory, Memory Barriers, memory mapped files, mercurial, messaging, meta, microservices, ML, mongodb, Murphy's Law, music, mutation, mutation testing, mutually recursive bounds, mx, MXBeans, MySQL, native-image, Natural Language Processing, netrexx, NetWeaver, NLP, Notebooks, Notes, Observable, Observer, open source, openjdk, oracle-labs-graalvm, other stuff, overseer, parallel, parameters, Performance, performance counters, performance testing, performance tuning, pipelines, PIT, PL/SQL, Programming, prototyping, python, Quercus, query, random rage, reactive, Realtime, reference, regular expression, repos, resource management, Resources, REST, rules, SAP, SAP HANA, Scala, script, self healing, serialization, service, Simon Maple, skynet, Spring, spring boot, SQL, statistics, stored procedure, streams, String, substring, T-SQL, test, testing, Things that go wrong, thread, threading, threadpool, transformations, truffle, type safety, Uncategorized, unit testing, unsafe, visualization, whatever can go wrong will go wrong, windows, Wordpress, work environment, ZeroTurnaround"> 117 <meta name="template" content="Hitchcock"> 118 <meta name="robots" content="index,follow"> 119 <meta name="fediverse:creator" content="@[email protected]"> 120<style id="simple-banner-hide" type="text/css">.simple-banner{display:none;}</style><style id="simple-banner-background-color" type="text/css">.simple-banner{background: #024985;}</style><style id="simple-banner-text-color" type="text/css">.simple-banner .simple-banner-text{color: #ffffff;}</style><style id="simple-banner-link-color" type="text/css">.simple-banner .simple-banner-text a{color:#f16521;}</style><style id="simple-banner-z-index" type="text/css">.simple-banner{z-index: 99999;}</style><style id="simple-banner-site-custom-css-dummy" type="text/css"></style>
120<script id="simple-banner-site-custom-js-dummy" type="text/javascript"></script>
120<!-- There is no amphtml version available for this URL. --><link rel="icon" href="https://i0.wp.com/www.javaadvent.com/content/uploads/2017/12/DukeFavicon.png?fit=32%2C32&ssl=1" sizes="32x32" /> 121<link rel="icon" href="https://i0.wp.com/www.javaadvent.com/content/uploads/2017/12/DukeFavicon.png?fit=139%2C140&ssl=1" sizes="192x192" /> 122<link rel="apple-touch-icon" href="https://i0.wp.com/www.javaadvent.com/content/uploads/2017/12/DukeFavicon.png?fit=139%2C140&ssl=1" /> 123<meta name="msapplication-TileImage" content="https://i0.wp.com/www.javaadvent.com/content/uploads/2017/12/DukeFavicon.png?fit=139%2C140&ssl=1" /> 124 125 </head> 126 127 <body class="blog wp-theme-hitchcock-advent-theme"> 128 129 130 <a class="skip-link button" href="#site-content">Skip to the content</a> 131 132 <div class="navigation"> 133 134 <div class="section-inner"> 135 136 <ul class="main-menu"> 137 138 <li id="menu-item-2959" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-home menu-item-2959"><a href="https://www.javaadvent.com/">Home</a></li> 139<li id="menu-item-2474" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2474"><a href="https://www.javaadvent.com/about-page">About</a></li> 140<li id="menu-item-2965" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-2960 current_page_item current_page_parent menu-item-2965"><a href="https://www.javaadvent.com/calendar" aria-current="page">Calendar</a></li> 141<li id="menu-item-2475" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2475"><a href="https://www.javaadvent.com/archive">Archive</a></li> 142<li id="menu-item-2476" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2476"><a href="https://www.javaadvent.com/sponsors">Sponsors</a></li> 143 144 <li class="header-search"> 145 146<form method="get" class="search-form" id="search-form-6ac17b16ae5eb" action="https://www.javaadvent.com/"> 147 <input type="search" class="search-field" placeholder="Search Form" name="s" id="search-field-6ac17b16ae5ed" /> 148 <button type="submit" class="search-button"> 149 <span class="screen-reader-text">Search</span> 150 <div class="fa fw fa-search"></div> 151 </button> 152</form> </li> 153 154 </ul> 155 156 </div><!-- .section-inner --> 157 158 <button type="button" class="nav-toggle"> 159 160 <div class="bars"> 161 <div class="bar"></div> 162 <div class="bar"></div> 163 <div class="bar"></div> 164 </div> 165 166 </button><!-- .nav-toggle --> 167 168 <div class="mobile-navigation"> 169 170 <ul class="mobile-menu"> 171 172 <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-home menu-item-2959"><a href="https://www.javaadvent.com/">Home</a></li> 173<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2474"><a href="https://www.javaadvent.com/about-page">About</a></li> 174<li class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-2960 current_page_item current_page_parent menu-item-2965"><a href="https://www.javaadvent.com/calendar" aria-current="page">Calendar</a></li> 175<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2475"><a href="https://www.javaadvent.com/archive">Archive</a></li> 176<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2476"><a href="https://www.javaadvent.com/sponsors">Sponsors</a></li> 177 178 </ul> 179 180 181<form method="get" class="search-form" id="search-form-6ac17b16aedaf" action="https://www.javaadvent.com/"> 182 <input type="search" class="search-field" placeholder="Search Form" name="s" id="search-field-6ac17b16aedb2" /> 183 <button type="submit" class="search-button"> 184 <span class="screen-reader-text">Search</span> 185 <div class="fa fw fa-search"></div> 186 </button> 187</form> 188 </div><!-- .mobile-navigation --> 189 190 </div><!-- .navigation --> 191 192 193 <div class="header-image" style="background-image: url( https://www.javaadvent.com/content/themes/hitchcock-advent-theme/assets/images/bg.jpg );"></div> 194 195 <div class="header section-inner"> 196 197 198 <div class="blog-title"> 199 <a href="https://www.javaadvent.com" rel="home">JVM Advent</a> 200 </div> 201 202 <div class="blog-description"><p>The JVM Programming Advent Calendar</p> 203</div> 204 205 206 </div><!-- .header --> 207 208 <main id="site-content"> 209<div class="content section-inner"> 210 211 212 213 214 <div class="posts group" id="posts"> 215 216 217<a href="https://www.javaadvent.com/2025/12/santas-python-pitfalls-a-java-developers-guide-to-staying-safe-this-christmas.html" id="post-5916" class="post post-5916 type-post status-publish format-standard has-post-thumbnail hentry category-765" style="background-image: url( https://i0.wp.com/www.javaadvent.com/content/uploads/2021/12/Feature-Image-Day-24.png?fit=508%2C508&ssl=1 );"> 218 219 <div class="post-overlay"> 220 221 222 <div class="archive-post-header"> 223 224 <p class="archive-post-date">December 24, 2025</p> 225 226 <h2 class="archive-post-title">Santa’s Python Pitfalls: A Java Developer’s Guide to Staying Safe This Christmas</h2> 227 228 <p class="archive-post-author">By: Steve Poole</p> 229 </div> 230 231 </div> 232 233</a><!-- .post --> 234<a href="https://www.javaadvent.com/2025/12/chicory-webassembly-on-the-jvm.html" id="post-6289" class="post post-6289 type-post status-publish format-standard has-post-thumbnail hentry category-276" style="background-image: url( https://i0.wp.com/www.javaadvent.com/content/uploads/2021/12/Feature-Image-Day-23.png?fit=508%2C508&ssl=1 );"> 235 236 <div class="post-overlay"> 237 238 239 <div class="archive-post-header"> 240 241 <p class="archive-post-date">December 23, 2025</p> 242 243 <h2 class="archive-post-title">Bring WebAssembly to the JVM. How Chicory Is Powering a New Generation of Java Libraries</h2> 244 245 <p class="archive-post-author">By: Andrea Peruffo</p> 246 </div> 247 248 </div> 249 250</a><!-- .post --> 251<a href="https://www.javaadvent.com/2025/12/delegating-java-tasks-to-supervised-ai-dev-pipelines.html" id="post-6278" class="post post-6278 type-post status-publish format-standard has-post-thumbnail hentry category-765" style="background-image: url( https://i0.wp.com/www.javaadvent.com/content/uploads/2021/12/Feature-Image-Day-22.png?fit=508%2C508&ssl=1 );"> 252 253 <div class="post-overlay"> 254 255 256 <div class="archive-post-header"> 257 258 <p class="archive-post-date">December 22, 2025</p> 259 260 <h2 class="archive-post-title">Delegating Java tasks to Supervised AI Dev Pipelines</h2> 261 262 <p class="archive-post-author">
262By: Juan Antonio Breña Moral</p> 263 </div> 264 265 </div> 266 267</a><!-- .post --> 268<a href="https://www.javaadvent.com/2025/12/how-to-really-measure-llms-for-jvm-code-a-benchmarking-guide-for-late-2025.html" id="post-6343" class="post post-6343 type-post status-publish format-standard has-post-thumbnail hentry category-276" style="background-image: url( https://i0.wp.com/www.javaadvent.com/content/uploads/2021/12/Feature-Image-Day-21.png?fit=508%2C508&ssl=1 );"> 269 270 <div class="post-overlay"> 271 272 273 <div class="archive-post-header"> 274 275 <p class="archive-post-date">December 21, 2025</p> 276 277 <h2 class="archive-post-title">How to really measure LLMs for JVM Code? A Benchmarking guide for late 2025</h2> 278 279 <p class="archive-post-author">By: Artur Skowronski</p> 280 </div> 281 282 </div> 283 284</a><!-- .post --> 285<a href="https://www.javaadvent.com/2025/12/out-with-the-old-in-with-the-new.html" id="post-5926" class="post post-5926 type-post status-publish format-standard has-post-thumbnail hentry category-765 tag-automatic tag-legacy-application tag-rewrite" style="background-image: url( https://i0.wp.com/www.javaadvent.com/content/uploads/2021/12/Feature-Image-Day-20.png?fit=508%2C508&ssl=1 );"> 286 287 <div class="post-overlay"> 288 289 290 <div class="archive-post-header"> 291 292 <p class="archive-post-date">December 20, 2025</p> 293 294 <h2 class="archive-post-title">Out with the Old, In with the New: A Guide to Application Upkeep</h2> 295 296 <p class="archive-post-author">By: Andres Sacco</p> 297 </div> 298 299 </div> 300 301</a><!-- .post --> 302<a href="https://www.javaadvent.com/2025/12/getting-started-with-springai.html" id="post-6211" class="post post-6211 type-post status-publish format-standard has-post-thumbnail hentry category-765" style="background-image: url( https://i0.wp.com/www.javaadvent.com/content/uploads/2021/12/Feature-Image-Day-19.png?fit=508%2C508&ssl=1 );"> 303 304 <div class="post-overlay"> 305 306 307 <div class="archive-post-header"> 308 309 <p class="archive-post-date">December 19, 2025</p> 310 311 <h2 class="archive-post-title">Getting Started with SpringAI</h2> 312 313 <p class="archive-post-author">By: Samuel Lissner</p> 314 </div> 315 316 </div> 317 318</a><!-- .post --> 319<a href="https://www.javaadvent.com/2025/12/making-java-a-first-class-ai-citizen-with-langchain4j.html" id="post-6271" class="post post-6271 type-post status-publish format-standard has-post-thumbnail hentry category-765" style="background-image: url( https://i0.wp.com/www.javaadvent.com/content/uploads/2021/12/Feature-Image-Day-18.png?fit=508%2C508&ssl=1 );"> 320 321 <div class="post-overlay"> 322 323 324 <div class="archive-post-header"> 325 326 <p class="archive-post-date">December 18, 2025</p> 327 328 <h2 class="archive-post-title">Making Java a first-class AI citizen with Langchain4j</h2> 329 330 <p class="archive-post-author">By: deors</p> 331 </div> 332 333 </div> 334 335</a><!-- .post --> 336<a href="https://www.javaadvent.com/2025/12/run-java-aot-cache-optimizations.html" id="post-6128" class="post post-6128 type-post status-publish format-standard has-post-thumbnail hentry category-765 category-java-advent category-openjdk category-performance tag-java tag-jdk25 tag-performance tag-project-leyden" style="background-image: url( https://i0.wp.com/www.javaadvent.com/content/uploads/2021/12/Feature-Image-Day-17.png?fit=508%2C508&ssl=1 );"> 337 338 <div class="post-overlay"> 339 340 341 <div class="archive-post-header"> 342 343 <p class="archive-post-date">December 17, 2025</p> 344 345 <h2 class="archive-post-title">Run Into the New Year with Javaâs Ahead-of-Time Cache Features</h2> 346 347 <p class="archive-post-author">By: Ana-Maria Mihalceanu</p> 348 </div> 349 350 </div> 351 352</a><!-- .post --> 353<a href="https://www.javaadvent.com/2025/12/ffm-api-for-java-on-raspberry-pi.html" id="post-5947" class="post post-5947 type-post status-publish format-standard has-post-thumbnail hentry category-765" style="background-image: url( https://i0.wp.com/www.javaadvent.com/content/uploads/2025/11/pi4j-overview-scaled.jpg?fit=508%2C212&ssl=1 );"> 354 355 <div class="post-overlay"> 356 357 358 <div class="archive-post-header"> 359 360 <p class="archive-post-date">December 16, 2025</p> 361 362 <h2 class="archive-post-title">The FFM API: How OpenJDK Changed the Game for Native Interactions (And Made Pi4J Better!)</h2> 363 364 <p class="archive-post-author">
364By: Frank Delporte</p> 365 </div> 366 367 </div> 368 369</a><!-- .post --> 370<a href="https://www.javaadvent.com/2025/12/tinkering-with-a-hands-off-agent.html" id="post-6080" class="post post-6080 type-post status-publish format-standard has-post-thumbnail hentry category-765 category-java-advent" style="background-image: url( https://i0.wp.com/www.javaadvent.com/content/uploads/2025/11/image-1.png?fit=508%2C339&ssl=1 );"> 371 372 <div class="post-overlay"> 373 374 375 <div class="archive-post-header"> 376 377 <p class="archive-post-date">December 15, 2025</p> 378 379 <h2 class="archive-post-title">Tinkering with a “hands-off” agent</h2> 380 381 <p class="archive-post-author">By: Tom Cools</p> 382 </div> 383 384 </div> 385 386</a><!-- .post --> 387<a href="https://www.javaadvent.com/2025/12/spec-driven-development-in-practice-how-ai-simplify-full-stack-java.html" id="post-6132" class="post post-6132 type-post status-publish format-standard has-post-thumbnail hentry category-765" style="background-image: url( https://i0.wp.com/www.javaadvent.com/content/uploads/2021/12/Feature-Image-Day-14.png?fit=508%2C508&ssl=1 );"> 388 389 <div class="post-overlay"> 390 391 392 <div class="archive-post-header"> 393 394 <p class="archive-post-date">December 14, 2025</p> 395 396 <h2 class="archive-post-title">Spec-Driven Development in Practice: How AI Simplify Full-Stack Java</h2> 397 398 <p class="archive-post-author">By: Simon Martinelli</p> 399 </div> 400 401 </div> 402 403</a><!-- .post --> 404<a href="https://www.javaadvent.com/2025/12/hidden-treasures-of-eclipse-collections-2025-edition.html" id="post-6220" class="post post-6220 type-post status-publish format-standard has-post-thumbnail hentry category-765" style="background-image: url( https://i0.wp.com/www.javaadvent.com/content/uploads/2021/12/Feature-Image-Day-13.png?fit=508%2C508&ssl=1 );"> 405 406 <div class="post-overlay"> 407 408 409 <div class="archive-post-header"> 410 411 <p class="archive-post-date">December 13, 2025</p> 412 413 <h2 class="archive-post-title">Hidden Treasures of Eclipse Collections 2025 Edition</h2> 414 415 <p class="archive-post-author">By: Nikhil Nanivadekar</p> 416 </div> 417 418 </div> 419 420</a><!-- .post --> 421<a href="https://www.javaadvent.com/2025/12/strengthening-your-software-supply-chain.html" id="post-6044" class="post post-6044 type-post status-publish format-standard has-post-thumbnail hentry category-765 category-devops category-java" style="background-image: url( https://i0.wp.com/www.javaadvent.com/content/uploads/2021/12/Feature-Image-Day-12.png?fit=508%2C508&ssl=1 );"> 422 423 <div class="post-overlay"> 424 425 426 <div class="archive-post-header"> 427 428 <p class="archive-post-date">December 12, 2025</p> 429 430 <h2 class="archive-post-title">Strengthening your Software Supply Chain</h2> 431 432 <p class="archive-post-author">By: Andres Almiray</p> 433 </div> 434 435 </div> 436 437</a><!-- .post --> 438<a href="https://www.javaadvent.com/2025/12/a-glance-at-gpu-goodness-in-java-llm-inference-with-tornadovm.html" id="post-5844" class="post post-5844 type-post status-publish format-standard has-post-thumbnail hentry category-765 tag-gpu tag-llama3 tag-tornadovm" style="background-image: url( https://i0.wp.com/www.javaadvent.com/content/uploads/2025/11/tornadovm-gpullama3.png?fit=508%2C508&ssl=1 );"> 439 440 <div class="post-overlay"> 441 442 443 <div class="archive-post-header"> 444 445 <p class="archive-post-date">December 11, 2025</p> 446 447 <h2 class="archive-post-title">A Glance at GPU Goodness in Java: LLM Inference with TornadoVM</h2> 448 449 <p class="archive-post-author">By: Edoardo Vacchi</p> 450 </div> 451 452 </div> 453 454</a><!-- .post --> 455<a href="https://www.javaadvent.com/2025/12/breaking-keys-and-building-trust-the-java-way.html" id="post-6008" class="post post-6008 type-post status-publish format-standard has-post-thumbnail hentry category-765" style="background-image: url( https://i0.wp.com/www.javaadvent.com/content/uploads/2021/12/Feature-Image-Day-10.png?fit=508%2C508&ssl=1 );"> 456 457 <div class="post-overlay"> 458 459 460 <div class="archive-post-header"> 461 462 <p class="archive-post-date">December 10, 2025</p> 463 464 <h2 class="archive-post-title">Breaking keys and building trust: The JAVA way!</h2> 465 466 <p class="archive-post-author">By: Ixchel Ruiz</p> 467 </div> 468 469 </div> 470 471</a><!-- .post --> 472<a href="https://www.javaadvent.com/2025/12/discover-roq-the-quarkus-way-for-static-site-generation-in-java.html" id="post-5996" class="post post-5996 type-post status-publish format-standard has-post-thumbnail hentry category-765 category-cms category-java category-javascript tag-java tag-jvm tag-quarkus tag-ssg tag-static-site-generator" style="background-image: url( https://i0.wp.com/www.javaadvent.com/content/uploads/2021/12/Feature-Image-Day-9.png?fit=508%2C508&ssl=1 );"> 473 474 <div class="post-overlay"> 475 476 477 <div class="archive-post-header"> 478 479 <p class="archive-post-date">December 9, 2025</p> 480 481 <h2 class="archive-post-title">Discover Roq, the Quarkus Way for Static Site Generation in Java</h2> 482 483 <p class="archive-post-author">By: Andy Damevin</p> 484 </div> 485 486 </div> 487 488</a><!-- .post --> 489<a href="https://www.javaadvent.com/2025/12/nice-and-naughty-cases-of-pattern-matching.html" id="post-5990" class="post post-5990 type-post status-publish format-standard has-post-thumbnail hentry category-765 tag-pattern-matching" style="background-image: url( https://i0.wp.com/www.javaadvent.com/content/uploads/2021/12/Feature-Image-Day-8.png?fit=508%2C508&ssl=1 );"> 490 491 <div class="post-overlay"> 492 493 494 <div class="archive-post-header"> 495 496 <p class="archive-post-date">December 8, 2025</p> 497 498 <h2 class="archive-post-title">Nice and Naughty Cases of Pattern Matching</h2> 499 500 <p class="archive-post-author">By: Cay Horstmann</p> 501 </div> 502 503 </div> 504 505</a><!-- .post --> 506<a href="https://www.javaadvent.com/2025/12/java-hello-world-llvm-edition.html" id="post-5872" class="post post-5872 type-post status-publish format-standard has-post-thumbnail hentry category-765 tag-java tag-java-advent tag-jdk tag-jvm" style="background-image: url( https://i0.wp.com/www.javaadvent.com/content/uploads/2021/12/Feature-Image-Day-7.png?fit=508%2C508&ssl=1 );"> 507 508 <div class="post-overlay"> 509 510 511 <div class="archive-post-header"> 512 513 <p class="archive-post-date">December 7, 2025</p> 514 515 <h2 class="archive-post-title">Java Hello World, LLVM Edition</h2> 516 517 <p class="archive-post-author">By: James Hamilton</p> 518 </div> 519 520 </div> 521 522</a><!-- .post --> 523<a href="https://www.javaadvent.com/2025/12/comparing-transitive-dependency-version-resolution-in-rust-and-java.html" id="post-5834" class="post post-5834 type-post status-publish format-standard has-post-thumbnail hentry category-765 tag-dependency tag-java tag-rust" style="background-image: url( https://i0.wp.com/www.javaadvent.com/content/uploads/2025/11/cover_large.jpg?fit=508%2C339&ssl=1 );"> 524 525 <div class="post-overlay"> 526 527 528 <div class="archive-post-header"> 529 530 <p class="archive-post-date">December 6, 2025</p> 531 532 <h2 class="archive-post-title">Comparing transitive dependency version resolution in Rust and Java</h2> 533 534 <p class="archive-post-author">By: Nicolas Fränkel</p> 535 </div> 536 537 </div> 538 539</a><!-- .post --> 540<a href="https://www.javaadvent.com/2025/12/beyond-x86-java-on-arm-in-2025.html" id="post-6056" class="post post-6056 type-post status-publish format-standard has-post-thumbnail hentry category-276" style="background-image: url( https://i0.wp.com/www.javaadvent.com/content/uploads/2021/12/Feature-Image-Day-5.png?fit=508%2C508&ssl=1 );"> 541 542 <div class="post-overlay"> 543 544 545 <div class="archive-post-header"> 546 547 <p class="archive-post-date">December 5, 2025</p> 548 549 <h2 class="archive-post-title">Beyond x86: Java on ARM in 2025</h2> 550 551 <p class="archive-post-author">By: Artur Skowronski</p> 552 </div> 553 554 </div> 555 556</a><!-- .post --> 557<a href="https://www.javaadvent.com/2025/12/test-your-test.html" id="post-5925" class="post post-5925 type-post status-publish format-standard has-post-thumbnail hentry category-765 tag-effective tag-mutation tag-testing" style="background-image: url( https://i0.wp.com/www.javaadvent.com/content/uploads/2021/12/Feature-Image-Day-4.png?fit=508%2C508&ssl=1 );"> 558 559 <div class="post-overlay"> 560 561 562 <div class="archive-post-header"> 563 564 <p class="archive-post-date">December 4, 2025</p> 565 566 <h2 class="archive-post-title">Test Your Test</h2> 567 568 <p class="archive-post-author">
568By: Andres Sacco</p> 569 </div> 570 571 </div> 572 573</a><!-- .post --> 574<a href="https://www.javaadvent.com/2025/12/how-understanding-request-flow-in-spring-boot-changed-the-way-i-code.html" id="post-5966" class="post post-5966 type-post status-publish format-standard has-post-thumbnail hentry category-765 tag-java tag-java-advent tag-springboot" style="background-image: url( https://i0.wp.com/www.javaadvent.com/content/uploads/2021/12/Feature-Image-Day-3.png?fit=508%2C508&ssl=1 );"> 575 576 <div class="post-overlay"> 577 578 579 <div class="archive-post-header"> 580 581 <p class="archive-post-date">December 3, 2025</p> 582 583 <h2 class="archive-post-title">How Understanding Request Flow in Spring Boot Changed the Way I Code</h2> 584 585 <p class="archive-post-author">By: Mohammed</p> 586 </div> 587 588 </div> 589 590</a><!-- .post --> 591<a href="https://www.javaadvent.com/2025/12/quarkus-langchain4j-extension-from-grounds-up.html" id="post-5932" class="post post-5932 type-post status-publish format-standard has-post-thumbnail hentry category-765 tag-ai tag-java tag-langchain4j tag-quarkus" style="background-image: url( https://i0.wp.com/www.javaadvent.com/content/uploads/2021/12/Feature-Image-Day-2.png?fit=508%2C508&ssl=1 );"> 592 593 <div class="post-overlay"> 594 595 596 <div class="archive-post-header"> 597 598 <p class="archive-post-date">December 2, 2025</p> 599 600 <h2 class="archive-post-title">Quarkus LangChain4j extension from grounds up</h2> 601 602 <p class="archive-post-author">By: Martin Toshev</p> 603 </div> 604 605 </div> 606 607</a><!-- .post --> 608<a href="https://www.javaadvent.com/2025/12/lighting-the-way-java-ai-and-a-season-of-new-ideas.html" id="post-5922" class="post post-5922 type-post status-publish format-standard has-post-thumbnail hentry category-765" style="background-image: url( https://i0.wp.com/www.javaadvent.com/content/uploads/2021/12/Feature-Image-Day-1.png?fit=508%2C508&ssl=1 );"> 609 610 <div class="post-overlay"> 611 612 613 <div class="archive-post-header"> 614 615 <p class="archive-post-date">December 1, 2025</p> 616 617 <h2 class="archive-post-title">Lighting the Way: Java, AI, and a Season of New Ideas</h2> 618 619 <p class="archive-post-author">By: Markus Eisele</p> 620 </div> 621 622 </div> 623 624</a><!-- .post --> 625 </div><!-- .posts --> 626 627 628 629</div><!-- .content --> 630 631 </main><!-- #site-content --> 632 633 <div class="credits section-inner"> 634 <p>© 2026 <a href="https://www.javaadvent.com">JVM Advent</a> | Powered by <a href="https://steinhauer.software" target="_blank"><img src="https://www.javaadvent.com/content/themes/hitchcock-advent-theme/assets/images/steinhauer.software.png" alt="steinhauer.software Logo"/>steinhauer.software</a></p> 635 <p class="theme-by">Theme by <a href="https://www.andersnoren.se">Anders Norén</a></p> 636 </div><!-- .credits --> 637 638
638<script type="speculationrules"> 639{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/content/uploads/*","/content/*","/content/plugins/*","/content/themes/hitchcock-advent-theme/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} 640</script>
vendor: 1 bytes, line 640
640
641<script src="https://www.jdoodle.com/assets/jdoodle-pym.min.js" type="text/javascript"></script>
641<div class="simple-banner simple-banner-text" style="display:none !important"></div><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.1/css/all.css" /> 642<!-- Matomo -->
643<script> 644 var _paq = window._paq = window._paq || []; 645 /* tracker methods like "setCustomDimension" should be called before "trackPageView" */ 646 _paq.push(["setCookieDomain", "*.www.javaadvent.com"]); 647 _paq.push(["setDomains", ["*.www.javaadvent.com"]]); 648 _paq.push(["enableCrossDomainLinking"]); 649 _paq.push(['trackPageView']); 650 _paq.push(['enableLinkTracking']); 651 (function() { 652 var u="//analytics.e-mehlbox.eu/"; 653 _paq.push(['setTrackerUrl', u+'matomo.php']); 654 _paq.push(['setSiteId', '2']); 655 var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; 656 g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s); 657 })(); 658</script>
658 659<!-- End Matomo Code --> 660<noscript><p><img referrerpolicy="no-referrer-when-downgrade" src="//analytics.e-mehlbox.eu/matomo.php?idsite=2&rec=1" style="border:0;" alt="" /></p></noscript>
661<script id="syntaxhighlighter-core-js" src="https://www.javaadvent.com/content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shCore.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 661
661
662<script id="syntaxhighlighter-brush-as3-js" src="https://www.javaadvent.com/content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushAS3.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 662
662
663<script id="syntaxhighlighter-brush-arduino-js" src="https://www.javaadvent.com/content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushArduino.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 663
663
664<script id="syntaxhighlighter-brush-bash-js" src="https://www.javaadvent.com/content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushBash.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 664
664
665<script id="syntaxhighlighter-brush-coldfusion-js" src="https://www.javaadvent.com/content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushColdFusion.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 665
665
666<script id="syntaxhighlighter-brush-clojure-js" src="https://www.javaadvent.com/content/plugins/syntaxhighlighter/third-party-brushes/shBrushClojure.js?ver=20090602"></script>
vendor: 1 bytes, line 666
666
667<script id="syntaxhighlighter-brush-cpp-js" src="https://www.javaadvent.com/content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushCpp.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 667
667
668<script id="syntaxhighlighter-brush-csharp-js" src="https://www.javaadvent.com/content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushCSharp.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 668
668
669<script id="syntaxhighlighter-brush-css-js" src="https://www.javaadvent.com/content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushCss.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 669
669
670<script id="syntaxhighlighter-brush-delphi-js" src="https://www.javaadvent.com/content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushDelphi.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 670
670
671<script id="syntaxhighlighter-brush-diff-js" src="https://www.javaadvent.com/content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushDiff.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 671
671
672<script id="syntaxhighlighter-brush-erlang-js" src="https://www.javaadvent.com/content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushErlang.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 672
672
673<script id="syntaxhighlighter-brush-fsharp-js" src="https://www.javaadvent.com/content/plugins/syntaxhighlighter/third-party-brushes/shBrushFSharp.js?ver=20091003"></script>
vendor: 1 bytes, line 673
673
674<script id="syntaxhighlighter-brush-go-js" src="https://www.javaadvent.com/content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushGo.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 674
674
675<script id="syntaxhighlighter-brush-groovy-js" src="https://www.javaadvent.com/content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushGroovy.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 675
675
676<script id="syntaxhighlighter-brush-haskell-js" src="https://www.javaadvent.com/content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushHaskell.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 676
676
677<script id="syntaxhighlighter-brush-java-js" src="https://www.javaadvent.com/content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushJava.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 677
677
678<script id="syntaxhighlighter-brush-javafx-js" src="https://www.javaadvent.com/content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushJavaFX.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 678
678
679<script id="syntaxhighlighter-brush-jscript-js" src="https://www.javaadvent.com/content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushJScript.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 679
679
680<script id="syntaxhighlighter-brush-latex-js" src="https://www.javaadvent.com/content/plugins/syntaxhighlighter/third-party-brushes/shBrushLatex.js?ver=20090613"></script>
vendor: 1 bytes, line 680
680
681<script id="syntaxhighlighter-brush-matlabkey-js" src="https://www.javaadvent.com/content/plugins/syntaxhighlighter/third-party-brushes/shBrushMatlabKey.js?ver=20091209"></script>
vendor: 1 bytes, line 681
681
682<script id="syntaxhighlighter-brush-objc-js" src="https://www.javaadvent.com/content/plugins/syntaxhighlighter/third-party-brushes/shBrushObjC.js?ver=20091207"></script>
vendor: 1 bytes, line 682
682
683<script id="syntaxhighlighter-brush-perl-js" src="https://www.javaadvent.com/content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushPerl.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 683
683
684<script id="syntaxhighlighter-brush-php-js" src="https://www.javaadvent.com/content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushPhp.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 684
684
685<script id="syntaxhighlighter-brush-plain-js" src="https://www.javaadvent.com/content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushPlain.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 685
685
686<script id="syntaxhighlighter-brush-powershell-js" src="https://www.javaadvent.com/content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushPowerShell.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 686
686
687<script id="syntaxhighlighter-brush-python-js" src="https://www.javaadvent.com/content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushPython.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 687
687
688<script id="syntaxhighlighter-brush-r-js" src="https://www.javaadvent.com/content/plugins/syntaxhighlighter/third-party-brushes/shBrushR.js?ver=20100919"></script>
vendor: 1 bytes, line 688
688
689<script id="syntaxhighlighter-brush-ruby-js" src="https://www.javaadvent.com/content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushRuby.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 689
689
690<script id="syntaxhighlighter-brush-scala-js" src="https://www.javaadvent.com/content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushScala.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 690
690
691<script id="syntaxhighlighter-brush-sql-js" src="https://www.javaadvent.com/content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushSql.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 691
691
692<script id="syntaxhighlighter-brush-swift-js" src="https://www.javaadvent.com/content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushSwift.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 692
692
693<script id="syntaxhighlighter-brush-vb-js" src="https://www.javaadvent.com/content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushVb.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 693
693
694<script id="syntaxhighlighter-brush-xml-js" src="https://www.javaadvent.com/content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushXml.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 694
694
695<script id="syntaxhighlighter-brush-yaml-js" src="https://www.javaadvent.com/content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushYaml.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 695
695
696<script type='text/javascript'> 697 (function(){ 698 var corecss = document.createElement('link'); 699 var themecss = document.createElement('link'); 700 var corecssurl = "https://www.javaadvent.com/content/plugins/syntaxhighlighter/syntaxhighlighter3/styles/shCore.css?ver=3.0.9b"; 701 if ( corecss.setAttribute ) { 702 corecss.setAttribute( "rel", "stylesheet" ); 703 corecss.setAttribute( "type", "text/css" ); 704 corecss.setAttribute( "href", corecssurl ); 705 } else { 706 corecss.rel = "stylesheet"; 707 corecss.href = corecssurl; 708 } 709 document.head.appendChild( corecss ); 710 var themecssurl = "https://www.javaadvent.com/content/plugins/syntaxhighlighter/syntaxhighlighter3/styles/shThemeMidnight.css?ver=3.0.9b"; 711 if ( themecss.setAttribute ) { 712 themecss.setAttribute( "rel", "stylesheet" ); 713 themecss.setAttribute( "type", "text/css" ); 714 themecss.setAttribute( "href", themecssurl ); 715 } else { 716 themecss.rel = "stylesheet"; 717 themecss.href = themecssurl; 718 } 719 document.head.appendChild( themecss ); 720 })(); 721 SyntaxHighlighter.config.strings.expandSource = '+ expand source'; 722 SyntaxHighlighter.config.strings.help = '?'; 723 SyntaxHighlighter.config.strings.alert = 'SyntaxHighlighter\n\n'; 724 SyntaxHighlighter.config.strings.noBrush = 'Can\'t find brush for: '; 725 SyntaxHighlighter.config.strings.brushNotHtmlScript = 'Brush wasn\'t configured for html-script option: '; 726 SyntaxHighlighter.defaults['pad-line-numbers'] = false; 727 SyntaxHighlighter.defaults['tab-size'] = 2; 728 SyntaxHighlighter.defaults['toolbar'] = false; 729 SyntaxHighlighter.all(); 730 731 // Infinite scroll support 732 if ( typeof( jQuery ) !== 'undefined' ) { 733 jQuery( function( $ ) { 734 $( document.body ).on( 'post-load', function() { 735 SyntaxHighlighter.highlight(); 736 } ); 737 } ); 738 } 739</script>
vendor: 1 bytes, line 739
739
740<script id="jetpack-stats-js-before"> 741_stq = window._stq || []; 742_stq.push([ "view", {"v":"ext","blog":"101550570","post":"2960","tz":"0","srv":"www.javaadvent.com","j":"1:16.2"} ]); 743_stq.push([ "clickTrackerInit", "101550570", "2960" ]); 744//# sourceURL=jetpack-stats-js-before 745</script>
vendor: 1 bytes, line 745
745
746<script data-wp-strategy="defer" defer fetchpriority="low" id="jetpack-stats-js" src="https://stats.wp.com/e-202640.js"></script>
vendor: 1 bytes, line 746
746
747<script id="wp-emoji-settings" type="application/json"> 748{"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://www.javaadvent.com/wp-includes/js/wp-emoji-release.min.js?ver=7.1.2"}} 749</script>
vendor: 1 bytes, line 749
749
750<script type="module"> 751/*! This file is auto-generated */ 752var e="script#wp-emoji-settings",t=document.querySelector(e);if(!(t instanceof HTMLScriptElement))throw new Error("Element missing: "+e);const r=JSON.parse(t.text),s=(window._wpemojiSettings=r,"wpEmojiSettingsSupports"),o=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(s,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const r=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===r[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,r){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!r(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,r){let a;const s=(a="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),o=(s.textBaseline="top",s.font="600 32px Arial",{});return e.forEach(e=>{o[e]=t(s,e,n,r)}),o}function a(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}r.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(s));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(o),u.toString(),c.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"});const a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=e=>{i(n=e.data),a.terminate(),t(n)})}catch(e){}i(n=f(o,u,c,p))}t(n)}).then(e=>{for(const n in e)r.supports[n]=e[n],r.supports.everything=r.supports.everything&&r.supports[n],"flag"!==n&&(r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&r.supports[n]);var t;r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&!r.supports.flag,r.supports.everything||((t=r.source||{}).concatemoji?a(t.concatemoji):t.wpemoji&&t.twemoji&&(a(t.twemoji),a(t.wpemoji)))}); 753//# sourceURL=https://www.javaadvent.com/wp-includes/js/wp-emoji-loader.min.js 754</script>
754 755 756 </body> 757 758</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.