Library / SDK
JetBrains/kotlin avatar
JetBrains/kotlin

Kotlin: Reading the JetBrains/kotlin Repository Before You Adopt It

The Kotlin Programming Language.

53,570 stars6,462 forksKotlinLicense varies

At a glance

What is it?
The JetBrains/kotlin repository is the compiler, standard library, Gradle plugin and Maven plugin for the Kotlin language, licensed Apache 2.0 according to its own badge. This article covers how the build is wired, and where the project is the wrong dependency to take on.
Who is it for?
Adopt Kotlin if you are building JVM, Android, iOS or web targets and want one language across them, with the compiler, stdlib and Gradle plugin maintained in a single repository. Do not treat this repository as your integration point if you only need the compiler: pull the released artifacts from Maven Central instead of building from source.
Can I use it commercially?
Not without permission. GitHub finds no licence file in the repository, and without a licence all rights are reserved by default: you may read the code but not reuse it. Check the README, or ask the authors, before using it.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly Kotlin, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on November 13, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • JetBrains/kotlin53,570 ★ · +173
Star history
Repository2026-09-112026-11-13
JetBrains/kotlin53.4k53.6k

173 Stars in the last 63 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

What the Kotlin repository actually contains

This is not a library you add to a dependency list in the usual sense. The repository holds the Kotlin compiler, the standard library, the reflection and kotlin-test modules, the Gradle plugin, the Maven plugin, and the Kotlin/Native toolchain, which lives under kotlin-native/. The README describes Kotlin as a concise multiplatform language developed by JetBrains and contributors. The intended audience is anyone writing code that has to run on more than one target while sharing logic, and the README frames multiplatform support as one of Kotlin's key benefits, pointing at sharing business logic and UI between Android, iOS, desktop and web. If you only ever compile for a single JVM target, most of the repository is irrelevant to you, and the relevant part is a released artifact, not this source tree.

How the compiler, plugins and stdlib fit together

The repository layout separates the command line compiler from the IDE integration. The README states that intellij-core is part of the command line compiler and contains only the necessary APIs, while idea-full is a full IntelliJ IDEA Community Edition used by the plugin module. That distinction matters if you are trying to understand build weight: pulling the IDE plugin path drags in a complete IDE distribution as a build dependency. The stdlib, reflect and kotlin-test modules are tested together through the coreLibsTest task. The compiler itself is validated through compilerTest, and the Gradle plugin through gradlePluginTest. Kotlin/Native is a separate build path with its own README under kotlin-native/.

Building from source: toolchains, timeouts and long paths

The build is Gradle-based. On Unix or macOS the README gives ./gradlew <tasks-and-options>; on Windows it is gradlew <tasks-and-options>. The repository uses Gradle toolchains to select and auto-provision the required JDKs from Eclipse Adoptium. If you want to supply JDKs yourself through environment variables, the supported variable names are in gradle.properties, and Gradle's auto-detection can be turned off with -Porg.gradle.java.installations.auto-detect=false, either on the command line or in $GRADLE_USER_HOME/gradle.properties. On Windows, the README notes you may need git config core.longpaths true. The first configuration downloads intellij-core and idea-full, which the README describes as quite large, and it explicitly warns that depending on connection quality you may face timeouts, in which case you can raise them with ./gradlew -Dhttp.socketTimeout=60000 -Dhttp.connectionTimeout=60000. The named tasks are clean, dist (which assembles the compiler distribution into dist/kotlinc/), install (which builds and installs all public artifacts into the local Maven repository), coreLibsTest, gradlePluginTest and compilerTest. To reproduce the TeamCity build, pass -Pteamcity=true; the README notes that local builds do not run proguard and have jar compression disabled by default. Some artifacts, mainly the Maven plugin ones, are built separately with Maven, with details in libraries/ReadMe.md.

Dependency verification is a hard gate, not a suggestion

The repository enables Gradle dependency verification for all Gradle builds. Gradle checks md5 and sha256 hashes of used dependencies and fails the build with a Dependency verification failed error when local artifacts are missing or differ from the hashes recorded in gradle/verification-metadata.xml. The README states that this file should only be updated with commits that modify the build. That is the single most likely source of friction for a contributor or a downstream fork. If you vendor a dependency, bump a version, or work behind a proxy that substitutes artifacts, your build stops until the metadata file is amended, and amending it is expected to be a build-changing commit rather than a casual edit. Plan for the metadata file to be part of your change, not an obstacle to route around.

Where Kotlin is the wrong choice

The limits that are visible are structural. Kotlin Multiplatform targets are listed in a separate supported-platforms documentation page, and the README links to it rather than reproducing the list, so the set of supported targets is not fixed by this repository snapshot and must be checked against the docs for your specific target. The build environment is demanding: Gradle toolchains, auto-provisioned JDKs, large first-run downloads and a verification metadata file that fails builds on hash mismatch. If your environment cannot reach Eclipse Adoptium or cannot tolerate large first-run downloads, building from source is the wrong path. If you need a language whose toolchain you can vendor in a single small binary with no Gradle involvement, this repository's build model works against you. And if your platform is not on the supported-platforms list, multiplatform code sharing is a promise the project does not make for you.

The realistic alternative and the actual difference

