Π―Π·Ρ‹ΠΊ ΠΊΠΎΡ‚Π»ΠΈΠ½ для Ρ‡Π΅Π³ΠΎ: Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Kotlin β€” Π˜Π½Ρ„ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΊΠ° «ЭкосистСма Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π² 2020 Π³ΠΎΠ΄ΡƒΒ»

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Kotlin Π² стартапах ΠΈ энтСрпрайзС / Π₯Π°Π±Ρ€

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

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

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

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

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

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

На ΠΌΠΎΠΉ взгляд, Java Π·Π°Ρ€ΠΎΠ΄ΠΈΠ»Π°ΡΡŒ ΠΊΠ°ΠΊ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚ ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго C++. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Π½Π΅ΠΉ чувствуСтся сильноС Π΅Π³ΠΎ влияниС со всСми Π΅Π³ΠΎ нСдостатками. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π·Π° 25 Π»Π΅Ρ‚ сущСствования Java, ΠΎΠ½Π° продСмонстрировала Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΊΠΎΠ½ΡΠ΅Ρ€Π²Π°Ρ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ языками. Π’ Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ мноТСство языков экспСримСнтировали с ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌΠΈ словами Ρ‚ΠΈΠΏΠ° async, с ΠΏΡƒΠ½ΠΊΡ‚ΡƒΠ°Ρ†ΠΈΠ΅ΠΉ языка (Ρ‚ΠΎΡ‡ΠΊΠΈ с запятой, скобки ΠΈ ΠΏΡ€.), Oracle Ρ…Ρ€Π°Π½ΠΈΠ»Π° ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ€Π½ΠΎΡΡ‚ΡŒ «Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°ΠΌ», Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π»ΠΎ лишь ΠΊ ΠΌΠΎΡ€Π°Π»ΡŒΠ½ΠΎΠΌΡƒ ΡƒΡΡ‚Π°Ρ€Π΅Π²Π°Π½ΠΈΡŽ самого языка.

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

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

Если Π²Π°ΠΌ Π² вашСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ трСбуСтся «Π²ΠΎΠ·ΠΈΡ‚ΡŒ лСс Π² Π‘ΠΈΠ±ΠΈΡ€ΠΈ» Π²Π΄Π°Π»ΠΈ ΠΎΡ‚ сСлСний ΠΈ с ΠΏΠΎΠ»Π½Ρ‹ΠΌ отсутствиСм Π±Π΅Π½Π·ΠΈΠ½Π°, Ρ‚ΠΎ, вСроятно, ΠΏΠ°Ρ€ΠΎΠ²ΠΎΠ· Π²Π°ΠΌ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚ Π»ΡƒΡ‡ΡˆΠ΅. Но Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² всС ΠΆΠ΅ находятся Π½Π΅ Π² ΡΡ‚ΠΎΠ»ΡŒ экзотичСских условиях. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ Π½Π° Kotlin ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ получаСтся Ρ€Π°Π·Π° Π² 2-3 ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Π΅Π΅, Π±ΠΎΠ»Π΅Π΅ Π»Π΅Π³ΠΊΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΉ, Π±ΠΎΠ»Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΉ Π² ΠΏΠ»Π°Π½Π΅ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ NullPointerException, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡ‚Π°Ρ‚ΡŒ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹ΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ. ИмСнно эти особСнности ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Kotlin ΡΠ½ΠΈΠΆΠ°Ρ‚ΡŒ Π² 2 Ρ€Π°Π·Π° врСмя Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ количСство Π±Π°Π³ΠΎΠ², Π° Π² ΠΈΡ‚ΠΎΠ³Π΅, ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ создания ΠΈ владСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠΌ.

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

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

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

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

    var str: String = ""
    str = null // Π—Π΄Π΅ΡΡŒ Π±ΡƒΠ΄Π΅Ρ‚ ошибка компиляции, Π° Π½Π΅ runtime
    var nullableStr: String? = null // Π° Ρ‚Π°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ

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

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

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

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

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

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

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

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

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

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

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

