Ralph's Blog about this and that (RSS | Atom)

Consume Protocol Buffer messages with Ionic

Published: 14. January 2017  •  Updated: 1. December 2018  •  ionic, spring, java, javascript

Form validation with Angular and Spring Boot

Published: 26. January 2017  •  Updated: 4. December 2018  •  angular, ionic, spring, java, javascript

Example of form validation in an Ionic Angular application. How to create custom synchronous and asynchronous validators and how to validate data on the server with the Jakarta Bean Validation framework.

Produce RSS and Atom feeds with Spring framework

Published: 24. January 2017  •  Updated: 17. March 2026  •  spring, java

How to create RSS and Atom feeds with the Spring Framework and the ROME library

Protocol Buffers with Spring Integration

Published: 8. January 2017  •  Updated: 17. March 2026  •  java, spring

An introduction to Protocol Buffers, a binary data format developed by Google, and how to use it with Spring Integration

JWT Authentication with Ionic/Angular and Spring Boot

Published: 5. February 2017  •  Updated: 17. March 2026  •  ionic, spring, java, javascript

How to implement a JWT authentication system with Ionic/Angular and Spring Boot.

Server-Sent Events with Spring

Published: 5. March 2017  •  Updated: 17. March 2026  •  java, spring

What are Server-Sent Events and how can you send them from a Spring Boot application

Do it yourself MultiValueMap with Java 8

Published: 16. September 2017  •  Updated: 25. October 2017  •  java

How to create a simple MultiValueMap with Java 8

Pluggable file systems in Java

Published: 17. September 2017  •  Updated: 16. February 2018  •  java

How to use pluggable file systems in Java and a look at implementations outside the standard library

Spring Boot and Ionic application development with OpenAPI

Published: 21. September 2017  •  Updated: 4. December 2018  •  spring, java, javascript, ionic

In this blog, we create REST services in Spring Boot and consume them in an Ionic app. We use the OpenAPI specification for generating API documentation and the client TypeScript code.

Dynamically loading position data with Ionic and Spring Boot

Published: 5. November 2017  •  Updated: 3. December 2018  •  ionic, java, spring, javascript

In this blog post we create an Ionic app that dynamically requests location data points from a Spring Boot server and displays them on an OpenStreetMap map. The data points are stored in a MongoDB database, and we take advantage of the geospatial query support to read the data points only for a certain area.

Adding speech recognition to an Ionic App

Published: 18. December 2017  •  Updated: 17. March 2026  •  ionic, javascript, java, spring

In this blog post I present two different ways to integrate speech recognition functionality into an Ionic app: the Web Speech API and RecordRTC together with the Google Cloud Speech API.

Sending browser push messages from Spring Boot with Firebase Cloud Messaging

Published: 9. January 2018  •  Updated: 21. March 2026  •  java, javascript, pwa, spring

This blog post shows how to send browser push messages from a Spring Boot application with Firebase Cloud Messaging. The client uses a service worker, IndexedDB, and the current FCM token flow for web apps.

Access Server-Sent Events from Java

Published: 26. February 2018  •  java

How to consume Server-Sent Events in a Java application.

Human-readable regular expressions

Published: 27. February 2018  •  java, javascript

Writing human-readable regular expressions with the VerbalExpressions library

Real-Time Polling App with Java and JavaScript

Published: 28. February 2018  •  Updated: 22. March 2026  •  java, javascript

Build a simple polling application with Spring Boot, Vite, JavaScript, and server-sent events, and update the results live in an ECharts pie chart.

Working with MongoDB Capped Collections from Java

Published: 4. February 2018  •  Updated: 21. March 2026  •  mongodb, java, database

A practical overview of capped collections in MongoDB and how to use them from Java

Working with MongoDB TTL Indexes from Java

Published: 5. February 2018  •  Updated: 21. March 2026  •  database, mongodb, java

A practical introduction to TTL indexes in MongoDB and how to use them from Java

Searching "Have I Been Pwned?" passwords locally with Java

