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

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

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ посмотритС это ΠΈ Π²Π΄ΡƒΠΌΠ°ΠΉΡ‚Π΅ΡΡŒ, ΠΊΠΎΡ‚Π»ΠΈΠ½ мСсто 36:

Ну ΠΈ Ρ‡Ρ‚ΠΎ Π²Ρ‹ скаТСтС.
Π”Π° Π½Π΅ Π½Π΅ Π½Ρƒ ΠΈ Ρ‡Ρ‚ΠΎ.

Π―Π·Ρ‹ΠΊΠΎΠ² программирования Π±ΠΎΠ»Π΅Π΅ 2000 тысяч.

НС Π±Ρ‹Π»ΠΎ Π² истории Π΅Ρ‰Ρ‘ Ρ‡Ρ‚ΠΎ Π±Ρ‹ язык Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΉ Π² 2016 Π³ΠΎΠ΄Ρƒ сразу Π²ΠΎΡˆΡ‘Π» Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΡΠΎΡ‚Π½ΡŽ.

Π”Π²Π° Π³ΠΎΠ΄Π° спутя ΡƒΠΆΠ΅ мСсто 36.

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Π²ΠΈΠ΄Π΅ΠΎ я просто сдСлал Π²Ρ‹Π±ΠΎΡ€ΠΊΡƒ ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π», Ρ‡Ρ‚ΠΎ ΠΊΠΎΡ‚Π»ΠΈΠ½ ΠΎΡ‡Π΅Π½ΡŒ ΡΠ΅Ρ€ΡŒΡ‘Π·Π½Ρ‹ΠΉ язык ΠΈ ΠΊ Π½Π΅ΠΌΡƒ Π½ΡƒΠΆΠ½ΠΎ относится ΠΏΠΎ ΡΠ΅Ρ€ΡŒΡ‘Π·Π½ΠΎΠΌΡƒ.

Π― Π½Π΅ знаю Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ языка со статичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Π½Π΅ выходя Π·Π° Ρ€Π°ΠΌΠΊΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ

НСуТСли Π²Ρ‹ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π² этот список Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅, насколько ΠΊΡ€ΡƒΡ‚ ΠΈ ΡΠ΅Ρ€ΡŒΡ‘Π·Π΅Π½ язык, насколько ΠΌΠΎΡ‰Π½Ρ‹Π΅ пСрспСктивы, вСдь это СдинствСнный Π² истории язык, ΠΊΠΎΠ³Π΄Π° сразу послС Π²Ρ‹Ρ…ΠΎΠ΄Π°, Π΅Π³ΠΎ Π½Π°Ρ‡Π°Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, Π½Π΅Ρ‚ Π²Ρ€Ρƒ Π“ΡƒΠ³Π» свой Go ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚, Π½ΠΎ Go, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для каркаса Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π²Π΅Π± ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², Π° ΠΊΠΎΡ‚Π»ΠΈΠ½. ΠΊΠ°ΠΊ ΠΏΠΈΡ‚ΠΎΠ½ для ΠΊΠ°ΠΆΠ΄ΠΎΠ΄Π½Π΅Π²Π½ΠΎΠ³ΠΎ использования.

Ну ΠΆΠ΅, Π½Π΅ Π±ΡƒΠ΄ΡŒΡ‚Π΅ слСпыми, посмотритС Π²ΠΈΠ΄Π΅ΠΎ, Π·Π°Π΄ΡƒΠΌΠ°ΠΉΡ‚Π΅ΡΡŒ, быстрая Π²Ρ‹Π±ΠΎΡ€ΠΊΠ° Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π° ΠΊΠΎΡ‚Π»ΠΈΠ½.

/////////////////
P.S ΠŸΡ€ΠΎΡΡ‚ΠΎ я Ρ…ΠΎΡ‡Ρƒ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠŸΠ°ΠΉΡ‚ΠΎΠ½ ΠΈ ΠšΠΎΡ‚Π»ΠΈΠ½ ΠΈ Ссли Π΅Ρ‰Ρ‘ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ JS, Ρ‚ΠΎ Π»ΡŽΠ±Ρ‹Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ ΠΏΠΎΠ΄ силу. Π›ΡŽΠ±Ρ‹Π΅.

