Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin

ΠŸΠΎΡ‡Π΅ΠΌΡƒ слСдуСт ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π° Kotlin

Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin. Π€ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin

Π₯ΠΎΡ‡Ρƒ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Π°ΠΌ ΠΎ Π½ΠΎΠ²ΠΎΠΌ языкС программирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ называСтся Kotlin, ΠΈ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π²Π°ΠΌ стоит ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² своём ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅. РаньшС я ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π» Java, Π½ΠΎ Π² послСдний Π³ΠΎΠ΄ ΠΏΠΈΡˆΡƒ Π½Π° Kotlin Π²Π΅Π·Π΄Π΅, Π³Π΄Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠΎΠΆΠ½ΠΎ. И Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ я Π½Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽ сСбС ситуации, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π»ΡƒΡ‡ΡˆΠ΅ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Java.

Kotlin Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Π² JetBrains, ΠΈ участиС Ρ‚Π΅Ρ… ΠΆΠ΅ людСй Π² создании Π½Π°Π±ΠΎΡ€ΠΎΠ² IDE, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ IntelliJ ΠΈ ReSharper, Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ ΠΏΠΎ самому языку. Он ΠΏΡ€Π°Π³ΠΌΠ°Ρ‚ΠΈΡ‡Π΅Π½ ΠΈ ΠΊΡ€Π°Ρ‚ΠΎΠΊ, благодаря Ρ‡Π΅ΠΌΡƒ написаниС ΠΊΠΎΠ΄Π° прСвращаСтся Π² приятный ΠΈ эффСктивный процСсс.

Π₯отя Kotlin компилируСтся Π² JavaScript ΠΈ скоро Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, я ΡΠΊΠΎΠ½Ρ†Π΅Π½Ρ‚Ρ€ΠΈΡ€ΡƒΡŽΡΡŒ Π½Π° Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠΉ срСдС β€” JVM.

Π˜Ρ‚Π°ΠΊ, нСсколько ΠΏΡ€ΠΈΡ‡ΠΈΠ½, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π²Π°ΠΌ слСдуСт ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π° Kotlin (порядок случаСн):

0# Π‘ΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с Java

Kotlin Π½Π° 100 % совмСстим с Java. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π² Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎΠΌ смыслС ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π°Π΄ своим старым Java-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ, Π½ΠΎ ΡƒΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Kotlin. ВсС ваши Π»ΡŽΠ±ΠΈΠΌΡ‹Π΅ Java-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ доступны, ΠΈ, Π² ΠΊΠ°ΠΊΠΎΠΌ Π±Ρ‹ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ΅ Π²Ρ‹ Π½ΠΈ писали, Kotlin Π±ΡƒΠ΄Π΅Ρ‚ Π»Π΅Π³ΠΊΠΎ принят упрямым Π»ΡŽΠ±ΠΈΡ‚Π΅Π»Π΅ΠΌ Java.

1# Π—Π½Π°ΠΊΠΎΠΌΡ‹ΠΉ синтаксис

2# Π˜Π½Ρ‚Π΅Ρ€ΠΏΠΎΠ»ΡΡ†ΠΈΡ строк

Π­Ρ‚ΠΎ ΠΊΠ°ΠΊ Π±Ρ‹ Π±ΠΎΠ»Π΅Π΅ умная ΠΈ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½Π°Ρ вСрсия String.format() ΠΈΠ· Java, встроСнная Π² язык:

3# Π’Ρ‹Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ°

Kotlin Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ваши Ρ‚ΠΈΠΏΡ‹, Ссли Π²Ρ‹ посчитаСтС, Ρ‡Ρ‚ΠΎ это ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ:

4# Π£ΠΌΠ½Ρ‹Π΅ привСдСния Ρ‚ΠΈΠΏΠΎΠ² (Smart Casts)

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Kotlin отслСТиваСт Π²Π°ΡˆΡƒ Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΈ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ возмоТности автоматичСски выполняСт ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ², Ρ‚. Π΅. Π²Π°ΠΌ большС Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ instanceof послС явных ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠΉ:

5# Π˜Π½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ равСнства (Intuitive Equals)

6# АргумСнты ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ

Π‘ΠΎΠ»ΡŒΡˆΠ΅ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ нСсколько ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ:

7# Π˜ΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹

