kotlin

IntelliJ IDEA plugins, YouTrack vNext, CRM apps, new products etc. JetBrains Using Kotlin for the Front-End Web Industrial Geodetic Systems Kotlin in backend, data processing and service development Prezi.com Using Kotlin in data processing pipeline, ElasticSearch plugins, and IDE plugins Bremeld Corp SA Medication Control - Android Application Igor Fomin Data schema compiler for TL language implemented in Kotlin Telegram Facebook Game with over 10K users daily. Written in Java and all new code in Kotlin Wrestler.Unstoppable Android Application used internally Plastoria Android Application. Using Kotlin since M2 Uncopt LLC Using Kotlin to build a new Vertical Product with team of five GMC True Fool. A Durak card game for Android written in Kotlin and libGDX JackOfHearts Expressen's Android application. Expressen Android news application with 96.6% code written in Kotlin Schibsted Tech Polska (Omni) Most new non-UI code written in Kotlin Level Money Fuzzy app/contact search and new UI written in Kotlin AppDialer Android app for searching bus trips with 99% of code written in Kotlin Busradar (Busliniensuche) Reedy ??? Intelligent speed reading application for Android written in Kotlin AzaGroup Everything that isn't JavaScript front-end is Kotlin. Combined with Vert.x, Apache Spark, ElasticSearch Collokia Using Kotlin in mobile applicatons and backend Edible Day About 25% of LOLSUMO Android app currently in Kotlin (w/ Dagger2, RxKotlin) ; all new code and tests in Kotlin. Dojo Madness Android app for helping first responders written in Kotlin Bryx 911 Cloud-based enterprise and professional photography acquisition and workflow. Using Kotlin for server-side code and a desktop Download application. DF Studio Using Kotlin in the 3DR Tower Android app, the best open source drone flight control app. 3D Robotics Built an Android app in the social selling space for Fortune 500 companies. Trapit Android app for Wizbii, a professional social network for students and young graduates. Wizbii Kotlin allows us to focus on building a robust and beautiful Android voice communication app Roger Kotlin is gaining more and more lines of code in our Android SDK and internal libraries, shared between Android and Java8 backend. Catapush We have found that Kotlin dramatically speeds up development time on Uprizer's diverse projects Uprizer Labs SeFix, a lagfix for Root users (100% migrated to Kotlin). ZDV Android apps related to robotics, 3D printing, IoT and much more. BQ Using data science to improve agriculture. Most new Android code written in Kotlin. FarmLogs Millions of fashion people is using StyleShare for Android. Most new code written in Kotlin. StyleShare Software House from Warsaw. All new Android apps written in Kotlin. EL Passion Using Kotlin in some new apps such as dayu(dayu.com), Using Kotlin in some new internal apps in Innovation Product Department. Meizu We provides dating apps in Japan. Using Kotlin in new Android apps. Diverse, inc. Collaborative tools maker. Use Kotlin in Android App for task management. Nulab Inc. Backend microservices based on Spring Boot. Allegro Group. Using Kotlin to write cleaner ViewModels with Rx in our Android app TinyOwl Technology Pvt. Ltd. NBC News, TODAY and Nightly News Android apps using Kotlin. NBC News Digital, LLC Kotlift transpiler lets us write business logic in Kotlin for Android and iOS. Moshbit GmbH With Android app based on Kotlin, we make all back-office tasks more efficient. freee K.K. Empowers your enterprise to finish projects on time. All Android apps are written in Kotlin. Taskworld Global IT service provider. We use Kotlin in several customer and internal automation projects. Luxoft A marketplace to sell, buy and swap second-hand clothes. Using Kotlin for the Android app. Vinted The largest app to request taxis in Brazil! Rewriting our Android apps in Kotlin. 99 Increasing productivity by using Kotlin for our Android app. Connehito Inc. Kotlin is a primary language for Android projects Avito The largest site in Poland, which helps everyone find and choose a doctor and arrange a visit to him online ZnanyLekarz Hudl is a leading video software company revolutionizing the way coaches and athletes prepare for and stay ahead of the competition. Our app uses Kotlin extensively across multiple layers. Hudl Using Kotlin to drive two of our customer's apps Infotech Group Crafting and maintaing apps for our clients in Kotlin and Java. Outline Sp z o.o. Clue uses science and data to provide insights into female health. All new Android code is written in Kotlin. Clue Recharge lets you book by-the-minute stays at hotels. Android app is 100% Kotlin. Recharge Hootsuite is a platform for managing social media. All new Android code is written in Kotlin. Hootsuite Kotlin is a primary language for BandLab's Android application and Gradle plugins BandLab Modernizing Moving and Storage.


Keywords
compiler, gradle-plugin, intellij-plugin, kotlin, kotlin-library, maven-plugin, programming-language, wasm, webassembly
Install
brew install kotlin

