Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Kotlin ΠΈ с Ρ‡Π΅ΠΌ Π΅Π³ΠΎ Сдят: ΠΎΠ±ΡƒΡ‡Π°ΡŽΡ‰Π΅Π΅ руководство ΠΈ сравнСниС Π½ΠΎΠ²ΠΎΠ³ΠΎ языка Android-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ с Java

ΠΠ²Ρ‚ΠΎΡ€ΠΈΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Kotlin ΠΈ с Ρ‡Π΅ΠΌ Π΅Π³ΠΎ Сдят: ΠΎΠ±ΡƒΡ‡Π°ΡŽΡ‰Π΅Π΅ руководство ΠΈ сравнСниС Π½ΠΎΠ²ΠΎΠ³ΠΎ языка Android-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ с Java

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования

Kotlin β€” это ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠΎΠ»ΠΎΠ΄ΠΎΠΉ язык ΠΎΡ‚ российской ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ JetBrains. Появился ΠΎΠ½ Π² 2011 Π³ΠΎΠ΄Ρƒ. На ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ Google I/O 2017 ΠΊΠΎΠΌΠ°Π½Π΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Android сообщила, Ρ‡Ρ‚ΠΎ Kotlin ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Android-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

Π’ΠΎΡ‚ основныС возмоТности ΠΈ прСимущСства Kotlin:

Π Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ… ΠΏΠΎΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅.

Null-Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ

Π“ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ ΠΈ простота синтаксиса

ΠŸΡ€ΠΎΡΡ‚Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ структуры ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΎΠ΄Π½ΠΎΠΉ строкой. Π“Π΅Ρ‚Ρ‚Π΅Ρ€Ρ‹ ΠΈ сСттСры Π·Π°Π΄Π°ΡŽΡ‚ΡΡ Π·Π° кулисами для ΠΈΠ½Ρ‚Π΅Ρ€ΠΎΠΏΠ΅Ρ€Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ с Java-ΠΊΠΎΠ΄ΠΎΠΌ. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ data-Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ ΠΊ классу Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΡƒΠ΅Ρ‚ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡŽ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… шаблонов.

Рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

ΠžΡ‚Π»ΠΈΡ‡ΠΈΡ ΠΎΡ‚ Java

Null-Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ

Как ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅, Kotlin Π½Π΅ допускаСт возникновСния NullPointerException, выдавая ΠΎΡˆΠΈΠ±ΠΊΡƒ компиляции.

ΠšΠ»Π°ΡΡΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… (Data Classes)

Π›Π΅Π³ΠΊΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠΎΠΏΠΈΠΈ классов Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° copy() :

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ-Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ

Kotlin позволяСт Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… классов, Π½Π΅ прибСгая ΠΊ наслСдованию. Π­Ρ‚ΠΎ дСлаСтся ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ-Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ. Для объявлСния Ρ‚Π°ΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊ Π΅Ρ‘ ΠΈΠΌΠ΅Π½ΠΈ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΏΠΈΡΠ°Ρ‚ΡŒ прСфикс Π² Π²ΠΈΠ΄Π΅ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. Π’ΠΎΡ‚ Ρ‚Π°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ swap Π² MutableList :

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово this Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ относится ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ-ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚Π΅Π»ΡŽ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ пСрСдаётся ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ swap ΠΊ Π»ΡŽΠ±ΠΎΠΌΡƒ измСняСмому списку:

Π£ΠΌΠ½Ρ‹Π΅ привСдСния Ρ‚ΠΈΠΏΠΎΠ²

Π’Ρ‹Π²ΠΎΠ΄ Ρ‚ΠΈΠΏΠΎΠ²

Π’ Kotlin Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ явно ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ:

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Π’Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Kotlin Π·Π°Ρ‚ΠΎΡ‡Π΅Π½ ΠΏΠΎΠ΄ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. Он прСдоставляСт большоС количСство ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… возмоТностСй, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ порядка, лямбда-выраТСния, ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈ Π»Π΅Π½ΠΈΠ²Ρ‹Π΅ вычислСниС логичСских Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с коллСкциями:

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ порядка β€” это Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

Лямбда-выраТСния, ΠΈΠ»ΠΈ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ β€” это Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ, Π° ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π² Π²ΠΈΠ΄Π΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ скорости Java ΠΈ Kotlin

ΠŸΠ΅Ρ€Π²Π°Ρ сборка Kotlin-ΠΊΠΎΠ΄Π° Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π½Π° 15–20% большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‡Π΅ΠΌ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ процСсс Π½Π° Java. Однако инкрСмСнтная сборка Kotlin Π΄Π°ΠΆΠ΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ быстрСС, Ρ‡Π΅ΠΌ Ρƒ Java. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, языки ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ€Π°Π²Π½Ρ‹ ΠΏΠΎ скорости компиляции.

Π‘ΡƒΠ΄ΡƒΡ‰Π΅Π΅ Kotlin

Kotlin β€” это ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ этап развития Java, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ совмСстим. Π­Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌ инструмСнтом для ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΈ энтСрпрайз-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. А ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Kotlin Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ являСтся ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ языком Android, ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ Π±ΠΎΡΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ, ΠΈΠ·ΡƒΡ‡ΠΈΠ² Π΅Π³ΠΎ, Π²Ρ‹ ΠΎΡΡ‚Π°Π½Π΅Ρ‚Π΅ΡΡŒ Π±Π΅Π· Ρ€Π°Π±ΠΎΡ‚Ρ‹.

Π’ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ этого языка Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ сСрия статСй, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰Π°Ρ процСсс создания простого мобильного прилоТСния Keddit β€” ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° для популярного рСсурса Reddit. ВсС Π΅Π΅ части для вашСго удобства ΠΌΡ‹ пСрСчислили Π² спискС Π½ΠΈΠΆΠ΅.

Π’Π°ΠΌ ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ:

ВсС исходники доступны Π½Π° GitHub. БСрия состоит ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… частСй:

Если Π²Π°ΠΌ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ Π²ΠΈΠ΄Π΅ΠΎΡ„ΠΎΡ€ΠΌΠ°Ρ‚, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° русскоязычный видСокурс ΠΏΠΎ Kotlin.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Kotlin

И Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π°Π½Π΄Ρ€ΠΎΠΈΠ΄-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ.

Kotlin β€” это язык программирования ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ JetBrains, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π° 9 Π»Π΅Ρ‚ потСснил Java ΠΈ стал Π²Π°ΠΆΠ½Ρ‹ΠΌ инструмСнтом Π°Π½Π΄Ρ€ΠΎΠΈΠ΄-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². РазбСрёмся, Ρ‡Ρ‚ΠΎ особСнного Π² Kotlin, ΠΊΠ°ΠΊΠΈΠ΅ Ρƒ Π½Π΅Π³ΠΎ риски ΠΈ с Ρ‡Π΅Π³ΠΎ Π½Π°Ρ‡Π°Ρ‚ΡŒ.

🤔 Π—Π°Ρ‡Π΅ΠΌ понадобился Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ язык вмСсто Java

На этот вопрос Π΅ΡΡ‚ΡŒ Π΄Π²Π° ΠΎΡ‚Π²Π΅Ρ‚Π°.

ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚: Π² 2017 Π³ΠΎΠ΄Ρƒ языком Kotlin пользовались ΠΎΠΊΠΎΠ»ΠΎ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π° программистов, ΠΈ ΠΈΠΌ Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π»ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π½Π° АндроидС. Π“ΡƒΠ³Π» ΠΏΠΎΡˆΡ‘Π» навстрСчу Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΈ сдСлал Kotlin ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½Ρ‹ΠΌ языком Π½Π° АндроидС.

Π”ΠΎΠ³Π°Π΄ΠΊΠΈ ΠΈ слухи: с 2010 Π³ΠΎΠ΄Π° Π“ΡƒΠ³Π» судится с ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Oracle ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρƒ использования Java Π² систСмС Андроид. Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ:

Π² основС ΠΏΠ΅Ρ€Π²Ρ‹Ρ… вСрсий Андроида Π»Π΅ΠΆΠ°Π»Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина Dalvik,

Dalvik построСна Π½Π° основС ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Apache Harmony,

Apache Harmony β€” это ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Java, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Ρƒ Π“ΡƒΠ³Π» Π½Π΅Ρ‚ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ.

