<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/open-sourcing-metals-v2-databricks-java-and-scala-language-server-for-multi-million-line-codebases-ihgtgi5we" -->

---
title: Open-sourcing Metals v2: Databricks’ Java and Scala...
description: Databricks has open-sourced Metals v2, a Java and Scala language server built to handle multi-million line Bazel monorepos. Originally a Databricks fork of...
canonical: https://daily.dev/posts/open-sourcing-metals-v2-databricks-java-and-scala-language-server-for-multi-million-line-codebases-ihgtgi5we
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Open-sourcing Metals v2: Databricks’ Java and Scala language server for multi‑million line codebases | daily.dev
og:description: Databricks has open-sourced Metals v2, a Java and Scala language server built to handle multi-million line Bazel monorepos. Originally a Databricks fork of...
og:url: https://daily.dev/posts/open-sourcing-metals-v2-databricks-java-and-scala-language-server-for-multi-million-line-codebases-ihgtgi5we
og:image: https://api.daily.dev/og/posts/iHgtGi5WE.png
og:image:alt: Open-sourcing Metals v2: Databricks’ Java and Scala language server for multi‑million line codebases
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Open-sourcing Metals v2: Databricks’ Java and Scala language server for multi‑million line codebases

**[databricks](https://daily.dev/sources/databricks)** · 13 min read · 3 upvotes · 0 comments

## Summary

Databricks has open-sourced Metals v2, a Java and Scala language server built to handle multi-million line Bazel monorepos. Originally a Databricks fork of Metals v1, v2 introduces three major architectural changes: a build-free mbt index using Git blob OIDs for fast startup (p50 TTII of 8.7s across a 26M-line codebase), compiler-backed pipelines using the Scala presentation compiler and javac APIs with Turbine for Java symbol loading, and a metadata-first Bazel BSP integration that never invokes Bazel automatically. The result: 92% of Databricks' weekly active IDE users now use Cursor vs. 12% for IntelliJ, and Cursor's share of Scala/Java file opens rose from 40% to 78%. Metals v2 is available in Cursor, VS Code, and Neovim under Apache 2.0, with ongoing development led by VirtusLab. Stripe has also begun rolling it out.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://www.databricks.com/blog/open-sourcing-metals-v2-databricks-java-and-scala-language-server-multi-million-line-codebases>

## Questions this post answers

### What is Metals v2 and how is it different from Metals v1?

Metals v2 is a rewritten version of the Metals Scala language server that adds first-class Java support and scales to multi-million-line Bazel monorepos, open-sourced by Databricks under Apache 2.0. It reworks three layers: a build-free content-addressed repo index (mbt), compiler-backed pipelines for Scala and Java, and a metadata-first build server integration, unlike v1's tighter coupling to build sync before becoming useful.

_Track how the Scala and Java tooling ecosystem evolves around large monorepos on daily.dev._

### How fast is time-to-initial-intelligence in Metals v2 on a large monorepo?

In Databricks' 26-million-line Bazel monorepo, Metals v2 reaches time-to-initial-intelligence at p50 8.7 seconds and p90 36.7 seconds, covering server startup, loading a stale index, updating it against current git state, and restarting the presentation compilers. Fuzzy symbol search across 2.9 million workspace symbols runs at p50 10ms and p90 95ms.

_Developers evaluating IDE performance at scale can follow language server benchmarks like these on daily.dev._

### How does Metals v2 handle Java code intelligence without relying on JDT or NetBeans language servers?

Metals v2 implements the Java LSP surface directly on javac APIs rather than reusing JDT- or NetBeans-based language servers, because those remain build-centric like Metals v1. It uses a javaSymbolLoader mode built on a modified Turbine header compiler, processing close to one million lines of Java per second, keeping cross-file symbols on the classpath so javac's analyze phase runs near its practical limit of about 100k lines per second.

_Engineers weighing javac-based tooling approaches can keep up with JVM language server design on daily.dev._

## Similar posts on daily.dev

- [Java and Kotlin by IntelliJ IDEA: The LSP-Based Extension Reaches Release Candidate](https://daily.dev/posts/java-and-kotlin-by-intellij-idea-the-lsp-based-extension-reaches-release-candidate-n7h6lcibv) · JetBrains · 3 upvotes · 0 comments
- [Develop and deploy Serverless JARs](https://daily.dev/posts/develop-and-deploy-serverless-jars-spy7rgvds) · databricks · 0 upvotes · 0 comments
- [Lathe: A Java Language Server That Works Straight From Your Maven Build](https://daily.dev/posts/lathe-a-java-language-server-that-works-straight-from-your-maven-build-vdk3xjls8) · Foojay.io · 0 upvotes · 0 comments
- [Eclipse Foundation reports Open VSX hits 300 million monthly downloads](https://daily.dev/posts/eclipse-foundation-reports-open-vsx-hits-300-million-monthly-downloads-bs2zzlalh) · The New Stack · 0 upvotes · 0 comments

---

Tags: [#java](https://daily.dev/tags/java), [#scala](https://daily.dev/tags/scala), [#bazel](https://daily.dev/tags/bazel), [#lsp](https://daily.dev/tags/lsp)

[View this post on daily.dev](https://daily.dev/posts/open-sourcing-metals-v2-databricks-java-and-scala-language-server-for-multi-million-line-codebases-ihgtgi5we)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Open-sourcing Metals v2: Databricks’ Java and Scala language server for multi‑million line codebases","url":"https://daily.dev/posts/open-sourcing-metals-v2-databricks-java-and-scala-language-server-for-multi-million-line-codebases-ihgtgi5we","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/open-sourcing-metals-v2-databricks-java-and-scala-language-server-for-multi-million-line-codebases-ihgtgi5we"},"datePublished":"2026-08-11T18:54:02.159Z","dateModified":"2026-09-14T08:20:10.827Z","description":"Databricks has open-sourced Metals v2, a Java and Scala language server built to handle multi-million line Bazel monorepos. Originally a Databricks fork of...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/2ae859b8b487a3c6d8f8e74a86d500d4?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/2ae859b8b487a3c6d8f8e74a86d500d4?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"databricks","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"databricks","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/fa7aa720f2db4d1eba826814730482c8","url":"https://daily.dev/sources/databricks"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/open-sourcing-metals-v2-databricks-java-and-scala-language-server-for-multi-million-line-codebases-ihgtgi5we","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":3},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"java,scala,bazel,lsp","timeRequired":"PT13M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"databricks","item":"https://daily.dev/sources/databricks"},{"@type":"ListItem","position":3,"name":"Open-sourcing Metals v2: Databricks’ Java and Scala language server for multi‑million line codebases"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/open-sourcing-metals-v2-databricks-java-and-scala-language-server-for-multi-million-line-codebases-ihgtgi5we#faq","mainEntity":[{"@type":"Question","name":"What is Metals v2 and how is it different from Metals v1?","acceptedAnswer":{"@type":"Answer","text":"Metals v2 is a rewritten version of the Metals Scala language server that adds first-class Java support and scales to multi-million-line Bazel monorepos, open-sourced by Databricks under Apache 2.0. It reworks three layers: a build-free content-addressed repo index (mbt), compiler-backed pipelines for Scala and Java, and a metadata-first build server integration, unlike v1's tighter coupling to build sync before becoming useful. Track how the Scala and Java tooling ecosystem evolves around large monorepos on daily.dev."}},{"@type":"Question","name":"How fast is time-to-initial-intelligence in Metals v2 on a large monorepo?","acceptedAnswer":{"@type":"Answer","text":"In Databricks' 26-million-line Bazel monorepo, Metals v2 reaches time-to-initial-intelligence at p50 8.7 seconds and p90 36.7 seconds, covering server startup, loading a stale index, updating it against current git state, and restarting the presentation compilers. Fuzzy symbol search across 2.9 million workspace symbols runs at p50 10ms and p90 95ms. Developers evaluating IDE performance at scale can follow language server benchmarks like these on daily.dev."}},{"@type":"Question","name":"How does Metals v2 handle Java code intelligence without relying on JDT or NetBeans language servers?","acceptedAnswer":{"@type":"Answer","text":"Metals v2 implements the Java LSP surface directly on javac APIs rather than reusing JDT- or NetBeans-based language servers, because those remain build-centric like Metals v1. It uses a javaSymbolLoader mode built on a modified Turbine header compiler, processing close to one million lines of Java per second, keeping cross-file symbols on the classpath so javac's analyze phase runs near its practical limit of about 100k lines per second. Engineers weighing javac-based tooling approaches can keep up with JVM language server design on daily.dev."}}]}
```