val x: Int = if (a == 1) 2 else 3

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

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

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

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

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

Π’Π°ΠΊΠΆΠ΅ Kotlin позволяСт ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π½Π° Java ΠΈ Kotlin Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅. Для этого ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ сборщик Π»ΠΈΠ±ΠΎ Π½Π° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, Π»ΠΈΠ±ΠΎ Π½Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, разнСся ΠΈΡ… Π² src/main/java ΠΈ src/main/kotlin. Π’ΡƒΡ‚ ΠΎΠΏΡΡ‚ΡŒ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΎ Π½ΡŽΠ°Π½ΡΠ°Ρ…: ΠΊΠΎΠ΄ ΠΈΠ· Java Π»Π΅Π³ΠΊΠΎ подхватываСтся Π² ΠΊΠΎΠ΄Π΅ Π½Π° Kotlin, Π½ΠΎ для ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ совмСстимости приходится ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ усилия. НапримСр, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² Kotlin вмСсто статичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹-ΠΊΠΎΠΌΠΏΠ°Π½ΡŒΠΎΠ½Ρ‹ ΠΈ для экспорта Π² Java трСбуСтся ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ @JvmStatic.

ΠΠ°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π½Π° 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, благодаря Ρ‚Π΅ΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ срСдствам, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ прСдоставляСт. ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ эти, Π² ΠΈΡ‚ΠΎΠ³Π΅ Π²Π»ΠΈΡΡŽΡ‚ Π² Ρ‚ΠΎΠΌ числС ΠΈ Π½Π° ΠΎΠ±Ρ‰ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ особСнностСй ΠΌΠ½ΠΎΠ³ΠΎ, я лишь для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Ρƒ нСсколько.

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

Kotlin прСдоставляСт ΠΌΠΎΡ‰Π½Π΅ΠΉΡˆΠΈΠΉ элСмСнт Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ null. ΠŸΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ это ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с nullable ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ просто Π½Π΅ΡƒΠ΄ΠΎΠ±Π½ΠΎ β€” ΠΈΡ… вСдь Π½ΡƒΠΆΠ½ΠΎ всСгда ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π½Π° null. Π₯ΠΎΡ‚ΡŒ такая ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° выполняСтся ΠΎΡ‡Π΅Π½ΡŒ просто Π² Kotlin, хочСтся ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ Π΅Π΅ Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ использования. ДостигаСтся это Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ создании Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° классов я ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽ пустой элСмСнт:

data class SomeClass(
    var x: String = "",
    var y: Int = -1
) {
    companion object {
        val NONE = SomeClass()
    }
}

, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² качСствС значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ вмСсто null.

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

