<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/sources/baeldung/best-of/2024/07" -->

---
title: Best Baeldung posts — July 2024 | daily.dev
description: The most upvoted Baeldung posts from July 2024, curated by the daily.dev community.
canonical: https://daily.dev/sources/baeldung/best-of/2024/07
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:url: https://daily.dev/sources/baeldung/best-of/2024/07
og:type: website
og:site_name: daily.dev
og:title: Best Baeldung posts — July 2024 | daily.dev
og:description: The most upvoted Baeldung posts from July 2024, curated by the daily.dev community.
og:image: https://media.daily.dev/image/upload/s--VAY5ToZt--/f_auto/v1724209435/public/daily.dev%20-%20open%20graph
---

# Best of Baeldung — July 2024

1. 1  
[](https://daily.dev/posts/apache-kafka-tutorial-series-wovevnhgz "Apache Kafka Tutorial Series")  
Article  
![Avatar of baeldung](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/52cccfb454d946c4b7dfa5e816f9e576)Baeldung · 2y  
Apache Kafka Tutorial Series  
This tutorial series covers essential topics about Apache Kafka, including its basics, how to integrate it with Spring Boot, configuring Kafka SSL, and setting up Kafka using Docker. It also explores Kafka consumer groups, retry mechanisms, and message ordering strategies, providing practical guidance for both newcomers and experienced developers.  
339
2. 2  
[](https://daily.dev/posts/returning-errors-using-problemdetail-in-spring-boot-ddl6uwcsf "Returning Errors Using ProblemDetail in Spring Boot")  
Article  
![Avatar of baeldung](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/52cccfb454d946c4b7dfa5e816f9e576)Baeldung · 2y  
Returning Errors Using ProblemDetail in Spring Boot  
Learn how to use ProblemDetail for standardized error responses in Spring Boot applications. Discover why it's important for API usability, how it streamlines error handling, and explore its implementation in both MVC and reactive applications. Includes setup, configuration, and global exception handling examples, complete with testing methods.  
85  
1
3. 3  
[](https://daily.dev/posts/java-ides-in-2024-survey-results-ecsunl87k "Java IDEs in 2024 – Survey Results")  
Article  
![Avatar of baeldung](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/52cccfb454d946c4b7dfa5e816f9e576)Baeldung · 2y  
Java IDEs in 2024 – Survey Results  
A recent survey conducted between July 2 and July 10, 2024, revealed that IntelliJ (Community and Ultimate versions) remains the most popular Java IDE, followed by Eclipse. Visual Studio Code ranks third, outpacing NetBeans. The survey had 5788 respondents, some of whom selected multiple IDEs. The trend shows IntelliJ's user base growing while Eclipse's popularity declines compared to a similar survey from 2019.  
43  
4
4. 4  
[](https://daily.dev/posts/protobuf-vs-grpc-nmej9etnm "Protobuf vs. gRPC")  
Article  
![Avatar of baeldung](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/52cccfb454d946c4b7dfa5e816f9e576)Baeldung · 2y  
Protobuf vs. gRPC  
Microservices architecture relies on efficient communication methods. Protobuf, a language-neutral mechanism for serializing structured data, offers compact and efficient data transfer but lacks human readability. gRPC, an open-source RPC framework built on HTTP/2 and using Protobuf for defining services, enables high-performance communication with features like streaming and multiplexing. While Protobuf excels in data serialization, gRPC provides a robust RPC framework suitable for real-time data exchange. The choice between them depends on specific needs, balancing efficiency, readability, and ease of configuration.  
43  
6
5. 5  
[](https://daily.dev/posts/checking-if-an-array-is-null-or-empty-in-java-eyex16ubm "Checking if an Array Is Null or Empty in Java")  
Article  
![Avatar of baeldung](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/52cccfb454d946c4b7dfa5e816f9e576)Baeldung · 2y  
Checking if an Array Is Null or Empty in Java  
Learn how to check if an array is null or empty in Java, covering both object and primitive type arrays. This guide includes creating a generic method, handling primitive types, and using Apache Commons Lang's ArrayUtils and ObjectUtils utilities. Explore effective practices to write safer and more reliable Java code.  
40
6. 6  
[](https://daily.dev/posts/sending-whatsapp-messages-in-spring-boot-using-twilio-gdo4w0jxj "Sending WhatsApp Messages in Spring Boot Using Twilio")  
Article  
![Avatar of baeldung](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/52cccfb454d946c4b7dfa5e816f9e576)Baeldung · 2y  
Sending WhatsApp Messages in Spring Boot Using Twilio  
Learn how to send WhatsApp messages using Twilio within a Spring Boot application. Discover the setup process for Twilio and WhatsApp Business Account (WABA), explore the necessary configurations, and implement functionality to send messages and handle user replies. The tutorial also covers sending templated notifications, creating webhook endpoints for handling replies, and testing the integration using MockServer.  
33
7. 7  
[](https://daily.dev/posts/why-the-order-of-maven-dependencies-is-important-mtzyesbh7 "Why the Order of Maven Dependencies Is Important")  
Article  
![Avatar of baeldung](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/52cccfb454d946c4b7dfa5e816f9e576)Baeldung · 2y  
Why the Order of Maven Dependencies Is Important  
Maven is a build and dependency management tool widely used in the Java ecosystem. Proper configuration of Maven dependencies is crucial to avoid compile-time and runtime issues. The post discusses key concepts such as POM, direct and transitive dependencies, and dependency mediation. It also explores practical examples, common errors, and tools like the Maven Dependency Plugin, Maven Enforcer Plugin, and Maven Help Plugin to manage and resolve dependency issues effectively.  
32
8. 8  
[](https://daily.dev/posts/how-to-sort-map-value-list-by-element-field-using-java-streams-sxkzfjuia "How to Sort Map Value List by Element Field Using Java Streams")  
Article  
![Avatar of baeldung](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/52cccfb454d946c4b7dfa5e816f9e576)Baeldung · 2y  
How to Sort Map Value List by Element Field Using Java Streams  
Learn how to use Java's Stream API to sort a list of Employee objects stored within a Map, comparing it to the traditional List#sort(Comparator) method. The tutorial walks through reading employee data from a CSV file, storing it in a nested Map structure, and demonstrates sorting by salary and name using both methods. The Stream API offers improved readability, flexibility, and adherence to functional programming principles such as immutability and statelessness.  
16
9. 9  
[](https://daily.dev/posts/getting-the-insert-id-in-jdbc-ivm5sw5h7 "Getting the Insert ID in JDBC")  
Article  
![Avatar of baeldung](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/52cccfb454d946c4b7dfa5e816f9e576)Baeldung · 2y  
Getting the Insert ID in JDBC  
This tutorial demonstrates how to retrieve auto-generated primary keys immediately after inserting data into a database using JDBC. It explains the setup process with an H2 in-memory database, illustrates how to use PreparedStatement with RETURN\_GENERATED\_KEYS, and provides a unit test to verify the retrieval of insert IDs.  
15
10. 10  
[](https://daily.dev/posts/intro-to-spotbugs-9jamqozvm "Intro to SpotBugs")  
Article  
![Avatar of baeldung](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/52cccfb454d946c4b7dfa5e816f9e576)Baeldung · 2y  
Intro to SpotBugs  
SpotBugs is an open-source static analysis tool designed to identify bugs in Java code by analyzing bytecode. It detects over 400 bug patterns, categorized by aspects such as type and severity. The post explains how to set up and use SpotBugs with Maven, generate and view reports, and fix detected bugs. It also covers how to integrate SpotBugs with IntelliJ IDEA and Eclipse, including installation, configuration, and browsing reports.  
14  
2
11. 11  
[](https://daily.dev/posts/list-all-files-on-the-remote-server-in-java-qkfedtzgw "List All Files on the Remote Server in Java")  
Article  
![Avatar of baeldung](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/52cccfb454d946c4b7dfa5e816f9e576)Baeldung · 2y  
List All Files on the Remote Server in Java  
The post explains how to interact with remote servers in Java using JSch, Apache Mina SSHD, and SSHJ libraries. It covers establishing a secure connection with a private key, opening an SFTP channel, and listing files in a remote directory. Detailed steps and code examples for each library are provided, including configuring dependencies, creating sessions, and retrieving file details.  
14
12. 12  
[](https://daily.dev/posts/introduction-to-milvus-eytjr9wkn "Introduction to Milvus")  
Article  
![Avatar of baeldung](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/52cccfb454d946c4b7dfa5e816f9e576)Baeldung · 2y  
Introduction to Milvus  
Milvus is a scalable open-source vector database designed for storing and indexing vector embeddings from AI models. This guide focuses on the integration and management of Milvus using its Java client SDK, covering CRUD operations, administrative tasks, and performing vector similarity searches. The tutorial includes setting up a Milvus DB instance, creating collections, partitions, inserting data, and deleting records, providing sample code for each operation.  
12
13. 13  
[](https://daily.dev/posts/difference-between-m2-home-maven-home-and-using-the-path-variable-ouxr8ms3t "Difference Between M2_HOME, MAVEN_HOME and using the PATH variable")  
Article  
![Avatar of baeldung](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/52cccfb454d946c4b7dfa5e816f9e576)Baeldung · 2y  
Difference Between M2\_HOME, MAVEN\_HOME and using the PATH variable  
The post explores the differences between the M2\_HOME, MAVEN\_HOME, and PATH environment variables as part of the Apache Maven installation. It details how each variable is used depending on the Maven version and explains how to configure these variables for a smooth installation process. The tutorial covers Maven versions 1.x, 2.x, and 3.x, highlighting the changes in environment variable requirements for each version.  
11
14. 14  
[](https://daily.dev/posts/validation-using-the-spring-validator-interface-lbdb64tao "Validation Using the Spring Validator Interface")  
Article  
![Avatar of baeldung](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/52cccfb454d946c4b7dfa5e816f9e576)Baeldung · 2y  
Validation Using the Spring Validator Interface  
Learn how to use the Spring Validator interface to validate objects in a Spring-based application. Key methods include supports(), which checks if a validator can handle a specific class, and validate(), which enforces custom validation logic. Detailed examples include implementing a custom UserValidator, configuring it as a Spring bean, and using it within a Spring MVC controller for validating user data in REST API endpoints.  
11
15. 15  
[](https://daily.dev/posts/spring-security-6-3-what-s-new-5cggetfbb "Spring Security 6.3 – What’s New")  
Article  
![Avatar of baeldung](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/52cccfb454d946c4b7dfa5e816f9e576)Baeldung · 2y  
Spring Security 6.3 – What’s New  
Spring Security 6.3 introduces several key enhancements, including passive JDK serialization support to address issues related to serialization across versions, new authorization features like defining meta-annotations for role management, and the ability to secure return values with the @AuthorizeReturnObject annotation. Additionally, the update includes error handling improvements and compromised password checks using Pwned Passwords API. The update also adds support for OAuth 2.0 Token Exchange, enabling clients to exchange tokens while retaining user identity.  
11
16. 16  
[](https://daily.dev/posts/maven-spotless-plugin-for-java-kkalonj34 "Maven Spotless Plugin for Java")  
Article  
![Avatar of baeldung](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/52cccfb454d946c4b7dfa5e816f9e576)Baeldung · 2y  
Maven Spotless Plugin for Java  
Learn to use the Maven Spotless Plugin for Java projects to enforce consistent code style. The tutorial covers minimal configuration with Google Java Style, customizing formatting rules using an Eclipse Formatter Profile, and adding additional static analysis steps. It also explains how to bind Spotless goals to specific Maven phases to ensure consistent code style checks during the build process.  
11
17. 17  
[](https://daily.dev/posts/function-calling-in-java-and-spring-ai-using-the-mistral-ai-api-fieajandf "Function Calling in Java and Spring AI Using the Mistral AI API")  
Article  
![Avatar of baeldung](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/52cccfb454d946c4b7dfa5e816f9e576)Baeldung · 2y  
Function Calling in Java and Spring AI Using the Mistral AI API  
The post discusses how to use function calling to integrate large language models (LLMs) with internal logic, focusing on the Mistral AI API. It includes detailed steps on retrieving an API key, making a basic API request, and more advanced usage with Spring Boot for easier setup. Examples demonstrate how to retrieve and use patient health statuses via the Mistral API, illustrating both single and multiple function calls.  
10

[See all Baeldung archives](/sources/baeldung/best-of)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@graph":[{"@type":"CollectionPage","@id":"https://daily.dev/sources/baeldung/best-of/2024/07#page","url":"https://daily.dev/sources/baeldung/best-of/2024/07","name":"Best Baeldung Posts — July 2024","description":"The most upvoted Baeldung posts from July 2024, curated by the daily.dev community.","isPartOf":{"@type":"WebSite","url":"https://daily.dev"}},{"@type":"ItemList","@id":"https://daily.dev/sources/baeldung/best-of/2024/07#items","numberOfItems":17,"itemListElement":[{"@type":"ListItem","position":1,"url":"https://daily.dev/posts/apache-kafka-tutorial-series-wovevnhgz","name":"Apache Kafka Tutorial Series"},{"@type":"ListItem","position":2,"url":"https://daily.dev/posts/returning-errors-using-problemdetail-in-spring-boot-ddl6uwcsf","name":"Returning Errors Using ProblemDetail in Spring Boot"},{"@type":"ListItem","position":3,"url":"https://daily.dev/posts/java-ides-in-2024-survey-results-ecsunl87k","name":"Java IDEs in 2024 – Survey Results"},{"@type":"ListItem","position":4,"url":"https://daily.dev/posts/protobuf-vs-grpc-nmej9etnm","name":"Protobuf vs. gRPC"},{"@type":"ListItem","position":5,"url":"https://daily.dev/posts/checking-if-an-array-is-null-or-empty-in-java-eyex16ubm","name":"Checking if an Array Is Null or Empty in Java"},{"@type":"ListItem","position":6,"url":"https://daily.dev/posts/sending-whatsapp-messages-in-spring-boot-using-twilio-gdo4w0jxj","name":"Sending WhatsApp Messages in Spring Boot Using Twilio"},{"@type":"ListItem","position":7,"url":"https://daily.dev/posts/why-the-order-of-maven-dependencies-is-important-mtzyesbh7","name":"Why the Order of Maven Dependencies Is Important"},{"@type":"ListItem","position":8,"url":"https://daily.dev/posts/how-to-sort-map-value-list-by-element-field-using-java-streams-sxkzfjuia","name":"How to Sort Map Value List by Element Field Using Java Streams"},{"@type":"ListItem","position":9,"url":"https://daily.dev/posts/getting-the-insert-id-in-jdbc-ivm5sw5h7","name":"Getting the Insert ID in JDBC"},{"@type":"ListItem","position":10,"url":"https://daily.dev/posts/intro-to-spotbugs-9jamqozvm","name":"Intro to SpotBugs"},{"@type":"ListItem","position":11,"url":"https://daily.dev/posts/list-all-files-on-the-remote-server-in-java-qkfedtzgw","name":"List All Files on the Remote Server in Java"},{"@type":"ListItem","position":12,"url":"https://daily.dev/posts/introduction-to-milvus-eytjr9wkn","name":"Introduction to Milvus"},{"@type":"ListItem","position":13,"url":"https://daily.dev/posts/difference-between-m2-home-maven-home-and-using-the-path-variable-ouxr8ms3t","name":"Difference Between M2_HOME, MAVEN_HOME and using the PATH variable"},{"@type":"ListItem","position":14,"url":"https://daily.dev/posts/validation-using-the-spring-validator-interface-lbdb64tao","name":"Validation Using the Spring Validator Interface"},{"@type":"ListItem","position":15,"url":"https://daily.dev/posts/spring-security-6-3-what-s-new-5cggetfbb","name":"Spring Security 6.3 – What’s New"},{"@type":"ListItem","position":16,"url":"https://daily.dev/posts/maven-spotless-plugin-for-java-kkalonj34","name":"Maven Spotless Plugin for Java"},{"@type":"ListItem","position":17,"url":"https://daily.dev/posts/function-calling-in-java-and-spring-ai-using-the-mistral-ai-api-fieajandf","name":"Function Calling in Java and Spring AI Using the Mistral AI API"}]},{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Sources","item":"https://daily.dev/sources"},{"@type":"ListItem","position":3,"name":"Baeldung","item":"https://daily.dev/sources/baeldung"},{"@type":"ListItem","position":4,"name":"Best of","item":"https://daily.dev/sources/baeldung/best-of"},{"@type":"ListItem","position":5,"name":"July 2024"}]}]}
```

