<commit_before>---
type: doc
layout: reference
category: "Introduction"
title: "Kotlin for Server Side"
---

# Coroutines for asynchronous programming and more

Asynchronous or non-blocking programming is the new reality. Whether we're creating server-side, desktop or mobile applications, it's important 
that we provide an experience that is not only fluid from the user's perspective, but scalable when needed.

There are many approaches to this problem, and in Kotlin we take a very flexible one by providing [Coroutine](https://en.wikipedia.org/wiki/Coroutine) support at the language 
level and delegating most of the functionality to libraries, much inline with Kotlin's philosophy. 

As a bonus, coroutines not only open the doors to asynchronous programming, but also provide a wealth of other possibilities such as concurrency, actors, etc.

# Getting Started

Below are a series of tutorials and first steps that can get you on the right track when it comes to learning more about coroutines and how to develop applications using these in Kotlin.

* [Asynchronous Programming](../tutorials/coroutines/async-programming.md). Explains the different approaches to non-blocking code and introduces you to the concept of Coroutines
* [Your first coroutine with Kotlin](../tutorials/coroutines/coroutines-basic-jvm.md). Step by step tutorial on writing your first coroutine with Kotlin.
* [Coroutines Guide](../reference/coroutines/coroutines-guide.md). A complete guide to everything you need to know about Kotlin coroutines.<commit_msg>Fixed links<commit_after>---
type: doc
layout: reference
category: "Introduction"
title: "Coroutines Overview"
---

# Coroutines for asynchronous programming and more

Asynchronous or non-blocking programming is the new reality. Whether we're creating server-side, desktop or mobile applications, it's important 
that we provide an experience that is not only fluid from the user's perspective, but scalable when needed.

There are many approaches to this problem, and in Kotlin we take a very flexible one by providing [Coroutine](https://en.wikipedia.org/wiki/Coroutine) support at the language 
level and delegating most of the functionality to libraries, much inline with Kotlin's philosophy. 

As a bonus, coroutines not only open the doors to asynchronous programming, but also provide a wealth of other possibilities such as concurrency, actors, etc.

# Getting Started

Below are a series of tutorials and first steps that can get you on the right track when it comes to learning more about coroutines and how to develop applications using these in Kotlin.

* [Asynchronous Programming](../tutorials/coroutines/async-programming.html). Explains the different approaches to non-blocking code and introduces you to the concept of Coroutines
* [Your first coroutine with Kotlin](../tutorials/coroutines/coroutines-basic-jvm.html). Step by step tutorial on writing your first coroutine with Kotlin.
* [Coroutines Guide](../reference/coroutines/coroutines-guide.html). A complete guide to everything you need to know about Kotlin coroutines.
{'fraction_non_alphanumeric': 0.06025267249757046, 'fraction_numerical': 0.0, 'mean_word_length': 4.915708812260537, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6976385', 'n_tokens_mistral': 788, 'n_tokens_neox': 754, 'n_words': 396}