Java Kotlin News

Java Annotated Monthly – December 2023

The December edition of Java Annotated Monthly is here! As usual, you’ll find all the latest Java and Kotlin updates as well as details of key industry events for networking and learning. This issue also features the latest release candidates and targeted JEPs alongside Java tutorials and articles about technologies like Spring, AI, and others.

In addition, we have an ironic piece in the Culture and Community section for those doubting whether they are a good fit for a senior software developer role.

Let’s go!

Java News

Java News Roundup 1, 2, 3, 4, and 5 – Here, you’ll find all the most important news from the Java world.

Better Java Streams with Gatherers – Inside Java Newscast #57Stream::gather is a new operation you can use with streams in Java. It lets you create various operations without adding too much complexity to the Stream interface. Find out more about it in this newscast.

What’s New in Java 21 – Oracle TV from CloudWorld 2023 – Georges Saab, SVP of Development for Java Platform and Chair of the OpenJDK Governing Board, talks on Oracle TV at CloudWorld 2023 about Java 21’s new features, the Java Playground, community updates, and Java’s future.

Java On The GPU – Inside Java Newscast #58 – Babylon, OpenJDK’s latest major project, focuses on enhancing Java’s performance on GPUs to boost machine learning and AI applications on the JVM. Find out more about it in this newscast by Nicolai Parlog.

Here is the list of new JEP candidates and JEPs targeted to JDK 22 this month:

Java Tutorials and Tips

Everything Bad in Java is Good for YouEverything Bad is Good for You is a book that suggests things we often think are bad, like TV, can actually be good for us. What if we apply this idea to Java? Perhaps not all bugs are harmful – some might even make beneficial features. Check out this article to explore this further.

What If Java Collections Had Eager Methods for Filter, Map, FlatMap? – Check out this blog by Donald Raab to discover how to revitalize the twenty-five-year-old Java Collections framework using some advanced Java language features.

How do you know if a Java Collection is Mutable or Immutable? – This blog explains the benefits of using both mutable and immutable collections in Java. It highlights how these practices in the widely-used Java Collections framework contribute to Java’s ongoing success.

Java 21: So How Should We Construct Strings Now? – Java 21 introduces several exciting features, including a preview of String Templates, offering Java developers a new method for string concatenation. Nataliia Dziubenko explores the “proper” way to concatenate strings in modern Java and even draws comparisons with Kotlin’s approach.

Record Patterns – Sip of Java – Watch the video included in the article to learn more about record patterns that were added in Java 21, providing an easier way to extract data from records.

How to find dead code in your Java services – While working with legacy code, we often encounter undocumented or untested code and wonder whether it’s still in use. In his article, Jakob Löhnertz shares his vision of how you can confidently identify and handle such potentially unused code.

Solving the Countdown problem with Java 21’s Language Features – This article explores how to tackle the number game challenges from the Countdown show using the features of Java 21.

Optimizing your equals() methods with Pattern Matching – JEP Cafe #21 – Learn how to create simple and efficient equals() methods for Java classes in this tutorial.

Pattern Matching for switch – Sip of JavaBilly Korando shows the development of pattern matching from Java 16 onwards.

Loom is just HyperThreading in JavaJohannes Bechberger discusses whether Loom’s virtual threads are essentially a form of HyperThreading within the JVM. But what do you think?

Tutorial – Debugging in Java – If you are not familiar with the concept of debugging, this article can be a good starting point.

Java for desktop applications: Tips and Tricks (Part 1)Christopher Schnick shares some tricks that you can quickly integrate into your own desktop application projects with minimal effort.

Languages, Frameworks, Libraries, and Technologies

This Week in Spring 1, 2, 3, 4 – Spring news and more, don’t miss!

Spring Tips: Spring Boot 3.2 – Watch the video where Josh Long explores the exciting updates in Spring Boot 3.2 and Java 21, including how virtual threads from Project Loom and new features like sealed types and smart switch expressions enhance your applications.

