---
title: "Java"
description: "34 posts about Java, summarised, each linking to the original."
---

# Java
> 34 posts about Java, summarised, each linking to the original.

## Articles

### [Long Story Short: I Found My Place Between Code and Community](https://yomu.fyi/post/long-story-short-i-found-my-place-between-code-and-community.md)
- Company: [Okta](https://yomu.fyi/company/okta.md)
- Author: Aasawari Sahasrabuddhe
- Published: Jun 24, 2026
- Type: Announcement

Aasawari Sahasrabuddhe describes moving from backend software development into developer relations after finding that coding alone felt incomplete. Her DevRel work combines community engineering, content creation, strategy, workshop building, technical writing, hands-on workshops, and public speaking, while retaining a technical base in Java, Quarkus, and Spring Boot. She also discusses deeper interests in containers, Kubernetes, Docker, CI/CD, and GitOps, along with recognition as a MongoDB Champion for community contributions. The announcement introduces her move to Okta, where she wants to examine the intersection of identity, security, and AI, including how identity supports trust, access, and governance for AI systems. She frames this role as a way to stay close to community while continuing to work with code and content.


### [Modern Java at Stripe: Language upgrades as a service](https://yomu.fyi/post/modern-java-at-stripe-language-upgrades-as-a-service.md)
- Company: [Stripe](https://yomu.fyi/company/stripe.md)
- Author: Mahib Hosain
- Published: May 27, 2026
- Type: Problem & solution

Large JVM codebases often stall Java upgrades because build-graph constraints require coordinated changes across many owners, while manual scripts and stale inventories repeatedly rediscover blockers. Stripe built AutoJDK to continuously analyze the live build graph, compute eligibility using reverse-dependency, runtime, framework, and dependency-ordering constraints, and generate bounded, idempotent pull requests rather than opaque rewrites. It also tracks adoption and blocker categories, uses AI assistance for selected remediation tasks, and can operate continuously or on specified packages and services. Centralized JDK and runtime policy, CI checks, multi-JDK support, static analysis, and packaging applications with platform-specific JDKs support gradual transitions. After three months, the upgrader had merged more than 160 PRs, made JDK 17 the most common target, eliminated Java 8 services, and reduced the JDK 8 and 11 footprint by roughly 25K targets.


### [National Australia Bank accelerates legacy migrations with Cursor](https://yomu.fyi/post/national-australia-bank-accelerates-legacy-migrations-with-cursor.md)
- Company: [Cursor](https://yomu.fyi/company/cursor.md)
- Author: Cursor
- Published: Apr 23, 2026
- Type: Problem & solution

NAB standardized 6,000 developers on Cursor after evaluating Amazon Q and GitHub Copilot, and is expanding access to more than 10,000 technology employees. The bank uses Cursor across legacy modernization and new development: BizCalc's Silverlight/.NET monolith is being refactored into Java microservices and React, while Assembly-based core-banking programs are being migrated using generated flowcharts and business summaries. Engineers use Ask Mode, Plan Mode, custom NAB CEL skills, Composer, and Opus coding models to document systems, produce requirements and API specifications, parallelize implementation, and test changes. NAB reports that both modernization efforts are progressing three times faster than expected, while a hardware-agnostic payment app was built in under three weeks rather than four months; one team reported a 5–8x velocity improvement.


### [Modernizing Core Insurance Systems: Breaking the Batch Bottleneck](https://yomu.fyi/post/modernizing-core-insurance-systems-breaking-the-batch-bottleneck.md)
- Company: [MongoDB](https://yomu.fyi/company/mongodb.md)
- Author: Vinod Bagal, Jagpreet Singh
- Published: Sep 18, 2025
- Type: Problem & solution

Migrating core insurance platforms from legacy relational databases with PL/SQL to Java and MongoDB Atlas frequently degrades batch processing performance. Like-for-like migrations can cause batch jobs to run 25 to 30 times slower due to high network round-trips, inefficient per-record operations, and under-utilized bulk capabilities. To resolve these bottlenecks, an optimization framework was developed that leverages MongoDB native bulkWrite operations, intelligent reference data prefetching, and parallel execution. An architecture combining a Spring Boot controller and a dedicated executor framework partitions workloads across threads or event processors. This framework recovered lost performance, completing previously failing batch jobs within service-level agreements and achieving 10 to 15 times better execution speeds than legacy systems in certain workloads.


### [Simplifying JVM App Development with Heroku’s Buildpack Magic](https://yomu.fyi/post/simplifying-jvm-app-development-with-heroku-s-buildpack-magic.md)
- Company: [Heroku](https://yomu.fyi/company/heroku.md)
- Author: Andrew Fawcett
- Published: Mar 24, 2025
- Type: Explainer

Heroku’s Java buildpacks simplify JVM application deployment by detecting project languages and frameworks, fetching build tools, and configuring runtime settings automatically. They support Spring Boot, Quarkus, and Micronaut by inspecting Maven or Gradle build definitions, packaging applications, selecting framework-specific runner commands, and mapping service variables such as SPRING\_DATASOURCE\_URL, SPRING\_REDIS\_URL, DATABASE\_URL, and JDBC\_DATABASE\_URL. In many cases, a Procfile is unnecessary because the buildpack can identify the executable JAR and provide a default web process, while Quarkus and Micronaut receive their respective runner JAR and port settings. Heroku also automatically attaches a lightweight JVM agent for runtime metrics, including memory usage and garbage collection, and offers similar buildpack support for Scala and Clojure through sbt and Leiningen.


### [Canva incident report: API Gateway outage](https://yomu.fyi/post/canva-incident-report-api-gateway-outage.md)
- Company: [Canva](https://yomu.fyi/company/canva.md)
- Author: Brendan Humphreys
- Published: Dec 20, 2024
- Type: Incident / postmortem

On November 12, 2024, canva.com suffered an outage lasting approximately one hour due to cascading API Gateway failures. The disruption began when a stale Cloudflare routing rule induced severe latency and packet loss between Ashburn and Singapore during an editor asset deployment. Cloudflare's concurrent streaming mechanism consolidated over 270,000 user requests for a single delayed JavaScript chunk; when the asset finally loaded, clients simultaneously generated a 1.5 million requests-per-second thundering herd to Canva's API Gateway. This surge collided with a telemetry performance regression involving lock contention on Netty event loop threads, exhausting off-heap memory and causing the Linux Out Of Memory Killer to terminate API Gateway containers. Canva mitigated the failure by temporarily blocking all traffic at the CDN level, stabilizing replacement Amazon ECS tasks, and gradually restoring traffic under strict rate limits.


### [How to Create an AI Agent With Heroku and Agentforce](https://yomu.fyi/post/how-to-create-an-ai-agent-with-heroku-and-agentforce.md)
- Company: [Heroku](https://yomu.fyi/company/heroku.md)
- Author: Andrew Fawcett
- Published: Oct 17, 2024
- Type: Tutorial

The post shows how to extend Salesforce Agentforce with a Heroku-hosted custom action when customer information remains in older, unstructured cloud archives and requires scalable, real-time processing. It explains that Agentforce selects discrete actions, while Heroku exposes code through External Services using an OpenAPI description of the request and response. The sample uses Java and Spring Boot, an H2 in-memory database, springdoc.org for OpenAPI generation, and Spring AI to convert natural-language questions into SQL before returning results for an Agentforce response. The integration is identified as pilot-only and not intended for production, while the post also points to Heroku Postgres, Heroku Connect, Data Cloud, and pgvector as extensions for other agent use cases.


### [New zoom freezing feature for Geohash plugin](https://yomu.fyi/post/new-zoom-freezing-feature-for-geohash-plugin.md)
- Company: [Grab](https://yomu.fyi/company/grab.md)
- Author: Maria Mitisor
- Published: Feb 21, 2023
- Type: Problem & solution

Grab introduced a zoom freeze capability to its Geohash plugin for the Java OpenStreetMap Editor (JOSM). Previously, zooming in or out forced the plugin to calculate and render new geohashes automatically, causing visual clutter when users needed to focus on a specific region. The updated interface introduces a toggle label allowing editors to switch between enabling and disabling zoom freezing. While frozen, the current geohash boundaries remain locked during map scaling, and options to show smaller or larger geohashes are disabled. Disabling the feature instantly updates the display with the appropriate geohash subdivisions for the current zoom level.


### [7 Tips For Optimizing Apache Flink Applications](https://yomu.fyi/post/7-tips-for-optimizing-apache-flink-applications.md)
- Company: [Shopify](https://yomu.fyi/company/shopify.md)
- Author: 2023-10-18
- Published: Mar 8, 2022
- Type: Tutorial

Shopify presents lessons from operating large, stateful Apache Flink applications on Kubernetes with Google Kubernetes Engine, RocksDB, and checkpoints and savepoints stored in Google Cloud Storage. The guidance begins with profiling tools, including async-profiler, VisualVM, jemalloc with jeprof, and Eclipse Memory Analyzer, to investigate CPU, heap, native-memory, and leak-related problems. Disabling Kryo fallback exposed unsupported serializers such as Scala BigDecimal and Scala algebraic data types; replacing them with supported alternatives increased throughput by 20 percent. The post also recommends separate configuration profiles for high-throughput backfills and low-latency steady state, while describing a RocksDB native-memory failure in which disabling the block cache stopped repeated out-of-memory crashes without affecting application performance.


### [Understanding Programs Using Graphs](https://yomu.fyi/post/understanding-programs-using-graphs.md)
- Company: [Shopify](https://yomu.fyi/company/shopify.md)
- Author: 2023-10-18
- Published: Jun 2, 2020
- Type: Explainer

TruffleRuby uses a sea-of-nodes graph as an intermediate representation after parsing, allowing its just-in-time compiler to optimize Ruby programs and translate them to machine code. The explanation contrasts this graph with an abstract syntax tree, then shows how control flow, data flow, side effects, pure computations, loops, and phi nodes are represented through boxes and arrows. A three-way conditional demonstrates global value numbering: a repeated multiplication becomes one movable computation that can float across branches without changing program behavior. A loop example shows backward control flow and repeated functional computation, while the discussion weighs graph-based optimization against poor compactness and readability at larger scales. Shopify is building graph-drawing and Ruby decompilation tools to inspect optimization at codebase scale.


### [Ten Ways to Secure your Applications](https://yomu.fyi/post/ten-ways-to-secure-your-applications.md)
- Company: [Heroku](https://yomu.fyi/company/heroku.md)
- Author: Joe Kutner
- Published: Feb 21, 2019
- Type: Explainer

The post, adapted from Joe Kutner’s Devoxx 2018 talk, presents ten ways to strengthen web application security, with examples focused on Java but applicable to modern languages. It recommends keeping dependencies current, validating explicit payloads with schemas, checking regular expressions for ReDoS, throttling abusive requests, and keeping credentials outside the codebase. It also advises secure-first coding, certificate validation for outgoing connections, logging security-relevant actions without recording secrets, and monitoring suspicious behavior with tools such as AppSensor. The examples include Maven Versions Plugin, Snyk, Bucket4j, saferegex, environment variables, and EnvKeyStore, with a token-bucket algorithm proposed for request throttling. The conclusion is that security requires anticipating unintended functionality across network, platform, and physical domains, while these practices provide a starting point.


### [Mohammed Ridwanul Islam: How Mentorship, the T Model and a Pen Are the Keys to His Success](https://yomu.fyi/post/mohammed-ridwanul-islam-how-mentorship-the-t-model-and-a-pen-are-the-k.md)
- Company: [Shopify](https://yomu.fyi/company/shopify.md)
- Author: Toni Akinwumi
- Published: Oct 3, 2018
- Type: Explainer

Mohammed Ridwanul Islam's career story connects his upbringing in Noakhali, Bangladesh, varied work and music experience, and interest in engineering with his current role on Shopify's Eventscale team. He describes how trying to build a game led him to write C# and later study Electrical Engineering at the University of Waterloo, where an internship became a full-time position. Eventscale develops tools, libraries, and infrastructure for collecting event-oriented streaming data across web, backend, and mobile platforms, supporting analytics and operational needs. Mentorship during a difficult team project taught him project management concepts, while habits, VIM, Java, and writing designs on paper shape his working practices. His advice is to build broad competence alongside deep expertise, and to prioritize problem-solving, values, social impact, and continued growth.


### [Kafka Streams on Heroku](https://yomu.fyi/post/kafka-streams-on-heroku.md)
- Company: [Heroku](https://yomu.fyi/company/heroku.md)
- Author: Jeff Chao
- Published: Dec 19, 2017
- Type: Tutorial

Kafka Streams on Heroku shows how to organize, deploy, and scale Java stream-processing services using Kafka Streams, Apache Kafka, and the Heroku Runtime. The example contains a Text Processor that splits input from a textlines topic into words, an Aggregator that counts words in 10-second windows before writing to Postgres, and an independent Anomaly Detector that routes 10-second login-failure counts to urgent alerts or non-urgent email based on thresholds. A Gradle multi-project setup packages each service as an executable and uses a Procfile to run them as separate Heroku workers, while managed Kafka supplies the event-streaming infrastructure. Scaling is explained through Kafka partitions and Kafka Streams Stream Tasks: Stream Threads provide vertical scaling, dyno counts provide independent horizontal scaling, and Kafka Streams redistributes tasks when workers change or fail.


### [In the Cloud, No One Can Hear Your OutOfMemoryError](https://yomu.fyi/post/in-the-cloud-no-one-can-hear-your-outofmemoryerror.md)
- Company: [Heroku](https://yomu.fyi/company/heroku.md)
- Author: Joe Kutner
- Published: Oct 2, 2017
- Type: Announcement

Heroku introduces Heroku Exec and Language Runtime Metrics to improve production monitoring, inspection, and debugging for applications running on dynos. Heroku Exec creates secure TCP and SSH tunnels for SSH sessions, port forwarding, remote debugging, and diagnostic tools, while the Heroku Java CLI integrates jmap and VisualVM. A synthetic Java memory-leak example shows VisualVM tracking heap growth and jmap producing a downloadable HPROF heap dump that Eclipse Memory Analyzer identifies as Servlet-held FakeLeak objects. The metrics feature, enabled through the Heroku Metrics buildpack on paid Standard-or-above dynos, displays heap, non-heap, and garbage-collection activity in the dashboard through a Java agent using Prometheus; JVM-language support is generally available, while Go support is in beta.


[Newer posts](https://yomu.fyi/topic/java.md)
