Josh Long

A Spring Developer Advocate, Java Champion, Kotlin Google Developer Expert, author of numerous books, best-selling video trainer, open-source contributor, podcaster and YouTuber: hi, Spring fans! 👋

Get to know me
Josh Long, in a Spring t-shirt, arms crossed and smiling

Recent Posts

You can use Lucene queries like : content: "paris" AND title:"2019"

Fixing the issue where macOS fails to sync contacts

The title says it all. I've got two Apple laptops. I've got an iPhone and an iPad and a Watch. The "oldest" laptop is from 2024. Not that old, I know, but in the intervening years I've changed the email associated with my Apple ID. Apparently their systems for contacts propagation (e.g., my list of phone numbers) rely on the old username being the same as the new one. (Why?) So I was getting text messages on the older Mac from people whose names weren't showing up. They showed up correctly on all the devices signed into the same Apple account using the new username (the newer email). Just not here. So I was getting the messages, but the contacts weren't syncing. I tried the usual: System Settings -> iCloud -> toggle Contacts. Nothing.

Updating SDKMAN to see your favorite new shiny JDK

Sigh. SDKMAN.io has gone from being one of my favorite tools to being this never ending disappointment. What process could result in buildings taking this long to show up? It sometimes lags days behind a given JDK's release. Case in point, one OpenJDK distriution, GraalVM, has been available for days but is still not available in SDKMAN. So, while we wait. Here's how you can install the JDK on your own system. I'm assuming you're using macOS.
The Java Documentary

The Java Documentary

The Java Documentary debuted and I was honored to have been a part of it. I was privileged enough to join the actual legends and luminaries on the Java team for a screening at the premiere of the Java Documentary last night. What a night!

The IntelliJ IDEA Documentary

The folks at CultRepo, the studio that put, among other things, the amazing Kubernetes documentary and countless others, has just put out a documentary on Jetbrains (and my favorite IDE, IntellIJ IDEA) and I had the great privilege of being in it!

Building a Hybrid Search Engine with JDBC and PostgreSQL

When building modern search functionality, developers often reach for specialized search engines like Elasticsearch or Solr. But what if you could build a sophisticated, production-grade search engine using just JDBC and PostgreSQL? This article explores a fascinating implementation that combines vector embeddings, full-text search, and fuzzy matching—all powered by PostgreSQL's rich ecosystem of extensions.

More posts

A Bootiful Podcast

I run a podcast called A Bootiful Podcast, a celebration of the heroes that drive the Spring and Java ecosystems. It's also on Twitter (@BootifulPodcast). Here are the episodes.
Atomikos founder Guy Pardon on distributed transactions, data integrity, and more
Latest episode

Atomikos founder Guy Pardon on distributed transactions, data integrity, and more

Hi, Spring fans! Tired of worrying whether your data is actually correct? In this episode, we dive into the world of distributed transactions with Guy Pardon, founder of Atomikos, and unpack the technology that keeps mission-critical systems consistent when one database, one message broker, or one service call just isn’t enough. If you’ve ever wondered how banks move money safely, how insurance systems protect claim data, or how modern Spring apps can get enterprise-grade transaction guarantees without an application server, this conversation is for you. We explore why XA still matters, how two-phase commit really works, when you should use distributed transactions, and why compensating logic and “eventually consistent” workarounds aren’t always enough. We also talk about Atomikos itself: the open source core, the premium observability and support features, cloud-friendly log storage, Spring Boot integration, and how it helps teams build reliable systems that just work. If you care about data integrity, resilience, and making sure “committed” really means committed, don’t miss this one.

CoffeeSoftware

I stream almost every day about whatever happens to be going through my head on my personal Youtube channel, @CoffeeSoftware. Most of the time it works out. Subscribe and come join the fun.

Books

I've authored, or co-authored, six books so far, and I'm working on two more: Secure All The Things! (with Spring Security) and Bootiful Spring AI with James Ward. You can read the first on Leanpub and sign up there for updates on the second.

Secure All The Things! (with Spring Security)

I'm working on a new book about securing Spring Boot applications wherever they run. We'll start with authentication, authorization, and OAuth, then use Spring Security and Spring Authorization Server to secure HTTP, MCP, gRPC, desktop, CLI, and messaging applications.

See them all

Apress' Spring Recipes
Secure All The Things! (with Spring Security)
Bootiful Spring AI

Spring Tips

I run a Youtube series called Spring Tips (@SpringTipsLive). Want to learn about the latest-and-greatest aspects of the Spring ecosystem? You're in luck! On (almost) every Wednesday (give or take a few hours or days, timezones and production schedule permitting...), I look at some corner of the wide and wonderful world of Springdom.

Livelessons

I love working with the Livelessons teams! We have put together a lot of in-depth, online, courses on various things Spring since 2013. I'm usually the instructor, but on occasion I've been lucky enough to have been able to persuade some of my friends and heroes to collaborate with me, and the results are the stuff of legend. Check them out!

Cloud Native Java Livelessons (with Kubernetes)

Spring Boot is the most efficient and productive way to get to production and these days, as often as not, production is Kubernetes. Join me, and we'll look at how to applications that survive and thrive in the cloud, an on Kubernetes, in particular.

See them all

Cloud Foundry Livelessons
Cloud Native Java Livelessons (with Kubernetes)
Reactive Spring Boot Livelessons (3rd Edition)