[#] Kotlin, компиляция в байткод и производительность (часть 1)
habrabot(difrex,1) — All
2017-06-02 18:00:04


![][1]

О Kotlin последнее время уже очень много сказано (особенно в совокупности с последними новостями c Google IO 17), но в то же время не очень много такой нужной информации, во что же компилируется Kotlin.
Давайте подробнее рассмотрим на примере компиляции в байткод JVM.

Это первая часть публикации. Вторую можно посмотреть [тут][2]

Процесс компиляции это довольно обширная тема и чтобы лучше раскрыть все ее нюансы я взял большую часть примеров компиляции из выступления Дмитрия Жемерова: [Caught in the Act: Kotlin Bytecode Generation and Runtime Performance][3]. Из этого же выступления взяты все бенчмарки. Помимо ознакомления с публикацией, настоятельно рекомендую вам еще и посмотреть его выступление. Некоторые вещи там рассказаны более подробно. Я же больше внимания акцентирую именно на компиляции языка.


## Содержание:


[Функции на уровне файла][4]
[Primary конструкторы][5]
[data классы][6]
[Свойства в теле класса][7]
[Not-null типы в публичных и приватных методах][8]
[Функции расширения (extension functions)][9]
[Тела методов в интерфейсах][10]
[Аргументы по умолчанию][11]
[Лямбды][12]

Но прежде чем рассмотрим основные конструкции языка и то, в какой байткод они компилируются, нужно упомянуть о том, как непосредственно происходит сама компиляция языка:
[Читать дальше →][13]

[1]: https://habrastorage.org/web/3af/e51/f5a/3afe51f5a54a4ce583d5665dfb4d06c3.png
[2]: https://habrahabr.ru/company/inforion/blog/330064/
[3]: https://www.youtube.com/watch?v=35GACInsZsk
[4]: https://habrahabr.ru/company/inforion/blog/330060/#P1
[5]: https://habrahabr.ru/company/inforion/blog/330060/#P2
[6]: https://habrahabr.ru/company/inforion/blog/330060/#P3
[7]: https://habrahabr.ru/company/inforion/blog/330060/#P4
[8]: https://habrahabr.ru/company/inforion/blog/330060/#P5
[9]: https://habrahabr.ru/company/inforion/blog/330060/#P6
[10]: https://habrahabr.ru/company/inforion/blog/330060/#P7
[11]: https://habrahabr.ru/company/inforion/blog/330060/#P8
[12]: https://habrahabr.ru/company/inforion/blog/330060/#P9
[13]: https://habrahabr.ru/post/330060/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut