The State of Scala & Clojure Surveys: How is functional programming on JVM doing - JVM Weekly vol. 119
What is happening in the functional part of JVM.
The title might be a bit of an overstatement – don’t expect a very extensive analysis of functional programming trends. I wanted to focus on two surveys that have appeared recently, which tell us a bit about languages that many of you probably used in a previous reincarnation cycle, but have already forgotten about.
Of course, the usual disclaimer at the beginning – we know that surveys tend to show what they feel is worth showing and have a certain narrative power.
Having that in mind, I think we can begin.
We’ll start with the results of a survey about maintaining Scala projects, conducted at the end of 2024 by VirtusLab (yes, I work in VirtusLab, so I confirm that firsthand - the Scala team is doing an excellent job there 😃).
First, let’s look at the people who filled out the survey – demographics tell us a lot about the quality of the results and what we can expect. We have as many as 232 responses, with 75% Software Engineers and 49.6% people in tech-lead or related areas – apparently, many of us wear several hats at once (yes, I know that pain too). It turned out that most of them work on closed-source projects (87.5%), although there’s no shortage of hardcore open-source folks (18.1%). I think that fairly reflects the state of the industry.
An overwhelming majority of respondents like or love Scala: 49.1% love it, 44% rather like it. The remaining 6.9% are still undecided, and 0.9% (i.e., 2 people) have fallen into Scala-depression. However here we also hit, to some extent, the “peak” of people interested in the topic - those willing to fill out the Scala Survey.
The average age of projects is 7 years, with a median of 6 years – that’s quite… a lot. It also shows that quite a bit of Scala is legacy projects – at least in the surveyed group, “greenfields” are relatively rare.
Typelevel (41.8%), Akka (35.3%), ZIO (23.3%), and Play (15.5%). And of course, Spark (7.7%) – let’s not forget that big data elephant in the room, though the days when it was synonymous with Data seem to be behind us. These people have a new best friend.
Moreover, more than half of the projects (53%) combine different ecosystems such as Akka and Cats, indicating that we’re building increasingly hybrid beasts. 36.2% are “monogamists” relying entirely on a single library (ZIO, we’re looking at you), and 10.8% are the brave ones using only the standard library.
83% of people don’t part ways with IntelliJ, while Metals (25%) is still fighting for a place in developers’ hearts. Metals is a language server (LSP) for Scala, providing intelligent suggestions, refactoring, and diagnostics in many editors (e.g., VS Code, Vim, Emacs). It’s developed by VirtusLab and offers a more portable alternative to full-fledged IDEs Scala’s support. You can read more about the project here.
SBT beats everyone hands down (87.5%). Scala-CLI (11.2%) is relatively new but has decent traction, and Bazel (7.8%) and Maven (7.3%) also have loyal fans.
22.4% of commercial projects have already switched to Scala 3, but as many as 37% do not plan to. Why? Because as usual, the ecosystem is (still) not fully ready, there’s a lack of resources, and management is pushing the topic aside. You know that feeling when a new version of a language tempts you, but there are dozens of “work in progress” branches piling up in the repo…?
But let’s not throw stones – recently Azul wrote that JDK 8 is still used in 40% of organizations, so nearly 25% migration in Scala shouldn’t surprise anyone.
Talking about the problems, the report shows three major ones:
Compilation times: almost one-third of respondents see them as a serious problem.
Fragmentation of the ecosystem and migration issues to Scala 3: libraries diverge, so users aren’t sure which version to use.
Lack of resources to maintain older projects.
23.2% of companies have in mind “maybe we’ll switch to Kotlin, Rust, or Go?” The most common reason? Difficulty recruiting (11.6%), managing, and stabilizing the entire ecosystem (6%).
Hiring is Scala’s curse – many companies believe that recruiting Scala developers is quite a problem (56.5% don’t know where to find people). 40.5% indicate that Scala slows down onboarding for new devs – presumably, the legendary complexity also plays a role.
Given these recruitment problems, it’s not surprising that 68.6% allow remote work, which at least somewhat makes life easier for those who have managed to settle in the Bieszczady Mountains or in Bali.
What to do to improve the situation? The report’s authors gather suggestions for solutions:
Better documentation: a pipe dream, but it’s always worth trying.
Library standardization: the Typelevel, ZIO, or Akka ecosystems should (at least slightly) move closer to each other.
Improved tools: IntelliJ, Metals, sbt – each has something to work on.
Support for migration to Scala 3: VirtusLab is offering free consultations.
Despite all these challenges, 88.4% of respondents would still choose Scala for new projects without hesitation. It shows that the JVM community sees great potential in Scala, but also knows that working on its further development and tooling is a marathon, not a sprint.
I encourage you to delve deeper into the topic because the report is full of interesting details, and you may find some inspiration on how to save your projects from the depths of technical debt. Let me know in the comments (or on your company Slack) if you’re thinking about switching to Scala 3, or if Kotlin is just too tempting to you with its syntactic sugar.