Published: 1. March 2018  •  Updated: 21. March 2026  •  java

In this blog post, we're going to build Java applications that download, import, and search the "Have I Been Pwned?" password corpus locally.

Check for Commonly Used or Compromised Passwords

Published: 3. May 2018  •  Updated: 21. March 2026  •  java, javascript

In this blog post, I present examples that check passwords against commonly used and compromised password datasets.

OAuth 2.0 server-to-server authorization flow between a Java application and a Google service

Published: 1. May 2018  •  java

How a Java server application can authenticate with a Google service account and call a Google API

A closer look at the Background Sync API

Published: 26. June 2018  •  pwa, javascript, java, spring, ionic

This blog post takes a closer look at the Background Sync API, shows how to use it as a progressive enhancement, and presents an example that synchronizes data between an Ionic web application and a Spring Boot server application.

Text to Speech with Google Cloud Text-to-Speech

Published: 4. October 2018  •  java, javascript

Converting text from a web application into speech with Google Cloud Text-to-Speech

Google Cloud Vision and Storage example with Ionic and Spring Boot

Published: 11. December 2018  •  java, spring, ionic, javascript

This post shows how to upload images from an Ionic web application directly to Google Cloud Storage with V4 signed URLs and analyze them with Google Cloud Vision from a Spring Boot back end.

Building a simple neural network with Java and JavaScript

Published: 23. December 2018  •  java, javascript

Building a simple feedforward neural network in Java and JavaScript, training it with MNIST, and using the exported weights for browser-based digit recognition

A closer look at the Java 11 HTTP Client

Published: 23. January 2019  •  java

In this blog post, we will take a closer look at the new HTTP Client introduced in Java 11.

Getting started with jOOQ, Flyway, and Spring Boot

Published: 31. January 2019  •  java, spring

In this blog post, we are going to set up a Spring Boot application with jOOQ and Flyway

JavaScript BigInt and JSON

Published: 4. January 2019  •  javascript, java

How to serialize and deserialize JavaScript BigInt values in JSON in a full-stack application with Spring Boot

Spring Boot with TLS and HTTP/2 on localhost

Published: 9. January 2019  •  java

In this blog post, we set up a private root CA with mkcert on our local development machine, create a TLS certificate, and enable Spring Boot to use TLS and HTTP/2. We also learn how to configure Charles, an HTTP proxy, to trust this private root CA.

Directory watching with Java

Published: 1. February 2019  •  java

In this blog post, we take a look at Java's ability to monitor directories for changes, a feature that was introduced in Java 7 in 2011.

Stateless Authentication with Spring Security

Published: 15. May 2019  •  java, spring, ionic

This post implements a stateless authentication system with Spring Security, Spring Boot, and an Angular/Ionic client

Password auto-login with the Credential Management API

Published: 13. June 2019  •  java, javascript, spring, ionic

How to create a frictionless password auto-login experience with the Credential Management API.

Exposing build information of Spring Boot and Angular applications

Published: 12. June 2019  •  java, spring, javascript

How to expose version numbers, build timestamps, and Git metadata in Spring Boot and Angular applications

Spring Security second-factor authentication with TOTP

Published: 21. June 2019  •  Updated: 5. April 2020  •  java, spring

In this blog post, you learn how to build an authentication system with Spring Security that uses username/password and TOTP (Time-based One-Time Password) as a second factor

Reliable file uploads over HTTP with tus.io

Published: 11. June 2019  •  Updated: 19. March 2026  •  java, javascript, spring, ionic

How to integrate tus.io implementations into JavaScript and Java applications to create reliable and resumable file uploads over HTTP.

Uploading pictures from Capacitor app to Spring Boot

Published: 11. June 2019  •  Updated: 19. March 2026  •  java, spring, javascript, ionic, capacitor

How to take pictures with the Capacitor camera plugin and upload them to a Spring Boot application with Angular's HttpClient and tus.io.

Variable length integers

Published: 18. June 2019  •  java

How to encode fixed 4-byte Java integers into a variable-length format that uses less space.