Π― ΠΎΡ‡Π΅Π½ΡŒ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ ΠΊΠΎΡ‚Π»ΠΈΠ½, ΠΊΠ°ΠΊ дошли Π΄ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΏΠΈΡ‚ΠΎΠ½ ΠΈ Π³Π½Π°Ρ‚ΡŒ Π΄Π²Π° языка, это ΠΏΡƒΡ‚ΡŒ ΠΊΠ½ настоящСму профСссионализму.

ΠŸΡ€ΠΎΡˆΡƒ вас Π½Π΅ Π±Ρ‹Ρ‚ΡŒ слСпыми, изучая ΠΊΠΎΡ‚Π»ΠΈΠ½ Π²Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Ρ‚Π°Π΅Ρ‚Π΅, Π½Ρƒ ΠΆΠ΅ ΠΏΡ€ΠΎΡ‡Ρ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΏΠΈΡˆΠ΅Ρ‚ Π‘Π΅Ρ€Π³Π΅ΠΉ осадчий:

ПояснСниС ΠΊ этой записи

МСня, ΠΊΠ°ΠΊ Ρ‚ΠΎΠΊΠΎΠΌ Π΄ΠΎΠ»Π±Π°Π½ΡƒΠ»ΠΎ, я Π·Π½Π°Π» ΠΏΡ€ΠΎ возмоТности ΠΊΠΎΡ‚Π»ΠΈΠ½, Π½ΠΎ нСсколько Π΄Π½Π΅ΠΉ ΠΈΠ·ΡƒΡ‡ΠΈΠ» ΠΎΡ‡Π΅Π½ΡŒ скурпулёзно ΠΈ ΠΎΡ„ΠΈΠ³Π΅Π», Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΎΡ„ΠΈΠ³Π΅Π» ΠΎΡ‚ ΠΌΠΎΡ‰ΠΈ ΠšΠΎΡ‚Π»ΠΈΠ½. (ΠΏΠ°ΠΉΡ‚ΠΎΠ½ ΠΈ ΠΊΠΎΡ‚Π»ΠΈΠ½ это ΠΎΡ‡Π΅Π½ΡŒ крутая связка)

Π’ΠΎΠΎΠ±Ρ‰Π΅ Π² ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠΈ ΠΊΠΎΡ‚Π»ΠΈΠ½ я Ρ€Π΅ΡˆΠΈΠ» внСсти Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ Π² ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅.

Если ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π±Ρ‹Π»Π° Ρ†Π΅Π»ΡŒ Π΄Π°Π²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Π΅ прилоТСния ΠΈ Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½, Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ я Ρ€Π΅ΡˆΠΈΠ» Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ.

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Π½Π° соврСмСнный ΠΌΠΈΡ€, Π² Π½Ρ‘ΠΌ Π½ΡƒΠΆΠ½Ρ‹ Π²ΠΎΡ‚ Ρ‚Π°ΠΊΠΈΠ΅ Π²Π΅Ρ‰ΠΈ:

Π’Π΅Π± сайт ΠΈΠ»ΠΈ сСрвСрная Ρ‡Π°ΡΡ‚ΡŒ (Π² ΠΏΠΈΡ‚ΠΎΠ½ ΠΌΡ‹ Ρ€Π΅ΡˆΠ°Π΅ΠΌ этот вопрос ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π΄ΠΆΠ°Π½Π³ΠΎ)

Π’ ΠΊΠΎΡ‚Π»ΠΈΠ½ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ мобильноС, ΠΏΠΎΡ‚ΠΎΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΡΠ΅Ρ€Π²Π΅Ρ€Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Π½Π° ΠΊΠΎΡ‚Π»ΠΈΠ½ ΠΈ Π²ΠΎΡ‚ ΡƒΠΆΠ΅ Ρ‚ΠΎΠ½Ρ‹ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· ΠΌΠΎΠ±ΠΈΠ»Ρƒ, Π·Π½Π°Ρ‡ΠΈΡ‚ Π½ΡƒΠΆΠ½ΠΎ rest ΠΈ json (для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Api), ΠΏΠΎΡ‚ΠΎΠΌ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½ ΠΈ Π΄Π°Π»Π΅Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ асинхронных Π²Π΅Ρ‰Π΅ΠΉ ΠΎΠ±Ρ‰Π°Π»ΠΎ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.
Но вСдь всС это Π΅ΡΡ‚ΡŒ Π² ΠΊΠΎΡ‚Π»ΠΈΠ½, Π΄ΡƒΠΌΠ°ΡŽ Π±ΡƒΠ΄Ρƒ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠΎΡ‚Π»ΠΈΠ½ Π² этом Ρ€Π°Π·Ρ€Π΅Π·Π΅, Ρ‡Ρ‚ΠΎ Π±Ρ‹ Π±Ρ‹Π» ΠΏΠΎΠ»Π½Ρ‹ΠΉ соврСмСнный ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚.