Now, let's take a look at the other report I have for you today.
When I mentioned those previous incarnations, I was partly writing from my own experience. From time to time (a long, long time ago and possibly not true anymore) the old Clojurian in me resurfaces, and I sometimes feel nostalgic, trying to recall those glory days by reading reports. So it’s fitting that Alex Miller has prepared a report from this year’s State of Clojure survey, and in this brief summary, we’ll take a look at the most interesting findings.
Let’s start with what warms the hearts of backend folks the most: does Clojure live in real projects and is it more than just a hobby experiment? Definitely yes! 73% of respondents use Clojure at work, mainly in web development, commercial services, and enterprise applications. Their services often end up in the cloud – public (58%) or private (26%). So you can say with confidence that the “Lispy DSL” is conquering more and more server rooms and Docker containers.
What about team size? Most are small teams (up to 10 people), though there are also true giants – Nubank, with over a thousand Clojure developers, is a prime example. It’s no coincidence they’re now responsible for the development of the language.
Sectors betting on Clojure are still finance, enterprise software, and healthcare – nihil novi sub sole. And when it comes to IDEs, the “four musketeers” rule – Emacs, IntelliJ, VS Code, and Vim.
Regarding the adoption of new versions, things look surprisingly good. As many as 58% have already moved to Clojure 1.12, released in September 2024, which indicates that stability and a lack of painful breaking changes are quite a motivator.
Here we see that Java 21 LTS already has 54% of users, and Java 8 is losing ground in favor of newer versions (only 9% remain with the old-timer, which is better than in Java itself). Probably for this reason, Clojure plans to raise the base version in subsequent releases (much like Scala, but we’ll talk about that next week).
A novelty in this year’s survey was a section about alternative Clojure dialects. I suspect that for most people this is a fairly exotic concept, but Clojure dialects are nothing more than alternative implementations of the language that retain its key features – such as minimalist syntax, a powerful macro system, a functional approach, and immutable data – but are adapted to different environments and goals. In practice, this means that Clojure enthusiasts experiment with variants that can run natively in other technologies or are optimized for specific tasks.
An example is Babashka – a dialect that enjoys huge popularity (93% of respondents who use dialects had dealt with it) because it allows scripts to be run quickly, without the start-up delays of the JVM. ClojureDart, on the other hand, brings Clojure into the Dart ecosystem, opening new perspectives for web and mobile apps. Other projects like Squint, Jank, and Cherry demonstrate the community’s ongoing creativity – each introduces its modifications, often experimental, allowing the Clojure philosophy to adapt to entirely new conditions.
A novelty in this year’s survey was a section about alternative Clojure dialects. I suspect that for most people this is a fairly exotic concept, but Clojure dialects are nothing more than alternative implementations of the language that retain its key features – such as minimalist syntax, a powerful macro system, a functional approach, and immutable data – but are adapted to different environments and goals. In practice, this means that Clojure enthusiasts experiment with variants that can run natively in other technologies or are optimized for specific tasks.
An example is Babashka – a dialect that enjoys huge popularity (93% of respondents who use dialects had dealt with it) because it allows scripts to be run quickly, without the start-up delays of the JVM. ClojureDart, on the other hand, brings Clojure into the Dart ecosystem, opening new perspectives for web and mobile apps. Other projects like Squint, Jank, and Cherry demonstrate the community’s ongoing creativity – each introduces its own modifications, often experimental, allowing the Clojure philosophy to adapt to entirely new conditions.
Leiningen and deps.edn continues to vie for space among dependency management tools – we can see that deps.edn is gaining strength, and nRepl, REBL, and other plugins help make REPL feel like home.
A special section of the survey examines people who have just started their adventure with Clojure (less than a year of experience). The report has been tracking programmers’ migration paths to Clojure for years. It appears they still largely come from Java, JavaScript, and Python. Ruby and C++ are in decline, whereas C# is starting to gain slightly – perhaps thanks to the “functional awakening” in the .NET ecosystem.
Biggest challenges for newcomers? Less so the FP vs. OOP issue (maybe online functional courses are on the rise?), but still a significant challenge is understanding macros and “homoiconicity.”
If you’ve read this far, you’re probably as happy as I am to see that Clojure keeps evolving. On one hand – a stable, mature platform, and on the other – new dialects, a growing community not just in corporate settings but also in open-source projects and even in the gaming industry (yes, yes, I’ve seen it!). State of Clojure 2024 shows that Lisp on the JVM is still a very strong player: a steady, balanced development without revolutionary changes, yet… there’s always something new to discover.
I encourage you to keep digging through the full report – you’ll find even more statistics and interesting commentary.
Happy coding – and until next time in JVM Weekly!