Documentation

official project TeamCity (simple build status) Maven Central GitHub license Revved up by Develocity

Kotlin Programming Language

Welcome to Kotlin!
It is an open-source, statically typed programming language supported and developed by JetBrains and open-source contributors.

Some handy links:

Kotlin Multiplatform capabilities

Support for multiplatform programming is one of Kotlin’s key benefits. It reduces time spent writing and maintaining the same code for different platforms while retaining the flexibility and benefits of native programming.

Editing Kotlin

Build environment requirements

This repository is using Gradle toolchains feature to select and auto-provision required JDKs from AdoptOpenJdk project.

Alternatively, it is still possible to only provide required JDKs via environment variables (see gradle.properties for supported variable names). To ensure Gradle uses only JDKs from environmental variables - disable Gradle toolchain auto-detection by passing -Porg.gradle.java.installations.auto-detect=false option (or put it into $GRADLE_USER_HOME/gradle.properties).

On Windows you might need to add long paths setting to the repo:

git config core.longpaths true 

Building

The project is built with Gradle. Run Gradle to build the project and to run the tests using the following command on Unix/macOS:

./gradlew <tasks-and-options>

or the following command on Windows:

gradlew <tasks-and-options>

On the first project configuration gradle will download and setup the dependencies on

  • intellij-core is a part of command line compiler and contains only necessary APIs.
  • idea-full is a full blown IntelliJ IDEA Community Edition to be used in the plugin module.

These dependencies are quite large, so depending on the quality of your internet connection you might face timeouts getting them. In this case, you can increase timeout by specifying the following command line parameters on the first run:

./gradlew -Dhttp.socketTimeout=60000 -Dhttp.connectionTimeout=60000

Important gradle tasks

  • clean - clean build results
  • dist - assembles the compiler distribution into dist/kotlinc/ folder
  • install - build and install all public artifacts into local maven repository
  • coreLibsTest - build and run stdlib, reflect and kotlin-test tests
  • gradlePluginTest - build and run gradle plugin tests
  • compilerTest - build and run all compiler tests

To reproduce TeamCity build use -Pteamcity=true flag. Local builds don't run proguard and have jar compression disabled by default.

OPTIONAL: Some artifacts, mainly Maven plugin ones, are built separately with Maven. Refer to libraries/ReadMe.md for details.

To build Kotlin/Native, see kotlin-native/README.md.

Working with the project in IntelliJ IDEA

It is recommended to use the latest released version of Intellij IDEA (Community or Ultimate Edition). You can download IntelliJ IDEA here.

After cloning the project, import the project in IntelliJ by choosing the project directory in the Open project dialog.

For handy work with compiler tests it's recommended to use Kotlin Compiler Test Helper

Dependency verification

We have a dependencies verification feature enabled in the repository for all Gradle builds. Gradle will check hashes (md5 and sha256) of used dependencies and will fail builds with Dependency verification failed errors when local artifacts are absent or have different hashes listed in the verification-metadata.xml file.

It's expected that verification-metadata.xml should only be updated with the commits that modify the build. There are some tips how to perform such updates:

  • Delete components section of verification-metadata.xml to avoid stockpiling of old unused dependencies. You may use the following command:
#macOS
sed -i '' -e '/<components>/,/<\/components>/d' gradle/verification-metadata.xml
#Linux & Git for Windows
sed -i -e '/<components>/,/<\/components>/d' gradle/verification-metadata.xml
  • Re-generate dependencies with Gradle's --write-verification-metadata command (verify update relates to your changes)
./gradlew -i --write-verification-metadata sha256,md5 -Pkotlin.native.enabled=true resolveDependencies

resolveDependencies task resolves dependencies for all platforms including dependencies downloaded by plugins.

Keep in mind:

  • If you’re adding a dependency with OS mentioned in an artifact name (darwin, mac, osx, linux, windows), remember to add them to implicitDependencies configuration or update resolveDependencies task if needed. resolveDependencies should resolve all dependencies including dependencies for different platforms.
  • If you have a local.properties file in your Kotlin project folder, make sure that it doesn't contain kotlin.native.enabled=false. Otherwise, native-only dependencies may not be added to the verification metadata. This is because local.properties has higher precedence than the -Pkotlin.native.enabled=true specified in the Gradle command.

Using -dev versions

We publish -dev versions frequently.

For -dev versions you can use the list of available versions and include this maven repository:

maven("https://maven.pkg.jetbrains.space/kotlin/p/kotlin/bootstrap")

License

Kotlin is distributed under the terms of the Apache License (Version 2.0). See license folder for details.

Contributing

Please be sure to review Kotlin's contributing guidelines to learn how to help the project.