Monthly roundup of Java and JVM-related news and articles!

I agree that my personal data will be processed for this purpose.

Recent issues

Java Annotated Monthly – February 2025

Welcome to this latest edition of Java Annotated Monthly! As we start 2025, we bring you a roundup of the latest advancements in the world of tech. Stay in the loop with a curated list of must-attend events coming up in February, so you can plan your next learning and networking opportunities. Plus, we’re thrilled to introduce Isabel Garrido to our Featured Content section – packed with handpicked articles, insights, and thought-provoking reads to keep you inspired. Let’s dive in and explore what’s shaping the technological ecosystem! Featured Content I’m excited to share this month’s featured content with you! I learn a lot from audiovisual content, much more than from reading. That’s why I love attending conferences, and this brings me to my first suggestion: 97 Things Every Java Programmer Should Know. During this talk, Trisha Gee and Kevlin Henney introduce their well-known book, 97 Things Every Java Programmer Should Know, in a fun way. The speakers explained they intentionally included contradictory perspectives in the book because software development is all about trade-offs. Together with Emily Bache and Holly Cummings, they discuss key topics like knowing your IDE, writing stellar unit tests, approval testing, readable code, and understanding the garbage collector. My second recommendation is another talk: Historical Oddities & Persistent Itches. In this session, James Gosling reflects on several Java topics and how his opinion has evolved since the beginning of the language until now. One fascinating topic he developed is why the language uses braces and why he wouldn’t be using them for a language nowadays. If you’re curious about the reasoning behind Java’s design choices, this talk is a must-watch. My final recommendation is an article about a topic that might already be familiar to some of you: “Bugs Caused by Week-Based Year Formatting in Java”. A few years ago, I learned a painful lesson during the holidays: The invoice system of an application I worked on failed in the last week of the year. We used YYYY instead of yyyy in date formatting, which caused incorrect year values for that week. The article explains why this happens. I hope it saves you time and energy! Java News Java News Roundup 1, 2, 3, 4 – Take a look at all the Java updates that you really don’t want to miss.  Peaceful and Bright Future of Integrity by Default in Java – Ana-Maria Mihalceanu explains how Java is becoming safer by limiting risky features and introducing new tools to protect your programs. The Countdown to JavaOne 2025 is On! – What are the top 10 reasons to attend JavaOne 2025? Find out in this article.  Java’s Plans for 2025 - Inside Java Newscast #83 – Nicolai Parlog explores how major OpenJDK projects like Babylon, Loom, Leyden, Lilliput, Panama, and Valhalla are set to advance Java in 2025.  Java Performance Update – Check out this talk by Per-Åke Minborg, recorded during Devoxx Belgium 2024, in which he explains how optimizations in standard libraries, the JIT compiler, and garbage collectors make applications run faster. Java Tutorials and Tips A Deep Dive into JVM Start Up – Billy Korando explores the JVM’s intricate startup process. JVM Tuning with Machine Learning on Garbage Collection Logs – Find out how machine learning can analyze Java's garbage collection logs to automatically fine-tune the JVM settings and enhance application performance even for those without deep Java expertise. Why you should use compact table columns – Vlad Mihalcea explains how using smaller data types in a database can make queries faster by saving space and improving performance. How JVM handles exceptions – Nataliia Dziubenko demystifies how the Java Virtual Machine (JVM) manages exceptions by breaking down bytecode instructions and the exception table. Evolution of Java Ecosystem for Integrating AI – Poonam Parhar shows how the Java ecosystem is evolving with AI and tools like LangChain4j and Spring AI.  Safe Refactoring with Martin Fowler's Classic Example | Java Demo – Naming a function that does multiple things is tough, but splitting it into smaller, well-defined parts makes code cleaner and easier to maintain. Emily Bache shows you how to safely untangle complex logic in this demo. Assert but Verify – Donald Raab explains how using assertions in Java can help catch errors early. Pseudorandom Number Generator – The Secret Behind Santa’s Gift Bag – Rijo Sam breaks down how Java creates "random" numbers using clever math tricks, making them super useful for games, security, and simulations! Kotlin Corner Results of Google Summer of Code 2024 With the Kotlin Foundation – Learn more about four innovative projects created during the 2024 Google Summer of Code. What are all of those Kotlin function types for? – Dave Leeds explains the different types of functions in Kotlin and shows when and why you might use each one. AI vs Human - Kotlin Refactoring Showdown – Duncan McGregor refactors AI-generated Kotlin code to use immutable lists instead of a shared StringBuilder and then tests if AI can fix its own code! How 'Hot Reload' is implemented for Compose – Sebastian Sellmair explains in detail how Compose Hot Reload, AKA project Firework, is implemented. Kotlin for Server-Side Content Creators – If you're passionate about Kotlin and want to share your insights, the Kotlin team is inviting developers to contribute content, with a chance to get featured and promoted every three months  – so your work can reach a wider audience!  Languages, Frameworks, Libraries, and Technologies This Week in Spring 1, 2, 3, 4 – All the Spring-related news in one place!  Junie Codes (AsciiDoc Support) – Igor Kulakov tests JetBrains' new coding agent, Junie, to see if it can handle unconventional projects. Model Context Protocol (MCP) - Explained – Marco Behler presents a pragmatic and fun breakdown of what MCP is, why you need it, and how it works behind the scenes.  A Bootiful Podcast: Dez Blanchfield, a tech legend for all ages – Josh Long chats with the legendary technologist Dez Blanchfield about the latest trends and insights in the technology world. Zero Waste, Radical Magic, and Italian Graft – Quarkus Efficiency Secrets – Holly Cummins explains how Quarkus helps developers write faster, more efficient Java applications while using less computer power Video series “JavaFX In Action”, Part 3 – Follow a series of interviews with people who work on JavaFX applications.  Susan Shu Chang on Bridging Foundational Machine Learning and Generative AI – Susan Shu Chang explains how teams can work together to build and deploy machine learning models more efficiently. Analyzing trends and topics from Bluesky's Firehose with generative AI – Guillaume Laforge demonstrates how to tap into Bluesky's message stream and use AI to uncover trending topics. Integrating Google Analytics With Vaadin Flow: A Step-By-Step Guide – Learn how to integrate Google Analytics with a clean, reusable component. This guide shows you step-by-step instructions on how to set up tracking, monitor page views, and capture custom events in your Vaadin application. Mini book: The InfoQ Trends Reports 2024 eMag – The InfoQ editorial team explores the biggest software development trends of 2024, including AI, new architectures, and Java updates. Building Effective AI Agents with Spring AI (Part 1) – Christian Tzolov explains how to build smart AI agents with Spring AI using easy-to-understand patterns. The article is accessible even for beginners. Databases in 2024: Growth, Change and Controversy – Andy Pavlo offers an engaging and accessible overview of the most significant developments in the database industry during 2024.  Thinking differently about testing – Steve Poole explains a new way to think about software testing, showing how catching bugs early can save time and make better software. Integrating AI With Spring Boot: A Beginner’s Guide – Together with Gunter Rotsaert, check out how to seamlessly incorporate artificial intelligence into your Spring Boot applications using Spring AI. Exploring DeepSeek with the Crazy Cheeze Puzzle – Cay Horstmann tests the AI chatbot DeepSeek on a challenging programming puzzle, revealing its strengths and limitations – how well can AI really handle complex coding tasks? Conferences and Events Plan your February with the best events both online and offline: Jfokus – Stockholm, Sweden, February 3–5 Amsterdam JUG Meetup – Amsterdam, Netherlands, February 6 jBiltong Day – Online, February 13 Java meets AI: Build LLM-Powered Apps with LangChain4j – Boston, USA, February 18 Developer Week San Francisco – San Francisco, USA, February 18–20 ConFoo Montreal – Montreal, Canada, February 26–28 DEVWorld – Amsterdam, the Netherlands, February 27-28 Culture and Community English will become the most popular development language in 6 years – What do you think, do you believe this will happen? 2024 in Retrospective: Nicolas Frankel – Nicolas Frankel shares his story of losing his job, searching for a new one, and how AI became a bigger part of his life along the way. Help: I Didn’t Realize I Was a Manager Now! – Ever wondered what your manager is really thinking? Peter Gillard-Moss shares eye-opening insights and relatable stories to help developers understand their managers better. Where is the Art? A History in Technology – Andy Piper explores how art and technology intertwine, shaping innovation and culture.  Foojay Podcast #65: Boost Your Career in 2025! – Discover practical advice on advancing your career! And Finally… IntelliJ IDEA 2025.1 EAP Is Open! – Maria Kosukhina shares exciting new features in IntelliJ IDEA 2025.1, like support for Java 24 and easier Spring bean creation, and more.  Updated System Requirements for Linux GNU C Library (glibc) – Don’t miss this update!  Best Courses for Java Developers – Check out our selection of the most helpful courses that you can take now to study Java.  Maximize Code Security in JetBrains IDEs and Qodana With Mend.io – Try out our enhanced security vulnerability detection capabilities and keep your code safer than ever! 9 Tips for Productive Java Development With Databases in IntelliJ IDEA – Wondering how you can streamline your database interactions in Java? Read this article.  Top Java Conferences and Events in 2025 – Save a list of the top Java conferences and events in 2025 to connect with the vibrant Java community, explore new cities, and find fresh inspiration. That’s it for today! We’re collecting ideas for the next Java Annotated Monthly – send us your suggestions via email or X by February 20. Don’t forget to check out our archive of past JAM issues for any articles you may have missed!