data class StorableObject(
    var id: String? = null,
    var data: String? = null
) {
    // ΠœΠ΅ΡΡ‚ΠΎ размСщСния ΠΌΠ°ΠΏΠ΅Ρ€Π° зависит ΠΎΡ‚ Π·Π°Π΄Π°Ρ‡ΠΈ
    constructor(wm: WorkModel): this(
        id = wm. id.takeIf { it != -1 }?.toString(),
        data = wm.data.takeIf { it.isNotBlank() }
    )
    // ΠœΠ΅ΡΡ‚ΠΎ размСщСния ΠΌΠ°ΠΏΠ΅Ρ€Π° зависит ΠΎΡ‚ Π·Π°Π΄Π°Ρ‡ΠΈ
    fun toWorkModel(): WorkModel = WorkModel(
        id = id?.toInt() ?: -1,
        data = data ?: ""
    )
}

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, простоС использованиС 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 ΠΊΠ°ΠΊ Π½Π° Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄Π΅, Ρ‚Π°ΠΊ ΠΈ Π½Π° бэкСндС вмСсто ΠšΠΎΡ‚Π»ΠΈΠ½Π°.

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

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

  1. Kotlin β€” это Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСвосходит ΠΊΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Java ΠΏΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ я оТидаю, Ρ‡Ρ‚ΠΎ Π² блиТайшиС 5 -10 Π»Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ сущСствСнноС вытСснСниС ΠΈΠΌ послСднСй с Ρ€Ρ‹Π½ΠΊΠ°.
  2. ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° Kotlin Π½Π΅ создаСт Π½Π΅ΠΏΡ€Π΅ΠΎΠ΄ΠΎΠ»ΠΈΠΌΡ‹Ρ… прСпятствий, Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, Π΅Π³ΠΎ умСстно ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ Π½Π° лСгаси-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…, Ρ‚Π°ΠΊ ΠΈ Π½ΠΎΠ²Ρ‹Ρ…; ΠΊΠ°ΠΊ Π² корпорациях, Ρ‚Π°ΠΊ ΠΈ Π² стартапах.
  3. ΠŸΡ€ΠΈ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° Kotlin довольно прост, нСдостаточный ΠΎΠΏΡ‹Ρ‚ Ρ‡Ρ€Π΅Π²Π°Ρ‚ Java-стилСм, Ρ‡Ρ‚ΠΎ нСэффСктивно. Для Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠ³ΠΎ использования этого инструмСнта, Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΎΠΏΡ‹Ρ‚Π°, ΠΏΡ€ΠΈΠ²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ экспСртов, Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΎΡ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ практичСских курсов Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ.
  4. ИспользованиС Kotlin ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ Π²Π»ΠΈΡΡ‚ΡŒ Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π΅ Π±ΠΎΠ»Π΅Π΅ стройной, Π° Ρ‚Π°ΠΊΠΆΠ΅ позволяСт ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ Π² Java, Π² частности Kotlin Multiplatform.
  5. Пока Π½Π΅ сущСствуСт достаточно ΠΌΠΎΡ‰Π½ΠΎΠ³ΠΎ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° Π½Π° Kotlin. ΠšΡ‚ΠΎ-Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Π΅ΡΡ‚ΡŒ ΠšΠΎΡ‚Π»ΠΈΠ½Ρƒ Dart, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π½Π° всСх ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ… ΠΊΠ°ΠΊ Π½Π° Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄Π΅, Ρ‚Π°ΠΊ ΠΈ Π½Π° бэкСндС.

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

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

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

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ сСгодня Π·Π»ΠΎΠΉ

Π‘ 2002 Π³ΠΎΠ΄Π° ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ Java постСпСнно сниТаСтся, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π½Π° высоком ΡƒΡ€ΠΎΠ²Π½Π΅

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

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

Для Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ прСдусмотрСна компиляция с JavaScript ΠΈ инструмСнты для HTML ΠΈ CSS-ΠΊΠΎΠ΄Π°.Β 

Для бэкСнда прСдусмотрСна компиляция Java ΠΈ Kotlin Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅. По ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Kotlin ΠΈ Java совмСстимы ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.Β 

Для ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ программирования прСдусмотрСны Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ интСрфСйсов Π² 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. Если Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ слоТности с ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΎΠΌ β€” посмотритС Π½Π΅ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ€ΡƒΡΡΠΊΠΎΡΠ·Ρ‹Ρ‡Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ.

ВСкст ΠΈ ΠΊΠΎΠ΄

АлСксандр Бабаскин

Π Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€

Максим Π˜Π»ΡŒΡΡ…ΠΎΠ²

ΠšΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΎΡ€

Π˜Ρ€Π° ΠœΠΈΡ…Π΅Π΅Π²Π°

Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ‚ΠΎΡ€

Даня БСрковский

Вёрстка

Маша Π”Ρ€ΠΎΠ½ΠΎΠ²Π°

Доставка

ОлСг Π’Π΅ΡˆΠΊΡƒΡ€Ρ†Π΅Π²

404: Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Π°

Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΏΡ‹Ρ‚Π°Π»ΠΈΡΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΏΠΎ этому адрСсу, ΠΏΠΎΡ…ΠΎΠΆΠ΅, Π½Π΅ сущСствуСт. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΠ»ΠΎΡ…ΠΎΠΉ ΠΈΠ»ΠΈ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠ΅ΠΉ ссылки. ΠœΡ‹ извиняСмся Π·Π° Π»ΡŽΠ±Ρ‹Π΅ нСудобства.