Π’ 2010 Π³ΠΎΠ΄Ρƒ Oracle ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»Π° ΠΎΡ‚ Π“ΡƒΠ³Π» ΠΌΠΈΠ»Π»ΠΈΠ°Ρ€Π΄Π½ΡƒΡŽ ΠΊΠΎΠΌΠΏΠ΅Π½ΡΠ°Ρ†ΠΈΡŽ ΠΈ Ρ‚Ρ€ΠΈΠΆΠ΄Ρ‹ Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Π²Π°Π»Π° суд: Π² 2012, 2014 ΠΈ 2015-ΠΌ. Π”Π΅Π»ΠΎ Π½Π΅ Π·Π°ΠΊΡ€Ρ‹Π²Π°Π»ΠΎΡΡŒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² Π“ΡƒΠ³Π» ΠΎΡ‚ΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΈΡΡŒ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ»Π°Ρ‚ΠΈΡ‚ΡŒ. Π’ 2016 Π³ΠΎΠ΄Ρƒ иск вырос Π΄ΠΎ дСвяти ΠΌΠΈΠ»Π»ΠΈΠ°Ρ€Π΄ΠΎΠ², ΠΎΠ΄Π½Π°ΠΊΠΎ суд встал Π½Π° сторону Π“ΡƒΠ³Π». Π”Π΅Π»ΠΎ висит с 2017 Π³ΠΎΠ΄Π°, Π° Π“ΡƒΠ³Π» постСпСнно ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ всю Π°Π½Π΄Ρ€ΠΎΠΈΠ΄-инфраструктуру с Java Π½Π° Kotlin.

✅ ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π°

Π‘ΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с Java. Kotlin ΠΈ Java ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅. Для этого Ρƒ языка Kotlin Π΅ΡΡ‚ΡŒ собствСнный компилятор, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Π΄Π°Ρ‘Ρ‚ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄, совмСстимый с ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ Java-машиной. ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Java Π½Π΅Π²Π°ΠΆΠ½ΠΎ, ΠΈΠ· ΠΊΠ°ΠΊΠΎΠ³ΠΎ языка Π±Ρ‹Π» сдСлан Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программированияУпрощСнная схСма взаимодСйствия Java ΠΈ Kotlin

Π’Ρ‹Ρ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Kotlin β€” это ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΉ язык Π±Π΅Π· кусков ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программированияВ простых ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… Ρƒ Kotlin ΠΏΡ€ΠΎΡ‰Π΅ синтаксис ΠΈ мСньшС Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… конструкций Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программированияВ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях ΠΊΠΎΠ΄ Π½Π° Kotlin ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π² нСсколько Ρ€Π°Π· ΠΊΠΎΡ€ΠΎΡ‡Π΅, Ρ‡Π΅ΠΌ ΠΊΠΎΠ΄ Π½Π° Java

Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ. Π―Π·Ρ‹ΠΊ Kotlin ΠΈ Π΅Π³ΠΎ срСда программирования β€” это ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, которая постоянно обновляСт Π±Π°Π·Ρƒ ошибок ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π΄ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° исполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

На этапС компиляции Π² Kotlin срабатываСт null-Π·Π°Ρ‰ΠΈΡ‚Π°: Kotlin автоматичСски провСряСт Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, отслСТиваСт null-значСния ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ появлСниС NullPointerException β€” распространённой Java-уязвимости.

❌ НСдостатки

Низкая ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ. Π§Π°Ρ‰Π΅ всСго Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΆΠ°Π»ΡƒΡŽΡ‚ΡΡ Π½Π° Π½Π΅ΠΏΡ€Π΅Π΄ΡΠΊΠ°Π·ΡƒΠ΅ΠΌΡƒΡŽ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ компиляции. По Π±Ρ‹ΡΡ‚Ρ€ΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΈΡŽ Kotlin уступаСт Java, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² Π΅Π³ΠΎ основС Π»Π΅ΠΆΠΈΡ‚ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина JVM β€” Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, выпущСнная ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄ язык Java, Π° Π½Π΅ ΠΏΠΎΠ΄ Kotlin.

Π”Ρ€ΡƒΠ³ΠΈΠ΅ Π½ΡŽΠ°Π½ΡΡ‹ смотритС Π² Ρ‚Π²ΠΈΡ‚Ρ‚Π΅Ρ€Π΅ Π”Π°Π½ΠΈΠΈΠ»Π° Попова β€” Π°Π½Π΄Ρ€ΠΎΠΈΠ΄-ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π° Авито, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ·ΡƒΡ‡Π°Π΅Ρ‚ Kotlin Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΈ рассказываСт ΠΎ свСТих тСхничСских Π±Π°Π³Π°Ρ….

МалСнькоС сообщСство ΠΈ СдинствСнный Π²Π»Π°Π΄Π΅Π»Π΅Ρ† языка. Kotlin всё Π΅Ρ‰Ρ‘ Π½Π΅ Ρ‚Π°ΠΊΠΎΠΉ популярный, ΠΊΠ°ΠΊ Java. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Kotlin β€” это Π½Π΅ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ Π“ΡƒΠ³Π». Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ боятся, Ρ‡Ρ‚ΠΎ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ врСмя Π“ΡƒΠ³Π» откаТСтся ΠΎΡ‚ Π½Π΅Π³ΠΎ, ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π΅Ρ‚ ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ свою Π²Π΅Ρ€ΡΠΈΡŽ языка ΠΈΠ»ΠΈ поссорится с JetBrains.

ΠœΠ°Π»ΠΎΡ‡ΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ сообщСство Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ Kotlin: ΠΏΠΎΠ΄ Π½Π΅Π³ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π²Ρ‹ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ Π½ΠΎΠ²Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ обновлСния, Π° для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ тСхничСских ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ Π² Π±Π°Π³-Ρ‚Ρ€Π΅ΠΊΠ΅Ρ€ β€” Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² Ρ‚Π΅Ρ…ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ JetBrains, Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ свою ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π·Π°Π΄Π°Ρ‡, ΠΆΠ΄Π°Ρ‚ΡŒ ΠΈ Π½Π°Π΄Π΅ΡΡ‚ΡŒΡΡ Π½Π° Π΅Ρ‘ исполнСниС.

Π’ сСнтябрС 2020 Π² Π±Π°Π³-Ρ‚Ρ€Π΅ΠΊΠ΅Ρ€Π΅ Kotlin ΠΎΠΊΠΎΠ»ΠΎ 40 000 Π·Π°Π΄Π°Ρ‡, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ критичности. Π”ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π΄ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Ρ‡Π΅Ρ€Π΅Π· нСсколько Π»Π΅Ρ‚, Π½ΠΎ Π΅ΡΡ‚ΡŒ ΠΈ Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π½Π΅Ρ€Π΅ΡˆΡ‘Π½Π½Ρ‹ΠΌΠΈ β€” Π² Ρ‚Π°ΠΊΠΈΡ… условиях Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½Ρ‹ ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΊΠΎΡΡ‚Ρ‹Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ язык с Ρ€Π°Π·Π²ΠΈΡ‚Ρ‹ΠΌ сообщСством.

Для Ρ‡Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ

Kotlin ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для создания ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, бэкСнда ΠΈ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ программирования:

Для ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ программирования прСдусмотрСны Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ интСрфСйсов Π² React, создания сСрвСрного HTTP API Π² Ktor ΠΈ адаптирования Π°Π½Π΄Ρ€ΠΎΠΈΠ΄-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ΄ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ систСму iOS.

Google, Netflix, Twitter, Uber, Netflix ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ пСрСводят Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ свои ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹ Π½Π° Kotlin. ΠšΠ΅ΠΉΡΡ‹ Π΅ΡΡ‚ΡŒ Π½Π° developer.android.com Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Β«Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ²Β».

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программированияАндроид-прилоТСния с ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ Kotlin-ΠΊΠΎΠ΄ΠΎΠΌ. Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: developer.android.com

Π‘ Ρ‡Π΅Π³ΠΎ Π½Π°Ρ‡Π°Ρ‚ΡŒ

ΠŸΠΎΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ Ρƒ нас ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠΏΡ€ΠΎ Java β€” это язык, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ написано мноТСство ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ². ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² мобильной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΈ Π² ΠΎΠ±ΠΎΠ·Ρ€ΠΈΠΌΠΎΠΌ Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π½Π° Kotlin.

Π‘ΠΊΠ°Ρ‡Π°ΠΉΡ‚Π΅ IntelliJ IDEA ΠΈΠ»ΠΈ Android Studio. ОбС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ β€” это срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠΎΠ΄ язык Kotlin. IntelliJ IDEA большС ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для сайтов ΠΈ дСсктопных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Π° Android Studio β€” для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ΄ Π°Π½Π΄Ρ€ΠΎΠΈΠ΄.