Пока Ρ‚ΠΎΡ€ΠΌΠΎΠΆΡƒ сСбя, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΊ слСдуСт Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΡ‚Π»ΠΈΠ½(для мСня это Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ курс ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ, Ρ‡Ρ‚ΠΎ ΠΈ дСлаю), Π½ΠΎ скоро ΡƒΠΆΠ΅ Π±ΡƒΠ΄Π΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒ с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°ΠΌΠΈ. (Ρ€Π°Π½Π΅Π΅ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½ ΠΈ Π°Π½Π΄Ρ€ΠΎΠΈΠ΄, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ ΡˆΠΈΡ€Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΠ΅Ρ€Π²Π΅Ρ€Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ)

Π£Ρ‡ΠΈΡ‚Π΅ сСйчас рСбята ΠΊΠΎΡ‚Π»ΠΈΠ½ ΠΏΠΎΠΊΠ° ΠΏΠΈΡˆΡƒΡ‚ΡΡ ΡƒΡ€ΠΎΠΊΠΈ, Π½Π΅ ΠΎΡ‚ΠΊΠ»Π°Π΄Ρ‹Π²Π°ΠΉΡ‚Π΅, Π½Π΅ тСряйтС врСмя, ΠΎΡ‡Π΅Π½ΡŒ ΠΏΡ€ΠΎΡˆΡƒ вас, Π½Π΅ Ρ‚ΡƒΠΏΠΈΡ‚ΡŒ.

ΠΊΡ‚ΠΎ упустил, ΠΏΡ€ΠΎΡ‡Ρ‚ΠΈΡ‚Π΅ Π·Π°Ρ‡Π΅ΠΌ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ Π΄Π²Π° языка:

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

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ 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, ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ Π±ΠΎΡΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ, ΠΈΠ·ΡƒΡ‡ΠΈΠ² Π΅Π³ΠΎ, Π²Ρ‹ ΠΎΡΡ‚Π°Π½Π΅Ρ‚Π΅ΡΡŒ Π±Π΅Π· Ρ€Π°Π±ΠΎΡ‚Ρ‹.

17–19 дСкабря, Онлайн, Π‘Π΅cΠΏΠ»Π°Ρ‚Π½ΠΎ

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

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

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

Если Π²Π°ΠΌ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ Π²ΠΈΠ΄Π΅ΠΎΡ„ΠΎΡ€ΠΌΠ°Ρ‚, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° русскоязычный видСокурс ΠΏΠΎ 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, ΡƒΠΆΠ΅ Π΄Π°Π²Π½ΠΎ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ Π΅Π³ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚.

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

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

ΠŸΠΎΡ‡Π΅ΠΌΡƒ слСдуСт ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π° 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 Π² стартапах ΠΈ энтСрпрайзС

Disclaimer: Π― Π½Π΅ имСю Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΊ JetBrains, Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ Π΄Π΅Π½Π΅Π³ ΠΎΡ‚ продвиТСния Kotlin ΠΈΠ»ΠΈ ΠΎΡ‚ написания Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ. Π’Π΅ΡΡŒ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» β€” это лишь ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠ΅Π³ΠΎ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΎΠΏΡ‹Ρ‚Π°.