Π§Ρ‚ΠΎ я ΠΌΠΎΠ³Ρƒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ сСйчас?

Если Π²Ρ‹ Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ посСщаСтС TechTarget, Π΄ΠΎΠ±Ρ€ΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒ! Π˜Π·Π²ΠΈΠ½ΠΈΡ‚Π΅ Π·Π° ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π²Π°, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΡ‹ встрСчаСмся. Π’ΠΎΡ‚ ΠΊΡƒΠ΄Π° Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΉΡ‚ΠΈ ΠΎΡ‚ΡΡŽΠ΄Π°:

Поиск

  • ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΡΠ²ΡΠΆΠΈΡ‚Π΅ΡΡŒ с Π½Π°ΠΌΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ эта страница отсутствуСт, ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠΎΠ»Π΅ Π²Ρ‹ΡˆΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ поиск
  • Наша страница «О нас» содСрТит Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ сайтС, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ΡΡŒ, WhatIs. com.
  • ΠŸΠΎΡΠ΅Ρ‚ΠΈΡ‚Π΅ Π½Π°ΡˆΡƒ домашнюю страницу ΠΈ просмотритС наши тСхничСскиС Ρ‚Π΅ΠΌΡ‹

ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ ΠΏΠΎ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ

Π‘Π΅Ρ‚ΡŒ


  • потоковая ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π΄Π°Π½Π½Ρ‹Ρ…

    ΠŸΠΎΡ‚ΠΎΠΊΠΎΠ²Π°Ρ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π΄Π°Π½Π½Ρ‹Ρ… β€” это нСпрСрывная ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… источников с постоянной высокой ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ …


  • Π³Ρ€Π°Π½ΠΈΡ†Π° слуТбы бСзопасного доступа (SASE)

    ΠŸΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π½Ρ‹ΠΉ сСрвис бСзопасного доступа, Ρ‚Π°ΠΊΠΆΠ΅ извСстный ΠΊΠ°ΠΊ SASE ΠΈ произносится ΠΊΠ°ΠΊ Β«Π΄Π΅Ρ€Π·ΠΊΠΈΠΉΒ», прСдставляСт собой модСль ΠΎΠ±Π»Π°Ρ‡Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹, ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‰ΡƒΡŽ ΡΠ΅Ρ‚ΡŒ ΠΈ …


  • ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ сСти (NETCONF)

    ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ сСти (NETCONF) β€” это ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» сСтСвого управлСния ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π½ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΡ‹ Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π° (IETF), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ …

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


  • Ρ‡Π΅Ρ€Π½Ρ‹ΠΉ список ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (занСсСниС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² Ρ‡Π΅Ρ€Π½Ρ‹ΠΉ список)

    ЗанСсСниС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² Ρ‡Π΅Ρ€Π½Ρ‹ΠΉ список β€” всС Ρ‡Π°Ρ‰Π΅ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ΅ занСсСниСм Π² Ρ‡Π΅Ρ€Π½Ρ‹ΠΉ список ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ β€” прСдставляСт собой ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒ сСтСвого ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠ³ΠΎ администрирования, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡƒΡŽ . ..


  • соковыТималка

    Juice jacking β€” это эксплойт бСзопасности, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ зараТСнная зарядная станция USB ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΊΠΎΠΌΠΏΡ€ΠΎΠΌΠ΅Ρ‚Π°Ρ†ΠΈΠΈ устройств, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊ Π½Π΅ΠΉ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ.


  • Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€Π°

    Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€Π° β€” это процСсс обСспСчСния бСзопасности Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€Π° (ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ) Π½Π° протяТСнии…

