ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°ΡΡ Π½Π° kotlin
Π§ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°ΡΡ Π½Π° kotlin
Π ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ ΡΡΠΎ ΠΈ Π²Π΄ΡΠΌΠ°ΠΉΡΠ΅ΡΡ, ΠΊΠΎΡΠ»ΠΈΠ½ ΠΌΠ΅ΡΡΠΎ 36:
ΠΡ ΠΈ ΡΡΠΎ Π²Ρ ΡΠΊΠ°ΠΆΠ΅ΡΠ΅.
ΠΠ° Π½Π΅ Π½Π΅ Π½Ρ ΠΈ ΡΡΠΎ.
Π―Π·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±ΠΎΠ»Π΅Π΅ 2000 ΡΡΡΡΡ.
ΠΠ΅ Π±ΡΠ»ΠΎ Π² ΠΈΡΡΠΎΡΠΈΠΈ Π΅ΡΡ ΡΡΠΎ Π±Ρ ΡΠ·ΡΠΊ Π²ΡΠΏΡΡΠ΅Π½Π½ΡΠΉ Π² 2016 Π³ΠΎΠ΄Ρ ΡΡΠ°Π·Ρ Π²ΠΎΡΡΠ» Π² ΠΏΠ΅ΡΠ²ΡΡ ΡΠΎΡΠ½Ρ.
ΠΠ²Π° Π³ΠΎΠ΄Π° ΡΠΏΡΡΡ ΡΠΆΠ΅ ΠΌΠ΅ΡΡΠΎ 36.
ΠΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π²ΠΈΠ΄Π΅ΠΎ Ρ ΠΏΡΠΎΡΡΠΎ ΡΠ΄Π΅Π»Π°Π» Π²ΡΠ±ΠΎΡΠΊΡ ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π», ΡΡΠΎ ΠΊΠΎΡΠ»ΠΈΠ½ ΠΎΡΠ΅Π½Ρ ΡΠ΅ΡΡΡΠ·Π½ΡΠΉ ΡΠ·ΡΠΊ ΠΈ ΠΊ Π½Π΅ΠΌΡ Π½ΡΠΆΠ½ΠΎ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΏΠΎ ΡΠ΅ΡΡΡΠ·Π½ΠΎΠΌΡ.
Π― Π½Π΅ Π·Π½Π°Ρ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° ΡΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Π½Π΅ Π²ΡΡ ΠΎΠ΄Ρ Π·Π° ΡΠ°ΠΌΠΊΠΈ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ
ΠΠ΅ΡΠΆΠ΅Π»ΠΈ Π²Ρ ΠΏΡΠΎΡΠΈΡΠ°Π² ΡΡΠΎΡ ΡΠΏΠΈΡΠΎΠΊ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΠ΅, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΡΡΡ ΠΈ ΡΠ΅ΡΡΡΠ·Π΅Π½ ΡΠ·ΡΠΊ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠΎΡΠ½ΡΠ΅ ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Ρ, Π²Π΅Π΄Ρ ΡΡΠΎ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ Π² ΠΈΡΡΠΎΡΠΈΠΈ ΡΠ·ΡΠΊ, ΠΊΠΎΠ³Π΄Π° ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ Π²ΡΡ ΠΎΠ΄Π°, Π΅Π³ΠΎ Π½Π°ΡΠ°Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΡΡΠΏΠ½ΡΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, Π½Π΅Ρ Π²ΡΡ ΠΡΠ³Π» ΡΠ²ΠΎΠΉ Go ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ, Π½ΠΎ Go, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΠΊΠ°ΡΠΊΠ°ΡΠ° Π±ΠΎΠ»ΡΡΠΈΡ Π²Π΅Π± ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², Π° ΠΊΠΎΡΠ»ΠΈΠ½. ΠΊΠ°ΠΊ ΠΏΠΈΡΠΎΠ½ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ΄Π½Π΅Π²Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ.
ΠΡ ΠΆΠ΅, Π½Π΅ Π±ΡΠ΄ΡΡΠ΅ ΡΠ»Π΅ΠΏΡΠΌΠΈ, ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π²ΠΈΠ΄Π΅ΠΎ, Π·Π°Π΄ΡΠΌΠ°ΠΉΡΠ΅ΡΡ, Π±ΡΡΡΡΠ°Ρ Π²ΡΠ±ΠΎΡΠΊΠ° ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ Π½Π° ΠΊΠΎΡΠ»ΠΈΠ½.
/////////////////
P.S ΠΡΠΎΡΡΠΎ Ρ Ρ
ΠΎΡΡ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΠΈΠ·ΡΡΠ΅Π½ΠΈΠ΅ ΠΠ°ΠΉΡΠΎΠ½ ΠΈ ΠΠΎΡΠ»ΠΈΠ½ ΠΈ Π΅ΡΠ»ΠΈ Π΅ΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ JS, ΡΠΎ Π»ΡΠ±ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ ΠΏΠΎΠ΄ ΡΠΈΠ»Ρ. ΠΡΠ±ΡΠ΅.
Π― ΠΎΡΠ΅Π½Ρ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ Π½Π°ΡΠ°ΡΡ ΠΈΠ·ΡΡΠ°ΡΡ ΠΊΠΎΡΠ»ΠΈΠ½, ΠΊΠ°ΠΊ Π΄ΠΎΡΠ»ΠΈ Π΄ΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΠΈΡΠΎΠ½ ΠΈ Π³Π½Π°ΡΡ Π΄Π²Π° ΡΠ·ΡΠΊΠ°, ΡΡΠΎ ΠΏΡΡΡ ΠΊΠ½ Π½Π°ΡΡΠΎΡΡΠ΅ΠΌΡ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΠΈΠ·ΠΌΡ.
ΠΡΠΎΡΡ Π²Π°Ρ Π½Π΅ Π±ΡΡΡ ΡΠ»Π΅ΠΏΡΠΌΠΈ, ΠΈΠ·ΡΡΠ°Ρ ΠΊΠΎΡΠ»ΠΈΠ½ Π²Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΎΠ±ΡΠ΅ΡΠ°Π΅ΡΠ΅, Π½Ρ ΠΆΠ΅ ΠΏΡΠΎΡΡΠΈΡΠ΅, ΡΡΠΎ ΠΏΠΈΡΠ΅Ρ Π‘Π΅ΡΠ³Π΅ΠΉ ΠΎΡΠ°Π΄ΡΠΈΠΉ:
ΠΠΎΡΡΠ½Π΅Π½ΠΈΠ΅ ΠΊ ΡΡΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ
ΠΠ΅Π½Ρ, ΠΊΠ°ΠΊ ΡΠΎΠΊΠΎΠΌ Π΄ΠΎΠ»Π±Π°Π½ΡΠ»ΠΎ, Ρ Π·Π½Π°Π» ΠΏΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΊΠΎΡΠ»ΠΈΠ½, Π½ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄Π½Π΅ΠΉ ΠΈΠ·ΡΡΠΈΠ» ΠΎΡΠ΅Π½Ρ ΡΠΊΡΡΠΏΡΠ»ΡΠ·Π½ΠΎ ΠΈ ΠΎΡΠΈΠ³Π΅Π», Π²ΠΎΠΎΠ±ΡΠ΅ ΠΎΡΠΈΠ³Π΅Π» ΠΎΡ ΠΌΠΎΡΠΈ ΠΠΎΡΠ»ΠΈΠ½. (ΠΏΠ°ΠΉΡΠΎΠ½ ΠΈ ΠΊΠΎΡΠ»ΠΈΠ½ ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΊΡΡΡΠ°Ρ ΡΠ²ΡΠ·ΠΊΠ°)
ΠΠΎΠΎΠ±ΡΠ΅ Π² ΠΎΠ±ΡΡΠ΅Π½ΠΈΠΈ ΠΊΠΎΡΠ»ΠΈΠ½ Ρ ΡΠ΅ΡΠΈΠ» Π²Π½Π΅ΡΡΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠΎΡΡΠ΅ΠΊΡΠΈΠ²Ρ Π² ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅.
ΠΡΠ»ΠΈ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ Π±ΡΠ»Π° ΡΠ΅Π»Ρ Π΄Π°Π²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½, ΡΠΎ ΡΠ΅ΠΏΠ΅ΡΡ Ρ ΡΠ΅ΡΠΈΠ» ΡΠ°ΡΡΠΈΡΠΈΡΡ.
ΠΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π½Π° ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΠΌΠΈΡ, Π² Π½ΡΠΌ Π½ΡΠΆΠ½Ρ Π²ΠΎΡ ΡΠ°ΠΊΠΈΠ΅ Π²Π΅ΡΠΈ:
ΠΠ΅Π± ΡΠ°ΠΉΡ ΠΈΠ»ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ½Π°Ρ ΡΠ°ΡΡΡ (Π² ΠΏΠΈΡΠΎΠ½ ΠΌΡ ΡΠ΅ΡΠ°Π΅ΠΌ ΡΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π΄ΠΆΠ°Π½Π³ΠΎ)
Π ΠΊΠΎΡΠ»ΠΈΠ½ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠ΅, ΠΏΠΎΡΠΎΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΡ ΡΠ°ΡΡΡ Π½Π° ΠΊΠΎΡΠ»ΠΈΠ½ ΠΈ Π²ΠΎΡ ΡΠΆΠ΅ ΡΠΎΠ½Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π³ΡΡΠ·ΠΈΡΡ ΡΠ΅ΡΠ΅Π· ΠΌΠΎΠ±ΠΈΠ»Ρ, Π·Π½Π°ΡΠΈΡ Π½ΡΠΆΠ½ΠΎ rest ΠΈ json (Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Api), ΠΏΠΎΡΠΎΠΌ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½ ΠΈ Π΄Π°Π»Π΅Π΅ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΡΡ
Π²Π΅ΡΠ΅ΠΉ ΠΎΠ±ΡΠ°Π»ΠΎ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅.
ΠΠΎ Π²Π΅Π΄Ρ Π²ΡΠ΅ ΡΡΠΎ Π΅ΡΡΡ Π² ΠΊΠΎΡΠ»ΠΈΠ½, Π΄ΡΠΌΠ°Ρ Π±ΡΠ΄Ρ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΊΠΎΡΠ»ΠΈΠ½ Π² ΡΡΠΎΠΌ ΡΠ°Π·ΡΠ΅Π·Π΅, ΡΡΠΎ Π±Ρ Π±ΡΠ» ΠΏΠΎΠ»Π½ΡΠΉ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ.
ΠΠΎΠΊΠ° ΡΠΎΡΠΌΠΎΠΆΡ ΡΠ΅Π±Ρ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΊΠ°ΠΊ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π½ΡΠΆΠ½ΠΎ Π²ΡΡΡΠΈΡΡ ΠΊΠΎΡΠ»ΠΈΠ½(Π΄Π»Ρ ΠΌΠ΅Π½Ρ ΡΡΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΊΡΡΡ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΠΉ, ΡΡΠΎ ΠΈ Π΄Π΅Π»Π°Ρ), Π½ΠΎ ΡΠΊΠΎΡΠΎ ΡΠΆΠ΅ Π±ΡΠ΄Π΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΏΡΠ°ΠΊΡΠΈΠΊΡ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ ΠΈ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°ΠΌΠΈ. (ΡΠ°Π½Π΅Π΅ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π»ΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½ ΠΈ Π°Π½Π΄ΡΠΎΠΈΠ΄, ΡΠ΅ΠΏΠ΅ΡΡ Π±ΡΠ΄Π΅Ρ ΡΠΈΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΡ ΡΠ°ΡΡΡ)
Π£ΡΠΈΡΠ΅ ΡΠ΅ΠΉΡΠ°Ρ ΡΠ΅Π±ΡΡΠ° ΠΊΠΎΡΠ»ΠΈΠ½ ΠΏΠΎΠΊΠ° ΠΏΠΈΡΡΡΡΡ ΡΡΠΎΠΊΠΈ, Π½Π΅ ΠΎΡΠΊΠ»Π°Π΄ΡΠ²Π°ΠΉΡΠ΅, Π½Π΅ ΡΠ΅ΡΡΠΉΡΠ΅ Π²ΡΠ΅ΠΌΡ, ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡ Π²Π°Ρ, Π½Π΅ ΡΡΠΏΠΈΡΡ.
ΠΊΡΠΎ ΡΠΏΡΡΡΠΈΠ», ΠΏΡΠΎΡΡΠΈΡΠ΅ Π·Π°ΡΠ΅ΠΌ ΠΈΠ·ΡΡΠ°ΡΡ Π΄Π²Π° ΡΠ·ΡΠΊΠ°:
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Kotlin ΠΈ Ρ ΡΠ΅ΠΌ Π΅Π³ΠΎ Π΅Π΄ΡΡ: ΠΎΠ±ΡΡΠ°ΡΡΠ΅Π΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° Android-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Ρ Java
ΠΠ²ΡΠΎΡΠΈΠ·ΡΠΉΡΠ΅ΡΡ
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Kotlin ΠΈ Ρ ΡΠ΅ΠΌ Π΅Π³ΠΎ Π΅Π΄ΡΡ: ΠΎΠ±ΡΡΠ°ΡΡΠ΅Π΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° Android-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Ρ Java
Kotlin β ΡΡΠΎ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠΎΠ»ΠΎΠ΄ΠΎΠΉ ΡΠ·ΡΠΊ ΠΎΡ ΡΠΎΡΡΠΈΠΉΡΠΊΠΎΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ JetBrains. ΠΠΎΡΠ²ΠΈΠ»ΡΡ ΠΎΠ½ Π² 2011 Π³ΠΎΠ΄Ρ. ΠΠ° ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ Google I/O 2017 ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Android ΡΠΎΠΎΠ±ΡΠΈΠ»Π°, ΡΡΠΎ Kotlin ΠΏΠΎΠ»ΡΡΠΈΠ» ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Android-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
ΠΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΈ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° Kotlin:
Π Π°Π·Π±Π΅ΡΡΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π½ΠΈΡ ΠΏΠΎΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅.
Null-Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ
ΠΠΈΠ±ΠΊΠΎΡΡΡ ΠΈ ΠΏΡΠΎΡΡΠΎΡΠ° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ°
ΠΡΠΎΡΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΡΡΡΡΠΊΡΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠΉ. ΠΠ΅ΡΡΠ΅ΡΡ ΠΈ ΡΠ΅ΡΡΠ΅ΡΡ Π·Π°Π΄Π°ΡΡΡΡ Π·Π° ΠΊΡΠ»ΠΈΡΠ°ΠΌΠΈ Π΄Π»Ρ ΠΈΠ½ΡΠ΅ΡΠΎΠΏΠ΅ΡΠ°Π±Π΅Π»ΡΠ½ΠΎΡΡΠΈ Ρ Java-ΠΊΠΎΠ΄ΠΎΠΌ. ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ data-Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΠΊ ΠΊΠ»Π°ΡΡΡ Π°ΠΊΡΠΈΠ²ΠΈΡΡΠ΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ².
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΡΠ»ΠΈΡΠΈΡ ΠΎΡ Java
Null-Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ
ΠΠ°ΠΊ ΡΠΆΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΎΡΡ ΡΠ°Π½Π΅Π΅, Kotlin Π½Π΅ Π΄ΠΎΠΏΡΡΠΊΠ°Π΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ NullPointerException, Π²ΡΠ΄Π°Π²Π°Ρ ΠΎΡΠΈΠ±ΠΊΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.
ΠΠ»Π°ΡΡΡ Π΄Π°Π½Π½ΡΡ (Data Classes)
ΠΠ΅Π³ΠΊΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΊΠΎΠΏΠΈΠΈ ΠΊΠ»Π°ΡΡΠΎΠ² Π΄Π°Π½Π½ΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° copy() :
Π€ΡΠ½ΠΊΡΠΈΠΈ-ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ
Kotlin ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°ΡΡΠΈΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ², Π½Π΅ ΠΏΡΠΈΠ±Π΅Π³Π°Ρ ΠΊ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ. ΠΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ-ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ. ΠΠ»Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΠ°ΠΊΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊ Π΅Ρ ΠΈΠΌΠ΅Π½ΠΈ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΈΠΏΠΈΡΠ°ΡΡ ΠΏΡΠ΅ΡΠΈΠΊΡ Π² Π²ΠΈΠ΄Π΅ ΡΠ°ΡΡΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠΈΠΏΠ°. ΠΠΎΡ ΡΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΡ swap Π² MutableList :
ΠΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ this Π²Π½ΡΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ-ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ-ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΡΠΎΡΠΊΠΎΠΉ. Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΡ swap ΠΊ Π»ΡΠ±ΠΎΠΌΡ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠΌΡ ΡΠΏΠΈΡΠΊΡ:
Π£ΠΌΠ½ΡΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠΈΠΏΠΎΠ²
ΠΡΠ²ΠΎΠ΄ ΡΠΈΠΏΠΎΠ²
Π Kotlin Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠ²Π½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΠΈΠΏ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ:
Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
ΠΠ°ΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Kotlin Π·Π°ΡΠΎΡΠ΅Π½ ΠΏΠΎΠ΄ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. ΠΠ½ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ°, Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΠΈ Π»Π΅Π½ΠΈΠ²ΡΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡΠΌΠΈ:
Π€ΡΠ½ΠΊΡΠΈΠΈ Π²ΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ° β ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΈΠ»ΠΈ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ β ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΎΠ±ΡΡΠ²Π»ΡΡΡΡΡ, Π° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π² Π²ΠΈΠ΄Π΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ:
Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΡΠΊΠΎΡΠΎΡΡΠΈ Java ΠΈ Kotlin
ΠΠ΅ΡΠ²Π°Ρ ΡΠ±ΠΎΡΠΊΠ° Kotlin-ΠΊΠΎΠ΄Π° Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π½Π° 15β20% Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΡΠ΅ΠΌ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ Π½Π° Java. ΠΠ΄Π½Π°ΠΊΠΎ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ½Π°Ρ ΡΠ±ΠΎΡΠΊΠ° Kotlin Π΄Π°ΠΆΠ΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ Ρ Java. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΠ·ΡΠΊΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°Π²Π½Ρ ΠΏΠΎ ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.
ΠΡΠ΄ΡΡΠ΅Π΅ Kotlin
Kotlin β ΡΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΡΠ°ΠΏ ΡΠ°Π·Π²ΠΈΡΠΈΡ Java, Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΠ½ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌ. ΠΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π΅Π³ΠΎ ΠΎΡΠ»ΠΈΡΠ½ΡΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ Π΄Π»Ρ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΠΈ ΡΠ½ΡΠ΅ΡΠΏΡΠ°ΠΉΠ·-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Kotlin ΡΠ΅ΠΏΠ΅ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ Android, ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ Π±ΠΎΡΡΡΡΡ, ΡΡΠΎ, ΠΈΠ·ΡΡΠΈΠ² Π΅Π³ΠΎ, Π²Ρ ΠΎΡΡΠ°Π½Π΅ΡΠ΅ΡΡ Π±Π΅Π· ΡΠ°Π±ΠΎΡΡ.
17β19 Π΄Π΅ΠΊΠ°Π±ΡΡ, ΠΠ½Π»Π°ΠΉΠ½, ΠΠ΅cΠΏΠ»Π°ΡΠ½ΠΎ
Π ΠΈΠ·ΡΡΠ΅Π½ΠΈΠΈ ΡΡΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΡΠ΅ΡΠΈΡ ΡΡΠ°ΡΠ΅ΠΉ, ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠ°Ρ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Keddit β ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π΄Π»Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΡΡΠ° Reddit. ΠΡΠ΅ Π΅Π΅ ΡΠ°ΡΡΠΈ Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° ΠΌΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΠ»ΠΈ Π² ΡΠΏΠΈΡΠΊΠ΅ Π½ΠΈΠΆΠ΅.
ΠΠ°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ:
ΠΡΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΈ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π½Π° GitHub. Π‘Π΅ΡΠΈΡ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΠ°ΡΡΠ΅ΠΉ:
ΠΡΠ»ΠΈ Π²Π°ΠΌ ΡΠ΄ΠΎΠ±Π½Π΅Π΅ Π²ΠΈΠ΄Π΅ΠΎΡΠΎΡΠΌΠ°Ρ, ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΡΡΡΠΊΠΎΡΠ·ΡΡΠ½ΡΠΉ Π²ΠΈΠ΄Π΅ΠΎΠΊΡΡΡ ΠΏΠΎ 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:
Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΈΠΊΠ°, Java, Kotlin Π±ΠΎΠ»Π΅Π΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ΅Π½. Π ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΡ ΡΠ·ΡΠΊΠ° Π·Π°Π»ΠΎΠΆΠ΅Π½Ρ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°ΡΡ ΡΠ΅Π»ΡΠΉ ΡΡΠ΄ ΠΎΡΠ΅Π½Ρ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ½Π½ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΡΠ½ΠΎ ΡΠ»ΡΡΠ°ΡΡΡΡ Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Kotlin ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Null safety Π·Π° ΡΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Nullable ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. Π’Π°ΠΊΠΆΠ΅ Kotlin ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ²:
Π Π΄Π°, Kotlin ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌ Ρ Java. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΡ ΠΏΠΎΠ΄ JVM, ΡΠ°ΠΊ ΠΈ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ ΠΌΠΈΠ³ΡΠΈΡΠΎΠ²Π°ΡΡ Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ Π½Π° Java. Π’Π°ΠΊΠΆΠ΅ IDE Intelij Idea ΠΈ Android Studio ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ ΠΊΠΎΠ½Π²Π΅ΡΡΠ°ΡΠΈΡ Java ΠΊΠΎΠ΄Π° Π² Kotlin.
Π’Π°ΠΊΠΆΠ΅ Ρ Kotlin Π΅ΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° (structured concurrency). ΠΠΎΡΡΡΠΈΠ½Ρ Kotlin ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΠΈ ΡΠ΄ΠΎΠ±Π½ΡΠΉ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠΏΠΎΡΠΎΠ± ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°Π±ΠΎΡΡ Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΡΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. ΠΠ½ΡΡΡΠΈ Kotlin, ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ²Π΅ΡΡ JVM, ΠΎΡΡΠ°Π΅ΡΡΡ ΡΠΎΡ ΠΆΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ ΠΈ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΡΡΡΡ, ΡΡΠΎ ΠΈ Π² Java, Π½ΠΎ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ Kotlin Coroutines Π½Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π½ΠΈΠΌΠΈ Π½Π°ΠΏΡΡΠΌΡΡ, ΠΈ ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π»Π΅Π³ΠΊΠΎΠ²Π΅ΡΠ½ΠΎΠ΅ Π²ΠΎ Π²ΡΠ΅Ρ ΡΠΌΡΡΠ»Π°Ρ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅:
Π‘ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΡΡΡ Π²ΠΏΠ΅ΡΠ°ΡΠ»Π΅Π½ΠΈΠ΅, ΡΡΠΎ Kotlin β ΡΡΠΎ Java, ΡΠΎΠ»ΡΠΊΠΎ Π»ΡΡΡΠ΅ ΠΈ ΡΠ΄ΠΎΠ±Π½Π΅Π΅, Ρ Π±ΠΎΠ³Π°ΡΡΠΌΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ. ΠΠΎ ΡΡΠΎ Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΡΠ°ΠΊ. ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎ ΡΠ°Π·Π»ΠΈΡΠΈΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ·ΡΠΊΠ°ΠΌΠΈ ΡΠΌΠΎΡΡΠΈΡΠ΅ Π·Π΄Π΅ΡΡ. Π ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅ ΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎ ΠΆΠ΅Π»Π°Π½ΠΈΡ Π»ΠΈΠ±ΠΎ Kotlin, Π»ΠΈΠ±ΠΎ Java, Π»ΠΈΠ±ΠΎ ΠΎΠ±Π° ΡΠ·ΡΠΊΠ° Π²ΠΌΠ΅ΡΡΠ΅, ΠΈΠΌΠ΅Π΅Ρ ΠΌΠ΅ΡΡΠΎ Π±ΡΡΡ.
ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠ·ΡΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ΄ 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.
ΠΠΎΠ»ΡΡΠ΅ 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 ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡ ΠΊΠ°ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΠΊ Π½Π°ΡΠΈΠ²Π½ΡΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ.
Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ±ΡΠΈΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π² ΡΠ΅Π±Ρ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΡ, ΠΊΡΠΎΠΌΠ΅ UI ΠΈ ΠΎΡΠΎΠ±ΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ KMM ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΠΊΠΎΡΠΈΡΡ ΠΈ ΡΠΏΡΠΎΡΡΠΈΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄ ΠΎΠ±Π΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ.
ΠΠΎΠΌΠΈΠΌΠΎ Π±Π»ΠΎΠΊΠ° common ΠΊΠΎΠ΄Π° ΠΌΠΎΠ΄ΡΠ»Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π° Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌ.
ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌ (ΡΡΠΎ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ iOS, Android, Π½ΠΎ ΠΈ JS, Windows, MacOS ΠΈ ΡΠΎΠΌΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅) Kotlin Multiplatform ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠ²ΠΎΡ Π²Π΅ΡΡΠΈΡ ΡΠ·ΡΠΊΠ°, Π°Π΄Π°ΠΏΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΏΠΎΠ΄ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»ΡΠ½ΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ:
Π₯ΠΎΡΡ ΠΏΠ»Π°Π³ΠΈΠ½ 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, ΠΈ ΠΎΠ±ΡΡΡΠ½ΠΈΡΡ, ΠΏΠΎΡΠ΅ΠΌΡ Π²Π°ΠΌ ΡΡΠΎΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π² ΡΠ²ΠΎΡΠΌ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅. Π Π°Π½ΡΡΠ΅ Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Π» 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:
IntelliJ Π·Π°ΠΌΠ΅ΡΠΈΡ, ΡΡΠΎ Π²Ρ Π²ΡΡΠ°Π²Π»ΡΠ΅ΡΠ΅ Java-ΠΊΠΎΠ΄ Π² ΡΠ°ΠΉΠ» Kotlin
ΠΠ° ΡΡΠΎΠΌ Π²ΡΡ, ΡΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΡΡΠ΅Π½ΠΈΠ΅! ΠΡΠ»ΠΈ ΠΌΠ½Π΅ ΠΏΠΎΠΊΠ° Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ ΡΠ±Π΅Π΄ΠΈΡΡ Π²Π°Ρ Π½Π°ΡΡΡΡ Kotlin, ΡΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ ΠΏΠΎΡΠΈΡΠ°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ:
ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Kotlin Π² ΡΡΠ°ΡΡΠ°ΠΏΠ°Ρ ΠΈ ΡΠ½ΡΠ΅ΡΠΏΡΠ°ΠΉΠ·Π΅
Disclaimer: Π― Π½Π΅ ΠΈΠΌΠ΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊ JetBrains, Π½Π΅ ΠΏΠΎΠ»ΡΡΠ°Ρ Π΄Π΅Π½Π΅Π³ ΠΎΡ ΠΏΡΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ Kotlin ΠΈΠ»ΠΈ ΠΎΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ°ΡΡΠΈ. ΠΠ΅ΡΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π» β ΡΡΠΎ Π»ΠΈΡΡ ΠΎΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠ΅Π³ΠΎ Π»ΠΈΡΠ½ΠΎΠ³ΠΎ ΠΎΠΏΡΡΠ°.
ΠΡΠ±ΠΎΡ ΡΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° (ΠΈ Π²ΠΎΠΎΠ±ΡΠ΅ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°) ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΠΏΡΠΎΠ΄ΠΈΠΊΡΠΎΠ²Π°Π½ ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌΠΈ, ΡΠ°ΠΊ ΠΈ ΡΡΠ±ΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌΠΈ ΡΠ°ΠΊΡΠΎΡΠ°ΠΌΠΈ. Π ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ²ΠΎΠΈ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ, Π²Π»ΠΈΡΡΡΠΈΠ΅ Π½Π° Π²ΡΠ±ΠΎΡ. Π― Π΄Π°Π»Π΅ΠΊ ΠΎΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ± ΡΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠΉ Ρ ΠΎΠ»ΠΈΠ²Π°Ρ Π½Π° ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊΠΎΠΉ ΡΠ·ΡΠΊ ΠΊΡΡΡΠ΅ β ΡΠ·ΡΠΊΠΎΠ² ΠΌΠ½ΠΎΠ³ΠΎ ΠΈ Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ²ΠΎΡ Π½ΠΈΡΠ°. ΠΠ΄Π½Π°ΠΊΠΎ, Π½Π° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄ Π²ΡΠ±ΠΎΡ ΠΌΠ΅ΠΆΠ΄Ρ Kotlin ΠΈ Java Π±ΠΎΠ»Π΅Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Kotlin ΠΏΠΎΠΊΡΡΠ²Π°Π΅Ρ Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Java ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π° ΠΈ ΡΠ°Ρ Π°ΡΠ°.
ΠΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ»ΠΎΠΆΠΈΠ»ΠΎΡΡ, ΡΡΠΎ 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 ΠΊΠ°ΠΊ Π½Π° ΡΡΠΎΠ½ΡΠ΅Π½Π΄Π΅, ΡΠ°ΠΊ ΠΈ Π½Π° Π±ΡΠΊΠ΅Π½Π΄Π΅ Π²ΠΌΠ΅ΡΡΠΎ ΠΠΎΡΠ»ΠΈΠ½Π°.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ Ρ ΠΎΡΡ ΠΊΡΠ°ΡΠΊΠΎ ΡΡΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ Π½Π°ΡΡΠΎΡΡΠ΅ΠΉ ΡΡΠ°ΡΡΠΈ.