Π’Ρ‹Π±ΠΎΡ€ Ρ‚ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ³ΠΎ языка (ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ любого инструмСнта) ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΏΡ€ΠΎΠ΄ΠΈΠΊΡ‚ΠΎΠ²Π°Π½ ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ, Ρ‚Π°ΠΊ ΠΈ ΡΡƒΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ Ρ„Π°ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ. Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ свои особСнности, Π²Π»ΠΈΡΡŽΡ‰ΠΈΠ΅ Π½Π° Π²Ρ‹Π±ΠΎΡ€. Π― Π΄Π°Π»Π΅ΠΊ ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ± ΡƒΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ Ρ…ΠΎΠ»ΠΈΠ²Π°Ρ€ Π½Π° Ρ‚Π΅ΠΌΡƒ ΠΊΠ°ΠΊΠΎΠΉ язык ΠΊΡ€ΡƒΡ‡Π΅ β€” языков ΠΌΠ½ΠΎΠ³ΠΎ ΠΈ Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ своя ниша. Однако, Π½Π° ΠΌΠΎΠΉ взгляд Π²Ρ‹Π±ΠΎΡ€ ΠΌΠ΅ΠΆΠ΄Ρƒ Kotlin ΠΈ Java Π±ΠΎΠ»Π΅Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Kotlin ΠΏΠΎΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ всС возмоТности Java ΠΈ добавляСт ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π° ΠΈ сахара.

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

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

Π’ этой ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ я ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡΡŒ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ свою ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ, Π° Π·Π°ΠΎΠ΄Π½ΠΎ ΠΎΠΏΠΈΡˆΡƒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ особСнности ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° с Java Π½Π° Kotlin ΠΊΠ°ΠΊ Π² условиях стартапа, Ρ‚Π°ΠΊ ΠΈ Π² условиях ΠΊΡ€ΡƒΠΏΠ½ΠΎΠ³ΠΎ энтСрпрайз-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Kotlin ΠΏΡ€ΠΎΡ‚ΠΈΠ² Java

МоТно Π±Ρ‹Π»ΠΎ Π±Ρ‹ привСсти список ΠΈΠ· дСсятков-сотСн прСимущСств языковых конструкций Π² Kotlin ΠΏΡ€ΠΎΡ‚ΠΈΠ² Ρ‚Π°ΠΊΠΈΡ… ΠΆΠ΅ конструкций Π² Java, Π½ΠΎ основной Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Ρˆ ΠΎΡ‚ примСнСния языка находится Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π³Π»ΡƒΠ±ΠΆΠ΅.

ΠŸΠ΅Ρ‡Π°Π»ΡŒΠ½ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Ρ€Ρ‹Π² лишь нарастаСт, нСсмотря Π½Π° ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ Π΅Π³ΠΎ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ со стороны Oracle. НапримСр, Π΄Π°Ρ‚Π°-классы Π² Kotlin появились Π² самых Ρ€Π°Π½Π½ΠΈΡ… вСрсиях, Π° Π½Π΅ΠΊΠΈΠΉ ΠΈΡ… Π°Π½Π°Π»ΠΎΠ³ Π² Java появился лишь Π² 14 вСрсии, полагаю, ΠΊΠ°ΠΊ Ρ€Π°Π· ΠΏΠΎΠ΄ Π΄Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ†ΠΈΠΈ с JetBrains.

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

Π― лишь Π²ΠΊΡ€Π°Ρ‚Ρ†Π΅ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡŽ Ρ‚Π΅ прСимущСства, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Kotlin ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ, Π½ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ с Ρ‚Ρ€ΡƒΠ΄ΠΎΠΌ Π΄ΠΎΡΡ‚ΠΈΠ³Π°ΡŽΡ‚ΡΡ Π² Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠΌ Java.

ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ элСмСнтов, ΡΠΎΠΊΡ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΡ… Π±ΠΎΠΉΠ»Π΅Ρ€ΠΏΠ»Π΅ΠΉΡ‚: data class, getters&setters β€” Π² Ρ€Π°Π·Ρ‹ сокращаСт количСство ΠΊΠΎΠ΄Π°.

Π‘ΠΎΠ»Π΅Π΅ продуманная ΠΈ юзабСльная структура классов: вмСсто HashMap, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Map (ΠΈΠΌΠΌΡƒΡ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΉ) ΠΈ MutableMap (ΠΌΡƒΡ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΉ) β€” позволяСт с Π»Π΅Π³ΠΊΠΎΡΡ‚ΡŒΡŽ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π² язык Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ°ΠΌ ΠΈ ΠΊΠΎΠ½Ρ†Π΅Π½Ρ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π° бизнСсовой постановкС, Π° Π½Π΅ Π½Π° способах Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