ИВ-Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€


  • ΠžΠ±Ρ‰Π΅ΠΏΡ€ΠΈΠ½ΡΡ‚Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ вСдСния ΡƒΡ‡Π΅Ρ‚Π° (ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹)

    ΠžΠ±Ρ‰Π΅ΠΏΡ€ΠΈΠ½ΡΡ‚Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ вСдСния Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ β€” это основа для управлСния записями Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ …


  • систСма управлСния ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ΠΌ (LMS)

    БистСма управлСния ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ΠΌ прСдставляСт собой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π²Π΅Π±-Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡŽ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡƒΡŽ для планирования, Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΎΡ†Π΅Π½ΠΊΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… …


  • Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Π²Π΅ΠΊ

    Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Π°Ρ эпоха β€” это идСя ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ доступ ΠΊ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ Π½Π΅ΠΉ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΌΠΈ характСристиками Π½Ρ‹Π½Π΅ΡˆΠ½Π΅ΠΉ эпохи . ..

HRSoftware


  • аутсорсинг процСсса ΠΏΠΎΠ΄Π±ΠΎΡ€Π° пСрсонала (RPO)

    Аутсорсинг процСсса Π½Π°ΠΉΠΌΠ° (RPO) β€” это ΠΊΠΎΠ³Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΎΠ΄Π°Ρ‚Π΅Π»ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π·Π° поиск ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ΠΎΠ² Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ …


  • спСциалист ΠΏΠΎ ΠΊΠ°Π΄Ρ€Π°ΠΌ (HR)

    БпСциалист ΠΏΠΎ пСрсоналу β€” это спСциалист ΠΏΠΎ ΠΊΠ°Π΄Ρ€Π°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполняСт повсСднСвныС обязанности ΠΏΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ Ρ‚Π°Π»Π°Π½Ρ‚Π°ΠΌΠΈ, сотрудникам …


  • ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» сотрудника

    Π–ΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» сотрудника β€” это модСль чСловСчСских рСсурсов, которая опрСдСляСт Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ этапы, Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π² …

ΠžΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ²


  • ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Adobe Experience

    Adobe Experience Platform β€” это Π½Π°Π±ΠΎΡ€ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ для управлСния качСством обслуТивания ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² (CXM) ΠΎΡ‚ Adobe.


  • Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊ (ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊ ИИ)

    Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊ, Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊΠΎΠΌ ИИ ΠΈΠ»ΠΈ Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹ΠΌ ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊΠΎΠΌ, прСдставляСт собой ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚ СстСствСнныС . ..


  • входящий ΠΌΠ°Ρ€ΠΊΠ΅Ρ‚ΠΈΠ½Π³

    Входящий ΠΌΠ°Ρ€ΠΊΠ΅Ρ‚ΠΈΠ½Π³ β€” это стратСгия, направлСнная Π½Π° ΠΏΡ€ΠΈΠ²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΈΠ»ΠΈ Π»ΠΈΠ΄ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ созданного ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°, Ρ‚Π΅ΠΌ самым …

ΠΠ°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с Kotlin | Kotlin Documentation

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

ΠŸΠΎΠ΄Π½ΠΈΠΌΠΈΡ‚Π΅ Π΅Π³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΌΠΎΡ‰Π½Ρ‹Π΅ прилоТСния!

Π˜Π·ΡƒΡ‡ΠΈΡ‚Π΅ основы Kotlin

  • Если Π²Ρ‹ ΡƒΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡ‹ с ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ»ΠΈ нСсколькими языками программирования ΠΈ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ Kotlin, Π½Π°Ρ‡Π½ΠΈΡ‚Π΅ с этих ΡƒΡ‡Π΅Π±Π½Ρ‹Ρ… ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² ΠΏΠΎ Kotlin.

  • Если Kotlin β€” ваш ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ язык программирования, ΠΌΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Π½Π°Ρ‡Π°Ρ‚ΡŒ с ΠΊΠ½ΠΈΠ³ΠΈ Atomic Kotlin ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ Π½Π° бСсплатный курс Kotlin Core ΠΎΡ‚ JetBrains Academy.

Установка Kotlin

Kotlin Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ выпуск IntelliJ IDEA ΠΈ Android Studio.
Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ ΠΈ установитС ΠΎΠ΄Π½Ρƒ ΠΈΠ· этих IDE, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Kotlin.

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ своС ΠΌΠΎΡ‰Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с Kotlin

