Get Advice Icon

Need advice about which tool to choose?Ask the StackShare community!

Kotlin
Kotlin

1.8K
1.2K
+ 1
256
Scala
Scala

3K
2.2K
+ 1
1.4K
Add tool

Kotlin vs Scala: What are the differences?

Developers describe Kotlin as "Statically typed Programming Language targeting JVM and JavaScript". Kotlin is a statically typed programming language for the JVM, Android and the browser, 100% interoperable with Java. On the other hand, Scala is detailed as "A pure-bred object-oriented language that runs on the JVM". Scala is an acronym for “Scalable Language”. This means that Scala grows with you. You can play with it by typing one-line expressions and observing the results. But you can also rely on it for large mission critical systems, as many companies, including Twitter, LinkedIn, or Intel do. To some, Scala feels like a scripting language. Its syntax is concise and low ceremony; its types get out of the way because the compiler can infer them.

Kotlin and Scala can be primarily classified as "Languages" tools.

"Interoperable with Java" is the primary reason why developers consider Kotlin over the competitors, whereas "Static typing" was stated as the key factor in picking Scala.

Kotlin and Scala are both open source tools. Kotlin with 28.3K GitHub stars and 3.28K forks on GitHub appears to be more popular than Scala with 11.8K GitHub stars and 2.75K GitHub forks.

According to the StackShare community, Scala has a broader approval, being mentioned in 437 company stacks & 324 developers stacks; compared to Kotlin, which is listed in 268 company stacks and 208 developer stacks.

What is Kotlin?

Kotlin is a statically typed programming language for the JVM, Android and the browser, 100% interoperable with Java

What is Scala?

Scala is an acronym for “Scalable Language”. This means that Scala grows with you. You can play with it by typing one-line expressions and observing the results. But you can also rely on it for large mission critical systems, as many companies, including Twitter, LinkedIn, or Intel do. To some, Scala feels like a scripting language. Its syntax is concise and low ceremony; its types get out of the way because the compiler can infer them.
Get Advice Icon

Need advice about which tool to choose?Ask the StackShare community!

Why do developers choose Kotlin?
Why do developers choose Scala?

Sign up to add, upvote and see more prosMake informed product decisions

What companies use Kotlin?
What companies use Scala?

Sign up to get full access to all the companiesMake informed product decisions

What tools integrate with Kotlin?
What tools integrate with Scala?

Sign up to get full access to all the tool integrationsMake informed product decisions

What are some alternatives to Kotlin and Scala?
Swift
Writing code is interactive and fun, the syntax is concise yet expressive, and apps run lightning-fast. Swift is ready for your next iOS and OS X project — or for addition into your current app — because Swift code works side-by-side with Objective-C.
Java
Java is a programming language and computing platform first released by Sun Microsystems in 1995. There are lots of applications and websites that will not work unless you have Java installed, and more are created every day. Java is fast, secure, and reliable. From laptops to datacenters, game consoles to scientific supercomputers, cell phones to the Internet, Java is everywhere!
Groovy
Groovy builds upon the strengths of Java but has additional power features inspired by languages like Python, Ruby and Smalltalk. It makes modern programming features available to Java developers with almost-zero learning curve.
Python
Python is a general purpose programming language created by Guido Van Rossum. Python is most praised for its elegant syntax and readable code, if you are just beginning your programming career python suits you best.
Go
Go is expressive, concise, clean, and efficient. Its concurrency mechanisms make it easy to write programs that get the most out of multicore and networked machines, while its novel type system enables flexible and modular program construction. Go compiles quickly to machine code yet has the convenience of garbage collection and the power of run-time reflection. It's a fast, statically typed, compiled language that feels like a dynamically typed, interpreted language.
See all alternatives
Decisions about Kotlin and Scala
StackShare Editors
StackShare Editors
Kotlin
Kotlin
gRPC
gRPC
Go
Go
Ruby
Ruby

As the WeWork footprint continued to expand, in mid-2018 the team began to explore the next generation of identity management to handle the global scale of the business.

The team decided to vet three languages for building microservices: Go, Kotlin, and Ruby. They compared the three by building a component of an identity system in each, and assessing the performance apples-to-apples.