ΠŸΡ€ΡΠΌΠΎ ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ ΠΈΠ΄ΡƒΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π·Π°Ρ‰ΠΈΡ‚Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΡ‚ null :

β€” Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ сокращСниям ошибок Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… ΠΈ сниТСнию стоимости ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ.

На ΡƒΡ€ΠΎΠ²Π½Π΅ языка ΠΈΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° асинхронных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π² Python ΠΈ JS ES6 β€” ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΡŽ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с асинхронными ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹ΠΌΠΈ опСрациями ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Java.

Kotlin Multiplatform β€” Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ компиляции ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° Kotlin ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ для JVM, JS, Native (C/C++, Object C) β€” допускаСт сниТСниС дублирования ΠΊΠΎΠ΄Π°, Π±ΠΎΠ»Π΅Π΅ Π»Π΅Π³ΠΊΡƒΡŽ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ с Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄Π°ΠΌΠΈ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π² Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ Serverless.

Domain Specific Language (DSL) β€” Π΄Π°Π΅Ρ‚ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΡƒΡŽ ΠΈ Π»Π΅Π³ΠΊΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΡƒΡŽ Π·Π°ΠΌΠ΅Π½Ρƒ Π±ΠΈΠ»Π΄Π΅Ρ€Π°ΠΌ.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π½Π° Kotlin

ΠŸΡ€ΠΈ обсуТдСнии ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° с ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ вопросы ΠΏΠΎ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΡŽ Kotlin. Π”Π°Π²Π°ΠΉΡ‚Π΅ пройдСмся ΠΏΠΎ Π½ΠΈΠΌ.

Π“Π΄Π΅ Π²Π·ΡΡ‚ΡŒ Kotlin Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ²?

Kotlin Ρ…ΠΎΡ‚ΡŒ ΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΠΎΠ²Ρ‹ΠΉ язык, Π½ΠΎ ΠΎΠ½ ΡƒΠΆΠ΅ Π·Π°Π²ΠΎΠ΅Π²Π°Π» Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Π½ΠΈΡˆΡƒ. БпСциалистов, Π·Π½Π°ΠΊΠΎΠΌΡ‹Ρ… с Kotlin достаточно ΠΌΠ½ΠΎΠ³ΠΎ Π½Π° Ρ€Ρ‹Π½ΠΊΠ΅. Бильно способствуСт этому Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ для Android Kotlin стал основным языком Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

Π’ любом случаС, любой Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ, Π·Π½Π°ΠΊΠΎΠΌΡ‹ΠΉ с Java, Π²ΠΏΠΎΠ»Π½Π΅ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΈ быстро ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ Π½Π° Kotlin (см. ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ вопрос).

Бколько Π½ΡƒΠΆΠ½ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ для ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ²?

Kotlin разрабатывался Π½Π° Π±Π°Π·Π΅ Java ΠΈ совмСстим с Π½ΠΈΠΌ Π½Π° 100%. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ для ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π½Π° Π½Π΅Π³ΠΎ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ спСциализированныС курсы. ΠΠ°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° Kotlin ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ дня. Π‘Π°Π·ΠΎΠ²Ρ‹Ρ… ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΉ Π½Π΅ Ρ‚Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ языками. НапримСр, if Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈ Ρ‚Π°ΠΌ, ΠΈ Ρ‚Π°ΠΌ практичСски ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ, Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π² Kotlin Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ выраТСния:

БущСствСнныС языковыС нСсовмСстимости ΠΌΠ΅ΠΆΠ΄Ρƒ языками, СстСствСнно, ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚, Π½ΠΎ ΠΎΠ½ΠΈ довольно быстро ΠΎΡΠ²Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½Π΅Π΅ ΠΈΡ… ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π½Π° ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ сайтС Kotlin, Ρ‡Π΅ΠΌ ΡΠ»ΡƒΡˆΠ°Ρ‚ΡŒ курс Π»Π΅ΠΊΡ†ΠΈΠΉ.

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

Π’ любом случаС, нСкоторая Π·Π°ΠΌΠΈΠ½ΠΊΠ° Π² связи с ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠΌ Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ язык, ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ покрываСтся Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ускорСниСм Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π° Kotlin.

