Skip to content
Episode from the podcast Foojay.io | Friends of OpenJDK and Java Programming
How Java Developers Can Secure Their Code (#58) artwork

Episode

How Java Developers Can Secure Their Code (#58)

Released Saturday, September 28th 2024 55 min

Show notes

About this episode

Three years after Log4Shell caused a significant security issue, we still struggle with insecure dependencies and injection problems. In this podcast, we'll discuss how developers can secure their code. I talked with three authors who posted a security and code quality post on Foojay.io.Guests     Jonathan Vila          https://www.linkedin.com/in/jonathanvila/          https://about.me/jonathan.vila          https://twitter.com/jonathan_vila      Brian Vermeer         https://www.linkedin.com/in/brianvermeer/          https://brianvermeer.nl/          https://twitter.com/BrianVerm      Erik Costlow          https://www.linkedin.com/in/costlow/           https://twitter.com/costlow   Content00:00 Introduction of topic and guests 01:35 Brian: Why is Log4Shell still around?    https://foojay.io/today/the-persistent-threat-why-major-vulnerabilities-like-log4shell-and-spring4shell-remain-significant/   03:24 Outdated dependencies are still used a lot 04:31 Who is responsible for dependency updates? 07:55 Snyk tools to help discover issues 10:15 Comparing to Dependabot 11:21 How to keep dependencies up-to-date 14:32 Responsibility to use dependencies with care 17:17 Looking forward to the JFall conference  18:48 About Foojay  19:49 Jonathan: Is SQL injection still a problem?    https://foojay.io/today/top-security-flaws-hiding-in-your-code-right-now-and-how-to-fix-them/  24:50 Deserialization injection 27:30 Logging injection 31:22 Even experienced developers make mistakes 33:17 About Sonar tools 35:53 Other articles by Jonathan    https://foojay.io/today/author/jonathan-vila/     https://foojay.io/today/ensuring-the-right-usage-of-java-21-new-features/ 38:20 Other security tools    https://www.youtube.com/watch?v=-wVCYj8oQUY 39:47 Erik: Trash Pandas are attracted by unused code    https://foojay.io/today/trash-pandas-love-enterprise-java-garbage-code/   43:01 How bad are insecure but unused libraries? 45:16 Problem of code only used by unit tests 47:15 Testing in differ...

More from Foojay.io | Friends of OpenJDK and Java Programming

All episodes

53 CVEs and Two Emergency Releases: Why Java Security Holds Up (#104)

44 min

A record 53 CVEs in one Java update, followed by two emergency releases within days. Yes, a lot of issues are being found, but Java is still strong: a whole community and the commercial distributors are behind every fix. In this episode, Simon Ritter, Deputy CTO at Azul, Java Champion and member of the OpenJDK Vulnerability Group, explains what happened over the past weeks and what it means for your applications. We cover how a vulnerability travels from a report to a patch, why AI is changing the number of fixes, and why you should be ready to update at any moment. If you want to understand how CVEs are handled behind the scenes and what the different types of security updates mean, this episode explains it. Topics include: What a CVE and a CVSS score really tell you, and why low scores can be chained into serious attacksHow vulnerabilities are kept secret and encrypted in the OpenJDK Vulnerability Group until a patch existsWhy the average of 7.6 CVEs per quarter jumped to 53, and the move toward monthly security updatesThe eMudhra certificate problem and the two out-of-cycle releases that followedThe backporting workload behind every supported Java version, from 27 down to 6CPU, PSU and CSPU explained, and what free versus paid OpenJDK builds mean for your patching Guest: Simon RitterDeputy CTO at Azul and Java ChampionSimon on LinkedIn Links: Full show notes with all linksFree Java, Real Risk: Why Unsupported OpenJDK Is Now a Security GambleAzul Zulu October 2026 Quarterly Update and Out-of-Cycle Release Timestamps:00:00 Introduction of topic and guest01:59 What is a CVE and how are they reported and handled?08:45 How the Java security release cycle is changing and each have more CVEs11:48 How AI impacts the discovery of CVEs14:09 What was the eMudhra problem causing two out-of-cycle security updates?21:49 The impact of creating an out-of-cycle update (and backports)26:05 How safe will OpenJDK builds be in the future? And dependencies?29:06 Free versus paid vers...

Killing Reflection at Build Time: Avro, Codename One and Java Codegen (#103)

44 min

Runtime reflection is a quiet tax on the JVM. It is flexible, it is everywhere, and it is easy to stop noticing it until you go looking for where your CPU is actually going. Two teams did exactly that, in completely different corners of the ecosystem, and arrived at the same answer: move the work to build time. In this episode, Dmitry Moskalyuk explains the model layer behind his Foojay article on reflection-free serialization, where JSON, XML, YAML and TOML all end up as Avro. Shai Almog explains the build-time codegen pipeline of Codename One, which aims for no reflection, no service loader and no Class.forName. We compare the two and ask whether generated code is really something to avoid. Topics include: Where Jackson's reflection cost really lives, and what Blackbird does about itJackson versus kotlinx.serialization, and why a missing feature sent the team back to JacksonWhy a UI framework bans reflection, and how that differs from the backendIs generated code bad? Lombok, Manifold and jOOQWhat Records and Project Leyden change for reflectionBuild time cost versus runtime cost, and a single source of truth for your data modelShould you still use reflection in a new project? Guests:Dmitry Moskalyuk, Senior Backend EngineerDmitry on LinkedInShai Almog, Author, DevRel and open source developer working on Codename OneShai on LinkedIn Links: Dmitry's article on FoojayShai's article on FoojayJackson BlackbirdApache AvroProject LeydenFull show notes with every link Timestamps:00:00 Introduction of topic and guests01:50 About the new Foojay, contributing with GitHub pull requests03:17 What is Apache Avro04:26 What is Codename One06:31 What is Blackbird in Jackson and compared to kotlinx mechanisms for different content parsers10:01 Why Codename One focuses on "no reflection, no service loader, no Class.forName"14:23 Is automatically generated code bad (Lombok, Manifold, JOOQ)?17:47 Java evolutions that bring improvements into the system (Records, Project Leyden)21:31 I...

We Left WordPress: CMS vs Static Sites, Hugo vs Jekyll vs Roq (#102)

38 min

Foojay.io quietly moved off WordPress and onto Hugo. No more CMS login, no database, no admin panel — just Markdown and AsciiDoc files, built and deployed straight from GitHub. So is a traditional CMS still the right way to run a content site in 2026, or has static tooling caught up? In this episode, Andy Damevin and Holly Cummins from the Red Hat Quarkus team join to talk through it. Andy created code.quarkus.io and Roq, Quarkus's own Java-based static site framework; Holly led the migration of quarkus.io itself from Jekyll to Roq. We go through the real security numbers behind WordPress's plugin ecosystem, and put very different static site generators head to head: Hugo and Jekyll, the veterans, versus Roq, the newcomer. Topics include: Why WordPress core is usually fine, and the plugins are where the trouble is — over 10,000 plugin vulnerabilities found since 2025What "recovery" means for a static site versus a CMS after a hack or defacementJekyll, Hugo, Roq and JBake compared, and why staying in Java matters (or doesn't)How to extend Roq as a Java developer, from a small PR to writing your own pluginWhat an actual WordPress-to-Roq migration looks like in practiceWhere a CMS still earns its keep despite all of this Guests: Andy Damevin on LinkedIn - Principal Software Engineer at Red Hat, Quarkus core team, creator of code.quarkus.io and Roq Holly Cummins on LinkedIn - Senior Principal Software Engineer, Red Hat Quarkus team, led the quarkus.io migration from Jekyll to Roq Links: Migrate from WordPress to RoqRoqHugoFull show notes Timestamps:00:00 Introduction of topic and guests03:29 Why WordPress is not the best choice for most sites04:36 Difference between CMS-driven websites and static websites07:02 Jekyll versus Roq and other systems11:04 How to extend Roq12:59 Moving from WordPress to Roq14:43 Pulling data with JBang or Roq from external sources into your publication process16:09 Why should I use Roq instead of Jekyll or Hugo?24:33 Static websites can be...

Java 27 in Practice: Smaller Heaps, Smarter Defaults, and Valhalla on the Horizon (#101)

57 min

Episode 101 of the Foojay Podcast. JDK 27 arrives on 15 September 2026 without finalising a single new piece of language syntax. It is still worth the upgrade: object headers shrink from 64 bits to 32, which the JEP measures at 22% less heap and 8% less CPU on SPECjbb2015, and G1 becomes the default garbage collector on every machine. Both changes live inside the JVM, so an application you compiled years ago picks them up with no code change at all. Simon Ritter, Deputy CTO at Azul and Java Champion, takes us through all nine JEPs in the release, explains why a non-LTS version is still worth testing against, and makes the point that "long-term support" describes the binary you download rather than anything in OpenJDK itself. We also cover the move from quarterly to monthly security updates that started in August 2026, and then look ahead to March 2027, when Project Valhalla reaches its first preview after roughly twelve years of work. Topics include: Compact object headers by default, and what 22% less heap actually buys you in productionPost-quantum key exchange in TLS 1.3, and the harvest-now-decrypt-later attack it defends againstJFR redaction: keeping access tokens and passwords out of flight recordings you shareStructured concurrency in its seventh preview, and why an evolving API stays in previewThe Vector API's twelfth incubation, and what it is waiting forValue Objects in Java 28: a new value keyword, 179,000 lines, 1,800 files, and why it will not be final in JDK 29Whether a Simple JSON API in the JDK will survive its previews, or go the way of string templates Guest: Simon RitterDeputy CTO at Azul, Java ChampionSimon on LinkedInSimon on Foojay Links:Full show notes, with every JEP linkedJDK 27What CSPUs Mean for Your Release PipelineWhat to Know About Garbage Collection as a Java Developer!Project Valhalla Timestamps:00:00 Introduction of the topic and guest01:27 How long Simon has been doing Java01:54 Why release 27 is important, even when not being a Lon...

Foojay Podcast #100: Java Podcasters on Why They Started, What Broke, and What They Learned (#100)

50 min

Episode 100 of the Foojay Podcast. No grand plan. It just happened. To mark the milestone, Frank turned the microphone around and invited other podcasters: Adam Bien (airhacks.fm), Jennifer Reif (Breaktime Tech Talks), Kadi McKean and Steve Pool (10xInsights), and Oumaima Zerouali (JCast). Same questions for each: why did you start, what broke, and what did you learn? Along the way: why a no-prep podcast works when you have 20 years of experience, the difference between writing a blog and recording a podcast, burnout from editing, AI tools that changed someone's voice into Batman, and why a Dutch Java podcast about the human side of development got its first episode from a calendar invite that became a recording. Guests: Adam Bien — airhacks.fmJennifer Reif — Breaktime Tech TalksKadi McKean and Steve Pool — 10xInsightsOumaima Zerouali — JCast Links: airhacks.fm on SpotifyBreaktime Tech Talks on Spotify10xInsights | 10xInsights on SpotifyJCastFoojay Podcast #67: Writing a book. Does it make you rich and famous?Foojay Podcast #71: 30 Years of Java with James GoslingFoojay Podcast #99: Testing the Untestable: LLM Security for Java Developers with TiberiusFrank on JCastOther podcasts mentioned:Spring Documentary Content: 00:00 Introduction 01:00 Adam Bien (airhacks.fm) 12:52 Jennifer Reif (Breaktime Tech Talks) 26:25 Kadi McKean and Steve Pool (10xInsights) 38:43 Quote by James Gosling 39:46 Oumaima Zerouali (JCast) 48:01 Conclusion Hosted by Frank Delporte | foojay.io

This podcast, its content and its artwork are not owned by, affiliated with, or endorsed by Castquire.

Up next

  1. Nothing queued. Use + Queue on any episode to line it up.

0:00 0:00