УстановитС ΠΏΠ»Π°Π³ΠΈΠ½ EduTools β€” это ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ инструмСнт, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ для изучСния языка Kotlin. Π•ΡΡ‚ΡŒ Π² IntelliJ IDEA ΠΈ Android Studio. ΠŸΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ руководством ΠΏΠΎ языку Kotlin. Если Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ слоТности с ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΎΠΌ β€” посмотритС Π½Π΅ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ€ΡƒΡΡΠΊΠΎΡΠ·Ρ‹Ρ‡Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ЧастыС вопросы

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Kotlin?

Какова тСкущая вСрсия Kotlin?

Π‘Π²ΠΎΠ±ΠΎΠ΄Π΅Π½ Π»ΠΈ Kotlin?

Π”Π°. Kotlin Π±Ρ‹Π», Π΅ΡΡ‚ΡŒ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ свободным. Он разрабатываСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ Apache 2.0, Π° исходный ΠΊΠΎΠ΄ доступСн Π½Π° GitHub.

ЯвляСтся Π»ΠΈ Kotlin ΠΎΠ±ΡŒΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ?

КакиС прСимущСства Π΅ΡΡ‚ΡŒ Ρƒ Kotlin ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Java?

Kotlin Π±ΠΎΠ»Π΅Π΅ Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π΅Π½. Код Π½Π° Kotlin ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π½Π° 40% ΠΊΠΎΡ€ΠΎΡ‡Π΅. Π’Π°ΠΊΠΆΠ΅ Kotlin являСтся типобСзопасным. Благодаря null-бСзопасности прилоТСния ΠΌΠ΅Π½Π΅Π΅ уязвимы ΠΊ NullPointerException. Π’ спискС Π΄Ρ€ΡƒΠ³ΠΈΡ… возмоТностСй: ΡƒΠΌΠ½ΠΎΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ², Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ порядка, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΈ лямбда-выраТСния с получатСлями. Они ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ созданиС DSL.

БовмСстим Π»ΠΈ Kotlin с Java?

Π”Π°, Kotlin Π½Π° 100% совмСстим с Java. ВозмоТности вашСго ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄Π° Π½Π° Java ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с Kotlin ΡƒΠ΄Π΅Π»Π΅Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ внимания. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ запросто Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π½Π° Kotlin ΠΈΠ· Java ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚. Благодаря этому, Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ Kotlin Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ ΠΈ бСзопаснСй. Π’Π°ΠΊΠΆΠ΅ стоит ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ автоматичСский ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€ ΠΊΠΎΠ΄Π° ΠΈΠ· Java Π² Kotlin. Он встроСн Π² IDE ΠΈ позволяСт ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄Π° Π½Π° Kotlin.

Для Ρ‡Π΅Π³ΠΎ я ΠΌΠΎΠ³Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Kotlin?

Kotlin ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ для мноТСства ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ, Π±ΡƒΠ΄ΡŒ Ρ‚ΠΎ сСрвСр, ΠΊΠ»ΠΈΠ΅Π½Ρ‚, Π²Π΅Π± ΠΈΠ»ΠΈ Android. C Ρ€Π΅Π»ΠΈΠ·ΠΎΠΌ Kotlin/Native (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅) появится ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ‚Π°ΠΊΠΈΡ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ, ΠΊΠ°ΠΊ встроСнныС систСмы, macOS ΠΈ iOS. Π›ΡŽΠ΄ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Kotlin для ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΈ сСрвСрных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, клиСнтских ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с JavaScript ΠΈΠ»ΠΈ JavaFX, Π² data science ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

МоТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Kotlin для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ для Android?

МоТно. Kotlin поддСрТиваСтся ΠΊΠ°ΠΊ основной язык для Android, Π½Π°Ρ€Π°Π²Π½Π΅ с Java. Π‘ΠΎΡ‚Π½ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ для Android ΡƒΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Kotlin, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ Basecamp, Pinterest ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС, смотритС ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠΏΡ€ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ для Android.

МоТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Kotlin для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сСрвСрных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ?

МоТно. Kotlin Π½Π° 100% совмСстим с JVM, Π° Π·Π½Π°Ρ‡ΠΈΡ‚ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ для Java, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Spring Boot, vert.x ΠΈΠ»ΠΈ JSF. Π’Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ для Kotlin, ΠΊΠ°ΠΊ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ktor. Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ сСрвСрных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

МоТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Kotlin для Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ?

Π”Π°. ΠšΡ€ΠΎΠΌΠ΅ использования Π² бэкэндС, Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Kotlin/JS для клиСнтской стороны. Kotlin ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ опрСдСлСния ΠΈΠ· DefinitelyTyped для статичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ для популярных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π½Π° JavaScript. Π’Π°ΠΊΠΆΠ΅ Kotlin совмСстим с ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹ΠΌΠΈ систСми, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ AMD ΠΈ CommonJS. Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ для клиСнтской стороны.

МоТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Kotlin для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Desktop-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ?

Π”Π°. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ любой UI-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ JavaFx, Swing ΠΈ Ρ‚.Π΄. Π’ Π΄ΠΎΠ±Π°Π²ΠΎΠΊ, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ для Kotlin, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ TornadoFX.

МоТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Kotlin для Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ?

Kotlin/Native Π² Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅. Kotlin/Native ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ исходный ΠΊΠΎΠ΄ Π² Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π±Π΅Π· Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹. На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π³ΠΎΡ‚ΠΎΠ²Π° тСхнологичСская Π΄Π΅ΠΌΠΎ-вСрсия, Π½ΠΎ ΠΎΠ½Π° Π΅Ρ‰Π΅ Π½Π΅ Π³ΠΎΡ‚ΠΎΠ²Π° ΠΊ ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Ρƒ ΠΈ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ΠΊ вСрсии 1.0. Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ пост, Π°Π½ΠΎΠ½ΡΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Kotlin/Native.

КакиС IDE ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Kotlin?

Kotlin поддСрТиваСтся всСми ΠΊΡ€ΡƒΠΏΠ½Ρ‹ΠΌΠΈ IDE для Java, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ IntelliJ IDEA, Android Studio, Eclipse ΠΈ NetBeans. Π’Π°ΠΊΠΆΠ΅ доступСн ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ компилятор, ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ всС возмоТности компиляции ΠΈ запуска ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

КакиС инструмСнты для сборки ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Kotlin?

Π’ΠΎ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈ Ρ‚Ρ€Π°Π½ΡΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Kotlin?

Π’ Java-Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ ΠΈ ES5.1, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹ΠΌΠΈ систСмами AMD and CommonJS. Π‘ΠΊΠΎΡ€ΠΎ появится Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΊΠΎΠ΄ для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ с LLVM.

Kotlin ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ лишь Java 6?

НС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ΠΎΠΌ 6 ΠΈΠ»ΠΈ 8 вСрсии. Π§Π΅ΠΌ Π½ΠΎΠ²Π΅Π΅ вСрсия Java, Ρ‚Π΅ΠΌ Π»ΡƒΡ‡ΡˆΠ΅ ΠΈ эффСктивнСС Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄.

Π‘Π»ΠΎΠΆΠ΅Π½ Π»ΠΈ Kotlin?

Kotlin ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Java, C#, JavaScript, Scala ΠΈ Groovy. ΠœΡ‹ ΠΏΡ‹Ρ‚Π°Π»ΠΈΡΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Kotlin простым для изучСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π° Π½Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ всСго Π·Π° нСколько Π΄Π½Π΅ΠΉ. Π‘ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ языка Π·Π°ΠΉΠΌΡ‘Ρ‚ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π½ΠΎ Π² ΠΎΠ±Ρ‰Π΅ΠΌ это нСслоТный язык.

КакиС ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Kotlin?

Kotlin ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ мноТСство ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ. Из числа Ρ‚Π΅Ρ…, Ρ‡Ρ‚ΠΎ обьявили ΠΎΠ± использовании языка: Square, Pinterest, Basecamp ΠΈ Corda.

ΠšΡ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Kotlin?

Π“Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΏΡ€ΠΎ язык?

Π›ΡƒΡ‡ΡˆΠ΅ всСго Π½Π°Ρ‡Π°Ρ‚ΡŒ прямо Π½Π° этом сайтС ΠΈΠ»ΠΈ Π½Π° https://kotlinlang.org. На kotlinlang.org ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ компилятор ΠΈΠ»ΠΈ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΎΠ½Π»Π°ΠΉΠ½ Доступны справочник ΠΈ Ρ‚ΡƒΡ‚ΠΎΡ€ΠΈΠ°Π»Ρ‹.

Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π»ΠΈ ΠΊΠ½ΠΈΠ³ΠΈ ΠΏΡ€ΠΎ Kotlin?

