Java Annotated Monthly – November 2026
October kept the Java world busy, with JDK news, fresh tutorials, Kotlin updates, AI experiments, and plenty more from across the wider ecosystem. We’ve gathered the best of it in one place, so you can skip the scrolling and get straight to the good stuff. To top it all off, Piotr Przybył joins us as this month’s featured guest.
Let’s go!
Featured Content
Piotr Przybył
Piotr Przybył – Notorious engineer at work and after hours, tracing the meanders of the art of software engineering. Remote Software Gardener, mostly working in web-oriented Java gardens. Java Champion. Docker Captain. Testcontainers Champion. Programming usually in Java (since 1.3), Scala, and Go, but in other languages too. Fan of agility, seen mostly as choosing the right tools and approaches after asking the right questions. Developer, trainer, and conference speaker, currently working at Elastic as a Senior Developer Advocate.
Greetings, fellow Java developers! It’s a pleasure to be here again – it’s been three Java releases since the last time. We all know that means roughly 18 months, don’t we? ;-)
Both the world and our ecosystem were moving fast back then, and it seems they have only accelerated. This means one thing: good luck trying to keep up to date with everything. Luckily for us all, newsletters like this one help.
The autumn conference season of 2026 is slowing down. It was a busy and exciting one, for me in particular, because Java 28 is already shaping up. And if you look at the list of JEPs already there, how can you not be excited? Structured Concurrency is set to become final in March 2027, yay! Bye-bye, CompletableFuture, it was fun knowing you… not ;-). CF isn’t going anywhere, but it won’t be the best abstraction for concurrent subtasks.
Apart from that, there’s going to be one less thing for me to rant about, because Java is going to have (for now as an incubator module) a Simple JSON API. If your microservice only has to send one simple REST request with a JSON body, maybe this plus the JDK’s HTTP client will be enough? You can learn about it from Dan Vega.
There are going to be improvements to GCs and more performance goodies, but my personal favourite is going to be Value Objects, because 42 is always 42, and it shouldn’t need an identity crisis to answer everything. I believe VOs will change the way we think about and work with data in Java. The need for this improvement is already here, because AI, like it or not, also means exchanging an awful lot of tokens and vectors.
To give you a taste of that, the following code yields different results on a default HotSpot configuration, with and without the value-object preview enabled:
Integer x = 1024, y = 1024; IO.println(x == y)
Intrigued? For more, please check out my post Java isn’t dead yet, but it can’t avoid Valhalla.
You may say, “Okay, but these are preview features or incubator modules; they can’t be used in production.” That’s not a blanket rule, although compatibility and support deserve a closer look. Sometimes even a non-GA feature of Java can be mature and worthwhile enough for you to make it a part of your library and code. I’m talking about the Vector API already being used in Lucene and Elasticsearch, and you can learn more about how it powers semantic search in them in one of my recent talks. If you prefer reading about SIMD, Krzysztof Ślusarski has you covered with this post.
I could go on and on about the exciting stuff in recent and upcoming Java releases. Marit van Dijk and I weren’t quite able to curb our enthusiasm for them, as can be seen in this three-hour-long deep dive from Devoxx Belgium 😅. (We simply forgot to take a break, sorry!)
If you can spare just one hour, here’s a shorter and more compact version from Hello Stavanger.
A big congrats to Marit, my partner on stage, for becoming the most ubiquitous Java speaker for 2026!
Java News
Catch up on the latest updates:
- Java News Roundup 1, 2, 3, 4
- OpenJDK Bug Fixing, JavaOne, and JDK 28 – Inside Java Newscast #116
- JavaFX Links of October 2026
- Foojay Podcast #104: 53 CVEs, Two Emergency Releases: Why Java Security Holds Up with Simon Ritter
- JDK 27 G1/Parallel/Serial GC changes
- Allocating Off-Heap Memory: Typically 6-18x Faster in JDK 28
- eMudhra Intermediate CA Compromise
- Distrusting Compromised eMudhra Intermediates in Java
- Episode 72 “OpenJDK Bug Fixing, JavaOne, and JDK 28” [IJN]
Some JEPs to pay attention to:
- JEP 544: Ahead-of-Time Code Compilation
- JEP 543: Structured Concurrency
- JEP 543 Finalizes Structured Concurrency in JDK 28, Ending Seven Preview Rounds
- JEP 546: Adaptive Heap Sizing for ZGC
- JEP 545: Faster Startup and Warmup with ZGC
- JEP 542: PEM Encodings of Cryptographic Objects
- JEP 540: Simple JSON API (Incubator)
- Quality Outreach Heads-up – JDK 28: Value Classes
Java Tutorials and Tips
Practical guides, clever shortcuts, and fresh ideas to help you understand Java better:
- Java Secure Coding Guidelines
- Episode 73 “Immutable Data Beyond Value Classes”
- What’s Going Wrong with My JVM?! A Guide to First-Time Failure Diagnosis
- Reflect, Transform, Accelerate: Bringing GPU Computing to Java
- Modern Java – Past | Present | Future
- Foojay Podcast #103: Killing Reflection at Build Time with Dmitry Moskalyuk and Shai Almog
- Everyday JSON in Java
- Structured Concurrency Looms
- Java – The Year of the Runtime!
- Learning modern Java the playful way – Piotr Przybyl, Marit van Dijk – HelloStavanger 2026
- Bootiful podcasts you don’t want to miss:
- Optimizing nanosecond operations: when the CPU cache matters
- Batch Processing with MongoDB and Jakarta EE: From Customer Segmentation to Scalable Workflows
- Stop Writing Database Migration Scripts: Declarative Schema Sync for Java
- The Maven Build Cache in Practice
- JVM on Unikernel Nanos – GC trade-offs and heap uncommit
- Free Java, Real Risk: Why Unsupported OpenJDK Is Now a Security Gamble
- Searching Kafka Without an Index: Lessons From Building Message Search for Kafdrop
- What jstack Misses When Your Java Service Uses Virtual Threads
- New Java Features Are Not Just for Interviews. Two Real-World Use Cases from Axelix
- Exact Prices in Java: Decimal Strings and BigDecimal Traps
- Java Stream Gatherers: From Built-in Patterns to Custom Pipeline Mechanics
- Java Virtual Threads Under Load: Three Production Limits
- Upgrading from Java 21 to 25: What Actually Breaks
- Complex Event Processing (CEP) With Apache Flink: What It Is and When (Not) to Use It
- How Hard Is It to Check for Whitespace?
- Going All In On the JVM 25 Virtual Threads
- Introduction to Error Prone: How to Catch Bugs at Compile Time
- Building High-Performance Time-Series Applications With Java and QuestDB
Kotlin Corner
Explore what’s new in Kotlin, sharpen your skills, and put your knowledge into practice:
- Kodee’s Kotlin Roundup: Shipaton 2026 Winners, Kotlin 2.5.0-Beta2, and KotlinConf 2027
- The State of Kotlin in 2026 Report
- The Companions to Come
- Kotlin Developer Survey 2026
- KotlinConf 2027 is coming to Kraków
- Testing Java and Spring Applications With Kotlin: Low-Risk to Adoption
- Why Kotlin or Java Is the Wrong Question For Enterprises
- Google Summer of Code 2026 With the Kotlin Foundation: Recap
- What Makes a Great KotlinConf Proposal?
- Instagram Modernized Its UI with an AI-Native Architecture, Cutting Token Costs by 33%
- KotlinConf Recap: Lessons from Verifone’s Architect on Kotlin in Mission-Critical Payments
- Start Your Next KMP App With Kotlin Toolchain 0.13
- Discontinuing Swift Language IDE Support in the Kotlin Multiplatform Plugin
AI
Discover smarter AI workflows and see how they reshape development – this month with a healthy dose of reality checks:
- Part 4: Multi-Agent Orchestration – Pairing Goose With Quarkus Flow State Machines
- Spring Office Hours Podcast: S5E27 – Hugging Face for Java Developers with Pratik Patel
- Tachyon MCP 1.0
- How Not to Use AI for Pull Requests and Code Changes
- How three Java Champions put GitHub Copilot to work
- How Does Java Fit Into the World of AI – and How Can It Become an Even Better Fit?
- How Netflix Made AI Coding Agents More Efficient with JetBrains IDE Intelligence
- What I Learned Building an AI Code Reviewer with Java and Spring Boot
- One Embedding per Job, or Two? Measuring Semantic Search in a Spring Boot Job Portal
- Your agents don’t need an LLM to negotiate
- How to Create Agent Skills: Tools, Testing, and Installation
- Systemic Approach to Memory, Knowledge, and Context in Agentic AI Architectures
- Anthropic Says Nobody Needs a Mental Model of Claude Code. Practitioners Are Testing That
- Developers Reporting Double-Digit Weekly Time Savings From AI Fell From 68% to 26%
- Study Finds AI-generated Code Fails to Boost Productivity Due to Downstream Bottlenecks
- Actors for Agents: Patterns for Production AI
- AI is an Amplifier: Scale High Performance, Not Dysfunction
- From Microservices to Agents: The Next Evolution of Distributed Systems
Languages, Frameworks, Libraries, and Technologies
Look beyond Java, Kotlin, and AI. There’s more happening across development:
- This Week in Spring 1, 2, 3, 4
- Distributed Spring Batch Without a Message Broker
- Spring Office Hours Podcast: S5E26 – dev2Next, Native JSON and a Week of New Models
- Spring Office Hours Podcast: S5E25 – Future of Software Development with Josh Long
- AI Agents Are Disrupting Open Source Security Disclosure
Conferences and Events
Plan your education sessions and networking, both online and offline:
- W-Jax – Online or Munich, Germany, November 2–6
- Øredev – Malmö, Sweden, November 4–6
- Devoxx Morocco – Casablanca, Morocco, November 4–5
- JConf Guatemala – Guatemala City, Guatemala, November 7
- JFall –Pathé Ede, Netherlands, November 6
- Voxxed Days Thesalloniki – Thesalloniki, Greece, November 7–8
- JavaFest India – Bengaluru, India, November 8
- JFall – Pathé Ede, Netherlands, November 11–12
- ChurConf – Sydney, Australia, November 18
- Voxxed Days Thessaloniki – Thessaloniki, Greece, November 20–21
- JavaDays Czech Republic – Online or Prague, Czech Republic, November 25–26
Culture and Community\
Find articles on developer life, career growth, and how engineers keep learning to survive with AI:
- Educating an Architect: A Conversation with Luca Mezzalira
- The Ladder Is Missing Rungs: Engineering Progression When AI Ate the Middle
- How to Make Artificial Intelligence More Environmentally Sustainable
- Member Spotlight: Shai Almog
- Optimizing Software Workflow: Exploring Fundamental Impacts in Technology
- You Can’t Trust Your AI Bill. And Neither Can I
- What Does It Really Mean To Program With AI: A Conversation with Joy Ebertz
- The Minimum Viable Manager: Building Trust, Feedback, and Alignment
- How to Develop Software Engineering Skills in the Age of AI
And Finally…
Check out what’s new from the IntelliJ IDEA blog in October:
- What’s New in IntelliJ IDEA 2026.3
- What’s fixed in IntelliJ IDEA 2026.3
- JetBrains Air: Building a System of Products for Agentic Software Development
- A New Agentic Experience: JetBrains Air in IDEs – EAP Now Open
- IntelliJ IDEA’s Java and Kotlin for Cursor and VS Code Hits 1.0
- Compromised eMudhra Certificates: Update Your JetBrains IDEs, ReSharper, .NET Tools, Toolbox App, and Gateway Now
- Your Next Action Is Two Dots Away
- Where Did the Saved Bytes Go? Compact Object Headers in IntelliJ IDEA
That’s it for today! We’re always collecting ideas for the next Java Annotated Monthly – send us your suggestions via email or X by November 20. Remember to check out our archive of past JAM issues for any articles you might have missed!