Π’ сочСтании с Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈΠ·Π±Π°Π²Π»ΡΡŽΡ‚ ΠΎΡ‚ нСобходимости ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π‘Ρ‚Ρ€ΠΎΠΈΡ‚Π΅Π»Π΅ΠΉ:

8# Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ When

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ вСтвлСния Π·Π°ΠΌΠ΅Π½Ρ‘Π½ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ Π³ΠΈΠ±ΠΊΠΈΠΌ Π² ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ when:

Оно Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈ ΠΊΠ°ΠΊ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ (expression), ΠΈ ΠΊΠ°ΠΊ описаниС (statement), с Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ ΠΈΠ»ΠΈ Π±Π΅Π· Π½Π΅Π³ΠΎ:

9# Бвойства

МоТно Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΌ полям кастомноС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ set & get, Ρ‚. Π΅. ΠΏΠ΅Ρ€Π΅ΡΡ‚Π°Ρ‚ΡŒ Π½Π°Π±ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π±Π΅Π·ΡƒΠΌΠ½Ρ‹ΠΌΠΈ Π³Π΅Ρ‚Ρ‚Π΅Ρ€Π°ΠΌΠΈ ΠΈ сСттСрами.

10# Data Class

11# ΠŸΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° (Operator Overloading)

Π—Π°Ρ€Π°Π½Π΅Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ:

12# Π”Π΅ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ объявлСния (Destructuring Declarations)

НСкоторыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ дСструктурированы, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, для итСрирования map:

13# Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹ (Ranges)

Для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ:

14# Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ-Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ (Extension Functions)

Если Π±Ρ‹ сущСствовал способ добавлСния Π½ΠΎΠ²Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² старыС классы, Ρ‚ΠΎΠ³Π΄Π° ваш IDE ΠΏΠΎΠΌΠΎΠ³ Π±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΡ€ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ ΠΊΠΎΠ΄Π°. ИмСнно это ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Π² Kotlin:

Бтандартная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… Java-Ρ‚ΠΈΠΏΠΎΠ², Ρ‡Ρ‚ΠΎ особСнно ΠΏΠΎΠ»Π΅Π·Π½ΠΎ для String :

15# Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ Null

Kotlin заставляСт вас Π±ΠΎΡ€ΠΎΡ‚ΡŒΡΡ с NPE, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΎΠ±Ρ€Π°Ρ‰Π°Π΅Ρ‚Π΅ΡΡŒ ΠΊ Ρ‚ΠΈΠΏΡƒ, Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‰Π΅ΠΌΡƒ null:

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, выглядит Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΎ, Π½ΠΎ благодаря нСскольким своим возмоТностям Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ. Π£ нас всё Π΅Ρ‰Ρ‘ Π΅ΡΡ‚ΡŒ ΡƒΠΌΠ½Ρ‹Π΅ привСдСния Ρ‚ΠΈΠΏΠΎΠ², ΠΊΠΎΠ³Π΄Π° Ρ‚ΠΈΠΏΡ‹, Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‰ΠΈΠ΅ null, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ Π² Π½Π΅ Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‰ΠΈΠ΅:

Если всё это Π²Π°ΠΌ Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΈ Π²Π°ΠΌ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Ρ‚ΠΎΡ‡Π½ΠΎ Π½ΡƒΠΆΠ½Ρ‹ NPE, Ρ‚ΠΎ скаТитС ΠΎΠ± этом явно:

16# Π£Π»ΡƒΡ‡ΡˆΠ΅Π½Π½Ρ‹Π΅ лямбды

Π­Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ систСма лямбд β€” ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ баланс ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΈ Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ благодаря нСскольким Ρ‚ΠΎΠ»ΠΊΠΎΠ²Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌ. Бинтаксис прост:

А Π²ΠΎΡ‚ ΠΈ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ:

ΠšΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡ этих Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ² Π΄Π΅Π»Π°Π΅Ρ‚ эквивалСнтными эти Ρ‚Ρ€ΠΈ строки:

Π­Ρ‚ΠΎ позволяСт Π½Π°ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½Ρ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄, Π²Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ посмотритС Π½Π° эту красоту:

БистСма лямбд, ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Ρ‘Π½Π½Π°Ρ с функциями-Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡΠΌΠΈ, Π΄Π΅Π»Π°Π΅Ρ‚ Kotlin ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌ инструмСнтом для создания DSL. Anko β€” ΠΏΡ€ΠΈΠΌΠ΅Ρ€ DSL, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠ³ΠΎ для Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ возмоТностСй Android-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ:

17# ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° IDE

Π£ вас Π΅ΡΡ‚ΡŒ Ρ†Π΅Π»Ρ‹ΠΉ ряд Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ², ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Kotlin, Π½ΠΎ я ΠΊΡ€Π°ΠΉΠ½Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ IntelliJ, ΠΈΠ΄ΡƒΡ‰ΠΈΠΉ Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π΅ поставки Kotlin β€” Π΅Π³ΠΎ возмоТности Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‚ прСимущСство ситуации, ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ люди Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ ΠΊΠ°ΠΊ язык, Ρ‚Π°ΠΊ ΠΈ IDE.
НСбольшой ΠΏΡ€ΠΈΠΌΠ΅Ρ€: это сообщСниС всплыло, ΠΊΠΎΠ³Π΄Π° я Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ попытался ΡΠΊΠΎΠΏΠΈΠΏΠ°ΡΡ‚ΠΈΡ‚ΡŒ Java-ΠΊΠΎΠ΄ со Stack Overflow:

Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin. Π€ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin
IntelliJ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ вставляСтС Java-ΠΊΠΎΠ΄ Π² Ρ„Π°ΠΉΠ» Kotlin

На этом всё, спасибо Π·Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅! Если ΠΌΠ½Π΅ ΠΏΠΎΠΊΠ° Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒ вас насчёт Kotlin, Ρ‚ΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹:

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

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

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

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

Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin. Π€ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin

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. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° 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 для свойств.

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

Kotlin

Kotlin β€” это язык программирования, созданный ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ JetBrains. Π‘ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ вСрсии языка Π² 2016 Π³ΠΎΠ΄Ρƒ, всСго Π·Π° Π³ΠΎΠ΄ ΠΎΠ½ занял мСсто Π² Ρ‚ΠΎΠΏ-50 Π² Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³Π΅ TIOBE (индСкс, ΠΎΡ†Π΅Π½ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ языков программирования Π½Π° основС подсчСта Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² поисковых запросов, содСрТащих Π½Π°Π·Π²Π°Π½ΠΈΠ΅ языка) ΠΈ Π½Π΅ сдаСт ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ.

Kotlin β€” это статичСски Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык программирования (Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ извСстСн Π²ΠΎ врСмя компиляции, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ Π΄ΠΎ запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹).

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Java, Π³Π΄Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ строятся Π½Π° классах, основным ΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π±Π»ΠΎΠΊΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Kotlin являСтся функция. Однако Kotlin Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ.

Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin. Π€ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin

Для Ρ‡Π΅Π³ΠΎ примСняСтся язык программирования Kotlin?

ΠžΠ±Π»Π°ΡΡ‚ΡŒ примСнСния Kotlin ΡˆΠΈΡ€ΠΎΠΊΠ°Ρ:

БСгодня Π² основном ΠΎΠ½ примСняСтся для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Android-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π’ 2017 Π³ΠΎΠ΄Ρƒ Kotlin ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Google, Π° ΡƒΠΆΠ΅ Π² 2019 Π³ΠΎΠ΄Ρƒ Google объявил Kotlin ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½Ρ‹ΠΌ языком для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ΄ Android.

Бинтаксис

По мнСнию создатСлСй Kotlin, Java Π½Π°ΠΊΠΎΠΏΠΈΠ»Π° ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ΡƒΠ΄Π°Ρ‡Π½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ Π·Π° Π³ΠΎΠ΄Ρ‹ сущСствования. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Π½ΠΎΠ²ΠΎΠΌ языкС ΠΎΠ½ΠΈ ΠΏΠΎΡΡ‚Π°Ρ€Π°Π»ΠΈΡΡŒ ΡƒΡ‡Π΅ΡΡ‚ΡŒ всС Π½Π΅Π΄ΠΎΡ‡Π΅Ρ‚Ρ‹ Java ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… языков программирования ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ синтаксис языка Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½Ρ‹ΠΌ ΠΈ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ. Для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° Kotlin ΠΏΡ€ΠΎΡ‰Π΅ читаСтся. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π° дСсятки строк ΠΊΠΎΡ€ΠΎΡ‡Π΅, Ρ‡Π΅ΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Java.