Π’ΠΎΡ‚ ΠΊΠ°ΠΊ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ шаги Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ сСрвСрных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Kotlin.

  1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ своС ΠΏΠ΅Ρ€Π²ΠΎΠ΅ сСрвСрноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅:

    • Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ с нуля, создайтС Π±Π°Π·ΠΎΠ²ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ JVM с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ мастСра ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² IntelliJ IDEA.

    • Если Π²Ρ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ Π±ΠΎΠ»Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹, Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² Π½ΠΈΠΆΠ΅ ΠΈ создайтС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚: 03

      Π Π°Π·Π²ΠΈΡ‚ΠΎΠ΅ сСмСйство Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² с ΡƒΡΡ‚ΠΎΡΠ²ΡˆΠ°ΡΡΡ экосистСма, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΏΠΎ всСму ΠΌΠΈΡ€Ρƒ.

      • Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π²Π΅Π±-слуТбу RESTful с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Spring Boot.

      • Π‘ΠΎΠ·Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π²Π΅Π±-прилоТСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Spring Boot ΠΈ Kotlin.

      • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Spring Boot с Kotlin ΠΈ RSocket.

      Π›Π΅Π³ΠΊΠΈΠΉ каркас для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Ρ†Π΅Π½ΠΈΡ‚ свободу Π² принятии Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ.

      • Π‘ΠΎΠ·Π΄Π°Π²Π°ΠΉΡ‚Π΅ HTTP API с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ktor.

      • Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ‡Π°Ρ‚ WebSocket с Ktor.

      • Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Π²Π΅Π±-сайт с Ktor.

      • ΠŸΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡ сСрвСрных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Kotlin: Ktor Π½Π° Heroku.

    • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Kotlin ΠΈ сторонниС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π² своСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ . Π£Π·Π½Π°ΠΉΡ‚Π΅ большС ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ зависимостСй Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ инструмСнтов Π² ваш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

      • Бтандартная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Kotlin ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ мноТСство ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… Π²Π΅Ρ‰Π΅ΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ сопрограммы.

      • ВзглянитС Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ сторонниС Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ инструмСнты для Kotlin.

    • Π£Π·Π½Π°ΠΉΡ‚Π΅ большС ΠΎ Kotlin для сСрвСрной части:

      • Как Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ свой ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹ΠΉ тСст.

      • Как ΡΠΌΠ΅ΡˆΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ Kotlin ΠΈ Java Π² вашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.

    • ΠŸΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡ‚Π΅ΡΡŒ ΠΊ сСрвСрному сообщСству Kotlin:

      • Slack: ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡ‚Π΅ΡΡŒ ΠΊ ΠΊΠ°Π½Π°Π»Π°ΠΌ #getting-started, #server, #spring ΠΈΠ»ΠΈ #ktor.

      • StackOverflow: ΠΏΠΎΠ΄ΠΏΠΈΡˆΠΈΡ‚Π΅ΡΡŒ Π½Π° Ρ‚Π΅Π³ΠΈ Β«kotlinΒ», Β«spring-kotlinΒ» ΠΈΠ»ΠΈ Β«ktorΒ».

    • Π‘Π»Π΅Π΄ΠΈΡ‚Π΅ Π·Π° Kotlin Π² Twitter, Reddit ΠΈ Youtube ΠΈ Π½Π΅ пропуститС Π²Π°ΠΆΠ½Ρ‹Π΅ обновлСния экосистСмы.

Если Π²Ρ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ с ΠΊΠ°ΠΊΠΈΠΌΠΈ-Π»ΠΈΠ±ΠΎ трудностями ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ, сообщитС ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅ Π² Π½Π°ΡˆΡƒ систСму отслСТивания ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ.