After building out the systems and load testing each one, the team decided to implement the new system in Go for a few reasons. In addition to better performance under heavy loads, Go, according to the team, is a simpler language that will constrain developers to simpler code. Additionally, the development lifecycle is simpler with Go, since “there is little difference between running a service directly on a dev machine, to running it in a container, to running clustered instances of the service.”

In the implementation, they the Go grpc framework to handle various common infrastructure patterns, resulting in “in a clean common server pattern that we can reuse across our microservices.”

See more
Marc Bollinger
Marc Bollinger
Infra & Data Eng Manager at Lumosity · | 4 upvotes · 60.6K views
atLumosityLumosity
Pulsar
Pulsar
Redis
Redis
Heron
Heron
Apache Storm
Apache Storm
Scala
Scala
Kafka
Kafka
Ruby
Ruby
Node.js
Node.js

Lumosity is home to the world's largest cognitive training database, a responsibility we take seriously. For most of the company's history, our analysis of user behavior and training data has been powered by an event stream--first a simple Node.js pub/sub app, then a heavyweight Ruby app with stronger durability. Both supported decent throughput and latency, but they lacked some major features supported by existing open-source alternatives: replaying existing messages (also lacking in most message queue-based solutions), scaling out many different readers for the same stream, the ability to leverage existing solutions for reading and writing, and possibly most importantly: the ability to hire someone externally who already had expertise.

We ultimately migrated to Kafka in early- to mid-2016, citing both industry trends in companies we'd talked to with similar durability and throughput needs, the extremely strong documentation and community. We pored over Kyle Kingsbury's Jepsen post (https://aphyr.com/posts/293-jepsen-Kafka), as well as Jay Kreps' follow-up (http://blog.empathybox.com/post/62279088548/a-few-notes-on-kafka-and-jepsen), talked at length with Confluent folks and community members, and still wound up running parallel systems for quite a long time, but ultimately, we've been very, very happy. Understanding the internals and proper levers takes some commitment, but it's taken very little maintenance once configured. Since then, the Confluent Platform community has grown and grown; we've gone from doing most development using custom Scala consumers and producers to being 60/40 Kafka Streams/Connects.

We originally looked into Storm / Heron , and we'd moved on from Redis pub/sub. Heron looks great, but we already had a programming model across services that was more akin to consuming a message consumers than required a topology of bolts, etc. Heron also had just come out while we were starting to migrate things, and the community momentum and direction of Kafka felt more substantial than the older Storm. If we were to start the process over again today, we might check out Pulsar , although the ecosystem is much younger.

To find out more, read our 2017 engineering blog post about the migration!

See more
StackShare Editors
StackShare Editors
Apache Thrift
Apache Thrift
Kotlin
Kotlin
Presto
Presto
HHVM (HipHop Virtual Machine)
HHVM (HipHop Virtual Machine)
gRPC
gRPC
Kubernetes
Kubernetes
Apache Spark
Apache Spark
Airflow
Airflow
Terraform
Terraform
Hadoop
Hadoop
Swift
Swift
Hack
Hack
Memcached
Memcached
Consul
Consul
Chef
Chef
Prometheus
Prometheus

Since the beginning, Cal Henderson has been the CTO of Slack. Earlier this year, he commented on a Quora question summarizing their current stack.

Apps
  • Web: a mix of JavaScript/ES6 and React.
  • Desktop: And Electron to ship it as a desktop application.
  • Android: a mix of Java and Kotlin.
  • iOS: written in a mix of Objective C and Swift.
Backend
  • The core application and the API written in PHP/Hack that runs on HHVM.
  • The data is stored in MySQL using Vitess.
  • Caching is done using Memcached and MCRouter.
  • The search service takes help from SolrCloud, with various Java services.
  • The messaging system uses WebSockets with many services in Java and Go.
  • Load balancing is done using HAproxy with Consul for configuration.
  • Most services talk to each other over gRPC,
  • Some Thrift and JSON-over-HTTP
  • Voice and video calling service was built in Elixir.
Data warehouse
  • Built using open source tools including Presto, Spark, Airflow, Hadoop and Kafka.
Etc
See more
Alex A
Alex A
Founder at PRIZ Guru · | 3 upvotes · 47.9K views
atPRIZ GuruPRIZ Guru
Gradle
Gradle
Groovy
Groovy
Scala
Scala
Play
Play
Grails
Grails

Some may wonder why did we choose Grails ? Really good question :) We spent quite some time to evaluate what framework to go with and the battle was between Play Scala and Grails ( Groovy ). We have enough experience with both and, to be honest, I absolutely in love with Scala; however, the tipping point for us was the potential speed of development. Grails allows much faster development pace than Play , and as of right now this is the most important parameter. We might convert later though. Also, worth mentioning, by default Grails comes with Gradle as a build tool, so why change?