Как Π±Ρ‹Ρ‚ΡŒ с лСгаси ΠΊΠΎΠ΄ΠΎΠΌ?

Kotlin ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ½Ρ‚Π΅Ρ€ΠΎΠΏΠ΅Ρ€Π°Π±Π΅Π»Π΅Π½ с Java, Ρ‡Ρ‚ΠΎ позволяСт прямо Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½Π° Kotlin ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄, написанный Π² Java. Π’Π°ΠΊΠΆΠ΅ Π² саму Intellij Idea Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΏΠ»Π°Π³ΠΈΠ½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π° Π»Π΅Ρ‚Ρƒ ΡƒΠΌΠ΅Π΅Ρ‚ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ куски ΠΊΠΎΠ΄Π° (Π»ΠΈΠ±ΠΎ вСсь Ρ„Π°ΠΉΠ») ΠΈΠ· Java Π² Kotlin. Надо ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ качСство Π°Π²Ρ‚ΠΎΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ Π½Π΅ сравнится с Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°, Π½ΠΎ Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, инструмСнт ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ.

ΠΠ°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π½Π° Kotlin Π±Ρ‹Π²Π°Π΅Ρ‚ ΡΠΎΠ²Π΅Ρ€ΡˆΠ°ΡŽΡ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ, дублируя Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ для Java ΠΈ для Kotlin. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π΄Π²Π΅ вСрсии Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π±ΡƒΠ΄Π΅Ρ‚ нСэффСктивно, поэтому Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ Π»ΠΈΠ±ΠΎ просто ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Π΅Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π½Π° Java ΠΈ просто ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² Kotlin, Π° Π΅Ρ‰Π΅ Π»ΡƒΡ‡ΡˆΠ΅ сразу ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ Π² Kotlin ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с лСгаси сСмантикой.

Π£ нас стартап, Π·Π°Ρ‡Π΅ΠΌ Π½Π°ΠΌ Kotlin?

Π”ΠΎΠ²ΠΎΠ»ΡŒΠ½ΠΎ часто для стартапов примСняСтся Π΄Π°ΠΆΠ΅ Π½Π΅ Java, Π° Ρ‚Π°ΠΊΠΈΠ΅ языки ΠΊΠ°ΠΊ PHP, Python, JavaScript (NodeJS). Π’ ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ случаях это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π°Π²Π΄Π°Π½ΠΎ, Π½ΠΎ Π½Π°Π΄ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Π² Π²ΠΈΠ΄Ρƒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅. ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹Π΅ языки ΠΌΠΎΠ³ΡƒΡ‚ сСбя Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ для прототипирования, Π½ΠΎ ΠΈΠ·-Π·Π° отсутствия строгой Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΎΠ½ΠΈ мСньшС подходят для долгосрочных, ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ строгая типизация позволяСт ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ мноТСства ошибок Π½Π° этапС Π΄Π°ΠΆΠ΅ Π½Π΅ компиляции, Π° Π½Π° этапС написания ΠΊΠΎΠ΄Π° Π² IDE. Ошибки, Π΄ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Π΅ ΠΈΠ·-Π·Π° отсутствия ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΈΠΏΠΎΠ², Π²Ρ‹Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² простои Π² Π±ΠΎΠ΅Π²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅, приводя ΠΊ ΡƒΠ±Ρ‹Ρ‚ΠΊΠ°ΠΌ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Π·Π²Π΅ΡΠΈΡ‚ΡŒ всС Π²Ρ‹Π³ΠΎΠ΄Ρ‹ ΠΎΡ‚ быстрой Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π° языках Π±Π΅Π· строгой Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΡƒΠ±Ρ‹Ρ‚ΠΊΠΈ ΠΎΡ‚ ΠΈΡ… примСнСния Π² ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅.