Главная Ρ‚ΠΎΡ‡ΠΊΠ° Π²Ρ…ΠΎΠ΄Π°

Π’Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ Π² Java, Π² Kotlin Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ Π²Ρ…ΠΎΠ΄Π° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ являСтся функция main().

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

Kotlin ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ совмСстим с Java. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ Π² Java-ΠΊΠΎΠ΄Π΅, прямо ΠΈΠ· ΠΊΠΎΠ΄Π° Kotlin ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, ΠΈ Π² Ρ‚ΠΎΠΌ числС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ большим количСством ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π½Π° Java.

Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½Π° Kotlin ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ Java-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ. А Π΅Ρ‰Π΅ Kotlin ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с систСмами сборки, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Maven ΠΈ Gradle.

Π›Π°ΠΊΠΎΠ½ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ. Π­Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· основных Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ², ΠΈΠ·-Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… всС большС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ Kotlin.

Kotlin null-бСзопасСн. Π‘ΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΠΈ языка сдСлали всё, Ρ‡Ρ‚ΠΎΠ±Ρ‹ NullPointerException ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ. Π­Ρ‚ΠΎ ΠΎΠ΄Π½ΠΈ ΠΈΠ· самых часто Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‰ΠΈΡ…ΡΡ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ, ΠΈ ΠΈΡ… ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π²ΠΎ врСмя компиляции. А это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ошибки Π±ΡƒΠ΄ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

NullPointerException Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π² случаС, ΠΊΠΎΠ³Π΄Π° пСрСмСнная, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ пытаСтся ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Ρ€Π°Π²Π½Π° null. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Kotlin ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ нСльзя ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ null, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли это Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ΠΎ явно. НапримСр, ΠΊΠΎΠ΄ Π½ΠΈΠΆΠ΅ Π½Π΅ скомпилируСтся, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ отсутствуСт Β«β€Ž?Β»β€Ž послС Ρ‚ΠΈΠΏΠ° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ:

val name: String = null

Π§Ρ‚ΠΎΠ±Ρ‹ пСрСмСнная name ΠΌΠΎΠ³Π»Π° Π±Ρ‹Ρ‚ΡŒ null, Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ это явно с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π·Π½Π°ΠΊΠ° Β«β€Ž?Β»:

val name: String? = null

Π’ ΠΊΠΎΠ΄Π΅ Π½ΠΈΠΆΠ΅ функция hashCode() Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½Π°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ пСрСмСнная name Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€Π°Π²Π½Π° null.

val name: String? = null
name?.hashCode()

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

fun String.addGreeting(): String<
return β€œHello β€œ + this
>

Π’ΠΎΠ³Π΄Π° Π²Ρ‹Π·ΠΎΠ² Ρ‚Π°ΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

val name = β€œSkillFactory”
println(name.addGreeting())

Kotlin ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ исходный ΠΊΠΎΠ΄. Код Kotlin ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ для программистов, ΠΈ Π΅Π³ΠΎ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Ρ‚ΠΎΠΆΠ΅ бСсплатно. ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ исходный ΠΊΠΎΠ΄ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ поиск ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Kotlin ΠΏΡ€ΠΈΡΠ»ΡƒΡˆΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΊ сторонним Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΈ вносят ΠΏΡ€Π°Π²ΠΊΠΈ, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΡ‹Π΅ сообщСством.

Π›Π΅Π³ΠΊΠΎ ΡƒΡ‡ΠΈΡ‚ΡŒ. МногиС ΠΎΡ‚ΠΌΠ΅Ρ‡Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ Kotlin прост Π² ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ ΠΈ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚ ΠΊΠ°ΠΊ язык программирования для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ….

НСдостатки

Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ компиляции. Часто Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ со ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ компиляции ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΎ Π½Π΅ постоянноС явлСниС, ΠΈΠ½ΠΎΠ³Π΄Π° компиляция происходит Π΄Π°ΠΆΠ΅ быстрСС, Ρ‡Π΅ΠΌ ΠΊΠΎΠ΄Π° Π½Π° Java, Π½ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ Ρ€Π°ΡΡΡ‚Ρ€Π°ΠΈΠ²Π°ΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ².