See more
Vadim Bakaev
Vadim Bakaev
Scala
Scala
Haskell
Haskell

Why I am using Haskell in my free time?

I have 3 reasons for it. I am looking for:

Fun.

Improve functional programming skill.

Improve problem-solving skill.

Laziness and mathematical abstractions behind Haskell makes it a wonderful language.

It is Pure functional, it helps me to write better Scala code.

Highly expressive language gives elegant ways to solve coding puzzle.

See more
Interest over time
Reviews of Kotlin and Scala
No reviews found
How developers use Kotlin and Scala
Avatar of datapile
datapile uses ScalaScala

Scala is the God of languages. A legend. The Mount Rushmore of hybrid OO/functional languages is Scala's face four times over.

Ok, honestly, we love Scala. We love(d) Java (and it's parents C and C++), and we love(d) all the languages that borrowed cough stole cough from Java over the years such as Groovy, Clojure, and C#.

It may not be perfect (it totally is, but since programming languages don't have egos of their own, we don't want to paint it too bright), but it is awesome. It runs on the JVM, you can utilize Spring, it works great for data processing (which is sorta kinda the thing we do here, folks), and it just makes sense at all levels.

If you don't like Scala, we feel sorry for the projects that are suffering due to your choices, meanwhile we are using Scala to write everything from JavaScript, CSS, SQL, and JSON directly within itself (go figure), so in the end no one will know the beauty of this powerhouse language (except for our engineers, of course).

Avatar of Foursquare
Foursquare uses ScalaScala

Nearly our entire server codebase is written in Scala (if you haven't heard of it, it's a programming language that is basically what you would get if Java + ML had a baby). This has worked out super well. It enables us to write concise easy to deal with code that is typechecked at compile time. It's also been a big help with recruiting.

Avatar of papaver
papaver uses ScalaScala

worked with scala for around 2 years. really enjoyed the language and getting back into the world of functional. unfortunately the community is heavily fragmented and the language itself broken and inconsistent. that with the various factions involved made it a put of for long term investment.

Avatar of Stanislaus Madueke
Stanislaus Madueke uses ScalaScala

Scala, Akka and Spray (which became Akka-Http) provided the building blocks for the menu service.
Akka's actors and finite-state machine were a natural way to model a USSD menu (a series of stateful interactions between a subscriber and the USSD gateway).

Avatar of Giovanni Candido da Silva
Giovanni Candido da Silva uses ScalaScala

Replaces entirely the Java Language to build a much more expressive and powerful code on the backend, while leveraging at the same time the Java Platform Tools and Frameworks, is a mixture of old and mature with new and sexy.

Avatar of Philtard
Philtard uses KotlinKotlin

Even though still a young language, it feels so at home sitting in the springboot frame and works with vaadin just great. And in itself it has like all the best parts of java, scala, python mixed into one.

Avatar of fileee GmbH
fileee GmbH uses KotlinKotlin

We use Kotlin both in our Android App and increasingly in our polyglot backend services.

Avatar of claudiofus
claudiofus uses KotlinKotlin

Statically typed programming language for modern multiplatform applications.

Avatar of Cirrus Labs
Cirrus Labs uses KotlinKotlin

All 20+ micro-services that power Cirrus CI are written in Kotlin.

Avatar of movix
movix uses KotlinKotlin

Unit tests, backend with Spring Boot

How much does Kotlin cost?
How much does Scala cost?
Pricing unavailable
Pricing unavailable