Π”ΠΎΠ²ΠΎΠ»ΡŒΠ½ΠΎ часто Π±Ρ‹Ρ‚ΡƒΠ΅Ρ‚ ΠΌΠ½Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΏΡ€ΠΎΠ΄Π°ΠΆΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ PHP, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΌΠΈΠ³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Java/Kotlin. Мой ΠΎΠΏΡ‹Ρ‚ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΏΡ€ΠΎΠ΄Π°ΠΆΡƒ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π±Π΅Π· ΠΊΠΎΠ΄Π° Ρ…ΠΎΡ‚ΡŒ Π½Π° PHP, Ρ…ΠΎΡ‚ΡŒ Π½Π° Kotlin. Но Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ для ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° с ΠΎΠ΄Π½ΠΎΠ³ΠΎ языка Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ даст ΠΏΡ€ΠΈ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠΈ стартапа. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ дСнь Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ‡Π΅Ρ€Π°.

БСзусловно, Π½Π° любом языкС ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠ»ΠΎΡ…ΠΎ. Но PHP, Python, JS Π΄Π°ΡŽΡ‚ Π³ΠΎΡ€Π°Π·Π΄ΠΎ большС возмоТностСй для низкокачСствСнного ΠΊΠΎΠ΄Π°, Ρ‡Π΅ΠΌ Java/Scala/Kotlin. И Ρ‡Π΅ΠΌ Ρ…ΡƒΠΆΠ΅ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ написанный ΠΊΠΎΠ΄, Ρ‚Π΅ΠΌ Ρ…ΡƒΠΆΠ΅ ΠΎΠ½ поддСрТиваСтся дальшС, приводя ΠΊ Π΅Ρ‰Π΅ большим костылям. Π― сталкивался со стартапом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ стартовал Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ, Π½ΠΎ Π·Π° 7 Π»Π΅Ρ‚ своСй Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΉ ΠΈ Π½Π΅ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ΄ Π½Π° Python. Битуация оказалась ΠΏΠ°Ρ‚ΠΎΠ²ΠΎΠΉ: Π΅Π³ΠΎ нСльзя Π±Ρ‹Π»ΠΎ просто Ρ‚Π°ΠΊ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΈΠ·-Π·Π° наличия ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π², ΠΈ нСльзя Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΠ·-Π·Π° нСобходимости ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π½Π° Ρ‡Ρ‚ΠΎ Π±ΡŽΠ΄ΠΆΠ΅Ρ‚Π° ΡƒΠΆΠ΅ Π½Π΅ Π±Ρ‹Π»ΠΎ.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ моя рСкомСндация для долгосрочных ΠΈ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Kotlin. УскорСниС Π²Ρ‹Ρ…ΠΎΠ΄Π° Π½Π° Ρ€Ρ‹Π½ΠΎΠΊ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ сниТСниСм качСства Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°ΠΌΠΈ Ρ‚ΠΈΠΏΠ° ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ‹Π±ΠΎΡ€Π° MVP, Π³ΠΈΠ±ΠΊΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ ΠΈ сокращСниСм расходов Π½Π° Ρ‚Π΅Ρ…ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΏΡ€ΠΈ качСствСнно написанном ΠΊΠΎΠ΄Π΅.

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π° Kotlin

Как я ΡƒΠΆΠ΅ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π» Π²Ρ‹ΡˆΠ΅, ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Kotlin Π² Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ сущСствСнно ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ примСнСния Java, благодаря Ρ‚Π΅ΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ срСдствам, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ прСдоставляСт. ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ эти, Π² ΠΈΡ‚ΠΎΠ³Π΅ Π²Π»ΠΈΡΡŽΡ‚ Π² Ρ‚ΠΎΠΌ числС ΠΈ Π½Π° ΠΎΠ±Ρ‰ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ особСнностСй ΠΌΠ½ΠΎΠ³ΠΎ, я лишь для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Ρƒ нСсколько.

НСнулСвыС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ свойства класса

БущСствуСт мноТСство случаСв, ΠΊΠΎΠ³Π΄Π° Π½Π°ΠΌ просто Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ свойства Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌΠΈ. НапримСр, Π² API ΠΈΠ»ΠΈ Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΌΠΈ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ ΠΏΡ€ΠΈΠ΄Π΅Ρ‚ всСгда non-nullable Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Как Ρ€Π°Π· здСсь ΠΈ ΠΈΠ³Ρ€Π°Π΅Ρ‚ свою Ρ€ΠΎΠ»ΡŒ DDD (domain driven design). ΠœΡ‹ для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ для сохранСния Π΄Π΅Π»Π°Π΅ΠΌ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ DTO-классы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ содСрТат Π² сСбС Π½ΡƒΠ»Π΅Π²Ρ‹Π΅ поля, Π° Π² Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΌΡ‹ ΠΈΡ… ΠΌΠ°ΠΏΠΈΠΌ со всСми ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°ΠΌΠΈ:

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, простоС использованиС Null-safety Π² Kotlin стимулируСт нас ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒ DDD, Ρ‡Ρ‚ΠΎ Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π΄Π΅Π»Π°Π΅Ρ‚ наш ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠΌ, Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΌ ΠΎΡ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ API ΠΈΠ»ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ.