Бписок ΠΊΠ½ΠΈΠ³ Π΅ΡΡ‚ΡŒ здСсь. Из самых популярных: Kotlin Π² ДСйствии, написанная Ρ‡Π»Π΅Π½Π°ΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π”ΠΌΠΈΡ‚Ρ€ΠΈΠ΅ΠΌ Π”ΠΆΠ΅ΠΌΠ΅Ρ€ΠΎΠ²Ρ‹ΠΌ ΠΈ Π‘Π²Π΅Ρ‚Π»Π°Π½ΠΎΠΉ Исаковой, Π° Ρ‚Π°ΠΊΠΆΠ΅ Kotlin for Android Developers.

Π•ΡΡ‚ΡŒ Π»ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½-курсы для изучСния Kotlin?

Pluralsight Kotlin Course ΠΎΡ‚ КСвина ДТонса, курс O’Reilly ΠΎΡ‚ Π₯Π°Π΄ΠΈ Π₯Π°Ρ€ΠΈΡ€ΠΈ ΠΈ курс Udemy ΠΎΡ‚ ΠŸΠ΅Ρ‚Ρ€Π° Π‘ΠΎΠΌΠΌΠ΅Ρ€Ρ…ΠΎΡ„Ρ„Π°.

Π’Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ мноТСство записСй Kotlin talks, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π° YouTube ΠΈ Vimeo.

Π•ΡΡ‚ΡŒ Π»ΠΈ сообщСство Ρƒ Kotlin?

Π”Π°. Π£ Kotlin ΠΎΡ‡Π΅Π½ΡŒ ΠΎΡ‚Π·Ρ‹Π²Ρ‡ΠΈΠ²ΠΎΠ΅ сообщСство Π½Π° Ρ„ΠΎΡ€ΡƒΠΌΠ°Ρ… Kotlin, StackOverflow ΠΈ, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ, Kotlin Slack (ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ 7000 участников Π² ΠΌΠ°Π΅ 2017).

ΠŸΡ€ΠΎΡ…ΠΎΠ΄ΡΡ‚ Π»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ мСроприятия ΠΏΠΎ Kotlin?

ΠŸΡ€ΠΎΡ…ΠΎΠ΄ΡΡ‚ Π»ΠΈ ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ, посвящённыС Kotlin?

Π•ΡΡ‚ΡŒ Π»ΠΈ Kotlin Π² ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… сСтях?

НаиболСС Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ Π½Π° Twitter. Π’Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ Π³Ρ€ΡƒΠΏΠΏΠ° Google+.

Π•ΡΡ‚ΡŒ Π»ΠΈ Π΅Ρ‰Ρ‘ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΠΎΠ½Π»Π°ΠΉΠ½-рСсурсы ΠΏΠΎ Kotlin?

Π’ сообщСствС Kotlin Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ мноТСство рСсурсов, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ДайдТСсты Kotlin, ΠΎΡ€Π³Π°Π½ΠΈΠ·ΡƒΠ΅ΠΌΡ‹Π΅ сообщСством, Π½ΠΎΠ²ΠΎΡΡ‚Π½ΡƒΡŽ рассылку, подкаст ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

НСмного о Kotlin

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования

На днях JetBrains послС пятилСтнСй Ρ€Π°Π±ΠΎΡ‚Ρ‹ выпустила ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π΅Π»ΠΈΠ· языка Kotlin. Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, Ρ‡Ρ‚ΠΎ ΠΆΠ΅ это Π·Π° язык, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π·Π°Ρ‡Π΅ΠΌ ΠΈ для ΠΊΠΎΠ³ΠΎ ΠΎΠ½, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ особСнности. Π‘ΠΊΠΎΡ€Π΅Π΅ всСго Π² ΡΡ‚Π°Ρ‚ΡŒΡŽ Π·Π°Ρ‚Π΅ΡΠ°Π»ΠΈΡΡŒ ΠΈ Π»ΠΈΡ‡Π½Ρ‹Π΅ впСчатлСния ΠΎΡ‚ языка, Π½ΠΎ я старался, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ Π½Π΅ влияли Π½Π° ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Если Π²Ρ‹ Π΅Ρ‰Π΅ Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΡ‡Ρ‚ΠΈ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅ ΠΎ Kotlin, Ρ‚ΠΎ я Π·Π°Π²ΠΈΠ΄ΡƒΡŽ Π²Π°ΠΌ, ΠΈΠ±ΠΎ ΠΏΠΎ ΠΌΠΎΠ΅ΠΌΡƒ ΠΎΡ‰ΡƒΡ‰Π΅Π½ΠΈΡŽ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΎ инструмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Ρ‹ Π΄ΠΎΠ»Π³ΠΎ ΠΆΠ΄Π°Π», сродни распаковкС Π½ΠΎΠ²ΠΎΠ³ΠΎΠ΄Π½Π΅Π³ΠΎ ΠΏΠΎΠ΄Π°Ρ€ΠΊΠ°. Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ судитС сами.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠšΠΎΡ‚Π»ΠΈΠ½

ΠšΠΎΡ‚Π»ΠΈΠ½ β€” это нСбольшой остров Π² Ѐинском Π·Π°Π»ΠΈΠ²Π΅ Π½Π΅Π΄Π°Π»Π΅ΠΊΠΎ ΠΎΡ‚ Π‘Π°Π½ΠΊΡ‚-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³Π°. Π’ΠΈΠ΄ΠΈΠΌΠΎ, Ρ‚Π΅ΠΌ самым создатСли Π΄Π°ΡŽΡ‚ отсылку ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π½ΠΎΠ²Ρ‹ΠΉ язык, ΠΊΠ°ΠΊ остров ΠšΠΎΡ‚Π»ΠΈΠ½ β€” младший русский Π±Ρ€Π°Ρ‚ Π΄Π°Π»Π΅ΠΊΠΎΠ³ΠΎ острова Π―Π²Π°.

Для ΠΊΠΎΠ³ΠΎ этот язык

Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π½ΠΎΠ²Ρ‹ΠΉ язык компилируСтся Π² JVM Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ (Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΈ компиляция Π² JavaScript, Π½ΠΎ Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ€Π΅Π»ΠΈΠ· компилятора ΠΈΠΌΠ΅Π½Π½ΠΎ Π² JVM, эту Ρ‚Π΅ΠΌΡƒ придСтся ΠΎΠΏΡΡ‚ΡŒ ΠΎΡ‚Π»ΠΎΠΆΠΈΡ‚ΡŒ). А это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠΎΠ²Π°Ρ‚ΡŒ всСх, ΠΊΡ‚ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π΅Π»ΠΎ с Java-машиной ΠΈ Π² Ρ†Π΅Π»ΠΎΠΌ с языками со сборщиком мусора (Π° с Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ Ρ€Π΅Π»ΠΈΠ·Π° компиляции Π² JavaScript ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΈ возмоТности Π±ΡƒΠ΄ΡƒΡ‚ Π΅Ρ‰Π΅ ΡˆΠΈΡ€Π΅).

ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ ΠΈ совмСстимый