A Bootiful Podcast: GraalVM founder and Oracle vice president Thomas Wuerthinger – In this episode, Josh Long chats with Oracle’s vice president Thomas Wuerthinger about GraalVM, a project he initiated and leads.

The Best Tools for Writing Integration Tests for Spring Boot Web Applications – This blog post introduces six testing tools essential for creating integration tests in Spring Boot web applications.

GraalVM & Spring Boot: Building a Native Executable – Interested in GraalVM? Join us as we experiment with our Google Photos clone, see the challenges we face, and come up with a fair and balanced view of where GraalVM stands today.

Fun Refactoring! – Gilded Rose Kata, Hands-on with Approval Testing –  Emily Bache shows how to use Gilded Rose refactoring methods. These can help you practice making your code simpler and cheaper to change.

JetBrains Launches IntelliJ-Based Writing Tool WriterSide – Learn more about a new tool by JetBrains – WriterSide. It allows developers and writers to create technical documentation. The new tool is based on IntelliJ-platform IDEs and has been used to create most of JetBrains products’ documentation for the last few years.

Presentation: ChatGPT and AI: What’s Next in Large Language Model (LLM) Architectures – The recorded talk is about what’s next for big AI models like ChatGPT. Experts will discuss how these new AI ideas could change the field.

Patterns For The Design Of Microservices – Part 2 – This follow-up article continues to explore additional patterns frequently applied in the microservices architecture, providing a deeper understanding of their application and benefits.

What I Learned Over the Weekend About HTTPCay Horstmann reveals insights about the HTTP Client. Do you agree with his findings?

htmx Tutorial – 2 Real-Life Use Cases – Discover how htmx works by implementing two features into a practical project: Infinite Scrolling and an asynchronous download button that shows a progress bar as the backend prepares the download.

Table partitioning with Spring and HibernateVlad Mihalcea explores the implementation of table partitioning with Spring and Hibernate, aiming to divide a large table into smaller partition tables for more efficient memory and indexing.

How to cascade DELETE with Spring and Hibernate events – This article demonstrates how you can cascade the DELETE operation for unidirectional associations with Spring Data JPA and Hibernate events.

Creating an OpenAPI Generator from Scratch: From YAML to JetBrains HTTP ClientJulien Lengrand-Lambert guides you through creating your own OpenAPI generator from the ground up, focusing on implementing it for the JetBrains HTTP Client.

In-memory HttpServer HandlerChristian Stein presents an HTTP handler that serves in-memory assets, which is ideal for conducting HTTP client tests with GET or HEAD requests on a predefined set of assets.

API versioning – In this brief article, you will get detailed descriptions of three methods for versioning HTTP APIs: path-based, query-based, and header-based.

Why JUnit’s Dynamic Tests ARE SO GOOD – Marco Codes shows you how to write dynamic tests for a case when you need to extract dimensions, dates, and locations from an image’s metadata and display it in the Google Photos Clone.

Kotlin Corner

Kotlin 1.9.20 Released – Check out the release highlights! K2 is now in Beta for all targets, Kotlin Multiplatform is stable, and many more cool updates are available.

Kotlin Multiplatform Is Stable – Read this article to learn about the evolution of Kotlin Multiplatform (KMP), how it can streamline your development process, and what educational resources are available for you to get the most out of the technology.

Compose Multiplatform 1.5.10 – The Perfect Time To Get Started – Compose Multiplatform is a declarative UI framework built by JetBrains that allows developers to share their applications’ UIs across different platforms. It enables you to reuse up to 100% of your codebase across Android, iOS, desktop, and web. If you want to try it out, read this article for the details.

Kotlin Multiplatform Development Roadmap for 2024 – JetBrains is set to enhance core Kotlin Multiplatform technology, Compose Multiplatform, KMP tooling, and KMP libraries in 2024. Discover our upcoming plans and key priorities in these areas.

Fleet with Kotlin Multiplatform Tooling – Try out a preview for Kotlin Multiplatform support in Fleet, which simplifies the development of multiplatform applications, adding to the already extensive Kotlin support in Fleet.

Amper – Improving the Build Tooling User Experience – This blog post introduces Amper – a tool for improved project configuration.

Law of Demeter with examples in Kotlin – There are some cases when you violate the Law of Demeter. Read on to know the flaws and benefits of doing this.

Event sourcing Series’ Articles – Check out the blog post series on events sourcing by Jakub Zalas.

Measuring sequencesMax Sidorov welcomes you to explore how sequences function and uncover the performance advantages they offer.

Headache-Free Reactive Programming With Spring Boot and Kotlin Coroutines – This webinar will teach you how Spring Boot’s coroutine support eliminates the drawbacks of the traditional WebFlux method, offering a blend of reactive features without the added complexity.

A Tour Through Konsist with Igor Wojda – Dave Leeds and his special guest Igor Wojda join forces to show you the use of the Konsist static code analysis tool used to ensure consistency in a codebase as they write assertions for a basic REST service.

Practical magic with animations in Jetpack Compose – The video demonstrates how to create animations in Jetpack Compose.

Conferences and Events

Here are some events you might want to attend in person or online in December:

Harnessing the Power of AI Assistant in IntelliJ IDEA – Online, December 7.

JakartaOne Livestream 2023 – Online, December 5.

Java 21 and beyond & Streamlining testcontainers by Apeldoorn JUG – Apeldoorn, Netherlands, December 7.

London Java Community Unconference – London, United Kingdom, December 19.

Culture and Community

Unexpected Things That Make You a Senior Developer – Have you ever accidentally removed a crucial table or a vital class in a project? If so, you might be a senior developer. Read this post to discover more humorous yet accurate insights about senior developers, as observed by Frank Delporte and Marit van Dijk.

Developer Productivity Engineering: What’s in it for Java Developers? – Developer Productivity Engineering (DPE) is emerging as the next major trend in software development. Read this article to learn what exactly DPE is, how it contributes to developer satisfaction, and how you implement it in your organization.

GDPR for busy developers – Should you fear GDPR and other privacy regulations? Find out in this article.

Random Thoughts 15 years into Software Engineering – After 15 years in software development, with experience ranging from lesser-known startups to major FAANG-level companies in Silicon Valley, Ryan O’Neill shares various insights that could benefit others.

How to Become a High-Performing Software Team – What are the four major elements that enable high-performing software teams? Why do some teams perform better than others? What practices can help teams unleash their potential? Check out what Mark Cruth has to say about these issues and more.

Podcast: Teams, Teamwork, and Generative AI as a Team Member – In this podcast episode, Shane Hastie, Lead Editor of Culture & Methods, talks with SnapLogic’s CTO Jeremiah Stone about building exceptional teams, using AI as a development aid, and tackling the ethical dilemmas faced by the tech industry.

And Finally…

AI Assistant Update – November 2023 – Discover the latest enhancements in AI Assistant, including code autocompletion, automated test generation, and code translation across different programming languages.

String Templates in Java – why should you care? – String concatenation can be error-prone and difficult to read. String templates offer a more efficient way of combining literal text with variable values. In her article, Mala Gupta delves into string templates, explaining their concept and demonstrating their effective usage.
The What, Why, and How of JPA Buddy in IntelliJ IDEA – For those new to JPA Buddy, get ready to explore its intuitive features that simplify JPA entity management and reduce redundant code. This article provides a walkthrough of the JPA Buddy interface and its key functionalities.

That’s all for today!

For the upcoming Java Annotated Monthly, feel free to email or tweet us your content ideas. We welcome article suggestions until December 20. Don’t forget to check out our archive for all past JAM issues – it’s a great place to catch up on any blog posts or articles you might have missed.

image description