Π—Π΄Π΅ΡΡŒ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Ρ‚ΡŒ кроссплатформСнноС мобильноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Kotlin Multiplatform.

  1. НастройтС срСду для кроссплатформСнной мобильной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

  2. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ своС ΠΏΠ΅Ρ€Π²ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для iOS ΠΈ Android:

    • Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ с нуля, создайтС Π±Π°Π·ΠΎΠ²ΠΎΠ΅ кроссплатформСнноС мобильноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ мастСра ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ².

    • Если Ρƒ вас Π΅ΡΡ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Android ΠΈ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ кроссплатформСнным, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ руководство Как Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Android Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° iOS.

    • Если Π²Ρ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΈΠ· Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ, ΠΊΠ»ΠΎΠ½ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈ поэкспСримСнтируйтС с ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ сСти ΠΈ хранСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠ° Β«Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ прилоТСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ktor ΠΈ SQLdelightΒ» ΠΈΠ»ΠΈ любого ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

  3. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ Π½Π°Π±ΠΎΡ€ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· Π² ΠΎΠ±Ρ‰Π΅ΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ зависимостСй.

    Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°

    Π”Π΅Ρ‚Π°Π»ΠΈ

    ΠšΡ‚ΠΎΡ€

    90 189

    Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹

    БСриализация

    Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈ ΠΎΠ±Ρ€Π°Π·Π΅Ρ†

    Coroutines

    Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈ ΠΎΠ±Ρ€Π°Π·Ρ†Ρ‹

    DateTime

    Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹

    9 0189

    SQLDelight

    Бторонняя Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°. Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹

    Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Π² спискС, созданном сообщСством.

  4. Π£Π·Π½Π°ΠΉΡ‚Π΅ большС ΠΎ Kotlin Multiplatform для ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… устройств:

    • Π£Π·Π½Π°ΠΉΡ‚Π΅ большС ΠΎ Kotlin Multiplatform.

    • ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π½Π° GitHub.

    • Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΈ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠΉΡ‚Π΅ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ.

    • Π£Π·Π½Π°ΠΉΡ‚Π΅, ΠΊΠ°ΠΊ Kotlin Multiplatform ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Netflix, VMware, Yandex ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… компаниях.

  5. ΠŸΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡ‚Π΅ΡΡŒ ΠΊ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎΠΌΡƒ сообщСству Kotlin:

  6. Π‘Π»Π΅Π΄ΠΈΡ‚Π΅ Π·Π° Kotlin Π² Twitter, Reddit ΠΈ Youtube ΠΈ Π½Π΅ пропуститС Π²Π°ΠΆΠ½Ρ‹Π΅ обновлСния экосистСмы.

Если Π²Ρ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ с ΠΊΠ°ΠΊΠΈΠΌΠΈ-Π»ΠΈΠ±ΠΎ трудностями ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ, сообщитС ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅ Π² Π½Π°ΡˆΡƒ систСму отслСТивания ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ.

  • Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Kotlin для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠΎΠ΄ Android, ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ Google ΠΏΠΎ Π½Π°Ρ‡Π°Π»Ρƒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Kotlin Π½Π° Android.

  • Если Π²Ρ‹ Π½ΠΎΠ²ΠΈΡ‡ΠΎΠΊ Π² Android ΠΈ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Kotlin, ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с этим курсом Udacity.

Π‘Π»Π΅Π΄ΠΈΡ‚Π΅ Π·Π° Kotlin Π² Twitter, Reddit ΠΈ Youtube ΠΈ Π½Π΅ пропуститС Π²Π°ΠΆΠ½Ρ‹Π΅ обновлСния экосистСмы.

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

Π—Π΄Π΅ΡΡŒ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ:

  1. Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ:

    • Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ руководство ΠΏΠΎ созданию ΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Π’ Π½Π΅ΠΌ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ JVM, JS ΠΈ Native, ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ ΠΈ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Π² локальном Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Maven.

  2. ИспользованиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π² вашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ:

    • Ktor

    • БСриализация

    • 900 09

      Coroutines

    • DateTime

    Π£Π·Π½Π°ΠΉΡ‚Π΅ большС ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ зависимостСй ΠΎΡ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ.

    This entry was posted in ΠŸΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΠ΅