Meta tags:
description= JavaOne 2025 had lots of talks from OpenJDK insiders as well as from community experts - here are some of the highlights;
Headings (most frequently used words):
javaone, 25, highlights, inside, java, newscast, 89, unit, tests, for, aot, training, runs, gc, primer, and, comparison, analyze, your, maven, build, truly, final, building, advanced, rag, valhalla, roadmap,
Text of the page (most frequently used words):
the (98), and (74), that (49), java (44), you (36), this (34), have (28), there (26), can (22), for (20), your (20), project (19), from (16), are (16), with (15), about (14), will (14), final (14), but (13), not (13), which (12), content (12), because (12), just (11), build (11), maven (11), make (10), then (10), going (10), also (10), application (10), some (9), don (9), #valhalla (9), how (9), what (9), they (9), query (9), code (9), really (9), when (9), threads (9), all (8), like (8), more (8), time (8), run (8), training (8), community (8), see (7), has (7), very (7), much (7), get (7), plugin (7), runs (7), unit (7), know (6), types (6), jep (6), first (6), one (6), default (6), something (6), things (6), talks (6), openjdk (6), here (6), javaone (6), good (6), need (6), loader (6), performance (6), latency (6), garbage (6), throughput (6), tests (6), say (5), maybe (5), their (5), these (5), out (5), them (5), well (5), even (5), talk (5), roadmap (5), jdk (5), model (5), question (5), other (5), put (5), had (5), rag (5), into (5), advanced (5), production (5), would (5), inside (5), better (5), extension (5), class (5), aot (5), junit (5), now (4), off (4), two (4), long (4), little (4), null (4), value (4), sure (4), over (4), classes (4), pieces (4), why (4), example (4), let (4), want (4), use (4), short (4), where (4), okay (4), post (4), mean (4), few (4), clean (4), looks (4), watch (4), analyze (4), collection (4), work (4), pause (4), primer (4), comparison (4), streams (4), newscast (4), share (4), highlights (4), privacy (3), youtube (3), cool (3), weeks (3), calls (3), again (3), restricted (3), own (3), only (3), coming (3), year (3), bunch (3), numbers (3), his (3), everything (3), after (3), transformer (3), before (3), take (3), find (3), retrievers (3), multiple (3), search (3), course (3), different (3), instead (3), retrieval (3), augmenter (3), big (3), reflection (3), various (3), announcement (3), possible (3), building (3), look (3), fields (3), probably (3), new (3), record (3), pretty (3), was (3), truly (3), mvn (3), bit (3), plugins (3), lot (3), space (3), today (3), lots (3), testing (3), libraries (3), works (3), leyden (3), 2025 (3), follow (3), pioneer (3), demos (3), core (3), license (2), rss (2), stackoverflow (2), github (2), twitch (2), discord (2), mastodon (2), bluesky (2), may (2), road (2), between (2), box (2), early (2), access (2), soon (2), been (2), stable (2), piece (2), basically (2), far (2), show (2), cover (2), aggregator (2), relevant (2), original (2), too (2), once (2), typically (2), answer (2), nothing (2), found (2), were (2), book (2), could (2), front (2), talked (2), given (2), same (2), web (2), sql (2), write (2), retriever (2), documents (2), any (2), api (2), version (2), our (2), way (2), oracle (2), picked (2), its (2), best (2), eventually (2), draft (2), least (2), plan (2), already (2), flag (2), give (2), guess (2), exception (2), called (2), does (2), mark (2), who (2), days (2), during (2), miss (2), verify (2), understand (2), happening (2), phase (2), real (2), day (2), validate (2), each (2), profile (2), never (2), used (2), stefan (2), zgc (2), both (2), low (2), collector (2), overhead (2), care (2), realize (2), perspective (2), compete (2), resources (2), hand (2), pauses (2), point (2), amount (2), trade (2), set (2), transaction (2), three (2), aspects (2), configuration (2), cache (2), dan (2), framework (2), assertion (2), right (2), loading (2), insiders (2), experts (2), recordings (2), active (2), platforms (2), notified (2), publish (2), videos (2), libfx (2), args (2), var (2), turn (2), tools (2), techniques (2), switch (2), serialization (2), records (2), panama (2), loom (2), amber (2), patterns (2), pattern (2), matching (2), optional (2), ramp (2), migration (2), meta (2), lambda (2), javafx (2), next (2), basics (2), j_ms (2), generics (2), dop (2), documentation (2), deprecation (2), libs (2), collections (2), architecture (2), tags (2), javascript (2), contact, imprint, wait, heading, holiday, means, billy, him, joke, monstrosity, haircut, looking, farther, down, concept, context, adds, interactions, optimizations, sort, cleanup, minimize, gap, legacy, primitives, variant, four, second, fairly, polishing, implementation, spec, jeps, map, yet, 401, underway, though, won, brian, giving, strong, vibes, language, evolution, went, meaning, list, enhancement, proposals, feature, arc, order, expects, land, added, ranking, small, scoring, function, kick, enough, injector, add, information, important, sent, side, retrieved, together, often, irrelevant, confuse, wonder, started, talking, happened, compressing, history, account, sensible, yes, please, expanding, questions, pick, router, powered, llm, send, rewrite, llms, proper, queries, start, middle, having, searches, ones, embedding, store, graph, engine, wanted, weather, service, mitigate, problems, came, langchain4j, interfaces, underneath, implementations, easily, imagine, chunk, related, shape, form, hat, frameworks, assist, coding, guidelines, security, concerns, section, lize, raes, mohamed, ait, abderrahman, presentation, research, agent, explain, augmentation, pipeline, essential, replies, delete, hope, otherwise, feel, kind, ashamed, prepare, screen, ideas, trustfinal, option, jvm, forget, name, starts, letters, backport, screw, codebase, dependencies, doesn, respect, case, throw, runtime, problem, setaccessible, wouldn, believe, those, values, mainly, idea, finality, initialized, late, components, recorded, conversations, end, episodes, podcast, everywhere, link, description, reinhold, dropped, news, preempted, publishing, wondering, burst, music, prever, oder, install, saw, goals, outputs, registered, actually, easy, world, working, crazy, older, than, compile, pizza, backend, tells, took, create, file, similar, folder, git, control, touch, server, cautious, rights, trust, karl, heinz, marbaise, extensions, xml, special, difference, bigger, ever, confused, taking, assume, hating, life, projects, tend, messy, builds, richard, fichtner, gain, insights, dives, deeper, improvements, gcs, across, versions, recounts, positive, outcomes, netflix, mercado, libre, linkedin, oci, upgrading, runtimes, another, great, recommend, erik, osterlund, aim, providing, alternatives, shenandoah, balanced, aiming, provide, parallel, main, focus, memory, serial, open, five, collectors, heavy, concurrently, running, might, worse, wise, shorter, cpu, view, optimal, significant, hard, optimize, usually, offs, try, illustrate, using, trying, letting, caused, algorithm, footprint, single, affected, bad, being, mostly, number, transactions, complete, many, cases, segment, johansson, gives, high, level, overview, strengths, questionable, execute, differently, pollute, unnecessary, think, mind, fix, load, library, etc, custom, ignore, ways, configure, useful, done, shipped, optimizes, built, loaders, system, excludes, definition, entire, thing, avoid, benchmark, loads, whole, live, heidinga, ahead, linking, specifically, told, ready, dive, discussed, ago, online, others, published, subscribe, track, playlist, last, restriction, timeline, excited, detailed, querying, models, simulate, tips, explanation, welcome, everyone, recent, developments, nicolai, parlog, developer, advocate, gonna, toc, table, contents, policy, cookie, remember, always, embed, video, slides, upcoming, past, schedule, virtual, vector, structured, concurrency, lilliput, galahad, babylon, conversation, club, jms, newsletter, blog, posts, rant, jigsaw, jdeps, impulse, methods, lang, review, comments, words, site, without, enabled, nipafx,
Text of the page (random words):
16 java 17 java 18 java 20 java 23 java 24 java 25 java 26 java 27 java 8 java 9 java basics java next javafx jdeps js junit 5 junit pioneer lambda libfx libraries maven meta migration on ramp optional pattern matching patterns performance project amber project jigsaw project leyden project loom project panama project valhalla rant record args records reflection serialization streams switch techniques testing tools turn of the year var blog posts newsletter the jms videos tags ai architecture book club clean code collections community conversation core libs deprecation documentation dop generics j_ms java 10 java 11 java 12 java 16 java 17 java 18 java 19 java 21 java 22 java 23 java 24 java 25 java 26 java 8 java 9 java basics java next javafx junit 5 junit pioneer lambda libraries maven meta migration on ramp openjdk optional pattern matching patterns performance project amber project babylon project galahad project leyden project lilliput project loom project panama project valhalla records reflection serialization streams structured concurrency switch techniques tools turn of the year var vector virtual threads recordings streams schedule code demos demos demos junit pioneer record args libfx talks my talks past upcoming slides about about me license privacy 2025 04 10 javaone 25 highlights inside java newscast 89 video community performance maven ai project valhalla javaone 2025 had lots of talks from openjdk insiders as well as from community experts here are some of the highlights always embed videos and give me a cookie to remember privacy policy watch on youtube javaone 25 highlights inside java newscast 89 table of contents unit tests for aot training runs gc primer and comparison analyze your maven build truly final building advanced rag valhalla roadmap share follow share this post with your community i m active on various platforms watch this space or follow me there to get notified when i publish new content toc unit tests for aot training runs gc primer and comparison analyze your maven build truly final building advanced rag valhalla roadmap s f share this post with your community i m active on various platforms watch this space or follow me there to get notified when i publish new content welcome everyone to the inside java newscast where we cover recent developments in the openjdk community i m nicolai parlog java developer advocate at oracle and today i m gonna share with you an explanation for why not to use unit tests for aot training runs on jdk 24 a garbage collection primer and comparison two tips on how to analyze your maven build the announcement that final will eventually mean really final and how to simulate that today a detailed look at how to build an advanced retrieval augmenter for querying ai models and last but not least the roadmap for value types and null restriction but no timeline so don t get too excited all of this and so much more was discussed at javaone 2025 a few weeks ago where we had lots of talks from both openjdk insiders as well as from community experts a few recordings are already online the others will be published over the coming weeks subscribe or track this playlist if you don t want to miss them ready then let s dive right in unit tests for aot training runs during one of our live streams i talked to dan heidinga who works on project leyden about ahead of time class loading and linking in jdk 24 and specifically about training runs when he told me this the big thing you want to avoid with a training run is loading classes that you don t need in your production run so if your benchmark loads a whole bunch of classes that will never be used in production that may not be the best training run that also excludes unit tests by definition right because like the entire unit testing framework and assertion libraries and all of that is in there it does there are probably ways you can configure things to make that more useful because what we ve done so far and what we ve shipped in jdk 24 optimizes the three built in class loaders so the system loader the application loader and the extension loader so unit tests are not only questionable training runs because they execute the application code very differently from a production run with a default configuration they also pollute the cache with lots of unnecessary classes i think the configuration dan has in mind to fix this would load your application code into the application class loader but the testing framework assertion library etc into a custom class loader that the aot cache would ignore gc primer and comparison there were a bunch of really good talks about garbage collection the segment i picked here is pretty early in stefan johansson s talk he gives a high level overview over gc performance aspects and the strengths of each openjdk gc in many cases we talk about three different aspects here the first being throughput you care mostly about throughput and what we mean by that is the number of transactions that you can complete in a set amount of time then we also have latency which is more about a single transaction is that affected by say for example a gc pause the latency can be bad and the transaction can take a long time and then we have footprint the overhead caused by the gc algorithm it s very hard to optimize for all of these at once so usually we have to do a lot of trade offs and if we try to illustrate a trade off it can look something like this we have a set of application threads at some point we realize we need to do garbage collection work we do this in a gc pause using multiple threads trying to make sure that the gc pause is as short as possible before letting the application threads run again this is pretty good from a throughput perspective because when the application threads run no gc work is going on so you don t have to compete for cpu resources on the other hand from a latency point of view it s not optimal because we have the gc pauses and they take a significant amount of time so if we care more about latency we can have something that looks a bit more like this so again we have the application threads but when we realize we need to do garbage collection work we do a very short gc pause and instead do the heavy gc work concurrently with the java application threads running so from a throughput perspective this might be a little bit worse because the gc threads and the application threads compete for the same resources on the other hand latency wise it s much better because the gc pauses are much much shorter in open jdk today we have five different garbage collectors we have serial which has a main focus on low memory overhead we have parallel which is a throughput collector aiming to provide as good throughput as possible we have g1 or the garbage first collector which has a balanced performance profile and then we have zgc and shenandoah which both aim at providing good low latency alternatives for java stefan then dives deeper into performance improvements of these gcs across java versions and recounts the positive outcomes netflix mercado libre linkedin and oci had when upgrading their runtimes another great talk in this space that i can recommend is from erik osterlund on zgc analyze your maven build have you ever been confused by your maven build maybe why it s taking so long if not i can only assume you ve never used maven and i m not hating on it it s just that real life projects tend to get messy and their builds are no exception watch richard fichtner use an extension and a plugin to gain some insights we need something special and this time it s not a maven plugin we need an extension so what s the difference between a plugin and extension an extension is better bigger and can see the class loader for the plugins because we need that to profile the plugins let me show you how this looks looks something like this we will create a file called extensions xml looks like this so very similar to a plugin and you put it in the maven folder of your project and it s in git so it s in version control so you don t have to touch the build server the ci nothing so this is now there but be cautious as they have a lot of rights and access don t trust everything i know this is a good plugin because this is from karl heinz marbaise and let s do mvn verify first of course okay we get some things i get some numbers for my pizza backend and it tells me okay there s a lot of things going on and how much each phase took and to understand that a little bit better we can use a build plan plugin to see what is happening and this was very good for me to see this when i saw it the first time to better understand what is happening and this plugin has more goals with other outputs and here you can see that in the validate phase we have two plugins registered that will run when i do validate when i do compile basically everything before that runs and you can see actually what s going on in this example of course this is easy this is not the real world run this on your project that you re working on day to day and you will see crazy things if the project is older than maybe 10 days if you re wondering about the short burst of music during his build or why to prever mvn verify oder mvn clean install don t miss his talk truly final i also recorded two long conversations that will end up as episodes of the inside java podcast which you can find pretty much everywhere but just to make sure there s a link in the description one was with mark reinhold who dropped big news and then preempted their announcement here by publishing a jep draft a few days after javaone not cool mark there s a new api called stable values which does a few things but mainly the idea is to have finality for something that is initialized late but that then is really really final just like the record components are really really final and i m going to go out and guess that probably valhalla s value types fields are also really really final they are so final you wouldn t believe how final those fields are is there any way to backport that like could you give me a flag where i say i want final to mean final and you know screw the code in my codebase or my dependencies that doesn t respect that because you know in that case i guess setaccessible would throw an exception so i would probably find out at runtime if i had a problem there is a jvm flag i forget what its name is starts with the letters xx okay we ll put it on screen maybe here in post production but so are there ideas to make trustfinal an option or maybe even the default oh no we plan to make it the default over time and there is a jep already to prepare to make final fields mean final oh really there s a jep a jep draft i hope at least otherwise i would feel kind of ashamed that i don t know that okay so just delete this in post production i ll look it up building advanced rag as you can imagine a big chunk of talks related to ai in some way shape or form from openjdk s code reflection and hat to various frameworks from the announcement of oracle code assist to coding guidelines and security concerns just so much ai i picked a short section from lize raes s and mohamed ait abderrahman s presentation of a research agent where they explain how they build its advanced retrieval augmentation pipeline which is essential to get the best possible replies from the ai model you ll eventually query to mitigate all these little problems we came up with this retrieval augmenter in langchain4j so instead of just a content retriever we now have the augmenter it s all interfaces so if you want to build your own version of it you can i ve put underneath our default implementations that you can easily use so let s start in the middle there with content retrievers instead of having one content retriever that searches in your documents you can have multiple ones and they can also do more things so we have an embedding store that s going to search in your documents but you also have graph rag sql and a web search engine coming out of the box you can write your own one for any api calls for example if you wanted a weather service now how do we know which content retrievers to pick there s a query router in front of that typically also powered by an llm that s going to say oh given this query and given all these content retrievers i have i m going to send it there or there or to multiple at the same time and it s going to also rewrite your query because a web search query of course is very different from an sql query and llms can write proper queries then in front we have this query transformer that i talked about before the compressing query transformer will take your history into account to make a sensible question and not just yes please expanding query transformer will make it into even more questions so it s sure to find the answer at the other side once the content pieces are retrieved we can just put them together in the default content aggregator it s just going to put one after the other but very often there are pieces in there that are irrelevant to the question after all and typically they will confuse your model and your model will answer something that had nothing to do with the original question you will wonder why well it s because rag found pieces that were like for example if it has started talking about the book it found there it could have happened so we also added a re ranking content aggregator it calls a small scoring model that has one function how relevant is this piece of content to the question and it will kick out everything that s not relevant enough content injector will just add the original question and all the pieces of information that are important too and that s what is sent off to the model valhalla roadmap even though he won t say it brian is giving off strong valhalla soon vibes in his talk about java s language evolution he even went so far to show a roadmap meaning a list of jdk enhancement proposals that cover valhalla s first feature arc and the order in which he expects them to land so there s a bunch of jeps on the road map some of them have numbers some of them don t yet have numbers jep 401 is the first piece it s basically value classes and that s it and that is well underway the spec has been stable for over a year we re just polishing the implementation there s a second early access coming out fairly soon and then you know looking a little farther down the road there s null restricted types as a concept on their own there s null restricted types in the context of value types which adds in some interactions and optimizations and then there s sort of a cleanup jep to minimize the gap between the legacy primitives and the null restricted variant of their box types and i m sure these are not going to be the only four cool cool can t wait but now i m heading off to a holiday which means that in two weeks you ll have to make do with billy say hi to him fr...
|