Languages & Runtimes

Languages & Runtimes

We're actively working on this page.

Scope

This section covers the core programming languages used for development and the runtime environments (e.g., JVM) they execute on. It specifies which languages and versions are standard, which are being explored, and which are being phased out for our back-end and mobile applications.

Overview

ADOPT

Proven technologies we have high confidence in; our default choices.


Java 21 (LTS)

TRIAL

Promising technologies to explore and evaluate for adoption.


Kotlin (for Mobile)

ASSESS

Interesting technologies requiring investigation.


Kotlin (for Back-end)

Java 25 (LTS)

HOLD

Not recommended for new work; plan migration from existing uses.


Java 8/17/11 (LTS)

Technologies Breakdown

Java 21 (LTS) ADOPT

As our designated Long-Term Support (LTS) version, Java 21 is the standard for all new back-end projects. It provides stability, long-term security updates, and access to modern language features that enhance developer productivity and code quality.


Kotlin (for Mobile) TRIAL

We are actively trialing Kotlin in the migration of a major mobile application from Java. Its modern syntax and safety features are proving valuable, and this initiative is successfully building our internal Kotlin expertise.


Kotlin (for Back-end) ASSESS

Leveraging our growing in-house skills from mobile development, we are assessing Kotlin for new back-end services. Its seamless Java interoperability, concise syntax, and excellent support within the Spring ecosystem make it a strong candidate for future microservice development.


Java 25 (LTS) ASSESS

With its scheduled release in September 2025, Java 25 is the next Long-Term Support (LTS) version. We are placing it in Assess to proactively evaluate its key features, particularly the maturation of Virtual Threads (Project Loom) and other language enhancements. The goal is to build proofs-of-concept to understand the performance benefits for our applications and the effort required for a potential migration from our current standard, Java 21.


Java 8/17/11 (LTS) HOLD

Java 8/17/11 is restricted to legacy projects currently in maintenance. While stable, it lacks significant language improvements available in modern LTS versions. No new projects should be started on Java 8, and existing applications should be considered for future migration to Java 21.