Skip to main content

VirtusLab's Articles

Backend Engineering|May 7, 2025

Why Java on ARM is gaining momentum

Java has come a long way on ARM. Runtime improvements, smarter garbage collectors, and better vector performance now make it a solid fit. CI/CD pipelines work without extra effort. This guide walks through: - real-world benchmarks - examples from AWS and Google Cloud - gives hands-on advice for tooling, deployment, and compatibility If you're weighing cost, speed, or sustainability, this will help you judge whether a move to ARM makes sense—and how to pull it off cleanly.

Why_Java_on_ARM_Is_Gaining_Momentum_image
Scala|Jul 18, 2024

Scala to WebAssembly: How and Why

WebAssembly (Wasm) is a binary instruction format that offers a compact and efficient way for executing code across diverse environments, including the web. Previously, Scala couldn’t directly compile to Wasm, but now Scala.js will support Wasm as its new linker backend, thanks to the collaborative efforts of the ScalaCenter and VirtusLab. This development may raise a question: why does Scala aim to compile to Wasm, and how is this achieved?

scala and web assembly logos
Scala|Jun 14, 2024

Overcoming macro annotations

Scala 2 accumulated multiple amazing features that either improve the readability of the code, make it easier to write and maintain, or reduce the amount of boilerplate. Even though most of them have become an integral part of the language, some were only treated as experimental—their goal was to discover new language capabilities. Still, it was treated as a temporal and prone to change solution.

Scala logo on green
Frontend Engineering|Nov 7, 2019

Private fields, public worries

The author explores JavaScript’s proposed private class fields, focusing on the unconventional # syntax and its implications. He questions whether this new hard-privacy approach complicates the language more than it benefits developers.

Private fields public worries cover
Backend Engineering|Jul 17, 2019

Implementing a server for the Language Server Protocol

In this article, we explain how to implement a Language Server Protocol server to decouple code presentation from language logic, using Metals and Scala. It walks through adding a simple document highlight feature. 

Implementing a server for the Language Server Protocol cover
Backend Engineering|Jan 30, 2019

On the missing package private — or why Java is better than Kotlin in this regard

Kotlin lacks Java’s package-private visibility, exposing everything by default unless explicitly marked, which can bloat APIs and hinder encapsulation. The author praises Java’s manifest-based modular exports for making visibility decisions more conscious and centralized.

On the missing package private cover
Scala|Nov 21, 2018

OOP vs. FP. The pursuit of extensibility part #1

VirtusLab compares object‑oriented and functional programming through the Expression Problem, showing how each paradigm handles extensibility differently. The article highlights how FP easily adds new operations, while OOP easily adds new data forms.

OOP vs FP cover
Backend Engineering|Oct 28, 2015

Arrows, Monads and Kleisli — part 1

A general abstraction extends functions into composable building blocks, enabling the expression of business logic as data flows. This shift transforms side‑effecting, exception‑ridden code into clean, purely functional pipelines.

Arrows Monads and Kleisli part 1 cover