The obvious comparison is Java on the JVM. Both compile to JVM bytecode, both run on the same virtual machine, and both can be consumed from Gradle or Maven. The difference is in the source model and the sharing story. Java's toolchain is the JDK itself, distributed as a single installable, with javac invoked directly or through a build tool; there is no separate compiler repository, no IDE distribution pulled in as a build dependency, and no dependency verification metadata file gating the build. Kotlin's approach is to put the compiler, the stdlib, the Gradle plugin, the Maven plugin and the native toolchain under one repository; the latest releases listed are v2.5.0-Beta2, v2.4.21 and v2.4.21-RC. If your requirement is a single language across Android, iOS, desktop and web with shared business logic, Java does not offer that and Kotlin's repository structure is built around it. If your requirement is a compiler you can reason about in isolation, Java's separation is simpler to operate.

Releases, maintenance and what the licence permits

The release cadence visible in the repository is tight and includes pre-release candidates: v2.5.0-Beta2 on 2026-10-21, preceded by v2.4.21 on 2026-10-08 and v2.4.21-RC on 2026-09-30. The repository was last pushed on 2026-11-02 and is not archived. The licence badge in the README points at the Apache License 2.0, and the badge links to apache.org/licenses/LICENSE-2.0. GitHub's repository metadata lists the licence as unknown, which conflicts with the README badge; the README is the more specific source, but you should confirm the licence text in the repository's license/ directory before relying on it. This is not legal advice. What Apache 2.0 generally means in practice is that you can use, modify and redistribute the code, including commercially, subject to the licence's notice and attribution conditions, but the exact obligations depend on how you distribute and what you modify. Upgrading means tracking a release train that ships release candidates ahead of stable versions, and if you build from source rather than consuming Maven Central artifacts, each upgrade reopens the dependency verification metadata question.

Who should take this on, and what to check first

Take this on if you are writing code for more than one target and want the compiler, standard library and build plugins maintained together, with artifacts published under the org.jetbrains.kotlin group on Maven Central (the README's Maven Central badge searches that group). Do not take this on if you only need a JVM compiler and would be happier with the JDK's own javac, or if your build environment cannot provision JDKs, tolerate large first-run downloads, or maintain a verification-metadata.xml. Before you commit, check three concrete things: the supported-platforms page for your target, the JDK variables documented in gradle.properties if you are supplying your own toolchains, and the licence text in the repository's license/ directory, since the metadata and the README badge disagree. If you are consuming Kotlin rather than building it, the practical entry point is the released artifact, not this source tree.

Editorial conclusion

Adopt Kotlin if you are building JVM, Android, iOS or web targets and want one language across them, with the compiler, stdlib and Gradle plugin maintained in a single repository. Do not treat this repository as your integration point if you only need the compiler: pull the released artifacts from Maven Central instead of building from source. Before committing, verify three things: that your target platform is listed in the supported-platforms documentation, that your build can accommodate the JDK toolchain requirements, and that the Apache 2.0 licence terms shown in the README badge match what your distribution model allows.

Frequently asked questions

What is Kotlin mostly used for?

The repository calls Kotlin a concise multiplatform language developed by JetBrains and contributors. Multiplatform support is named as a key benefit because it reduces the time spent writing and maintaining the same code for different platforms, with Kotlin Multiplatform and Compose Multiplatform sharing business logic and UI between Android, iOS, desktop, and web.

how to install kotlin

To build from source, clone the repository and run the Gradle wrapper, `./gradlew` on Unix and macOS or `gradlew` on Windows, with Gradle toolchains auto-provisioning the needed JDKs from Eclipse Adoptium. To edit Kotlin there is an IntelliJ IDEA plugin, an Eclipse plugin, and a Sublime Text package, and `play.kotlinlang.org` is the place to try code in a browser.

how to use kotlin multiplatform

Kotlin Multiplatform and Compose Multiplatform share business logic and UI between Android, iOS, desktop, and web. Code can be shared on all platforms or on similar platforms, and the supported platform list lives at kotlinlang.org/docs/reference/mpp-supported-platforms.html. Building the native side is separate, under kotlin-native/README.md.

how to use kotlin in intellij

Use the Kotlin IntelliJ IDEA Plugin, whose source lives in the intellij-community repository. For working on Kotlin itself, use the latest released version of IntelliJ IDEA in Community or Ultimate Edition, then import the project by choosing the project directory in the Open project dialog. For compiler test work, the Kotlin Compiler Test Helper plugin is recommended.

how to install kotlin on windows

The build is the same as on other platforms, but the wrapper is invoked as `gradlew <tasks-and-options>` on Windows rather than `./gradlew`. On Windows you might also need to add the long paths setting to the repository with `git config core.longpaths true`, otherwise a deep path in the checkout can fail before the build starts.

Is Kotlin better than Java?

The README describes Kotlin as a concise multiplatform language from JetBrains and contributors, and the benefit it names is less time spent writing and maintaining the same code for different platforms. Whether that beats Java depends on whether you need code shared across platforms.

Official sources

  1. Issues
  2. JetBrains/kotlin on GitHub
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/jetbrains-kotlin.svg)](https://hysenlabs.com/projects/jetbrains-kotlin)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/jetbrains-kotlin.svg)](https://hysenlabs.com/projects/jetbrains-kotlin)

Was this useful?