Kotlin Multiplatform (KMP)

KMP β€” это довольно ΠΌΠΎΡ‰Π½ΠΎΠ΅ срСдство ΠΈ Π΅Π³ΠΎ стоит ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… ΠΏΡ€ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с JS ΠΈ Native ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ систСмы. На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅, KMP Π²ΠΏΠΎΠ»Π½Π΅ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ сСбя ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΈ описании API для потрСблСния Single Page Application (SPI) Ρ‚ΠΈΠΏΠ° React, Angular, Vue, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹ΠΌΠΈ прилоТСниями ΠΏΠΎΠ΄ Android ΠΈ iOS.

Но Π»ΠΈΡ‡Π½ΠΎ я ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄ Π½Π° Dart/Flutter, Π° с этим Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠΌ простой ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Ρ‡Π΅Ρ€Π΅Π· KMP ΠΏΠΎΠΊΠ° Π½Π΅ сущСствуСт. Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ ΠΌΠ΅ΠΆΠ΄Ρƒ бэкСндом Π½Π° Kotlin ΠΈ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄ΠΎΠΌ Π½Π° Dart ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ с использованиСм OpenAPI, AsyncAPI, gRPC ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠΎΠ΄ΠΎΠ³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ².

На бэкСндС KMP ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ использовании Serverless Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹, Π² Ρ‚ΠΎΠΌ числС Google Cloud Functions, Yandex Cloud Functions, AWS Lambda ΠΈ Π΄Ρ€. Π°Π½Π°Π»ΠΎΠ³ΠΎΠ². ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ бСссСрвСрных Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² Π½ΠΈΡ… Π²Π°ΠΆΠ½Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ старта прилоТСния. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΊΠΎΠ΄ Π½Π° Python ΠΈΠ»ΠΈ NodeJs ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΎΠ΅ врСмя ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ°, Ρ‡Π΅ΠΌ Π½Π° JVM. ИспользованиС KMP позволяСт ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π² JavaScript ΠΈΠ»ΠΈ Π² Native executable, Ρ‡Ρ‚ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ быстрого старта.

НСдостатки Kotlin

НавСрноС Π΅ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ нСдостатки Π±ΠΎΠ»Π΅Π΅ Π±Ρ‹Ρ‚ΠΎΠ²ΠΎΠ³ΠΎ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π°. Но для мСня самым сущСствСнным нСдостатком являСтся отсутствиС Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° для Kotlin. Ktor, ΠΏΡ€ΠΈ всСх Π΅Π³ΠΎ прСимущСствах, Π½Π΅ достиг уровня Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°. Π― ΠΊΠ°ΠΊ-Ρ‚ΠΎ Π²ΠΈΠ΄Π΅Π» Π½Π°Π±ΠΎΡ€ Π² Jetbrains Ρ„Ρ€ΠΎΠ½Ρ‚-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈ Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ вскорости Ρ‚Π°ΠΊΠΎΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ анонсирован. Однако, Π½Π° сСгодняшний дСнь Π½Π° Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄Π΅ я ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Google Flutter, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ язык Dart. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ для ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ окаТСтся Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΡ‹ΠΌ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° Dart ΠΊΠ°ΠΊ Π½Π° Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄Π΅, Ρ‚Π°ΠΊ ΠΈ Π½Π° бэкСндС вмСсто ΠšΠΎΡ‚Π»ΠΈΠ½Π°.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ Ρ…ΠΎΡ‡Ρƒ ΠΊΡ€Π°Ρ‚ΠΊΠΎ ΡΡƒΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ основныС утвСрТдСния настоящСй ΡΡ‚Π°Ρ‚ΡŒΠΈ.

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

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

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