Kotlin je staticky typovaným programovacím jazykem. Běhá na virtuálním stroji Java (Java Virtual Machine neboli JVM). Je možné jej zkompilovat do JavaScriptu. Hlavním vývojářem tohoto programovacího jazyka je tým programátorů ze společnosti JetBrains, který pracuje z pobočky v ruském Petrohradu. Název jazyka je odvozený od jednoho z ruských ostrovů poblíž Petrohradu, který se jmenuje Kotlin. Časopis Dr. Dobb’s Journal jmenoval Kotlin v lednu roku 2012 programovacím jazykem měsíce. Kotlin sice není kompatibilní s Javou, ale byl navržen tak, aby poskytoval interoperabilitu s Javovskými knihovnami a dokonce závisí na některých knihovnách jádra.
JetBrains s.r.o. se dříve jmenovala IntelliJ Software s.r.o. a je společností, která vyvíjí software pro programátory a projektové manažery. V roce 2017 měla celkem šest poboček v Praze, Petrohradu, Moskvě, Mnichově, Bostonu a Novosibirsku s přibližně sedmi sty zaměstnanci. Společnost se zabývá tvorbou vývojových prostředí pro širokou škálu programovacích jazyků, mezi které patří Java, Ruby, Python, PHP, SQL, Objective-C, C++, C#, Go nebo JavaScript. Nový programovací jazyk Kotlin představila společnost v roce 2011.
Společnost JetBrains představila svůj nový programovací jazyk Kotlin v červenci roku 2011. Tou dobou byl již přibližně rok ve vývoji. Dimitry Jemerov, vedoucí týmu JetBrains, prohlásil, že jeho tým vyžadoval u programovacích jazyků možnosti, které většina jazyků kromě Scaly nenabízí.
U Scaly byl zase podle Jemerova problémem dlouhý čas kompilace. Proto si prostřednictvím Kotlinu dali za cíl vytvořit jazyk, který by splňoval požadavky programátorů a zároveň byla jeho kompilace minimálně tak rychlá jako u čisté Javy. Pod licencí Achache 2 pak JetBrains Kotlin uvolnil v únoru 2012 jako open source.
Kotlin verze 1.0 byl následně představen 15.února 2016. Tato verze se obecně považuje za první oficiálně stabilní vydání. JetBrains se od této verze dál snaží o zachování zpětné kompatibility.
Vedoucí vývoje Andrey Breslav prohlásil, že Kotlin je navržen tak, aby byl průmyslově spolehlivým objektově orientovaným jazykem. Má zároveň ambice být „lepším jazykem“ nežli Java, ale přitom si zachovat svou plnou interoperabilitu s kódem Java, čímž by měl umožnit společnostem postupný přechod od Javy ke Kotlinu.
Středníky jsou jako ukončení příkazu pouze volitelné, ve většině případů je pro kompilátor dostatečné označení začátku nového příkazu nový řádek. Oddělení středníkem se používá pouze v případě, kdy je z důvodu lepší čitelnosti kódu vhodné umístit více příkazů na jeden řádek.
Deklarace proměnných a seznamů parametrů mají v Kotlinu datový typ po názvu proměnné (s oddělením dvojtečkou), podobně jako v Pascalu.
Proměnné mohou být v Kotlinu deklarovány jako neměnné za pomoci klíčového slova „val“ nebo jako měnné s klíčovým slovem „var“.
Objekty jednotlivých tříd jsou defaultně veřejné, a všechny třídy jsou defaultně uzavřené, což znamená, že odvozené třídy jsou standardně blokované, pokud není použité klíčové slovo v základní třídě, které by takové použití umožnilo.
Kromě tříd a metod objektově orientovaného programování, které se v Kotlinu nazývají „member functions“, Kotlin zároveň podporuje procedurální programování za použití funkcí.