Catch-all SMTP servers for development and testing

Published: 9. August 2019  •  java

How to use catch-all SMTP servers for development and testing email delivery. In this blog post, we look at 5 different catch-all SMTP servers and a JUnit 5 example with an embedded catch-all SMTP server.

Entity auditing with Hibernate Envers

Published: 5. August 2019  •  java

Hibernate Envers adds audit history to Jakarta Persistence entities and lets you query historical revisions with a small amount of code.

Git with JGit

Published: 4. August 2019  •  java

In this blog post, we take a look at JGit, a pure Java implementation of Git.

A look at JSR 374 - Java API for JSON Processing (JSON-P)

Published: 29. August 2019  •  java

In this blog post, we are going to take a look at the JSON-P (JSR 374) standard for processing JSON in Java.

Rate limiting Spring MVC endpoints with bucket4j

Published: 7. August 2019  •  Updated: 20. March 2026  •  java, spring

How to rate limit Spring MVC HTTP endpoints with bucket4j

Creating a passwordless sign-in with WebAuthn, Spring, and Ionic/Angular

Published: 25. August 2019  •  Updated: 20. March 2026  •  javascript, java, spring, ionic

In this blog post, we build a passwordless sign-in flow with WebAuthn, an Ionic / Angular front end, and a Spring Boot back end secured with Spring Security.

Sending Web Push Notifications with Java

Published: 13. August 2019  •  java, javascript

Sending Web Push notifications from a Java back end to a web browser

Push Notifications with Capacitor and Java

Published: 3. April 2020  •  Updated: 20. June 2021  •  ionic, spring, javascript, capacitor, java

In this blog post, we take a closer look at how to receive push notifications with Capacitor and how to send them from a Spring Boot application.

Exchange Protocol Buffers messages between JavaScript and Java

Published: 4. April 2020  •  Updated: 20. May 2021  •  javascript, java

In this blog post, we are going to take a look at how to send Protocol Buffers messages from an Angular app to a Spring Boot backend.

Present photos on Google Maps

Published: 2. May 2020  •  Updated: 15. March 2026  •  javascript, java

In this tutorial, I show you how to develop a web application that presents your holiday photos on Google Maps.

Add CAPTCHA to your site with hCaptcha

Published: 1. May 2020  •  Updated: 20. May 2021  •  javascript, java, ionic, angular

This blog post shows you how to integrate hCaptcha CAPTCHAs into a plain JavaScript project and Angular projects, with a Spring Boot back end.

Small changes in Java 12 to 17

Published: 12. May 2020  •  Updated: 31. August 2025  •  java

A summary of interesting small changes in the Java standard library and the language in Java 12 to 17.

Small changes in Java 18 to 21

Published: 12. May 2020  •  Updated: 31. August 2025  •  java

A summary of interesting small changes in the Java standard library and the language in Java 18 to 21.

Small changes in Java 9 to 11

Published: 12. May 2020  •  Updated: 31. August 2025  •  java

A summary of interesting small changes in the Java standard library and the language in Java 9 to 11.

Upgrade password hashes with Spring Security

Published: 4. May 2020  •  Updated: 21. May 2021  •  java, spring

A closer look at Spring Security's support for upgrading password hashes

Java application as Windows Service

Published: 6. May 2020  •  java

How to install any Java application as a Windows service with WinSW

Java Switch Expression in Java 14

Published: 20. November 2021  •  java

An overview of the switch enhancements introduced in Java 14.

Sending Protocol Buffers messages over SQS

Published: 15. January 2022  •  go, java, aws

In this blog post, I show you how to send and receive Protocol Buffers messages over Amazon Simple Queue Service (SQS). The examples of producers (send) and consumers (receive) are written in Java and Go.

Push notifications with Angular and Java

Published: 6. August 2023  •  angular, java

In this blog post, I show you how to implement a web application with Angular that receives push notifications and a back end with Java that sends push messages. It uses the standard Push API supported by all major browsers.

Tool/Function Calling with Spring AI

Published: 29. January 2025  •  java, spring, llm