Π”Π²Π΅ Π³Π»Π°Π²Π½Ρ‹Ρ… особСнности ΠΊΠΎΡ‚Π»ΠΈΠ½Π°, Π½Π° ΠΌΠΎΠΉ взгляд, это Π΅Π³ΠΎ простота ΠΈ полная ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с Java. ΠšΠΎΡ‚Π»ΠΈΠ½ создавался ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ, которая Π΄Π΅Π»Π°Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² Π½Π° Java ΠΈ которая Ρ…ΠΎΡ€ΠΎΡˆΠΎ разбираСтся Π² соврСмСнных инструмСнтах Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Запрос Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ язык Π²ΠΈΡ‚Π°Π΅Ρ‚ Π² Π²ΠΎΠ·Π΄ΡƒΡ…Π΅ Π΄Π°Π²Π½ΠΎ, Π½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ язык, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» Π²Π·ΡΡ‚ΡŒ (ΠΎΠ³Ρ€ΠΎΠΌΠ½ΡƒΡŽ) Π³ΠΎΡ‚ΠΎΠ²ΡƒΡŽ ΠΊΠΎΠ΄ΠΎΠ²ΡƒΡŽ Π±Π°Π·Ρƒ Java, ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Π΄Π°Ρ‚ΡŒ ΠΈΠΌ Π½ΠΎΠ²Ρ‹ΠΉ инструмСнт ΠΈ бСсшовно (Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ эффСктивно) ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ β€” Ρ‚Π°ΠΊΠΎΠ³ΠΎ инструмСнта Π΄ΠΎ появлСния ΠΊΠΎΡ‚Π»ΠΈΠ½Π° Π½Π΅ сущСствовало. Π‘ΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ языка, Π½Π° ΠΌΠΎΠΉ взгляд, ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ почувствовали потрСбности бизнСса ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ²: бизнСсу Π΄Π°Π»ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π΄Π°Ρ‚ΡŒ соврСмСнный инструмСнт для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. И ΠΊΠΎΠ³Π΄Π° я Π³ΠΎΠ²ΠΎΡ€ΡŽ ΠΎ «соврСмСнном инструмСнтС», я, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, имСю Π²Π²ΠΈΠ΄Ρƒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ компилятор, Π½ΠΎ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Π² IDE, Π±Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π»ΠΈΡ‡Π½ΠΎ моя Π΄Π΅ΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΌΠ½Π΅ видится совсСм нСмыслимой.
Π’ ΠΈΡ‚ΠΎΠ³Π΅: простота позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ язык ΠΏΠΎΡ‡Ρ‚ΠΈ Π»ΡŽΠ±ΠΎΠΌΡƒ Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π³ΠΎΡ‚ΠΎΠ² ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ полчаса Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ‚ΡƒΡ‚ΠΎΡ€ΠΈΠ°Π» ΠΈΠ»ΠΈ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ языка, обратная ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΆΠ΅ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ язык Π² ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅.

Production-ready

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, запрос Π½Π° этот язык Π±Ρ‹Π» Ρƒ самой JetBrains, ΠΎΡ‚ΡΡŽΠ΄Π° ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, JetBrains ΠΆΠ΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Π΅Π³ΠΎ ΠΈ тСстировала: ΠΊ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρƒ Π²Ρ‹Ρ…ΠΎΠ΄Π° этого Ρ€Π΅Π»ΠΈΠ·Π° Ρƒ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΎΠ΄ΠΈΠ½ ΠΊΡ€ΡƒΠΏΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ сдСланный чисто Π½Π° ΠΊΠΎΡ‚Π»ΠΈΠ½Π΅ (Π΄Π°, я понимаю, Ρ‡Ρ‚ΠΎ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΏΠΎ ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ написана Π½Π° Java). ΠžΡ‚ΡΡŽΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ заявлСния ΠΎ готовности языка ΠΊ ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Ρƒ Π½Π΅ голословны. А ΠΈΠ· своСго ΠΆΠ΅ ΠΎΠΏΡ‹Ρ‚Π° использования ΠΊΠΎΡ‚Π»ΠΈΠ½Π° с 2012 Π³ΠΎΠ΄Π° ΠΌΠΎΠ³Ρƒ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΠ· Ρ‚Π΅Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ я сталкивался Π² Π΄ΠΎΡ€Π΅Π»ΠΈΠ·Π½Ρ‹Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π°, Π΄ΠΎ Ρ€Π΅Π»ΠΈΠ·Π° Π½ΠΈ ΠΎΠ΄Π½Π° Π½Π΅ Π΄ΠΎΠΆΠΈΠ»Π°. Π•ΡΡ‚ΡŒ Π΅Ρ‰Π΅ нСбольшиС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠΌ для IDEA, Π½ΠΎ сам компилятор Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊ часы.

БовмСстим с Java 1.6

Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚, вСдь ΠΈΠΌΠ΅Π½Π½ΠΎ эта вСрсия Java ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²ΠΎ всСх соврСмСнных вСрсиях Android, ΠΈ, Π½Π΅ смотря Π½Π° Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° OpenJDK, восьмая вСрсия ΠΏΠΎΠΏΠ°Π΄Π΅Ρ‚ Π² Ρ€ΡƒΠΊΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΏΠΎΠ΄ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Π΅ устройства Π½Π΅ Ρ‚Π°ΠΊ скоро ΠΊΠ°ΠΊ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π΅ΡΡ‚ΡŒ всякиС рСтролямбды ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ухищрСния, Π½ΠΎ ΠΊΠΎΡ‚Π»ΠΈΠ½ β€” это Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ лямбды для Π°Π½Π΄Ρ€ΠΎΠΈΠ΄, Π½ΠΎ ΠΈ соврСмСнный язык, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΏΠΎΠ΄ Π°Π½Π΄Ρ€ΠΎΠΈΠ΄ ΠΏΡ€ΠΎΡ‰Π΅ ΠΈ приятнСй Π±Π΅Π· особых Π·Π°Ρ‚Ρ€Π°Ρ‚. А ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° apk совсСм Π½Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎ Π½Ρ‹Π½Π΅ΡˆΠ½ΠΈΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π°ΠΌ: 823KB (для вСрсии 1.0.0)

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ

ΠŸΠΎΠ»Π½Ρ‹ΠΉ список возмоТностСй, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΊΠ°Ρ‚ΡŒ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, я ΠΆΠ΅ ΠΏΠΎΡΡ‚Π°Ρ€Π°ΡŽΡΡŒ ΠΎΡ‚Ρ€Π°Π·ΠΈΡ‚ΡŒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹Π΅ Π½Π° ΠΌΠΎΠΉ взгляд ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ Π² ΠΎΠ±Ρ‰ΠΈΡ… словах:

Null safety

ΠŸΠΎΡ‡Π΅ΠΌΡƒ-Ρ‚ΠΎ историчСски Ρ‚Π°ΠΊ слоТилось, Ρ‡Ρ‚ΠΎ эта ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΊΠΎΡ‚Π»ΠΈΠ½Π° вспоминаСтся ΠΏΠ΅Ρ€Π²ΠΎΠΉ. И хотя ΠΎΠ½Π° бСзусловно Π²Π°ΠΆΠ½Π°, Π½Π° ΠΌΠΎΠΉ взгляд Π½Π΅ являСтся ваТнСйшСй. Π—Π΄Π΅ΡΡŒ язык позволяСт, опрСдСляя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, поля, константы ΠΈ Ρ‚Π΄, ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΌΠΎΠΆΠ΅Ρ‚ Π»ΠΈ Π² Π½ΠΈΡ… Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ ссылка Π½Π° null. ΠŸΠΎΠ΄Π½ΠΈΠΌΠ°Π΅Ρ‚ Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ идСю Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΉ Π²Ρ€ΠΎΠ΄Π΅ @Nullable ΠΈ NotNull, позволяСт ΡƒΠΌΠ½ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ Π½Π΅-nullable Ρ‚ΠΈΠΏΡƒ послС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π΅Ρ‘ Π½Π° null. Надо ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π²Π°ΡŽΡ‚ случаи, ΠΊΠΎΠ³Π΄Π° эта ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ расходится с ΠΌΠΎΠΈΠΌ закостСнСлым Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ Π½Π° Java прСдставлСниСм ΠΎ Ρ‚ΠΎΠΌ ΠΊΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ сдСланы Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ, Π½ΠΎ послС Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ€Π°Π·Π΄ΡƒΠΌΡŒΡ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ всСгда находится.

Π’Ρ‹Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ²

Π”Π°, ΠΊΠΎΡ‚Π»ΠΈΠ½ ΠΏΠΎΡ‡Ρ‚ΠΈ Π²Π΅Π·Π΄Π΅ Π³Π΄Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡƒΠΌΠ΅Π΅Ρ‚ вывСсти Ρ‚ΠΈΠΏ, ΠΎΠ΄Π½Π°ΠΊΠΎ Ρ‚ΠΈΠΏ всё ΠΆΠ΅ придСтся ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ для ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ свойств, Ρ‡Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Ρ€Π°Π·ΡƒΠΌΠ½ΠΎ (ΠΌΠ½Π΅ ΠΏΠΎΠ΄ΡΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ это Π½Π΅ΠΏΡ€Π°Π²Π΄Π° β€” с ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ вСрсии это ΡƒΠ±Ρ€Π°Π»ΠΈ):

Extension methods

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠ½Π΅ остро Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ Π² Java для увСличСния гибкости языка ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ. Π—Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² возмоТности ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ для Ρ‚ΠΈΠΏΠ° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ Π΅Π³ΠΎ (Ρ‚ΠΈΠΏΠ°) объявлСния. Вакая функция, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΈ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ мСняСт класса, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΌΡ‹ добавляСм ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΎΠ΄Π½Π°ΠΊΠΎ позволяСт Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°Ρ€Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ для ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄Π°, Ρ‚Π°ΠΊ ΠΈ Ρ€Π°Π·Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ интСрфСйс ΠΎΡ‚ этих ΠΆΠ΅ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°Ρ€Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².