МалоС количСство Ρ‚ΡƒΡ‚ΠΎΡ€ΠΈΠ°Π»ΠΎΠ². БообщСство Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π½Π° языкС программирования Kotlin Π΅Ρ‰Π΅ ΠΌΠΎΠ»ΠΎΠ΄ΠΎΠ΅ ΠΈ статСй ΠΏΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π½Π΅ Ρ‚Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ, особСнно для Β«β€ŽΡ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ²Β»β€Ž. Π’ΠΎΡ‚ нСсколько ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² Π½Π° русском языкС для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ….

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

ΠŸΠ΅Ρ€ΡΠΏΠ΅ΠΊΡ‚ΠΈΠ²Ρ‹

БСйчас Kotlin ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎ являСтся основным языком для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Android-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π° Π·Π½Π°Ρ‡ΠΈΡ‚, Π² блиТайшиС нСсколько Π»Π΅Ρ‚ Android-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Ρ‚Π°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°Ρ‡Π΅ прСдстоит с Π½ΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

Π‘ Kotlin Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ β€” Uber, Netflix, Pinterest, Coursera, β€” поэтому Π² блиТайшСм Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Kotlin станСт Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈ Π² Π²Π΅Π±-, ΠΈ дСсктопных прилоТСниях.

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

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π²Π°ΠΌ стоит Π²Ρ‹ΡƒΡ‡ΠΈΡ‚ΡŒ Kotlin?

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

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π²Π°ΠΌ стоит Π²Ρ‹ΡƒΡ‡ΠΈΡ‚ΡŒ Kotlin?

Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin. Π€ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin

Senior iOS/Android Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Usetech

ВсСм ΠΏΡ€ΠΈΠ²Π΅Ρ‚! Π― Анна Π–Π°Ρ€ΠΊΠΎΠ²Π°, Senior iOS/Android Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Usetech, Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΠΎΡ€ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ Ρ‚ΠΈΠΌΠ»ΠΈΠ΄. Π’ коммСрчСской Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π±ΠΎΠ»Π΅Π΅ 6 Π»Π΅Ρ‚, Π² мобильной 8 Π»Π΅Ρ‚. ΠŸΠΈΡˆΡƒ Π½Π° Swift/Objective-C ΠΏΠΎΠ΄ iOS, Java/Kotlin ΠΏΠΎΠ΄ Android, ΡƒΠΊΡ€ΠΎΡ‰Π°ΡŽ Xamarin (ΠΊΠ°ΠΊ Xamarin iOS/Android, Ρ‚Π°ΠΊ ΠΈ Xamarin Forms).

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

Π˜Ρ‚Π°ΠΊ, Кotlin β€” это …

Π­Ρ‚ΠΎ статичСски-Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык программирования. Π‘Ρ€Π΅Π΄ΠΈ Π΅Π³ΠΎ достоинств создатСли ΠΎΡ‚ΠΌΠ΅Ρ‡Π°ΡŽΡ‚ ΠΏΡ€Π°Π³ΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ ΠΈ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ. Π―Π·Ρ‹ΠΊ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ Ρ…ΠΎΡ€ΠΎΡˆ ΠΊΠ°ΠΊ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… программистов, Ρ‚Π°ΠΊ ΠΈ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Ρ….

Π―Π·Ρ‹ΠΊ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ развиваСтся. ВСкущая вСрсия 1.5.20.

Π’Π°ΠΊΠΆΠ΅ стоит ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ ΠΊΡ€Π°Ρ‚ΠΊΠΎΡΡ‚ΡŒ Kotlin:

Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin. Π€ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ своСго ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΈΠΊΠ°, Java, Kotlin Π±ΠΎΠ»Π΅Π΅ бСзопасСн. Π’ сСмантику языка Π·Π°Π»ΠΎΠΆΠ΅Π½Ρ‹ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Ρ†Π΅Π»Ρ‹ΠΉ ряд ΠΎΡ‡Π΅Π½ΡŒ распространённых ошибок, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡΠ»ΡƒΡ‡Π°ΡŽΡ‚ΡΡ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ исполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. НапримСр, Kotlin обСспСчиваСт ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Null safety Π·Π° счёт ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Nullable ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ бСзопасной ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ распаковки ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ значСния. Π’Π°ΠΊΠΆΠ΅ Kotlin ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡƒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ ΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ²:

Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin. Π€ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin

И Π΄Π°, Kotlin ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ совмСстим с Java. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡƒΡŽ ΠΏΠΎΠ΄ JVM, Ρ‚Π°ΠΊ ΠΈ постСпСнно ΠΌΠΈΠ³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с прилоТСния, написанного Π½Π° Java. Π’Π°ΠΊΠΆΠ΅ IDE Intelij Idea ΠΈ Android Studio ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΡŽ Java ΠΊΠΎΠ΄Π° Π² Kotlin.

Π’Π°ΠΊΠΆΠ΅ Ρƒ Kotlin Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° структурированного ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° (structured concurrency). ΠšΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ Kotlin ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой простой ΠΈ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ Π² использовании способ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. Π’Π½ΡƒΡ‚Ρ€ΠΈ Kotlin, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΏΠΎΠ²Π΅Ρ€Ρ… JVM, остаСтся Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ ΠΈ Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΠΎΡΡ‚ΡŒΡŽ, Ρ‡Ρ‚ΠΎ ΠΈ Π² Java, Π½ΠΎ благодаря Kotlin Coroutines Π½Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π½ΠΈΠΌΠΈ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, ΠΈ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ довольно лСгковСсноС Π²ΠΎ всСх смыслах Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅:

Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin. Π€ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin

БкладываСтся Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Kotlin β€” это Java, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π»ΡƒΡ‡ΡˆΠ΅ ΠΈ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅, с Π±ΠΎΠ³Π°Ρ‚Ρ‹ΠΌΠΈ синтаксичСским возмоТностями. Но это Π½Π΅ совсСм Ρ‚Π°ΠΊ. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ различиях ΠΌΠ΅ΠΆΠ΄Ρƒ языками смотритС здСсь. Π’ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅ ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ° использования ΠΏΠΎ ТСланию Π»ΠΈΠ±ΠΎ Kotlin, Π»ΠΈΠ±ΠΎ Java, Π»ΠΈΠ±ΠΎ ΠΎΠ±Π° языка вмСстС, ΠΈΠΌΠ΅Π΅Ρ‚ мСсто Π±Ρ‹Ρ‚ΡŒ.

Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin. Π€ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin

Основной язык Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ΄ Android

Π’ 2017 Π³ΠΎΠ΄Ρƒ Π½Π° Google I/O анонсировали ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ языка Kotlin для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ΄ Android с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ IDE Android Studio. Бпустя 2 Π³ΠΎΠ΄Π° Π½Π° I/O 2019 Google объявили Kotlin ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½Ρ‹ΠΌ языком для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Android ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (Kotlin-First) ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π»ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ ΡƒΠΆΠ΅ Π½Π° Kotlin: «МСньшС ΠΊΠΎΠ΄Π° для вас, мСньшС ΠΊΠΎΠ΄Π° ΠΏΠΈΡΠ°Ρ‚ΡŒ, ΠΏΡ€ΠΎΡ‰Π΅ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΒ». Π’Π°ΠΊΠΆΠ΅ Kotlin-First ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½ΠΎΡΡ‚ΡŒ выпуска Π½ΠΎΠ²Ρ‹Ρ… API ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ (Jetpack API) ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° Kotlin.

Богласно статистикС Google (I/O 2021), Kotlin сСйчас ΠΈ самый популярный язык Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ самих ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ΄ Android, Π½ΠΎ ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ, Π² Ρ‚ΠΎΠΌ числС сСрвСрных ΠΈ кроссплатформСнных (см. Π½ΠΈΠΆΠ΅). 1000 Ρ‚ΠΎΠΏΠΎΠ²Ρ‹Ρ… (ΠΏΠΎ установкам) ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ· Google Play содСрТат 80% ΠΊΠΎΠ΄Π° Π½Π° Kotlin. 60% всСх Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Android ΠΏΠΈΡˆΡƒΡ‚ свой ΠΊΠΎΠ΄ ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° Kotlin.

Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin. Π€ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin

Π‘ΠΎΠ»ΡŒΡˆΠ΅ 70 ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ самой ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Google написаны Π½Π° Kotlin. БСрвисы Maps, Places, Firebase ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π΄Π°Π²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Kotlin. Π’Π°ΠΊΠΆΠ΅ Google ΠΎΡ‚ΠΌΠ΅Ρ‡Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ благодаря ΠΈΡ… совмСстной Ρ€Π°Π±ΠΎΡ‚Π΅ с JetBrains Π½Π°Π΄ компилятором, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Kotlin становится быстрСС ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅, Ρ‡Π΅ΠΌ Π½Π° Java.