A look at Spring AI's support for Tool/Function calling. How to write your own tools and integrate them into your Spring AI application.

Entity auditing with JaVers in jOOQ/Spring Boot application

Published: 21. July 2025  •  java

In this blog post, I will show you how to integrate JaVers into a jOOQ/Spring Boot application for auditing of object changes.

MongoDB Schema Validation with Java

Published: 30. July 2025  •  java, mongodb

How to use MongoDB schema validation in Java applications to ensure data integrity and consistency.

ShedLock - Prevent Concurrent Execution of Scheduled Methods in Spring Boot

Published: 16. July 2025  •  java, spring

How to use ShedLock to prevent concurrent execution of scheduled methods in a Spring Boot application.

Cache support in Spring Boot

Published: 28. July 2025  •  java, spring

This post takes a look at the caching support in Spring Boot, including setup, pitfalls, key generation, and advanced configuration options.

Xodus, an embedded database running in the JVM

Published: 29. July 2025  •  java

Xodus is a high-performance, embedded database developed by JetBrains. In this blog post we will explore the key features of Xodus and how to use them in Java.

Methanol - A convenient extension of the Java HTTP client

Published: 2. August 2025  •  java

In this blog post, I will introduce you to Methanol, a library that extends the standard Java HTTP client to make it more convenient to use. Methanol also introduces new features like caching and interceptors.

Getting Started with MQTT Using Go and Java

Published: 6. August 2025  •  java, go

This article provides an overview of the MQTT protocol, its basic features, and how to use it in Go and Java applications. It covers topics such as publish/subscribe model, message payloads, topics, quality of service (QoS), retained messages, persistent sessions, and more.

mTLS with Spring Boot and Spring Security

Published: 13. August 2025  •  java, spring

Implementing Mutual TLS (mTLS) with Spring Boot and Spring Security for secure client-server communication.

Small changes in Java 22 to 25

Published: 10. September 2025  •  java

A summary of interesting small changes in the Java standard library and the language in Java 22 to 25.

JSON-B (JSR 367) - Java API for JSON Binding

Published: 10. September 2025  •  java

A look at JSON-B (JSR 367), the Java API for JSON Binding, which provides a standard way to convert Java objects to and from JSON.

Using Jackson @JsonView for Multiple JSON Representations

Published: 10. September 2025  •  java

Implementing different JSON views with Jackson's @JsonView annotation in Java.

Getting started with the Java Class-File API (JEP 484)

Published: 9. March 2026  •  java

Introduction to the Java Class-File API, an API introduced in JDK 24 that provides a standard way to parse, generate, and transform Java class files.

Small changes in Java 26

Published: 17. March 2026  •  java

A summary of interesting small changes in Java 26.

A look at Spring Expression Language (SpEL)

Published: 6. March 2026  •  java, spring

Spring Expression Language (SpEL) is an expression language from the Spring ecosystem that can be used in any Java application. In this article, we will explore the features of SpEL and how to use it as a base for a simple rule engine.

Integrate gRPC with Spring Boot

Published: 6. March 2026  •  java, spring

Learn how to integrate gRPC into a Spring Boot application using the Spring gRPC project.

Stream Gatherers in the Java Stream API

Published: 5. March 2026  •  java

An introduction to Stream Gatherers introduced in Java 24, which allow you to write custom intermediate operations in the Stream API with state and complex logic.

Code Mode for Tool Calling in Java

Published: 7. April 2026  •  llm, java

Code mode is a way to use tools that can save context tokens and reduce the number of request/response cycles by incorporating a tool search and letting the model write code that orchestrates tool calls. This blog post explores the code mode pattern and shows how to implement it in Java.

OAuth 2.0 authorization code flow with PKCE in a Spring Security BFF

Published: 16. April 2026  •  java, spring

In this blog post, we are going to look at a complete BFF (Backend-for-Frontend) implementation with Spring Security that uses the OAuth 2.0 authorization code flow with PKCE to log users in, maintain a server-side session, and serve protected data.