Лямбды

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΊΠ°ΠΊ любой соврСмСнный язык с ΠΏΡ€Π΅Ρ‚Π΅Π½Π·ΠΈΠ΅ΠΉ Π½Π° возмоТности Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования, Ρƒ ΠΊΠΎΡ‚Π»ΠΈΠ½Π° функция β€” это ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ класса, Ссли ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ΡŒ дословно. Π’.Π΅. Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ прямо Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ (ΠΈΠ· Π΄ΠΆΠ°Π²Ρ‹ ΠΎΠ½ΠΈ Π²ΠΈΠ΄Π½Ρ‹ всё Ρ€Π°Π²Π½ΠΎ Π² классах β€” ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π°), Π½ΠΎ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ Ρ‚Π΄. И сСйчас, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½ΠΈΠΊΠΎΠ³ΠΎ этим Π½Π΅ ΡƒΠ΄ΠΈΠ²ΠΈΡˆΡŒ, Π½ΠΎ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² сравнСнии с Java, Π³Π΄Π΅ синтаксичСски Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΊΠ°ΠΊ Ρ‚Π°ΠΊΠΎΠ²Ρ‹Ρ… Π½Π΅Ρ‚ (Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ интСрфСйсы), Π² ΠΊΠΎΡ‚Π»ΠΈΠ½Π΅ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹ΠΉ синтаксис для объявлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

Extension-лямбды

Наряду с extension-ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ, это Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° моя любимая Ρ„ΠΈΡ‡Π°. ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ лямбду, которая Π±ΡƒΠ΄Π΅Ρ‚ Π΅Ρ‰Π΅ ΠΈ extension-ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ. Π—Π²ΡƒΡ‡ΠΈΡ‚ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ, Π΄Π°. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

Π­Ρ‚Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ особСнно интСрСсно смотрится Π² Π±ΠΈΠ»Π΄Π΅Ρ€Π°Ρ…, ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽ Π²Π°ΠΌ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ β€” Π½Π° случай, Ссли Π²Π°ΠΌ интСрСсно, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ΡΡ Π²ΠΎΡ‚ Ρ‚Π°ΠΊΠΈΠ΅ конструкции:

Inline-Ρ„ΡƒΠΊΠ½Ρ†ΠΈΠΈ

ΠŸΠΎΠΌΠ΅Ρ‡Π°Ρ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΊΠ°ΠΊ inline ΠΌΡ‹ просим компилятор ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π΅Ρ‘ ΠΏΠΎ мСсту использования. Π§Π°Ρ‰Π΅ всСго Ρ‚Π°ΠΊΠΈΠΌΠΈ Π²Π΅Ρ‰Π°ΠΌΠΈ занимаСтся Ρ€Π°Π½Ρ‚Π°ΠΉΠΌ, Π½ΠΎ Π΅ΡΡ‚ΡŒ ΠΊΠ΅ΠΉΠ·Ρ‹, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Ρ‚ΠΎΡ‡Π½ΠΎ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ фукнция это просто ΡˆΠΎΡ€Ρ‚ΠΊΠ°Ρ‚ для ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ дСйствия β€” особСнно эффСктивно это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹ΠΌΠΈ лямбдами:

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½Π° Ρ‚Π°ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ накладываСтся сСрия ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ, ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ см. Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ.

Π”Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Π’ ΠΊΠΎΡ‚Π»ΠΈΠ½Π΅ Π΅ΡΡ‚ΡŒ Π΄Π²Π° Ρ‚ΠΈΠΏΠ° дСлСгирования. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π΄Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ интСрфСйса ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ инстансу этого Ρ‚ΠΈΠΏΠ°:

Π£ этого синтаксиса Π΅ΡΡ‚ΡŒ ряд ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ. НапримСр, инстанс для дСлСгирования Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ извСстСн Π΄ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° конструктора.

Π’Ρ‚ΠΎΡ€ΠΎΠΉ Ρ‚ΠΈΠΏ дСлСгирования β€” это delegated properties. ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ с ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ get (ΠΈ set для var), ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒΡΡ Π΄Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ доступа ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ свойству ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Generics

Π‘ΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΠΈ ΠΊΠΎΡ‚Π»ΠΈΠ½Π° нСсколько ΡƒΠ»ΡƒΡ‡ΡˆΠΈΠ»ΠΈ Java-Π΄ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΊΠΈ. Из-Π·Π° совмСстимости с Π΄ΠΆΠ°Π²ΠΎΠΉ Π½Π΅ всё ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ ΠΊΠ°ΠΊ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹, Π½ΠΎ ΠΈΠΌ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ нСприятных ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΡƒΡ‡Π»ΠΈ ΠΈΡ… ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΈΠΊΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Π½Π°Π΄ Java 5.

ДСструктуризация

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Π», Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· someFunc() Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΈΠΏΠ°, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π΅ΡΡ‚ΡŒ (ΠΌΠΎΠΆΠ½ΠΎ extension) ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ component1(), component2():

Data-классы

Π‘Π°Ρ…Π°Ρ€ компилятора для создания Π±ΠΈΠ½ΠΎΠ²:

Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ Π±ΠΈΠ½ с полями + Π°Π²Ρ‚ΠΎΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ equals+hashCode+toString()+componentN ΠΈΠ· Ρ€Π°Π·Π΄Π΅Π»Π° Π²Ρ‹ΡˆΠ΅, Ρ‡Ρ‚ΠΎ позволяСт ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄:

ПолСзная Π²Π΅Ρ‰ΡŒ, Π½ΠΎ ΠΎ Π½ΡŽΠ°Π½ΡΠ°Ρ… см. ΠΏΡƒΠ½ΠΊΡ‚ «О грустном».

Бтандартная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, нСльзя Π½Π΅ ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ ΠΈ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠΎΡ‚Π»ΠΈΠ½ Π½Π°Ρ†Π΅Π»Π΅Π½ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ вмСстС с Java, Ρ‚ΠΎ ΠΈ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ своСй стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Ρƒ Π½Π΅Π³ΠΎ Π½Π΅Ρ‚. Π‘ΠΎΠ»ΡŒΡˆΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Kotlin Π½Π°Ρ†Π΅Π»Π΅Π½Π° Π½Π° ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ ΠΈ исправлСниС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΡΡ‚Π°Ρ€ΡˆΠ΅Π³ΠΎ Π±Ρ€Π°Ρ‚Π° β€” Java. Однако, это Ρ‚Π΅ΠΌΠ° для Π΄Ρ€ΡƒΠ³ΠΎΠΉ большой ΡΡ‚Π°Ρ‚ΡŒΠΈ.

О грустном

Π’Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ это ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚, Π½ΠΎ Π½Π΅Ρ‚, Π΅ΡΡ‚ΡŒ ΠΈ нСприятныС ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹:

Над ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠΌ Π΅Ρ‰Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, пСриодичСски Π²Ρ‹Π΄Π°Π΅Ρ‚ ΡΠΊΡΠ΅ΠΏΡˆΠ΅Π½Ρ‹, ΠΏΠ»ΠΎΡ…ΠΎ ΡƒΠΌΠ΅Π΅Ρ‚ Π² toString() Π² Π΄Π΅Π±Π°Π³Π΅, Π° Ρ‚Π°ΠΊ ΠΆΠ΅ Π»ΡŽΠ±ΠΈΡ‚ ΠΏΡ€ΠΎΠΌΠ°Ρ…ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎ ссылкС Π½Π° исходник, ΠΈΠ½ΠΎΠ³Π΄Π° (Π²ΠΈΠ΄ΠΈΠΌΠΎ ΠΈΠ· Π·Π° особСнностСй ΠΈΠ½Π»Π°ΠΉΠ½Π°) ΠΏΡƒΡ‚Π°Π΅Ρ‚ Π³Π΄Π΅ поставлСн брэкпоинт ΠΈ Ρ‚ΠΎΠΌΡƒ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Π­Ρ‚ΠΎ всё ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ навСрняка поправят, Π½ΠΎ сСйчас ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ ΠΈΠΌΠ΅Π½Π½ΠΎ это.