Read more

Java Annotated Monthly – January 2025

The new year has arrived, and we're kicking it off with another handpicked selection of must-read tutorials and the latest news you won’t want to miss. This issue starts with an amazing featured content section with Donald Raab. Settle in and scroll your way to some fresh knowledge! Featured Content  Greetings, Java Annotated Monthly readers! It’s an honor to be invited to write the featured content section this month! I’ve been reading the Java Annotated Monthly newsletter for the past decade. It is an amazing resource for the Java community. As an author of Java related content, I find it incredibly gratifying every time something I write is included in this newsletter. Writing about writing I spent most of 2024 writing a book and writing blogs. I wrote an average of four blogs per month this year. One of my recent technical blogs is Poetry in Code. This is a crossover blog which blends poetry, Java code, and blogging. To see how I can effortlessly switch from poetry to parkour, there is Parkour with Maps in Java. Queue "The Office" parkour meme. Writing content in AsciiDoc I’m writing the content for this feature in AsciiDoc using IntelliJ IDEA. I’ve spent most of 2024 writing a book about Eclipse Collections in AsciiDoc. The AsciiDoc plugin in IntelliJ IDEA is absolutely wonderful! I have used AsciiDoc to write READMEs, reference guide documentation, conference slide decks, and several tables for Medium blogs that are stored in GitHub gists. The open-source developers who work on AsciiDoc, Asciidoctor, AsciidoctorJ, JRuby, and IntelliJ IDEA have created tools that work great together and are a pleasure to author and publish content with. Thank you! I found a lot of useful information from this blog from Trisha Gee that I discovered near the beginning of my book journey. I also discovered this article from vogella which has some consolidated and useful advice and examples for writing documentation in AsciiDoc. JavaOne 2025 I’m excited to be giving a talk at JavaOne 2025 on DataFrames in Java with my long time friend Vlad Zakharov. Vlad is the creator of an open-source DataFrame library for Java named DataFrame-EC, which is built on top of Eclipse Collections. Vlad has an interesting blog about Java, Kotlin, and Pandas Data Frames and the One Billion Row Challenge. I hope to meet some new Java devs and catch up with friends at JavaOne next year. If you want to speak at conferences, this blog from Holly Cummins is a great resource to learn from. Java 24 I’m excited for Java 24 to be released in March 2025, and for it to include experimental support for Compact Object Headers (JEP 450). Peter Lawrey wrote a very interesting blog titled Demystifying Java Object Sizes: Compact Headers, Compressed Oops, and Beyond. I am curious to see how Compact Object Headers impact Eclipse Collections types. JCP EC Working Groups Here’s a useful link to keep up to date with the two active workgroups on the JCP Executive Committee. The wikis for the workgroups have many useful presentations, links, and other resources. JEP 14 is an interesting recent development we’ve been discussing in the Java Ecosystem WG. Do something that scares you, every single day I broke through my fear of being on a podcast in 2024, twice! If you’d like to know more about things I have been up to in open source, the Java community, Eclipse Collections, and my book, there’s a recent audio-only version of a Duke’s Corner podcast titled "Unlimited, Untapped Resources", I gave with Jim Grisanzio. If you listen to the podcast, you can find out the title of my book. Be sure to check out the other Duke’s Corner podcasts. Kudos to the writers I want to thank the amazing writers at JetBrains who have read, explained, and linked to valuable Java related content over the past decade plus at the Java Annotated Monthly archive. I appreciate the time and effort that has been consistently invested in finding and linking to amazing Java content every month! FOR OVER A DECADE!!! This newsletter has helped me discover so many interesting articles and blogs I otherwise would not have had the time to discover on my own. Finally Thank you to all the content producers and open source contributors out there who make being a Java developer an amazing experience! Have fun coding and writing out there! Java News Java News Roundup 1, 2, 3, 4 – Your weekly selection of Java news is here.  Java 24 Language & API Changes - Inside Java Newscast #81– Nicolai Parlog talks about the JDK Enhancement Proposals featured in Java 24, covering topics such as pattern matching primitives, flexible constructor bodies, stream gatherers, the class-file API, quantum-safe encryption, and structured concurrency. Java 24 Performance Improvements and Deprecations - Inside Java Newscast #82 – Some more news on the enhancements in Java 24, including better garbage collection, compact object headers, increased integrity by default, and the removal of 32-bit ports. Post-Quantum Cryptography in Java – Ben Evans discusses the integration of post-quantum cryptography algorithms into Java, highlighting the challenges and progress in enhancing Java's security against quantum computing threats. Valhalla - Java’s Epic Refactor – Project Valhalla aims to improve Java's type system with value classes for better performance and memory efficiency. During Devoxx 2024, Java Language Architect Brian Goetz gave a complete update and explained the proposed solution: value classes, null-restricted types, beefed up definite assignment analysis, and strict initialization. Episode 33 “JDK 24 and More” with Chad – One more piece on JDK 24, preview features, and more. Don’t miss any JDK highlights with this article series by Nikolai Parlog:  Quality Outreach Heads-up – JDK 24 Prepares Restricted Native Access  Quality Outreach Heads-up – JDK 24: Security Properties Files Inclusion Quality Outreach Heads-up – JDK 24: Retiring the Security Manager  Java Tutorials and Tips Java in the Small – Cay Horstmann explains how modern Java features make it great for small tasks and scripting, not just big projects. How JVM handles exceptions – Nataliia Dziubenko demonstrates how the Java Virtual Machine manages exceptions and handles errors during runtime. Design Better Code with Preparatory Refactoring in TDD | Demo – Refactoring is a crucial part of test-driven development (TDD) and shaping your code design – watch this video for a hands-on Java demo by Emily Bache.  In Praise of Records – Cay Horstmann highlights the power of Java records and enumerations, emphasizing their ability to provide clarity, structure, and a natural home for operations. How do we keep our Java applications up to date and secure – An inspiring discussion on strategies and tools to keep Java applications modern and safe.  Article: InfoQ Java Trends Report - December 2024 – Check out an in-depth analysis of the latest developments and future directions in the Java ecosystem. JavaOne: A Lifetime of Java Learning in Three Days - Don’t miss your chance to join the event of the year! James Gosling on Java - Historical Oddities & Persistent Itches #JVMLS – James Gosling, the creator of Java, reflects on the historical quirks and ongoing challenges in the evolution of the Java programming language. Demystifying Java Object Sizes: Compact Headers, Compressed Oops, and Beyond – Find out how Java's memory optimizations, such as compressed OOPs and compact object headers, affect object sizes and performance. Run a Java Lambda Function From a Docker image – Charl Fasching demonstrates how to deploy a Java serverless function using AWS and Docker. Detoxifying the JDK Source Code – Stuart Marks discusses the removal of the Security Manager to simplify the JDK. Tutorial: The Foreign Function and Memory API – This article provides tutorials to help developers understand the Foreign Function and Memory (FFM) API.  Kotlin Corner The Path Not Taken – Romain Guy examines how data patterns influence algorithm performance, highlighting the impact of branch prediction on execution speed. Introducing klibs.io: A New Way to Discover Kotlin Multiplatform Libraries – Ekaterina Petrova introduces klibs.io, a new service designed to streamline the discovery of Kotlin Multiplatform libraries by indexing data from GitHub and Maven Central and utilizing AI-generated metadata to enhance search results. Get your KotlinConf 2025 ticket – Join us in Copenhagen on May 21–23, 2025, for the biggest KotlinConf yet! With 2,500 attendees, you'll explore modern server-side, web, mobile, and desktop Kotlin development, and enjoy days full of sessions, workshops, and networking with top professionals from across the industry. KotlinConf 2025 is calling for speakers – Whether it’s server side, Kotlin Multiplatform, AI, or best practices, we want to hear from you! Submit your talk and inspire others with your experience at the biggest Kotlin event. Join Kotlin Multiplatform Contest – If you are a student or recent graduate, you can win a trip to KotlinConf 2025. Showcase your creativity and coding skills by building a cross-platform project using Kotlin Multiplatform technology.  KotlinConf 2025 is calling for volunteers. This is your chance to join the biggest Kotlin event of the year, expand your network, and meet new people in the Kotlin сommunity. Apply now to join our team of volunteers on May 21–23, 2025. Languages, Frameworks, Libraries, and Technologies This Week in Spring 1, 2, 3, 4 – The weekly Spring news selection is available here.  WireMock Now Has an Official Spring Boot Integration – It is official! This article introduces WireMock's Spring Boot integration, making it easier to embed WireMock into Spring applications. Supporting Okta with DPoP in an OIDC-based Spring Security application – Joris Kuipers explains how to add DPoP support to Spring Security for OpenID Connect applications. Speed up your Spring Batch with Native Image and GraalVM – Vincent Vauban explains how to speed up Spring Batch applications with GraalVM's Native Image for faster startup times and lower memory usage. A Bootiful Podcast: the amazing K. Siva Prasad Reddy (SivaLabs) – Josh Long interviews Siva Katamreddy to learn more about his software development insights and experience. A Bootiful Podcast: Spring Security lead Rob Winch on the amazing Spring Security 6.4 release – Rob Winch, lead of Spring Security 6.4, discusses the features of the new release. What’s new in Spring Data 2024.1? – Check out the latest features introduced in Spring Data 2024.1, released alongside Spring Boot 3.4. What’s new in Spring Framework 6.2? – Here is a recap of the new features in Spring Framework 6.2. A practical guide to implement OpenTelemetry in Spring Boot – Get a comprehensive tutorial by Víctor Orozco on integrating OpenTelemetry with Spring Boot applications. Fix Phantom Read problem for Bean Overrides in the TestContext framework – Sam Brannen fixes a Phantom Read issue in the Spring TestContext framework, improving how bean overrides are handled during tests. RAG + Semantic Markup – Igor Kulakov discusses how integrating semantic markup with retrieval-augmented generation (RAG) can enhance AI-driven features in software development, particularly in JetBrains IDEs. RAG made easy with Spring AI + Elasticsearch – Laura Trotta, explores how developers can efficiently build a retrieval-augmented generation (RAG) application using Spring AI and Elasticsearch. Principles of Developer AI Product Development – Dion Almaer shares insights from his experiences in building AI-driven products for developers.  Production Comes First - An Outside-In Approach to Building Microservices – Martin Thwaites explains how to build microservices using an outside-in approach, focusing on production-first practices and observability techniques. JetBrain's Webstorm IDE for JavaScript Development Now Free for Non-Commercial Purposes – Don’t miss this news for your chance to use WebStorm for free! Date and Time Mappings with Hibernate and JPA – Thorben Janssen explains how to map Java date and time types to database columns using Hibernate and JPA. Testing Jakarta EE Applications: Best Practices and Tools – Check out tips and tools for testing Jakarta EE applications, focusing on JUnit 5 and Arquillian. What might an AI System Prompt look like? – Check out how AI prompts can be designed to guide its responses. The AI Trough – AI has many inaccuracies like contextual misalignment and the need for human oversight to maintain reliability and efficiency in code generation. What do you think about that? How to Think About Time – Kevin Bourrillion explores the complexities of date and time concepts in programming, offering a conceptual model to better understand and handle these challenges in code. Conferences and Events Start the year off right with January’s events:  Denver JUG meetup – Denver, USA, January 8 Voxxed Days CERN – Meyrin, Switzerland, January 15 Voxxed Days Ticino – Ticino, Switzerland, January 17 Atlanta JUG meetup: The State of AI in Large Scale Automated Refactoring – Atlanta, USA, January 21 IntelliJ IDEA Wizardry with AI Assistant Live – Online, January 22 Utrecht JUG meetup with Alexander Chatzizacharias and Brian Vermeer – Utrecht, Netherlands, January 23 LJC Live with Marit van Dijk and Ryan Healy – London, United Kingdom, January 30 JUG CH meetup: Resilienz im Alltag der Software-Entwicklung – Basel, Switzerland, January 30 Culture and Community Introduce yourself to your remote team – Cassidy Williams shares a creative approach to remote team introductions.  The Efficiency Paradox and How to Save Yourself and the World – Holly Cummins explores how both machine and human efficiency can be optimized to reduce environmental impact and improve productivity. The Backwards Law—Why the Best Things in Life Must Be Let Go – Can striving too hard for something cause it to slip away? Reflecting on Life – Armin Ronacher shares personal insights and life lessons on topics such as meaningful work, relationships, and personal growth, offering advice based on his experiences and reflections on happiness, fulfillment, and commitment. And Finally… New! Security Analysis Plugin for IntelliJ IDEA 2024.3.1 – This article introduces advanced security tools powered by Qodana’s interprocedural data flow analysis. Detect vulnerabilities like SQL injections and cross-site scripting in real time while coding in Java and Kotlin. These features are available in IntelliJ IDEA Ultimate 2024.3.1 with the optional Security Analysis by Qodana plugin. Get to know the new Bazel plugin for IntelliJ IDEA:  Introducing the New Bazel Plugin EAP for IntelliJ IDEA Getting Started With the JetBrains Bazel Plugin Testing Spring Boot Applications Using Testcontainers – Siva Katamreddy explores how to effectively use Testcontainers for integration testing in Spring Boot applications, covering setup, writing tests with JUnit 5, and testing various components like Spring Data JPA repositories and REST APIs.That’s it for today! We’re collecting ideas for the next Java Annotated Monthly – send your suggestions via email or X by January 20. Don’t forget to check out our archive of past JAM issues for any articles you may have missed!

Read more

Java Annotated Monthly – December 2024

As 2024 wraps up, this December edition of Java Annotated Monthly brings you the latest on JEPs targeted for Java 24, helpful tutorials on Java, Kotlin, and AI, and more. This time, we’ve included thought-provoking non-tech articles perfect for year-end reflection. Plus, we’re thrilled to welcome Josh Long as our featured author, who will be sharing the latest Spring updates.  Grab a cup of something warm and enjoy a mix of learning, inspiration, and fresh perspectives to close out the year! Featured Content  Hi, Spring fans! I want to start off with something profoundly simple: thank you! Last week, we Americans celebrated Thanksgiving, a holiday that is (when it's at its best) about being thankful. I am thankful for you all. You know what else I am thankful for? That the Spring Boot team got Spring Boot out the door a week earlier this year, so I can enjoy my turkey in peace! Yes, Spring Boot is officially out, and it's jam-packed… stuffed like a Thanksgiving turkey! I was told these Java Annotated Monthly installments need to be pithy, concise. (Do they know me?) But I wanted to talk about all the goodness in Spring Boot 3.4. I am not sure how I am meant to keep the discussion of six months of amazing new software to the lengths required for this installment. Then it dawned on me! Links are short. Read this; it’s my much longer-form thoughts on just some of the amazing new features when you’re using Spring Boot 3.4! Still here? Just want the TL;DR? Did I hear you say “listacle”? Fine! Here are my top thirty-four (34 for Spring Boot 3.4) favorite features shipping with Spring Boot 3.4, grouped by the technologies to which they belong. We'll start at the top of the abstraction stacks, those technologies that build upon Spring Boot first: Spring Modulith has… Support for nested application modules and external application module contributions. New deleting and archiving event publication completion modes. By-ID event publication completion significantly improves performance. Event externalization into Spring’s MessageChannel abstraction to, for example, trigger Spring Integration flows. Spring AI has… A ton of work done around function calling, both in Java and Kotlin. And the first cut of support for the ideas taking shape in the AI community around "advanced and modular RAG".  Then move on to Spring Boot itself: Spring Boot has… An updated auto-configuration experience for underlying HttpRequestFactory implementations that are plugged into either the RestClient or RestTemplate. Newly added support for structured logging, with built-in support for Elastic Common Schema (ecs), Graylog Extended Log Format (gelf), and Logstash (logstash). An updated auto-configuration for ActiveMQ Classic support for an embedded broker. The paketobuildpacks/builder-jammy-java-tiny set for use by default. This builder supports ARM and x64 platforms out of the box. Yes, you read that right: you can build Docker images with your GraalVM native images on Apple Silicon, and it'll work!  Improved Spring Boot Actuator endpoints that show more information about SSL bundles and scheduled tasks. And then the things upon which Spring Boot depends: Spring Framework has… Support for the concept of @Fallback beans, essentially the mirror image of @Primary beans. Fragment rendering! This one is for you HTMX and Turbo enjoyers! You can now render multiple views in one request or create a stream of rendered views. Easier reflection of non-Spring-managed beans with @Reflective and the new @ReflectiveScan annotation. Spring Data has… A new Repository fragments SPI that lets any arbitrary .jar on the classpath contribute extensions to the Spring Data repository. Much-reduced query parsing overhead in Spring Data JPA. Expiration for @TimeSeries in Spring Data MongoDB. Keyspace qualification for tables and user-defined types in Spring Data for Apache Cassandra. Jedis Lua scripting support in transaction and pipeline operations in Spring Data Redis. Spring Batch has… Gone from one to three – count 'em: three! – JobRepository implementations. New support for data classes – Kotlin data class or Java record instances – when using a JDBC-based ItemReader<T>. Concurrent steps with BlockingQueueItemReader<T> and BlockingQueueItemWriter<T>; this is the EZ button for staged event-driven architectures (SEDA)! A CompositeItemReader<T> that can sequentially drain data from more than one delegated ItemReader<T>. Spring Integration has… Big improvements to remote file system inbound adapters. A convenient Consumer<SshClient> to allow for further customization of the internal SshClient. Scripting support for Python that now builds on the GraalVM Truffle Polyglot project. A new BaseMessageBuilder that has been extracted from the MessageBuilder to simplify building your custom builder implementation, where most of the logic should be identical to that of MessageBuilder. Easier configuration for the control bus pattern, along with a new control bus HTTP controller. Spring Security has... Introduced support for WebAuthN/Passkeys! Yes, that's right, you can have people logging into your application with their laptop's fingerprint reader, their Yubikey, their phone's face scanner, and more, in no time! "Magic links" – insta-login a person with a link! OIDC back-channel support that now accepts logout tokens of type logout+jwt. The Spring RestClient that can now be configured with OAuth2ClientHttpRequestInterceptor to make protected resource requests. A token exchange that now supports refresh tokens. A token exchange that now supports refresh tokens. Technically, the Spring Authorization Server isn’t part of Spring Security, but I’ll mention it here for simplicity. It includes many new features, including a markedly more consistent and concise DSL configuration. Getting a whole OAuth IDP up and running with one line of Java code in a typical Spring Security application and a few configuration lines in your properties or YAML file is SO NICE. As always, if you want to try things out, you just need to go and choose File | New Project | and choosing Spring Boot from among the project types in the fantastic IntelliJ IDEA IDE. If you'd like to learn more, maybe check out the Spring Guides, Spring Academy, or my YouTube channel! Thank you. Java News Java News Roundup 1, 2, 3, 4 – Don’t miss any Java news from the past month.  Here is the list of JEPs targeting JDK 24: 490: ZGC: Remove the Non-Generational Mode 478: Key Derivation Function API (Preview) 493: Linking Run-Time Images without JMODs 488: Primitive Types in Patterns, instanceof, and switch (Second Preview) 486: Permanently Disable the Security Manager 487: Scoped Values (Fourth Preview) 491: Synchronize Virtual Threads without Pinning 450: Compact Object Headers (Experimental) 494: Module Import Declarations (Second Preview) 497: Quantum-Resistant Module-Lattice-Based Digital Signature Algorithm 496: Quantum-Resistant Module-Lattice-Based Key Encapsulation Mechanism 498: Warn upon Use of Memory-Access Methods in sun.misc.Unsafe Java Tutorials and Tips Exploring New Features in JDK 23: Module Design Pattern with JEP-476 – In this article, Miro Wengner focuses on the innovative module design pattern and explains how this update enhances modularity and scalability in Java development. Why Java 8 is a Ticking Time Bomb Hiding Within Your Organization – Frank Delporte discusses the risks associated with continuing to use Java 8, including security vulnerabilities, performance limitations, and reduced developer productivity, advocating for upgrading to newer Java versions to mitigate these issues. Discovering the perfect Java Supply Chain Attack vector and how it got fixed – This article walks you through the fascinating process of uncovering a critical vulnerability in the Java ecosystem and teaches you about the measures taken to resolve it. It highlights the importance of securing supply chains and shares insights to help developers safeguard their projects. Migrating from the Javax to Jakarta Namespace in Spring Boot App – In this article, Mónika Lombos provides a practical guide to migrating Spring Boot applications from the javax namespace to the jakarta namespace. She explains the steps, challenges, and considerations involved in making this transition smooth and efficient. Leverage LLMs in Java with LangChain4j and Quarkus – Holly Cummins and Georgios Andrianakis explore how combining LangChain4j and Quarkus can simplify building applications powered by LLMs.  Pattern Matching in Java - Past, Present, Future – Aggelos Biboudis talks about the evolution of switch and instanceof in Java, from their classic roles in data introspection to their modern transformation into powerful tools for pattern matching. Postcards from the Peak of Complexity – In this talk, Brian Goetz shares insights, lessons, and behind-the-scenes stories from the development of Java's major features, such as generics, lambdas, and virtual threads. Mark–Scavenge: Waiting for Trash to Take Itself Out – This blog post summarizes the new Mark-Scavenge garbage collection algorithm, which tackles the inefficiencies of using reachability as a proxy for liveness in moving GCs, leading to reduced unnecessary data movement. The work is part of a research collaboration between Oracle and Uppsala University, with the full paper available on the ACM website. Java-Based No-Code and Low-Code Application Bootstrapping Tools Review – What exactly are no-code or low-code platforms? This article will help you understand them, while also explaining how to avoid common mistakes and pitfalls.  Java Language Futures - Fall 2024 Edition – Gavin Bierman explores the future of Java, summarizing recent changes while providing insights into upcoming directions and features currently in development. It's an excellent overview for those keen to see what's next for the language. What collection mapping should I use? – Gavin King explains how to map collections and @ManyToMany associations in Jakarta Persistence, providing tips on choosing the right collection types and annotations for better code. Some Common Java Gotchas – Peter Lawrey explores frequent pitfalls developers encounter when working with Java, offering insights and practical advice for navigating these challenges effectively.  Ten Java Myths and Misconceptions – Another interesting piece by Peter Lawrey where he demystifies common misunderstandings about Java. Optimizing Java Applications on Kubernetes: Beyond the Basics – In this talk from the InfoQ Dev Summit Boston conference, Bruno Borges discusses strategies for enhancing Java application performance on Kubernetes, focusing on leveraging JVM ergonomics, and managing garbage collection processes. Build and Run TornadoVM with IntelliJ IDEA – TornadoVM is an open-source Java technology designed to help developers optimize their codebases for hardware acceleration. This blog post provides a detailed guide on building TornadoVM with IntelliJ IDEA and running TornadoVM unit tests or other Java programs. Hashcode and Equals Debugging, Performance – Shai Almog examines the inefficiencies in Java's hashCode() and equals() methods and offers insights for avoiding such pitfalls. Kotlin Corner Kotlin K2 Mode Becomes Stable – Learn more about IntelliJ IDEA’s Kotlin K2 mode, which is now out of Beta and ready for general use starting from version 2024.3. K2 mode significantly improves Kotlin code analysis stability, memory consumption efficiency, and the IDE’s overall performance – and it supports Kotlin 2.1 language features, too. The best dispatcher for a backend framework – Marcin Moskała examines various Kotlin coroutine dispatchers to identify the most suitable one for backend request handlers, providing insights into their performance and appropriate use cases. Kotlin Tips and Tricks You May Not Know: #3 — Built-in Assertions – This is a light yet insightful read that shows you how to write cleaner, safer Kotlin code with powerful built-in tools you might not be using yet! Kotest + Spring + Testcontainers – Ronny Bräunlich demonstrates how to easily integrate Kotest, Spring, and Testcontainers for a smoother Java testing setup. Anonymous Functions Aren't Lambdas – In his video, Dave Leeds introduces Kotlin's anonymous functions, those rare gems that combine the best of named functions and lambdas, and shows you how to spot and use them effectively in your code. Fun with Function Types in Kotlin – In another video, Dave takes you on a tour of Kotlin's function types, from regular and extension functions to bound and property references. Understanding Gradle – Duncan McGregor takes a deep dive into Gradle builds, exploring task dependencies, build artifacts, and optimization tricks like skipping unchanged tests.  Advanced Kotlin Coroutine Cheat sheet (for Android Engineer) – This practical guide by Gaëlle Minisini untangles the complexities of Kotlin coroutines, offering Android developers handy tips and best practices to level up their async programming skills. State of Kotlin Scripting 2024 – Find out more the evolution of scripting in Kotlin, along with tips to supercharge your scripting workflows. Languages, Frameworks, Libraries, and Technologies This Week in Spring 1, 2, 3, 4 – Check out all the important Spring news. Spring Boot: Java Template Engine (JTE) – Learn more about the Java Template Engine (JTE) – a new addition to the Spring Initializer ecosystem. The Latest in the World of Web Engineering (Featuring AI) – In this talk from Qcon London, Tejas Kumar overviews web engineering in relation to AI, intelligent answer engines, an update on CSS, HTML, JavaScript, and personal health and productivity. Front End Debugging Part 1: Not just Console Log – Shai Almog highlights advanced debugging techniques, such as the use of the debugger keyword, triggering debugging from the console, and setting DOM and XHR breakpoints. Podcast: Generally AI - Season 2 - Episode 6: the Godfathers of Programming and AI – The hosts discuss Geoffrey Hinton, the "Godfather of AI", who developed key algorithms like backpropagation, helped with neural visualization using t-SNE, and sparked renewed interest in neural networks with the success of AlexNet. Less than a month after this podcast was recorded, Geoffrey Hinton won the Nobel Prize for Physics for his research into neural networks. The best way to determine the optimal connection pool size – Vlad Mihalcea provides a practical guide to determining the ideal connection pool size for database applications, balancing performance and resource efficiency. Redacting sensitive information when using Generative AI models – Guillaume Laforge delves into strategies for protecting sensitive data when using AI.  Conferences and Events Get ready for the last events of this year: From Code to Clarity With the Redesigned Structure Tool Window – Online, December 12 Utrecht JUG December Meetup – Utrecht, Netherlands, December 12 Test Driving Code with the Help of AI with Dr. Venkat Subramaniam – Atlanta, USA, December 17 GraalVM and GraalPy Meet IntelliJ IDEA – Online, December 19 Culture and Community Name things unambiguously – In this article, Peter Hilton explores the challenges of ambiguous naming in software development and how it can lead to misunderstandings and bugs. Are your names crystal clear, or do they cause chaos in your code? The Philosophical Implications of Technology: A Conversation with Anders Indset – In this podcast, Shane Hastie, Lead Editor for Culture & Methods, chats with Anders Indset, a Norwegian philosopher exploring the impact of technology on humanity. The Efficiency Paradox and How to Save Yourself and the World – Holly Cummins talks about the ups and downs of trying to be efficient. This piece can be a good point to start a discussion about this topic.  How we almost missed a plane in Kazakhstan, but OpenJDK could have saved us… – Ever thought Java could help with travel drama? Read this article to find out if it’s possible.  What Developers Can Do to Continue to Program as They Age – Ben Linders summarizes insights that Kate Gregory shared at NDC Tech Town, including practical tips for adapting work environments and maintaining the personal well-being of older workers.  Podcast: Trends in Engineering Leadership: Observability, Agile Backlash, and Building Autonomous Teams – Learn more about the trends in software engineering, including the pushback against "Agile" practices, the rise of observability, people-focused metrics, ways to align teams while keeping their independence, and more.  Day 13 of BlueSky; thoughts so far – Are you giving BlueSky a chance? Foojay Podcast #61: As a developer, how do we keep our body and mind healthy? – This podcast episode explores how developers can maintain physical and mental well-being, featuring insights from industry professionals on topics like AI's impact, the challenges of remote work, and preventing burnout. 5 Lessons I learned the hard way from 10+ years as a software engineer – What lessons have you learned? Being a Responsible Developer in the Age of AI Hype – If you are curious about how developers can cut through the AI hype responsibly, check out this article.  And Finally… IntelliJ IDEA 2024.3 Is Out! – IntelliJ IDEA 2024.3, the final major release of the year, is packed with new features and enhancements to elevate your development experience. Highlights include a visual representation of your code’s logical structure in the Structure tool window, improved debugging for Kubernetes applications, and cluster-wide Kubernetes log access. Faster Time-to-Code in IntelliJ IDEA – In this post, you can read about the key steps we’ve taken to enhance performance in the latest versions of IntelliJ IDEA. These improvements focus on reducing time-to-code through phased indexing and making the IDE more responsive, ensuring a faster and smoother experience from the moment you start up. Top Java Blogs for Experienced Programmers – Check out our curated selections of the best expert blogs on Java.  In Memory of Stiver – Sad news for the Java community: Stiver, the original author of the Fernflower Java decompiler, has passed away. How to Use Flyway for Database Migrations in Spring Boot Applications – In this article, you'll discover why Flyway is a must-have for database migrations, how it works, ways to integrate it with Spring Boot, and how IntelliJ IDEA Ultimate simplifies migration script generation. From Code to Clarity With the Redesigned Structure Tool Window – This article shows how AI-inspired updates to the Structure tool window make exploring code and performing actions easier with the new Logical view. Advanced Code Analysis in IntelliJ IDEA – Level up your code analysis with Marit van Dijk. Learn how to find specific patterns in your code and create custom inspections in IntelliJ IDEA. Declarative Gradle in IntelliJ IDEA – Find out what Declarative Gradle is and how to try it.  Livestreams The JUnit Crew Presents What's New – In this session, the JUnit team introduces the new features of the recent 5.11 release, along with highlights from the previous 5.9 and 5.10 releases. That’s it for today! We’re collecting ideas for the next Java Annotated Monthly – send your suggestions via email or X by December 20. Don’t forget to check out our archive of past JAM issues for any articles you may have missed!

Read more

Java Annotated Monthly – November 2024

Java Annotated Monthly is here! Check out the latest news across Java, Spring, AI, and emerging technologies. We offer practical tutorials to enhance your skills, a curated list of November's top tech events, both online and offline, and an exclusive feature by industry expert Mala Gupta. Stay informed, and stay ahead! Featured Content  In this featured section, I want to highlight 'JEP Explained' – a collection of heartfelt conversations with the Java architects and experts who helped bring Java 23 features to life. These conversations dive into JDK Enhancement Proposals (JEPs), which are the key features planned for each JDK release. Our hope with this series is to help developers, teams, and anyone passionate about Java not just understand the new Java features, but to look beyond the syntax and dig into the bigger picture with behind-the-scenes stories and the experiences of experts. Here's the link to the blog post and YouTube playlist. Java 23, released in September 2024, has twelve JEPs, and the ‘JEP Explained’ series covers eleven of them. Each conversation packs a bunch of information beyond the JEP itself. For instance, when we talked with Brian Goetz about JEP 455 (about the addition of primitive types to pattern matching), he also talked about balancing new features and complexity in software development, why compiler writers love pattern matching, how designing a feature is often a lesson in humility, and how the evolution of design is an organic process. If this sounds interesting to you, check out the complete interview for more insights from Brian, Aggelos Biboudis, and Tagir Valeev, as they all discuss the inclusion of primitive types in pattern matching. 99% of developers I talked with believe that one of the reasons for deprecating an API in Java is the availability of better APIs. Ron Pressler stated this is never the case, when we talked with him about JEP 471 (deprecation of Memory-Access Methods in the sun.misc.Unsafe class). Ron also talked about ‘Tip and Tail: a smarter way to manage codebases for different JDKs’, whether folks are swimming naked when they use outdated code, the real secret to performance gains, and much more. Check out this conversation with Ron for more insights. We had another interesting conversation with Viktor Klang and Tagir Valeev about Stream Gatherers in the Streams API. Apart from discussing JEP 473, Viktor touched on topics such as ‘The Power of Simplicity in Software Design’ and how bugs can’t hide in simplicity. He shared how the built-in gatherers can inspire folks, show what this feature can do, help them to get started using them, and then help them create custom gatherers. Viktor also shared why he loves to use JShell for prototyping. Tagir shared that the most complex code that he has ever written was for a Stream API library that he created, streamex. Check out the full interview for more stories. It was a pleasure to talk about being able to use Markdown for writing documentation comments in JavaDoc with Jonathan Gibbons, owner of JEP 467, and Dmitry Chuyko. Jonathan talked about making Java more approachable by simplifying its documentation with Markdown. He discussed why Markdown is a game changer for JavaDoc and addressed which Markdown flavor to use. Dmitry talked about a challenge related to documentation at work – what happens when the documentation of a codebase is larger than its codebase? Check out the full interview here. It was an honor and a privilege to interview all of these Java architects and experts for the JEP Explained interview series: Dr. Venkat Subramaniam, Ken Fogel, Rafael Winterhalter, José Paumard, Zoran Sevarac, Monica Beckwith, Paul Bakker, and Gavin Bierman. Though I would have loved to, it is not feasible to highlight all of the fantastic “aha!” moments and learning I experienced while talking with all the guests. Check out the playlist of JEP Explained interviews and this blog post for more details. Java News Java News Roundup 1, 2, 3, 4 – As usual, the most detailed news digest on all things Java is here. The Inside Java Newsletter: Welcome Java 23! – All the news about the recent release of Java 23 and the related events is conveniently grouped here. Check out some helpful info on the JEPs in progress:  JEP 14: The Tip & Tail Model of Library Development JEP 485: Stream Gatherers JEP 484: Class-File API JEP 475: Late Barrier Expansion for G1 JEP 489: Vector API (9th Incubator) JEP 472: Prepare to Restrict the Use of JNI Big News from Project Valhalla - Inside Java Newscast #77 – Nicolai Parlog discusses Project Valhalla’s latest draft proposal, which introduces value classes, null-restricted types, and other enhancements. The episode recaps Brian Goetz's JVMLS 2024 presentation on these updates. Loom - Where Are We? #JVMLS – Alan Bateman discusses the latest updates on Project Loom, focusing on its goal of enhancing Java's concurrency model with lightweight, high-performance virtual threads. Java Language Futures - Fall 2024 Edition – In his talk, Gavin Bierman provides an overview of recent developments in the Java programming language and discusses upcoming features and future directions presented at Devoxx Belgium 2024. Stream Gatherers (JEP 485) – Cay Horstmann discusses JEP 485, introducing gatherers for Java Streams, which enhance stream processing with stateful transformations for complex operations. Serialization - A New Hope – Java Serialization, now nearly 30 years old, faces new demands. Viktor Klang introduces a streamlined, data-focused model that leverages recent Java enhancements for safer, more flexible object state management and serialization. Ready for the shift?  Java Tutorials and Tips Take a look at some articles by Miro Wengner in which he explores the new features in JDK 23: Exploring New Features in JDK 23: Null object pattern to avoid null pointer exception with JEP-455 Exploring New Features in JDK 23: Gatherers upgrades pipeline design pattern JEP-461 Testing your Java code with mocks and real Elasticsearch – Piotr Przybyl explores two approaches to testing applications using Elasticsearch as a dependency.  Java Integer Caching: why and how – Nataliia Dziubenko explains Java’s Integer Caching mechanism, covering how and why Java caches small Integer values to optimize memory and speed.  10 Billion Integers Walk Into an Array – Donal Raab talks about the surprising discoveries after an experiment with 64-bit Pharo Smalltalk. Coding Interview Challenge Practice: Learn How to Approach The Gilded Rose and Other Katas to Read and Improve Code – Check out some practical techniques by Emily Bache for improving and understanding complex code through popular coding exercises like The Gilded Rose Kata.  Are Virtual Threads Going to Make Reactive Programming Irrelevant? – José Paumard explores how virtual threads might replace reactive programming by simplifying concurrency and enhancing performance. Using Lombok Library With JDK 23 – Arnošt Havelka provides tips for fixing compatibility issues when using the Lombok library with JDK 23.  AI Integration for Java: To the Future, From the Past – The panelists discuss workflows, staff impact, and utilizing different tools, frameworks, and services to integrate AI in Java applications. Easily containerize Java applications with cloud native buildpacks – Grace Jansen explains how to quickly containerize Java apps using Cloud Native Buildpacks, an open-source project that is gaining significant momentum within the developer community by offering a polyglot solution with impressive features and advantages. How to use LazyConnectionDataSourceProxy with Spring Data JPA – In this article, Vlad Mihalcea explains how to use LazyConnectionDataSourceProxy with Spring Data JPA to delay database connection use until it’s truly needed, improving efficiency.  Kotlin Corner Ktor 3.0: New Features and Improved Performance – This blog post will give you a solid overview of what’s new and improved in Ktor 3.0. Compose Multiplatform 1.7.0 Released – Learn more about the release, which brings type-safe navigation, enhanced performance on iOS, and added support for drag-and-drop on desktop platforms. The Evolution of the Kotlin Language and How You Can Contribute – Find out how the Kotlin Evolution and Enhancement Process (KEEP) works and what you can do to contribute to the further development of the language.  Using DynamoDB with Ktor part 1, part 2, part 3 – Check out a series of articles by Matthias Schenk in which he explains the basics of integrating Amazon DynamoDB with a Ktor application. Spring Boot, S3 and Kotlin part 1, part 2, part 3 – This is also a helpful series that explains how to make a Spring Boot Kotlin app work with AWS S3 Object Storage using the S3Client. Making my concurrent algorithm 6000% better – Charlie Tap shares insights into optimizing a concurrent algorithm, boosting its performance significantly through careful analysis and improvements. Kotlin Under the Hood: Exploring Constructors and Init Blocks – Abhaysing Bhosale explains the types of constructors in Kotlin and how init blocks function, giving a simple look at how they work internally. Kotlin Multiplatform Developer Roadmap – This roadmap helps developers to navigate Kotlin Multiplatform (KMP) and understand the essential tools and concepts needed to excel in cross-platform development with Kotlin. Applying the Factory Method and Abstract Factory Patterns in Kotlin – Explore how to enhance flexibility in object creation using the Factory Method and Abstract Factory design patterns.  Dave Leeds examines code that benefits from these patterns, applies the traditional approach from the classic Gang of Four book, and demonstrates how Kotlin’s features can modernize these implementations. Get your KotlinConf 2025 ticket – Join us in Copenhagen on May 21–23, 2025, for the biggest KotlinConf yet! With 2,500 attendees, you'll explore modern server-side, web, mobile, and desktop Kotlin development, and enjoy days full of sessions, workshops, and networking with top professionals from across the industry. KotlinConf 2025 is calling for speakers – Whether it’s server-side, Kotlin Multiplatform, AI, or best practices, we want to hear from you. Submit your talk and inspire others with your experience at the biggest Kotlin event. Join Kotlin Multiplatform Contest – If you are a student or recent graduate, you can win a trip to KotlinConf 2025. Showcase your creativity and coding skills by building a cross-platform project using Kotlin Multiplatform technology. Languages, Frameworks, Libraries, and Technologies This Week in Spring 1, 2, 3, 4 – All the Spring-related news is here for you.  Efficient Debugging Exceptions – This blog post by Igor Kulakov explores efficient techniques for debugging Java exceptions, focusing on handling exceptions like NumberFormatException and demonstrating advanced debugger tools to capture context, test fixes, and apply changes without restarting the application. The Art of Full Stack Debugging – Shai Almog demonstrates techniques and best practices for effective full-stack debugging. SQL Best Practices Every Java Engineer Must Know – This guide explores key strategies for optimizing SQL queries specifically for Java engineers.  Supercharging Your AI Applications with Spring AI Advisors – Christian Tzolov explains how to enhance AI applications using Spring AI's Advisor system, which allows developers to modularize, intercept, and transform requests and responses within chat applications. Generally AI - Season 2 - Episode 1: Generative AI and Creativity – In this podcast, you can listen to a talk about how generative AI can boost creativity, focusing on its potential as a supportive tool rather than a replacement for human creators. AI, Rust, and Resilience: Key Software Trends Seen by the QCon San Francisco 2024 Program Committee – Curious about software trends? Check them out here.  Things you never dared to ask about LLMs – Guillaume Laforge answers common questions and clears up mysteries about how large language models work. Profile IntelliJ IDEA with its own profiler – Igor Kulakov explores how to use IntelliJ IDEA’s built-in profiler to diagnose performance issues within the IDE itself, offering insights for plugin developers and users seeking to troubleshoot bottlenecks in their projects. Podcast: Generally AI - Season 2 - Episode 3: Surviving the AI Winter – In this podcast, you will learn what "AI winters" and "summers" are.  Conferences and Events Have a look at the networking and education opportunities for November:  W-Jax – Munich, Germany, November 4-8 Harnessing the Power of AI in IntelliJ IDEA – Basel, Switzerland, November 6 Øredev – Malmö, Sweden, November 6-8 JFall – Ede, Netherlands, November 7 Heapcon – Belgrade, Serbia, November 7 JavaDays Czech Republic – Prague, Czech Republic, November 12-13 Build GraphQL Services with Spring Boot like Netflix – Online, November 14 CRaCing Java Snapshots – Atlanta, USA, November 19 JavaFest India – Bengaluru, India, November 23 Culture and Community Use correct Unicode characters – Despite modern technology, we often use text characters as if we're still limited to typewriters, creating typographic mishaps and accidental ASCII art. Unicode solved this over two decades ago. Check out these examples to bring sophistication and precision to your writing. The Best Morning Routine (Backed by Science) – Taylor Pearson writes about building a morning routine that boosts productivity and well-being. He draws on historical examples and science. Software Engineer Titles Have (Almost) Lost All Their Meaning – Trevor I. Lasn questions whether job titles like "senior engineer" in the tech industry still reflect actual experience and skill levels. Are titles becoming just labels? What do you think? And Finally… Top 10 IntelliJ IDEA Shortcuts for Efficient Data Querying With the Database Tools – We’ve gathered the most helpful shortcuts to speed up and streamline data querying in IntelliJ IDEA. Ktor 3.0 Is Now Available With New Features and Improved Performance – Find out what Ktor is and learn about the latest updates and improvements introduced in Ktor 3.0. Code Analysis for Your Projects With IntelliJ IDEA and Qodana – Improve your code base using code analysis from IntelliJ IDEA and Qodana. Run specific inspections, analyze code, fix problems, and add inspections to your CI/CD pipeline.  How to Build a CRUD REST API Using Spring Boot – Dive into building a CRUD REST API with Spring Boot and supercharge your productivity using IntelliJ IDEA. From project setup to testing, this guide covers all the essentials! Perfect for beginners and pros alike.  Livestreams and videos 7 Ways AI Assistant Can Help You with Version Control – From resolving tricky merge conflicts to generating precise commit messages, AI Assistant offers tools that can save you time and boost your productivity.  The Problem of Understanding Code is Solved: AI Assistant to the Rescue – Struggling to understand complex code? JetBrains AI Assistant is here to help! In this video, we walk you through practical examples of how AI Assistant simplifies code comprehension. From summarizing projects and explaining classes to clarifying regex and runtime errors, this tool enhances your productivity and understanding.  Unfreeze Your Apps: Debugging Tips – In this video, you will look at how to locate code without much prior knowledge of the project structure and APIs, debug hanging applications, and fix faulty code on the fly. New episodes of JEP Explained:  JEP 480: Structured Concurrency JEP 476: Module Import Declarations JEP 471: Deprecate the Memory-Access Methods in sun.misc.Unsafe for Removal JEP 474 – ZGC: Generational Mode by Default JEP 469: Vector API JEP 473: Stream Gatherers JEP 467: Markdown Documentation Comments Migrating Kotlin Plugins to K2 Mode – As Kotlin moves toward enabling K2 mode by default, it’s essential for plugin authors to ensure compatibility with the Kotlin API. This livestream will guide you through updating your plugins for K2, covering compatibility verification, code adaptation with examples, and troubleshooting migration challenges. How to not create a plugin for JetBrains IDEs – This talk explores essential IDE features for tackling everyday challenges and shows how to share them with your team for smoother collaboration.That’s it for today! We’re collecting ideas for the next Java Annotated Monthly – send your suggestions via email or X by November 20. Don’t forget to check out our archive of past JAM issues for any articles you may have missed!

Read more

Java Annotated Monthly – October 2024

Hey, Java fans! Get ready for a treat – it's time for our October 2024 Java Annotated Monthly! We're buzzing with excitement about Java 23, and we've got a bunch of ace articles and videos to keep you updated about the newest features. We're also exploring some tech stuff beyond Java, and IntelliJ IDEA is letting us peek at their new features and updates through their Early Access Program. Don't forget to check out our list of Java events this month – it's your chance to network with fellow Java lovers!  So get yourself comfy, and let's explore the wonderful world of Java together.  Happy reading, everyone!  Java News Java News Roundup 1, 2, 3 – Absolutely everything that happened in the Java world in the past month is here.  If you missed the official release of Java 23, the hottest materials are below:  Java 23 and IntelliJ IDEA What’s New in Java 23 in 2 Minutes... More or Less - Sip of Java What's new in JDK 23 Java 23 Has Arrived, And It Brings a Truckload of Changes Java 23: What’s New? Foojay Podcast #57: Welcome to OpenJDK (Java) 23 JDK 23 Security Enhancements  Java 23 - Better Language, Better APIs, Better Runtime Java Tutorials and Tips Associating Method Categories with Emojis in IntelliJ and Javadoc – Sometimes, you don’t know what’s possible until you try. In his latest experiment with the RichIterable interface in Eclipse Collections, Donald Raab organized methods into categories using emojis for visual clarity, making Javadoc easier to navigate. Grouping Java methods using custom code folding regions with IntelliJ – In this article, Donald Raab demonstrates how to group Java methods using custom code folding regions in IntelliJ IDEA. He provides a step-by-step guide to improve code organization and readability by collapsing method groups for easier navigation. Project Lilliput - Beyond Compact Headers #JVMLS – Lilliput is all about shrinking footprints by making Java objects smaller, focusing specifically on reducing object headers. This video gives a quick overview of how that’s done and dives into advanced techniques to make object headers even smaller. A Fresh Look at Embedded Java – Java is widely used on embedded platforms for in-car infotainment systems, home automation, edge gateways in production environments, medical devices, appliances, and more. Read more about this side of Java in the article by Frank Delporte.  Mala Gupta and Vikas Malik, live from New Delhi, on a Bootiful Podcast – The speakers talk about various topics, including Java 23, the newly released video series of JEP Explained, and more.  Kotlin Corner Kotlin After 2.0 | Talking Kotlin, Episode 133 – This talk is about the future of Kotlin and its development after the 2.0 version. TypeAlias Show, Episode 2 - Overview Kotlin Roadmap Updates and some IntelliJ IDEA Tips & Tricks – Dave Leeds invites you to check out the latest updates on the Kotlin Roadmap. He'll cover Kotlin's performance in a popular tech survey, demonstrate using multiple text cursors for advanced IDE edits, and show how he navigates the editor without touching the arrow keys! Track and Analyze GitHub Star Growth With Kandy and Kotlin DataFrame – Kotlin DataFrame simplifies data processing, while Kandy enables visualizations directly in Kotlin projects. This post demonstrates how to use both tools in Kotlin Notebook to analyze GitHub repositories. Spring Boot with AWS S3, S3Client and Kotlin – Have a look at this step-by-step guide on how to configure a Spring Boot Kotlin app to work with AWS S3 Object Storage using the S3Client. How to start with DynamoDB in your Ktor application (Part 1) – Matthias Schenk covers just the basics to help you get started with DynamoDB. With the help of this article, you'll build a foundation for more advanced topics like table modeling, using custom data converters, creating Global Secondary Indexes (GSI), and batch processing. Raise Your Tests: Testing Functional Kotlin with Arrow and Raise – Riccardo Cardin introduces the important topic of testing applications that use the Raise DSLl. Languages, Frameworks, Libraries, and Technologies This Week in Spring - 1, 2, 3, 4 – The most important Spring news and updates are here.  Mala Gupta and Vikas Malik, live from New Delhi, on a Bootiful Podcast – Learn more about Java 23, JEP Explained series that features talks about the recently released JEPs, and more.  Modular Monoliths Using Spring Modulith by @sivalabs Developer Advocate @JetBrainsTV - Siva Reddy explores the world of Modular Monoliths and shows you how to build them using Spring Boot and Spring Modulith!  The Instability-Abstractness-Relationship — An Alternative View – This article by Oliver Drotbohm offers an alternative view on the relationship between instability and abstractness in software design. It explores how different perspectives can lead to better architectural decisions by challenging conventional thinking. Top Security Flaws Hiding In Your Code Right Now: And How To Fix Them – In this article, Jonathan Vila shows the most common security flaws developers may unintentionally introduce into their code. She also provides practical solutions on how to identify and fix these vulnerabilities. Article: InfoQ AI, ML and Data Engineering Trends Report - September 2024 – Do not miss out on the fast-paced reality of AI and LLMs. Embeddable Inheritance with JPA and Hibernate – Vlad Mihalcea demonstrates how to use embeddable inheritance in JPA and Hibernate. Check out his examples and tips using this technique. A Bootiful Podcast: Spring creator and cofounder, Dr. Rod Johnson – Dr. Rod Johnson, the creator of Spring, is an entrepreneur, venture capitalist, engineer, father, Kotlin enthusiast, AI researcher, and musician. In this special, extended episode, he discusses a wide range of topics.  Some advice and good practices when integrating an LLM into your application – When integrating an LLM into your application to enhance its intelligence, it's crucial to understand the potential pitfalls and follow best practices to avoid common issues. Guillaume Laforge will walk you through the essential guidelines he has learned to help you integrate these models successfully. Reuse Testcontainers initialization and configuration code with JUnit 5 Extension Callbacks in your Spring Boot Integration Tests – This blog post explores how to write reusable Testcontainers instantiation and configuration code using Jupiter/JUnit 5 Extension Callbacks. It provides a practical approach to streamlining your test setup with this technique. How I Review GitHub PRs – Benjamin Pollack shares his tips and tricks.  Cycle Time – In this article, Martin Fowler explains the concept of cycle time in software development, focusing on how long it takes for a change to go from being worked on to being deployed. He discusses the importance of reducing cycle time to improve the overall efficiency of development processes. Just use Postgres – Micah McCue argues that PostgreSQL is the best choice for most applications due to its reliability, rich features, and versatility. A beginner’s guide to Spring Data Envers – Find out what the Spring Data Envers project is and learn how to maximize its potential. Unit Integration Testing with Testcontainers Docker Compose – Need to run integration tests with multiple applications? The Testcontainers Docker Compose Module makes it easy. Learn how in this blog! Integrate Spring Boot with jOOQ, Liquibase and Testcontainers – Gunter Rotsaert guides you through getting started with jOOQ, Liquibase, and Testcontainers. You'll build a basic Spring Boot application, integrate these tools, and set up testing. You'll also use Spring Boot's Docker Compose support to run the app quickly. Conferences and Events Check out the events that you can attend online and offline in October:  Devoxx Morocco – Marrakesh, Morocco, October 2–4 JOpenSpace – Telč, Czech Republic, October 4–6 JAX New York – New York, USA, October 7–10 Devoxx Belgium – Antwerp, Belgium, October 7–10 JavaCro – Rovinj, Croatia, October 13–16 BaselOne – Basel, Switzerland, October 16–17 How to !create a Plugin for JetBrains IDEs – Online, October 17 Voxxed Days Thessaloniki – Thessaloniki, Greece, October 18–19 {j}DD – Kraków, Poland, October 22–23 JJUG CCC Fall – Tokyo, Japan, October 27 Culture and Community Baeldung Pro with IntelliJ Ultimate – Check out a special offer to get a free IntelliJ IDEA Ultimate license!  Lessons Learned From the CrowdStrike Incident: InfoQ Dev Summit Munich 2024 Preview – The recent CrowdStrike incident caused widespread outages and exposed critical vulnerabilities in cloud infrastructure. While human error is often a factor, the incident also underscores the importance of robust systems and a culture that promotes continuous learning and risk assessment. Article: How to Make Technical Debt Your Friend – Learn how technical debt, when managed strategically, can be a valuable tool for innovation and speeding up software development. Your company needs Junior devs – Doug Turnbull emphasizes that junior developers are vital for team growth, bringing fresh perspectives and fostering a culture of continuous learning. And Finally… IntelliJ IDEA 2024.3 EAP Is Open! – Don’t miss out on our new Early Access Program for the upcoming IntelliJ IDEA 2024.3. It is already available with a cool new feature that allows you to enter AI prompts for pretty much anything right in the editor!  Top 12 Podcasts for Java Developers in 2024 – This article features a selection of top podcasts for Java developers, with details on the format, hosts, episode recommendations, and key highlights. These podcasts offer valuable insights, expert tips, and engaging discussions to keep developers informed and inspired. Introduction to Htmx for Spring Boot Developers – Dive into Htmx, an increasingly popular library that lets you use your Spring Boot skills to create interactive user experiences, avoiding some of the challenges of other front-end frameworks. By the end, you’ll feel ready to integrate Htmx into any new or existing Spring Boot project.  Introduction to Code Analysis in IntelliJ IDEA – Static code analysis scans code for issues without running it, and IntelliJ IDEA’s inspections can detect problems before compilation, like dead code, bugs, and structural flaws. This blog series by Marit van Dijk will explore how IntelliJ IDEA helps you identify and fix issues, starting with preventing problems as you code. Ktor 101: Efficient JVM HTTP Toolkit – Together with Anton Arhipov, explore Ktor, a Kotlin-based toolkit designed for building efficient server applications, offering features like routing, authentication, and protocol support. Videos and livestreams  ‘JEP Explained’ – a series of interviews on Java 23 features – If you haven’t seen our series on Java 23 with Mala Gupta and other experts in the industry, check out this blog post for a quick overview. And don’t miss the latest episodes! Introduction to Workspaces in IntelliJ IDEA – This session gives a complete overview of a new IntelliJ IDEA feature: workspaces. Andrey Belyaev demonstrates what workspaces are, how they work, and how to integrate them into your projects.  Developing Spring Boot Applications With Joy – In this session, our new developer advocate, Siva Reddy, shows how to build modern Spring Boot applications in IntelliJ IDEA Ultimate, covering tasks like managing starters, working with databases, writing integration tests, and more.  That’s it for today! We’re collecting ideas for the next Java Annotated Monthly – send your suggestions via email or X by October 20. Don’t forget to check out our archive of past JAM issues for any articles you may have missed!

Read more

Java Annotated Monthly – September 2024

Welcome to the latest edition of Java Annotated Monthly! This edition is packed with the latest news on Java, Kotlin, and other influential technologies in the IT world. Don’t miss out on exploring IntelliJ IDEA 2024.2, staying up to date with Java 23, grabbing your tickets for KotlinConf 2025, and learning about the newest developments in Spring and AI. Stay informed and ahead of the curve with everything happening in the Java ecosystem and beyond! Let’s start! Java News Java News Roundup 1, 2, 3, 4 – Make sure you haven’t missed any important updates.  Java in 2024 - #JVMLS keynote – Check out all the major announcements, trends, and innovations expected to shape the Java landscape in 2024. JDK 23 and JDK 24: What We Know So Far – Have an in-depth look at Java 23 so far, including new features, improvements, and community reactions. Best of Java Performance - Inside Java Newscast #75 – This episode summarizes the key takeaways from the JVM Language Summit 2024 and includes unreleased video footage. Consequences of DORA on Java and OpenJDK with Azul – This article explores the impact of DevOps Research and Assessment (DORA) on Java and OpenJDK, particularly focusing on how it shapes performance metrics and development practices within the community. Java Tutorials and Tips Moving Java Forward Together by Sharat Chander – In this session, Sharat Chander discusses how you can help keep Java the leading choice for building tomorrow's applications. How to Read a JDK Enhancement Proposal - Inside Java Newscast #74 – Nicolai Parlog talks about how to effectively read and understand JDK Enhancement Proposals (JEPs). While they’re often easy enough to read, the devil is in the details. Together with Nicolai, you’ll go through those details: states and their changes, the JEP header, the evolution and reliability of the text, and more. Leveraging JDK Tools and Updates to Help Safeguard Java Applications – This article reviews several built-in JDK tools and features that administrators can use to strengthen the security of their Java applications. It offers general advice for maintaining application safety rather than addressing specific vulnerabilities, with additional resources for further learning. Trash Pandas Love Enterprise Java Garbage Code – Erik Costlow talks about the importance of identifying and removing clutter code to improve system efficiency and developer productivity. Episode 105. Neurons, AI, and LLMs – Learn more about AI, neural networks, and large language models (LLMs), including their core principles, refinements, and the role of vector databases in AI development. Project Babylon - Code Reflection #JVMLS – Paul Sandoz presents the recent advancements in Java's code reflection, focusing on improvements to runtime introspection and metaprogramming. Interview with a Java Champion: Reflections on a Storied Career and Insights for the Next Generation – In this interview by A N M Bazlur Rahman, Java Champion Ben Evans reflects on his extensive career, discussing the evolution of the Java ecosystem and offering advice to both experienced developers and newcomers.  Are Critical Vulnerabilities Lurking in Your Java Ecosystem? – Check out how to avoid hidden security vulnerabilities in the Java ecosystem, particularly from third-party libraries.  Netflix Adopts Virtual Threads: A Case Study on Performance and Pitfalls – The case study reveals issues with deadlocks and thread handling in Netflix's microservices, emphasizing the need for careful integration of virtual threads in production environments. Four Easy Ways to Analyze your Java and Kotlin Code for Security Problems – Brian Vermeer explains how to use Snyk tools to identify and fix security issues in Java and Kotlin code through CLI, IDE, Git, and CI/CD integrations. Kotlin Corner KotlinConf 2025 Tickets Are Now on Sale! – Tickets for KotlinConf 2025, the largest Kotlin event, are now available to buy. Kotlin Roundup: Ktor in Focus – Check out the latest updates and developments in the Ktor framework for building asynchronous servers and clients in connected systems. Applying the Decorator Pattern in Kotlin by Dave Leeds – The decorator pattern lets you enhance an object's behavior without its awareness. In this video, Dave Leeds starts with code that could benefit from this pattern, applies it using the classic method from the Gang of Four book, and then updates it with Kotlin's modern features. Applying the Strategy Pattern in Kotlin by Dave Leeds – Another helpful video from Dave Leeds explains why the strategy pattern is so useful, implement it in Kotlin, and then use Kotlin's language features to give it a modern twist. Re-Implementing kotlinx.coroutines by Sebastian Sellmair – In this video, Sebastian Sellmair shows how to re-implement the basics of kotlinx.coroutines. Coroutines: Concurrency in Kotlin by Dave Leeds – In this presentation, Dave Leeds covers the essentials of coroutines in Kotlin, including how they enable concurrency and parallelism, and how structured concurrency ensures proper cleanup in cases of cancellations and exceptions. The Kotlinx DateTime API for Compose Multiplatform by Philipp Lackner – Join Philipp Lackner to get an introduction to using the Kotlinx DateTime API in Compose Multiplatform. Refactoring to Functional Kotlin by Duncan McGregor – This video gives you a good overview of a really important topic – actions and calculations or impure and pure functions. Languages, Frameworks, Libraries, and Technologies This Week in Spring 1, 2, 3, 4 – Find all the latest Spring news here.  Spring: Internals of @ComponentScan – Mahendra Rao explains how the @ComponentScan annotation in Spring works to automatically detect and register components in an application. Spring Tips: HTMX – Find out how to integrate HTMX with Spring Boot and Thymeleaf and get insights into how HTMX simplifies the process of creating dynamic web applications. A Bootiful Podcast: Observability legend Jonatan Ivanov on the latest and greatest in Micrometer – Josh Long and Jonatan Ivanov, an expert in observability, discuss the latest advancements in the Micrometer library, which is widely used within and beyond the Spring ecosystem. Leveraging Hibernate Search capabilities in a Quarkus application without a database – Marko Bekhta demonstrates how to use Hibernate Search in Quarkus without a database with the help of the Hibernate Search Standalone mapper. Get Started With Allocation Profiling – Igor Kulakov provides a guide on how to use allocation profiling to troubleshoot memory issues in Java applications. He shows how to identify memory leaks by analyzing memory allocations and interpreting profiler data and offers practical steps to optimize your code. Podcast: InfoQ AI, ML, and Data Engineering Trends in 2024 – This podcast is about the latest trends in AI, machine learning, and data engineering for 2024. It highlights innovations like the rise of open-source models, the importance of retrieval-augmented generation (RAG) for scalable AI applications, and the growing role of AI-powered hardware. How to integrate Jakarta Data with Spring and Hibernate – In his article, Vlad Mihalcea explains how to integrate Jakarta Data with Spring and Hibernate, providing insights and examples for the usage of these technologies. Self-profiling IntelliJ IDEA – Did you know IntelliJ IDEA can profile itself? If you're developing an IntelliJ IDEA plugin or troubleshooting performance issues in other projects, this profiling strategy can help identify and address bottlenecks across various tools and scenarios. A Bootiful Podcast: Vaadin developer advocacy legend Marcus Hellberg – This is the podcast with Marcus Hellberg, a well-known figure in Vaadin developer advocacy, where he talks about the latest trends and developments in the Spring ecosystem. Debugging Kubernetes: Troubleshooting Guide – Shai Almog presents a comprehensive guide to troubleshooting common issues in Kubernetes that can help developers navigate and resolve errors effectively.  Conferences and Events Here is a list of Java events taking place both online and offline in September: JavaZone – Oslo, Norway, September 4–5 Java Forum Nord – Hannover, Germany, September 10 Introduction to Workspaces in IntelliJ IDEA – Online, September 12 JConf.dev – Dallas, USA, September 24–26 JUG Saxony Day – Radebeul, Germany, September 26–27 JC Conference Taiwan – Taipei, Taiwan, September 27 Jax London – London, United Kingdom, September 30 – October 2 Dev2Next – Denver, USA, September 30 – October 3 GOTO Copenhagen – Copenhagen, Denmark, September 30 – October 4 Culture and Community Instead of restricting AI and algorithms, make them explainable – Martin Fowler suggests that rather than limiting algorithms and AI, we should focus on making them explainable to ensure transparency and fairness. How would you feel if you could clearly understand the decisions made by AI systems? Let LLM suggest Instagram hashtags for your pictures – Guillaume Laforge explores how LLMs can assist in generating creative Instagram hashtags by using AI tools like Gemini. He demonstrates a method to enhance hashtag generation, balancing creativity against structured output. A manifesto for small teams doing important work – Check out practical guidelines for small teams to effectively manage time, communication, and responsibilities to achieve meaningful results. The Road to Membership and Baeldung Pro – Find out what Baeldung Pro is and how you can get a membership. And Finally… IntelliJ IDEA 2024.2 Is Out! – The newest version of IntelliJ IDEA is here! This release enhances Spring Data JPA support, simplifies cron expression management, and upgrades the HTTP Client with the GraalJS engine. Startup efficiency is improved, allowing you to dive into coding faster. Additionally, the new version integrates K2 mode (Beta) to boost the IDE’s performance and stability for Kotlin. Read this blog post for more, or watch the embedded video. Meet Renovated Kotlin Support – K2 Mode: What You Need to Know – K2 mode is a new way of supporting Kotlin in IntelliJ IDEA, making the IDE more stable and ready for future language features. If you haven’t tried it yet and want to know how it works, this article is for you. Workspaces in IntelliJ IDEA – The new Workspaces feature in IntelliJ IDEA allows developers to manage multiple projects simultaneously within the IDE. Read more about it in this article by Andrey Belyaev and Aleksey Stukalov.  Hacking a JVM Application With IntelliJ IDEA’s Debugger – Have a look at this fun exercise in debugging IntelliJ IDEA with its own debugger. The New Terminal (Beta): Updates for JetBrains IDEs v2024.2 – Check out the new terminal (Beta) features in JetBrains IDEs v2024.2.  Videos and livestreams  Before the arrival of Java 23, we prepared a series of talks about the upcoming updates. Mala Gupta is hosting these sessions with experts including Brian Goetz, Ken Fogel, Dr. Venkat Subramaniam, and Rafael Winterhalter: JEP Explained. JEP 455: Primitive Types in Patterns, instanceof, and switch JEP Explained. JEP 477: Implicitly Declared Classes and Instance Main Methods JEP Explained. JEP 482: Flexible Constructor Bodies JEP Explained. JEP 466: Class-File API Mastering IntelliJ IDEA With DevoxxGenie: Harnessing Local and Cloud-Based LLMs – Join Stephan Janssen as he explores DevoxxGenie’s local LLM integration. IntelliJ IDEA Pro Tips: Find Action – Learn more about the Find Action feature, which helps you to quickly locate any action. That’s all for today!We’re gathering ideas for the next Java Annotated Monthly. To contribute, share your suggestions via email or X by September 20. And don’t forget to explore our archive of past JAM issues to catch up on any posts or articles you might have missed.

Read more
More issues

Java Annotated Monthly Community Partners

Bulgarian Java User Group
Java User Group Darmstadt
Chicago Java Users Group
Delhi NCR JUG
Java Professionals BY
Warsaw Java User Group
Java User Group Bangladesh
Java User Group Philippines
JUG Szczecin