Π˜Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΆΠ΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ (KTX) ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Kotlin ΠΎΠ±Π»Π΅Π³Ρ‡Π°ΡŽΡ‚ ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ°ΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ:

Π‘ΠΎΠ»ΡŒΡˆΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ смотритС Π² Π²ΠΈΠ΄Π΅ΠΎ State of Kotlin.

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, Ссли Π²Ρ‹ Android-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ, Ρ‚ΠΎ ΡΠΎΠ²Π΅Ρ‚ΡƒΡŽ Π²Ρ‹ΡƒΡ‡ΠΈΡ‚ΡŒ Kotlin.

ВСхнология кроссплатформСнной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Kotlin Multiplatform

Kotlin ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Android, Π½ΠΎ ΠΈ для Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ, Π° Ρ‚Π°ΠΊΠΆΠ΅ кроссплатформСнно.

Kotlin multiplatform β€” это SDK для кросс-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎΠΉ-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ JetBrains. Данная тСхнология позволяСт ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΎΠ±Ρ‰Π΅Π³ΠΎ Ρ€Π°ΡΡˆΠ°Ρ€ΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π½Π° Kotlin, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ JVM Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ для Android ΠΈ LLVM Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ ΠΏΠΎΠ΄ iOS ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΊ Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ прилоТСниям.

Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin. Π€ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin

Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ±Ρ‰ΠΈΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² сСбя практичСски всё, ΠΊΡ€ΠΎΠΌΠ΅ UI ΠΈ особо спСцифичСского ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ KMM позволяСт ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ ΠΈ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ прилоТСния ΠΏΠΎΠ΄ ΠΎΠ±Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.

Помимо Π±Π»ΠΎΠΊΠ° common ΠΊΠΎΠ΄Π° ΠΌΠΎΠ΄ΡƒΠ»ΡŒ содСрТит ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π° для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ.

Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ (это Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ iOS, Android, Π½ΠΎ ΠΈ JS, Windows, MacOS ΠΈ Ρ‚ΠΎΠΌΡƒ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅) Kotlin Multiplatform ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ свою Π²Π΅Ρ€ΡΠΈΡŽ языка, Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΏΠΎΠ΄ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ особСнности ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹:

Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin. Π€ΠΎΡ‚ΠΎ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° kotlin

Π₯отя ΠΏΠ»Π°Π³ΠΈΠ½ KMM (Kotlin Multiplatform Mobile) ΠΈ находится Π΅Ρ‰Π΅ Π² стадии Π°Π»ΡŒΡ„Π° (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π² Ρ€Π°Π±ΠΎΡ‚Π΅), ΠΎΠ½ ΡƒΠΆΠ΅ Π³ΠΎΡ‚ΠΎΠ² ΠΊ ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎΠΌΡƒ использованию ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. МногиС ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΡƒΠΆΠ΅ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ свои ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹ Π½Π° Kotlin Multiplatform.

Для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ эффСктивных KMM ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ сущСствуСт ΠΌΠ½ΠΎΠ³ΠΎ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ². Π‘Ρ€Π΅Π΄ΠΈ Π½ΠΈΡ… Ktor (сСтСвой ΠΊΠ»ΠΈΠ΅Π½Ρ‚), SqlDelight (Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅), Coroutines, Serialization, Moko (Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎΡ‚ IceRock), Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Badoo ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅.

И Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Π΅ прилоТСния.

Π’Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Kotlin ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Π΅ прилоТСния. Kotlin JS ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для Π²Π΅Π±Π°. Π’ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈΠ· экосистСмы языка, Ρ‚Π°ΠΊ ΠΈ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для JS, JavaScript, TypeScript.

Одним ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ интСрСсных Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ², Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… Π½Π° Kotlin JS, β€” Compose for Web. Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ вСрсия Jetpack Compose для Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ со списком ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ здСсь.

Π’Π°ΠΊΠΆΠ΅ язык ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΈ для бэкСнда. Π’Π°ΠΊΠΈΠ΅ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ, ΠΊΠ°ΠΊ Spring, ΡƒΠΆΠ΅ Π΄Π°Π²Π½ΠΎ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ Π΅Π³ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚.

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½:

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

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

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