Data-классы
НСкоторая Π½Π΅Ρ€ΡΡˆΠ»ΠΈΠ²ΠΎΡΡ‚ΡŒ

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½Π΅Ρ€ΡΡˆΠ»ΠΈΠ²ΠΎΡΡ‚ΡŒ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π² Π³ΠΎΠ»ΠΎΠ²Π°Ρ…, Π½ΠΎ ΠΊΡ€Π°Ρ‚ΠΊΠΎΡΡ‚ΡŒ синтаксиса ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈΠ³Ρ€Π°Π΅Ρ‚ Π·Π»ΡƒΡŽ ΡˆΡƒΡ‚ΠΊΡƒ, ΠΈ мСстами ΠΊΠΎΠ΄ выглядит Π½Π΅Π²Π°ΠΆΠ½ΠΎ. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ стайл-Π³Π°ΠΉΠ΄Π° нСсколько эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ исправило Π±Ρ‹, Π½ΠΎ ΠΏΠΎΠΊΠ° ΠΈΠ½ΠΎΠ³Π΄Π° приходится ΠΏΠΎΡΡ‚Π°Ρ€Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ, Π½ΠΎ ΠΈ красиво выглядСло. ОсобСнно Π½Π° ΠΌΠΎΠΉ ΡΡƒΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ взгляд ΡΡ‚Ρ€Π°ΡˆΠ½ΠΎ выглядят get, set для свойств.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

1) Π£Ρ‡Π΅Π±Π½ΠΈΠΊ ΠΏΠΎ ΠšΠΎΡ‚Π»ΠΈΠ½Ρƒ

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠšΠΎΡ‚Π»ΠΈΠ½?

Kotlin β€” это язык программирования с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС Java (JVM). Π­Ρ‚ΠΎ язык, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сочСтаСт Π² сСбС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (ООП) ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠΉ, самодостаточной ΠΈ самобытной ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅.

Kotlin β€” это язык программирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ JetBrains. Он ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° многочислСнных ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ…. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΠΎ ΠΌΠΈΠ½ΠΈΠ°Ρ‚ΡŽΡ€Π½Ρ‹ΠΌ ΠΊΠΎΠ΄Π°ΠΌ Π² Kotlin.

Из этого основного руководства для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… Kotlin Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅:

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ ΠšΠΎΡ‚Π»ΠΈΠ½Π°

Π—Π΄Π΅ΡΡŒ находятся Π²Π°ΠΆΠ½Ρ‹Π΅ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€Ρ‹ ΠΈΠ· истории ΠšΠΎΡ‚Π»ΠΈΠ½Π°:

Π“ΠΎΠ΄ Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅
2016Kotlin v1.0 Π±Ρ‹Π» Π·Π°ΠΏΡƒΡ‰Π΅Π½
2017ОбъявлСниС Google ΠΎ пСрвоклассной ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ kotlin Π² android
2018Kotlin v1.2 поставляСтся с надстройкой ΠΏΠΎ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ ΠΊΠΎΠ΄ΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρƒ JVM ΠΈ JavaScript
2019Google объявил Kotlin своим ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ языком программирования для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ для Android

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ использования Kotlin

Π’ΠΎΡ‚ нСсколько Π²Π°ΠΆΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΡ‡ΠΈΠ½, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠšΠΎΡ‚Π»ΠΈΠ½ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ:

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ ΠšΠΎΡ‚Π»ΠΈΠ½Π°

Π’ΠΎΡ‚ нСсколько особСнностСй Kotlin, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ позволят Π²Π°ΠΌ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ Π² прогрСссС языка программирования.

УрСзанная ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°:

Kotlin β€” это язык программирования Π½Π° основС ООП, Π³Π΄Π΅ строка ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΡ€Π΅Π·Π°Π½Π° Π΄ΠΎ 40%, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Kotlin ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния ΠΈΠ»ΠΈ Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ исходный ΠΊΠΎΠ΄:

Kotlin ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ JVM ΠΈ сочСтаСт Π² сСбС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ООП ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования.

Быстрая компиляция:

ΠΊΠΎΠ΄ Π»Π΅Π³ΠΊΠΎ компилируСтся ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Kotlin, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠΎΠ΄ Android, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚, ΠΊΠ°ΠΊΠΎΠΉ Ρ‚ΠΈΠΏ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎ всСм ΠΊΠΎΠ΄Π΅.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ:

Kotlin ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, Π½Π΅ внося Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΊΠΎΠ΄. это ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ Π²Π΅Π»ΠΈΠΊΠΎΠ»Π΅ΠΏΠ½Ρ‹ΠΌ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ².

НапримСр:

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π΅Π·Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈ послСдний символ строки, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΊΠ°ΠΊ:

НулСвая Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ:

Π’ Kotlin систСма Ρ€Π°Π·Π»ΠΈΡ‡Π°Π΅Ρ‚ пустыС ссылки ΠΈ Π½Π΅Π½ΡƒΠ»Π΅Π²Ρ‹Π΅ ссылки.

НапримСр, пСрСмСнная String Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ноль:

Interoperable:

Код Kotlin ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Java, Π° ΠΊΠΎΠ΄Ρ‹ Java ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ с Kotlin. Π˜Ρ‚Π°ΠΊ, Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ знания ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ OOPS, Π»Π΅Π³ΠΊΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Kotlin. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ссли Π΅ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ прилоТСния, написанныС Π½Π° Java, Ρ‚ΠΎ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² срСдС Kotlin.

НадСТныС инструмСнты:

Как ΠΈ Java, ΠΊΠΎΠ΄ Kotlin Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ написан с использованиСм IDE ΠΈΠ»ΠΈ интСрфСйса ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки. Π‘ IDE Π»Π΅Π³ΠΊΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, ΠΈ синтаксичСскиС ошибки Ρ‚Π°ΠΊΠΆΠ΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠΎΠΊΡ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ. Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с интСрфСйсом ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, сначала Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄.

Smart Cast:

Π˜Π½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ Π»ΠΈΡ‚ΡŒΠ΅ Π² основном ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ расходы Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ Π΅Π³ΠΎ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Он Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π°Π΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒΡŽ ΠΊΠΎΠ΄Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² ΠΈΠ»ΠΈ нСизмСняСмыС значСния.

НапримСр, Ссли строка ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π°, Ρ‚ΠΎ Π΅Π΅ Π΄Π»ΠΈΠ½Π° ΠΈ количСство ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π°ΠΉΠ΄Π΅Π½Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Smart Cast:

Низкая ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ усыновлСния:

ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΡ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽΡ‚ Kotlin ΠΈΠ·-Π·Π° ΠΏΠΎΡ‚Π΅Ρ€ΠΈ Π·Π°Ρ‚Ρ€Π°Ρ‚ Π½Π° усыновлСниС. Π‘Π°ΠΌΠΎΠ΅ Π³Π»Π°Π²Π½ΠΎΠ΅, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π»Π΅Π³ΠΊΠΎ учатся, особСнно имСя ΠΎΠΏΡ‹Ρ‚ программирования.

Kotlin Environment Setup

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ шаги, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π²Π°ΠΌ Π² настройкС Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ срСды ΠΏΡƒΡ‚Π΅ΠΌ установки Kotlin.

Π¨Π°Π³ 1) УстановитС Java

Π¨Π°Π³ 2) УстановитС Java IDE

К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, Π΅ΡΡ‚ΡŒ нСсколько Java IDE Π½Π° Π²Ρ‹Π±ΠΎΡ€. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ Π΄Π°Π»ΠΈ ссылки для скачивания, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Π°ΠΌ Π±Ρ‹Π»ΠΎ Π»Π΅Π³Ρ‡Π΅.

Π’ этом ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Eclipse.

Π¨Π°Π³ 3) УстановитС Kotlin

Для установки Kotlin Π² Eclipse ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² Ρ€Π°Π·Π΄Π΅Π» справки Π² Eclipse ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΎΠΏΡ†ΠΈΡŽ Eclipse Marketplace.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово Kotlin Π² ΠΏΠΎΠ»Π΅ поиска. НаТмитС Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ Go, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ список ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ². Он даст Π²Π°ΠΌ ссылку Π½Π° ΠΏΠ»Π°Π³ΠΈΠ½ Kotlin, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½ ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ссылкС.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования

ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, пСрСзапуститС Eclipse IDE послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ установки. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ ярлык Π² ΠΏΡ€Π°Π²ΠΎΠΌ Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΠ³Π»Ρƒ Eclipse IDE. Π­Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ быстрого доступа.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования

Π”Ρ€ΡƒΠ³ΠΎΠΉ способ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Kotlin Π² Eclipse IDE β€” ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² Windows, Β«ΠŸΠ΅Ρ€ΡΠΏΠ΅ΠΊΡ‚ΠΈΠ²Ρ‹Β», Β«ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ†ΠΈΠΈΒ», Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Β«Π”Ρ€ΡƒΠ³ΠΈΠ΅Β». Π—Π΄Π΅ΡΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ список ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ², установлСнных ΠΏΠΎΠ·ΠΆΠ΅, ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования

ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ»ΠΈ установку Kotlin, Π΄Π°Π²Π°ΠΉΡ‚Π΅ создадим ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Kotlin Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ шагС.

Π¨Π°Π³ 4) ΠŸΠ΅Ρ€Π²Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Kotlin

НачнитС с вашСго ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Kotlin. Π’ мСню File Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΎΠΏΡ†ΠΈΡŽ New, Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΈ Π½Π°Ρ‡Π½ΠΈΡ‚Π΅ с Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Kotlin ΠΈΠ· списка.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ имя для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΈ Π²Ρ‹ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Kotlin.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования

Π­Ρ‚ΠΈΠΌΠΈ простыми шагами ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Eclipse ΠΈ Kotlin Π² свою систСму ΠΈ сразу ΠΆΠ΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ свою ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Kotlin.

АрхитСктура ΠšΠΎΡ‚Π»ΠΈΠ½Π°

Π₯ΠΎΡ€ΠΎΡˆΠΎ продуманная Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π²Π°ΠΆΠ½Π° для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ»ΠΎ свои возмоТности ΠΈ соотвСтствовало оТиданиям ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Kotlin ΠΈΠΌΠ΅Π΅Ρ‚ свою ΠΎΡΠΎΠ±ΡƒΡŽ ΠΈ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ для распрСдСлСния памяти ΠΈ получСния качСствСнных Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

Π‘ΠΎΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ классы Kotlin строят ядро ​​таким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ мСньшС стандартного ΠΊΠΎΠ΄Π°, ΠΏΠΎΠ²Ρ‹ΡˆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Ρ‚ΡŒ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ. БущСствуСт мноТСство сцСнариСв, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… компилятор kotlin ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ, особСнно ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ выдСляСт Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ языки.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΡ‚Π»ΠΈΠ½ язык программирования

На Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ясно, Ρ‡Ρ‚ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° выполняСтся Π² Ρ‚Ρ€ΠΈ простых шага.

Когда Π² JVM Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ нСсколько Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΎΠ½ΠΈ Ρ€Π°Π·ΠΆΠΈΠ³Π°ΡŽΡ‚ Π²Π·Π°ΠΈΠΌΠ½ΠΎΠ΅ ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ собой, поэтому ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π² Kotlin, называСмая ΠΈΠ½Ρ‚Π΅Ρ€ΠΎΠΏΠ΅Ρ€Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ для роТдСния java ook

Вранспортировка Kotlin Π² JavaScript происходит, ΠΊΠΎΠ³Π΄Π° Kotlin Π½Π°Ρ†Π΅Π»Π΅Π½ Π½Π° JavaScript.

Когда Ρ†Π΅Π»ΡŒ JavaScript Π²Ρ‹Π±Ρ€Π°Π½Π°, любой ΠΊΠΎΠ΄ Kotlin, входящий Π² состав Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, которая поставляСтся вмСстС с Kotlin, Π·Π°Ρ‚Π΅ΠΌ заливаСтся JavaScript. Однако Java Development Kit (JDK) ΠΈΠ»ΠΈ любая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Java ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ.

Из обсуТдСния становится ясно, Ρ‡Ρ‚ΠΎ компиляторы Kotlin ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ эффСктивный, ΠΊΠΎΠΌΠΏΠ΅Ρ‚Π΅Π½Ρ‚Π½Ρ‹ΠΉ ΠΈ нСзависимый ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² дальнСйшСм ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ созданию Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ ΠšΠΎΡ‚Π»ΠΈΠ½Π°

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для хранСния Π΄Π°Π½Π½Ρ‹Ρ… для манипулирования ΠΈ обращСния ΠΊ Π½ΠΈΠΌ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. По сути, это Π΅Π΄ΠΈΠ½ΠΈΡ†Π° хранСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΈΡ… ΠΌΠ°Ρ€ΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, которая ΠΆΠ΄Π΅Ρ‚ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ псСвдонима, поэтому ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° проста для чтСния ΠΈ понятна. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ для сбора ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

Π’ Kotlin всС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹. Однако, Ссли какая-Π»ΠΈΠ±ΠΎ пСрСмСнная Π½Π΅ объявлСна, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ синтаксичСская ошибка. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, объявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ опрСдСляСт Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅ΠΌ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π’ Kotlin ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов val ΠΈ var. Π’ΠΎΡ‚ синтаксис объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² Kotlin:

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ объявили Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ day со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Β«MondayΒ» ΠΈ Ρ‚ΠΈΠΏΠΎΠΌ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ являСтся String, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π½ΠΎΠΌΠ΅Ρ€ локальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 3 ΠΈ с Ρ‚ΠΈΠΏΠΎΠΌ Int, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ здСсь Π»ΠΈΡ‚Π΅Ρ€Π°Π» ΠΈΠΌΠ΅Π΅Ρ‚ цСлочислСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° 3.

Π›ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Kotlin.

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ здСсь num1 ΠΈ num2 ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Int, Π° day β€” строковый Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…. Ergo, ΠΎΠ½ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ. Π’ΠΎΡ‚ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠ°ΠΊ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² Kotlin.

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, ΠΊΠ°ΠΊ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова var ΠΈ val ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°.

Var ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ Π² любом языкС программирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ нСсколько Ρ€Π°Π· Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² любоС врСмя Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΎΠ½ извСстСн ΠΊΠ°ΠΊ измСняСмая пСрСмСнная.

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ измСняСмой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² Kotlin:

Π—Π΄Π΅ΡΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ num1, Ρ€Π°Π²Π½ΠΎΠ΅ 20, пСрСзаписываСтся ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ num1, Ρ€Π°Π²Π½Ρ‹ΠΌ 10. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π²Ρ‹Π²ΠΎΠ΄ num1 + num2 Ρ€Π°Π²Π΅Π½ 40 вмСсто 30.

Val ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° ΠΏΠΎΡΡ‚ΠΎΡΠ½Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, ΠΈ Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ·ΠΆΠ΅ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ нСльзя Π½Π°Π·Π½Π°Ρ‡Π°Ρ‚ΡŒ нСсколько Ρ€Π°Π· Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. Ergo, это извСстно ΠΊΠ°ΠΊ нСизмСняСмая пСрСмСнная.

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ нСизмСняСмых ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² Kotlin:

Here, the value of num1 that is 10 cannot be overwritten by the new value of num1 that is 20, as it is of val type that is constant. Therefore, the output is 30 instead of 40.

Note: In Kotlin, immutable variables are preferred over mutable variables.

Data Types in Kotlin

Data types are set of relatable values and describe the operations that can be operated on them. Similar to other programming languages, Kotlin also has its predefined set of data types like Int, Boolean, Char, Double, etc.

In Kotlin, every data type is considered as an object.

Now, let’s dive deeper into the predefined data types used in Kotlin.

Numbers :

Kotlin serves a set of built-in data types known as numbers, which are sub-categorize as Integers and Floating-Point Numbers.

Integers :

Integers are the category of numbers that has four types:

TypeSize (bits)Min valueMax value
Byte8-128127
Short16-3276832767
Int32-2,147,483,648 (-231)2,147,483,647 (231 β€” 1)
Long64-9,223,372,036,854,775,808 (-263)9,223,372,036,854,775,807 (263 β€” 1)

Floating Point Numbers :

Floating Point Numbers are the non-Integer numbers that carry some decimal values.

Float: Float is a 32- bit single-precision floating-point value.

Example: var: Float x = 3.25600

Double: Double is a 64- bit double β€” precision floating point value.

Example: var: Double y = 2456.345587

Booleans :

Booleans data type in Kotlin is significant to represent the logical values. There are only two possible values in Boolean that is either true or false.

For Example : val day = true

Character :

Characters in Kotlin are represented with the help of the keyword called char. In Kotlin, single quotes represent the declaration of char. In java, char are sometimes used as numbers that is not possible in kotlin.

Kotlin Type Conversion or Kotlin Type Casting

Type Conversion is a procedure of converting one type of data variable into another data type variable. It is enormously, also known as Type Casting.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *