ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π½Π° 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:
IntelliJ Π·Π°ΠΌΠ΅ΡΠΈΡ, ΡΡΠΎ Π²Ρ Π²ΡΡΠ°Π²Π»ΡΠ΅ΡΠ΅ Java-ΠΊΠΎΠ΄ Π² ΡΠ°ΠΉΠ» Kotlin
ΠΠ° ΡΡΠΎΠΌ Π²ΡΡ, ΡΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΡΡΠ΅Π½ΠΈΠ΅! ΠΡΠ»ΠΈ ΠΌΠ½Π΅ ΠΏΠΎΠΊΠ° Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ ΡΠ±Π΅Π΄ΠΈΡΡ Π²Π°Ρ Π½Π°ΡΡΡΡ Kotlin, ΡΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ ΠΏΠΎΡΠΈΡΠ°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ:
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Kotlin ΠΈ Ρ ΡΠ΅ΠΌ Π΅Π³ΠΎ Π΅Π΄ΡΡ: ΠΎΠ±ΡΡΠ°ΡΡΠ΅Π΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° Android-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Ρ Java
ΠΠ²ΡΠΎΡΠΈΠ·ΡΠΉΡΠ΅ΡΡ
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Kotlin ΠΈ Ρ ΡΠ΅ΠΌ Π΅Π³ΠΎ Π΅Π΄ΡΡ: ΠΎΠ±ΡΡΠ°ΡΡΠ΅Π΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° Android-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Ρ Java
Kotlin β ΡΡΠΎ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠΎΠ»ΠΎΠ΄ΠΎΠΉ ΡΠ·ΡΠΊ ΠΎΡ ΡΠΎΡΡΠΈΠΉΡΠΊΠΎΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ JetBrains. ΠΠΎΡΠ²ΠΈΠ»ΡΡ ΠΎΠ½ Π² 2011 Π³ΠΎΠ΄Ρ. ΠΠ° ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ Google I/O 2017 ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Android ΡΠΎΠΎΠ±ΡΠΈΠ»Π°, ΡΡΠΎ Kotlin ΠΏΠΎΠ»ΡΡΠΈΠ» ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Android-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
ΠΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΈ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° Kotlin:
Π Π°Π·Π±Π΅ΡΡΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π½ΠΈΡ ΠΏΠΎΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅.
Null-Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ
ΠΠΈΠ±ΠΊΠΎΡΡΡ ΠΈ ΠΏΡΠΎΡΡΠΎΡΠ° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ°
ΠΡΠΎΡΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΡΡΡΡΠΊΡΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠΉ. ΠΠ΅ΡΡΠ΅ΡΡ ΠΈ ΡΠ΅ΡΡΠ΅ΡΡ Π·Π°Π΄Π°ΡΡΡΡ Π·Π° ΠΊΡΠ»ΠΈΡΠ°ΠΌΠΈ Π΄Π»Ρ ΠΈΠ½ΡΠ΅ΡΠΎΠΏΠ΅ΡΠ°Π±Π΅Π»ΡΠ½ΠΎΡΡΠΈ Ρ Java-ΠΊΠΎΠ΄ΠΎΠΌ. ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ data-Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΠΊ ΠΊΠ»Π°ΡΡΡ Π°ΠΊΡΠΈΠ²ΠΈΡΡΠ΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ².
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΡΠ»ΠΈΡΠΈΡ ΠΎΡ Java
Null-Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ
ΠΠ°ΠΊ ΡΠΆΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΎΡΡ ΡΠ°Π½Π΅Π΅, Kotlin Π½Π΅ Π΄ΠΎΠΏΡΡΠΊΠ°Π΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ NullPointerException, Π²ΡΠ΄Π°Π²Π°Ρ ΠΎΡΠΈΠ±ΠΊΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.
ΠΠ»Π°ΡΡΡ Π΄Π°Π½Π½ΡΡ (Data Classes)
ΠΠ΅Π³ΠΊΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΊΠΎΠΏΠΈΠΈ ΠΊΠ»Π°ΡΡΠΎΠ² Π΄Π°Π½Π½ΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° copy() :
Π€ΡΠ½ΠΊΡΠΈΠΈ-ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ
Kotlin ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°ΡΡΠΈΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ², Π½Π΅ ΠΏΡΠΈΠ±Π΅Π³Π°Ρ ΠΊ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ. ΠΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ-ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ. ΠΠ»Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΠ°ΠΊΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊ Π΅Ρ ΠΈΠΌΠ΅Π½ΠΈ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΈΠΏΠΈΡΠ°ΡΡ ΠΏΡΠ΅ΡΠΈΠΊΡ Π² Π²ΠΈΠ΄Π΅ ΡΠ°ΡΡΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠΈΠΏΠ°. ΠΠΎΡ ΡΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΡ swap Π² MutableList :
ΠΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ this Π²Π½ΡΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ-ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ-ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΡΠΎΡΠΊΠΎΠΉ. Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΡ swap ΠΊ Π»ΡΠ±ΠΎΠΌΡ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠΌΡ ΡΠΏΠΈΡΠΊΡ:
Π£ΠΌΠ½ΡΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠΈΠΏΠΎΠ²
ΠΡΠ²ΠΎΠ΄ ΡΠΈΠΏΠΎΠ²
Π Kotlin Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠ²Π½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΠΈΠΏ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ:
Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
ΠΠ°ΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Kotlin Π·Π°ΡΠΎΡΠ΅Π½ ΠΏΠΎΠ΄ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. ΠΠ½ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ°, Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΠΈ Π»Π΅Π½ΠΈΠ²ΡΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡΠΌΠΈ:
Π€ΡΠ½ΠΊΡΠΈΠΈ Π²ΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ° β ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΈΠ»ΠΈ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ β ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΎΠ±ΡΡΠ²Π»ΡΡΡΡΡ, Π° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π² Π²ΠΈΠ΄Π΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ:
Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΡΠΊΠΎΡΠΎΡΡΠΈ Java ΠΈ Kotlin
ΠΠ΅ΡΠ²Π°Ρ ΡΠ±ΠΎΡΠΊΠ° Kotlin-ΠΊΠΎΠ΄Π° Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π½Π° 15β20% Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΡΠ΅ΠΌ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ Π½Π° Java. ΠΠ΄Π½Π°ΠΊΠΎ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ½Π°Ρ ΡΠ±ΠΎΡΠΊΠ° Kotlin Π΄Π°ΠΆΠ΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ Ρ Java. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΠ·ΡΠΊΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°Π²Π½Ρ ΠΏΠΎ ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.
ΠΡΠ΄ΡΡΠ΅Π΅ Kotlin
Kotlin β ΡΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΡΠ°ΠΏ ΡΠ°Π·Π²ΠΈΡΠΈΡ Java, Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΠ½ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌ. ΠΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π΅Π³ΠΎ ΠΎΡΠ»ΠΈΡΠ½ΡΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ Π΄Π»Ρ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΠΈ ΡΠ½ΡΠ΅ΡΠΏΡΠ°ΠΉΠ·-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Kotlin ΡΠ΅ΠΏΠ΅ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ Android, ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ Π±ΠΎΡΡΡΡΡ, ΡΡΠΎ, ΠΈΠ·ΡΡΠΈΠ² Π΅Π³ΠΎ, Π²Ρ ΠΎΡΡΠ°Π½Π΅ΡΠ΅ΡΡ Π±Π΅Π· ΡΠ°Π±ΠΎΡΡ.
Π ΠΈΠ·ΡΡΠ΅Π½ΠΈΠΈ ΡΡΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΡΠ΅ΡΠΈΡ ΡΡΠ°ΡΠ΅ΠΉ, ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠ°Ρ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Keddit β ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π΄Π»Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΡΡΠ° Reddit. ΠΡΠ΅ Π΅Π΅ ΡΠ°ΡΡΠΈ Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° ΠΌΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΠ»ΠΈ Π² ΡΠΏΠΈΡΠΊΠ΅ Π½ΠΈΠΆΠ΅.
ΠΠ°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ:
ΠΡΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΈ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π½Π° GitHub. Π‘Π΅ΡΠΈΡ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΠ°ΡΡΠ΅ΠΉ:
ΠΡΠ»ΠΈ Π²Π°ΠΌ ΡΠ΄ΠΎΠ±Π½Π΅Π΅ Π²ΠΈΠ΄Π΅ΠΎΡΠΎΡΠΌΠ°Ρ, ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΡΡΡΠΊΠΎΡΠ·ΡΡΠ½ΡΠΉ Π²ΠΈΠ΄Π΅ΠΎΠΊΡΡΡ ΠΏΠΎ Kotlin.
ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎ Kotlin
ΠΠ° Π΄Π½ΡΡ JetBrains ΠΏΠΎΡΠ»Π΅ ΠΏΡΡΠΈΠ»Π΅ΡΠ½Π΅ΠΉ ΡΠ°Π±ΠΎΡΡ Π²ΡΠΏΡΡΡΠΈΠ»Π° ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ΅Π»ΠΈΠ· ΡΠ·ΡΠΊΠ° Kotlin. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΡΡΠΎ ΠΆΠ΅ ΡΡΠΎ Π·Π° ΡΠ·ΡΠΊ, ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Π·Π°ΡΠ΅ΠΌ ΠΈ Π΄Π»Ρ ΠΊΠΎΠ³ΠΎ ΠΎΠ½, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ. Π‘ΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ Π² ΡΡΠ°ΡΡΡ Π·Π°ΡΠ΅ΡΠ°Π»ΠΈΡΡ ΠΈ Π»ΠΈΡΠ½ΡΠ΅ Π²ΠΏΠ΅ΡΠ°ΡΠ»Π΅Π½ΠΈΡ ΠΎΡ ΡΠ·ΡΠΊΠ°, Π½ΠΎ Ρ ΡΡΠ°ΡΠ°Π»ΡΡ, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ Π½Π΅ Π²Π»ΠΈΡΠ»ΠΈ Π½Π° ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ. ΠΡΠ»ΠΈ Π²Ρ Π΅ΡΠ΅ Π½ΠΈΡΠ΅Π³ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΡΡΠΈ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π·Π½Π°Π΅ΡΠ΅ ΠΎ Kotlin, ΡΠΎ Ρ Π·Π°Π²ΠΈΠ΄ΡΡ Π²Π°ΠΌ, ΠΈΠ±ΠΎ ΠΏΠΎ ΠΌΠΎΠ΅ΠΌΡ ΠΎΡΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΠΈΡΠ°ΡΡ ΠΏΡΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡ Π΄ΠΎΠ»Π³ΠΎ ΠΆΠ΄Π°Π», ΡΡΠΎΠ΄Π½ΠΈ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎΠ΄Π½Π΅Π³ΠΎ ΠΏΠΎΠ΄Π°ΡΠΊΠ°. ΠΠΏΡΠΎΡΠ΅ΠΌ ΡΡΠ΄ΠΈΡΠ΅ ΡΠ°ΠΌΠΈ.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΠΎΡΠ»ΠΈΠ½
ΠΠΎΡΠ»ΠΈΠ½ β ΡΡΠΎ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΎΡΡΡΠΎΠ² Π² Π€ΠΈΠ½ΡΠΊΠΎΠΌ Π·Π°Π»ΠΈΠ²Π΅ Π½Π΅Π΄Π°Π»Π΅ΠΊΠΎ ΠΎΡ Π‘Π°Π½ΠΊΡ-ΠΠ΅ΡΠ΅ΡΠ±ΡΡΠ³Π°. ΠΠΈΠ΄ΠΈΠΌΠΎ, ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ ΡΠΎΠ·Π΄Π°ΡΠ΅Π»ΠΈ Π΄Π°ΡΡ ΠΎΡΡΡΠ»ΠΊΡ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ Π½ΠΎΠ²ΡΠΉ ΡΠ·ΡΠΊ, ΠΊΠ°ΠΊ ΠΎΡΡΡΠΎΠ² ΠΠΎΡΠ»ΠΈΠ½ β ΠΌΠ»Π°Π΄ΡΠΈΠΉ ΡΡΡΡΠΊΠΈΠΉ Π±ΡΠ°Ρ Π΄Π°Π»Π΅ΠΊΠΎΠ³ΠΎ ΠΎΡΡΡΠΎΠ²Π° Π―Π²Π°.
ΠΠ»Ρ ΠΊΠΎΠ³ΠΎ ΡΡΠΎΡ ΡΠ·ΡΠΊ
ΠΠ΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ, Π½ΠΎΠ²ΡΠΉ ΡΠ·ΡΠΊ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Π² JVM Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ (Π΅ΡΡΡ Π΅ΡΠ΅ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ Π² JavaScript, Π½ΠΎ ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠ΅Π»ΠΈΠ· ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΈΠΌΠ΅Π½Π½ΠΎ Π² JVM, ΡΡΡ ΡΠ΅ΠΌΡ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΎΠΏΡΡΡ ΠΎΡΠ»ΠΎΠΆΠΈΡΡ). Π ΡΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅Ρ , ΠΊΡΠΎ ΠΈΠΌΠ΅Π΅Ρ Π΄Π΅Π»ΠΎ Ρ Java-ΠΌΠ°ΡΠΈΠ½ΠΎΠΉ ΠΈ Π² ΡΠ΅Π»ΠΎΠΌ Ρ ΡΠ·ΡΠΊΠ°ΠΌΠΈ ΡΠΎ ΡΠ±ΠΎΡΡΠΈΠΊΠΎΠΌ ΠΌΡΡΠΎΡΠ° (Π° Ρ Π²ΡΡ ΠΎΠ΄ΠΎΠΌ ΡΠ΅Π»ΠΈΠ·Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π² JavaScript ΠΏΠΎΠΊΡΡΡΠΈΠ΅ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π±ΡΠ΄ΡΡ Π΅ΡΠ΅ ΡΠΈΡΠ΅).
ΠΡΠΎΡΡΠΎΠΉ ΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠΉ
ΠΠ²Π΅ Π³Π»Π°Π²Π½ΡΡ
ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΊΠΎΡΠ»ΠΈΠ½Π°, Π½Π° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄, ΡΡΠΎ Π΅Π³ΠΎ ΠΏΡΠΎΡΡΠΎΡΠ° ΠΈ ΠΏΠΎΠ»Π½Π°Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ Ρ Java. ΠΠΎΡΠ»ΠΈΠ½ ΡΠΎΠ·Π΄Π°Π²Π°Π»ΡΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄Π΅Π»Π°Π΅Ρ ΠΎΡΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ² Π½Π° Java ΠΈ ΠΊΠΎΡΠΎΡΠ°Ρ Ρ
ΠΎΡΠΎΡΠΎ ΡΠ°Π·Π±ΠΈΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°Ρ
ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. ΠΠ°ΠΏΡΠΎΡ Π½Π° Π½ΠΎΠ²ΡΠΉ ΡΠ·ΡΠΊ Π²ΠΈΡΠ°Π΅Ρ Π² Π²ΠΎΠ·Π΄ΡΡ
Π΅ Π΄Π°Π²Π½ΠΎ, Π½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΠΊΠΎΠΉ ΡΠ·ΡΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ Π±Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» Π²Π·ΡΡΡ (ΠΎΠ³ΡΠΎΠΌΠ½ΡΡ) Π³ΠΎΡΠΎΠ²ΡΡ ΠΊΠΎΠ΄ΠΎΠ²ΡΡ Π±Π°Π·Ρ Java, ΠΎΠ±ΡΡΠ½ΡΡ
Java-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², Π΄Π°ΡΡ ΠΈΠΌ Π½ΠΎΠ²ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΈ Π±Π΅ΡΡΠΎΠ²Π½ΠΎ (Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ) ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ β ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° Π΄ΠΎ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΠΊΠΎΡΠ»ΠΈΠ½Π° Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π»ΠΎ. Π‘ΠΎΠ·Π΄Π°ΡΠ΅Π»ΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ°, Π½Π° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄, ΠΎΡΠ΅Π½Ρ Ρ
ΠΎΡΠΎΡΠΎ ΠΏΠΎΡΡΠ²ΡΡΠ²ΠΎΠ²Π°Π»ΠΈ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΠΈ Π±ΠΈΠ·Π½Π΅ΡΠ° ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ²: Π±ΠΈΠ·Π½Π΅ΡΡ Π΄Π°Π»ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ Π΄Π°ΡΡ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. Π ΠΊΠΎΠ³Π΄Π° Ρ Π³ΠΎΠ²ΠΎΡΡ ΠΎ Β«ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ΅Β», Ρ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΈΠΌΠ΅Ρ Π²Π²ΠΈΠ΄Ρ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ, Π½ΠΎ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ Π² IDE, Π±Π΅Π· ΠΊΠΎΡΠΎΡΠΎΠΉ Π»ΠΈΡΠ½ΠΎ ΠΌΠΎΡ Π΄Π΅ΡΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΌΠ½Π΅ Π²ΠΈΠ΄ΠΈΡΡΡ ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅ΠΌΡΡΠ»ΠΈΠΌΠΎΠΉ.
Π ΠΈΡΠΎΠ³Π΅: ΠΏΡΠΎΡΡΠΎΡΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ·ΡΠΊ ΠΏΠΎΡΡΠΈ Π»ΡΠ±ΠΎΠΌΡ Java-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π³ΠΎΡΠΎΠ² ΠΏΠΎΡΡΠ°ΡΠΈΡΡ ΠΏΠΎΠ»ΡΠ°ΡΠ° Π½Π° ΡΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΡΡΠΎΡΠΈΠ°Π» ΠΈΠ»ΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΠ·ΡΠΊΠ°, ΠΎΠ±ΡΠ°ΡΠ½Π°Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ ΠΆΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ·ΡΠΊ Π² ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅.
Production-ready
ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, Π·Π°ΠΏΡΠΎΡ Π½Π° ΡΡΠΎΡ ΡΠ·ΡΠΊ Π±ΡΠ» Ρ ΡΠ°ΠΌΠΎΠΉ JetBrains, ΠΎΡΡΡΠ΄Π° ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, JetBrains ΠΆΠ΅ Π²Π½ΡΡΡΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Π΅Π³ΠΎ ΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π»Π°: ΠΊ ΠΌΠΎΠΌΠ΅Π½ΡΡ Π²ΡΡ ΠΎΠ΄Π° ΡΡΠΎΠ³ΠΎ ΡΠ΅Π»ΠΈΠ·Π° Ρ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΡΠΆΠ΅ Π΅ΡΡΡ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΠΎΠ΄ΠΈΠ½ ΠΊΡΡΠΏΠ½ΡΠΉ ΠΏΡΠΎΠ΄ΡΠΊΡ ΡΠ΄Π΅Π»Π°Π½Π½ΡΠΉ ΡΠΈΡΡΠΎ Π½Π° ΠΊΠΎΡΠ»ΠΈΠ½Π΅ (Π΄Π°, Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, ΡΡΠΎ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° ΠΏΠΎ ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π½Π°ΠΏΠΈΡΠ°Π½Π° Π½Π° Java). ΠΡΡΡΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ, ΡΡΠΎ Π·Π°ΡΠ²Π»Π΅Π½ΠΈΡ ΠΎ Π³ΠΎΡΠΎΠ²Π½ΠΎΡΡΠΈ ΡΠ·ΡΠΊΠ° ΠΊ ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½Ρ Π½Π΅ Π³ΠΎΠ»ΠΎΡΠ»ΠΎΠ²Π½Ρ. Π ΠΈΠ· ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΆΠ΅ ΠΎΠΏΡΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΡΠ»ΠΈΠ½Π° Ρ 2012 Π³ΠΎΠ΄Π° ΠΌΠΎΠ³Ρ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΠΈΠ· ΡΠ΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ Ρ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π»ΡΡ Π² Π΄ΠΎΡΠ΅Π»ΠΈΠ·Π½ΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π°, Π΄ΠΎ ΡΠ΅Π»ΠΈΠ·Π° Π½ΠΈ ΠΎΠ΄Π½Π° Π½Π΅ Π΄ΠΎΠΆΠΈΠ»Π°. ΠΡΡΡ Π΅ΡΠ΅ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠΌ Π΄Π»Ρ IDEA, Π½ΠΎ ΡΠ°ΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΊΠ°ΠΊ ΡΠ°ΡΡ.
Π‘ΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌ Ρ Java 1.6
ΠΡΠΎ ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ, Π²Π΅Π΄Ρ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠ° Π²Π΅ΡΡΠΈΡ Java ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π²ΠΎ Π²ΡΠ΅Ρ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π²Π΅ΡΡΠΈΡΡ Android, ΠΈ, Π½Π΅ ΡΠΌΠΎΡΡΡ Π½Π° Π·Π°ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ Π½Π° OpenJDK, Π²ΠΎΡΡΠΌΠ°Ρ Π²Π΅ΡΡΠΈΡ ΠΏΠΎΠΏΠ°Π΄Π΅Ρ Π² ΡΡΠΊΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΏΠΎΠ΄ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Π½Π΅ ΡΠ°ΠΊ ΡΠΊΠΎΡΠΎ ΠΊΠ°ΠΊ Ρ ΠΎΡΠ΅Π»ΠΎΡΡ Π±Ρ. ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π΅ΡΡΡ Π²ΡΡΠΊΠΈΠ΅ ΡΠ΅ΡΡΠΎΠ»ΡΠΌΠ±Π΄Ρ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΡ ΠΈΡΡΠ΅Π½ΠΈΡ, Π½ΠΎ ΠΊΠΎΡΠ»ΠΈΠ½ β ΡΡΠΎ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π»ΡΠΌΠ±Π΄Ρ Π΄Π»Ρ Π°Π½Π΄ΡΠΎΠΈΠ΄, Π½ΠΎ ΠΈ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΡΠ·ΡΠΊ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΠΏΠΎΠ΄ Π°Π½Π΄ΡΠΎΠΈΠ΄ ΠΏΡΠΎΡΠ΅ ΠΈ ΠΏΡΠΈΡΡΠ½Π΅ΠΉ Π±Π΅Π· ΠΎΡΠΎΠ±ΡΡ Π·Π°ΡΡΠ°Ρ. Π ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° apk ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎ Π½ΡΠ½Π΅ΡΠ½ΠΈΠΌ Π²ΡΠ΅ΠΌΠ΅Π½Π°ΠΌ: 823KB (Π΄Π»Ρ Π²Π΅ΡΡΠΈΠΈ 1.0.0)
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ
ΠΠΎΠ»Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π»ΡΡΡΠ΅ ΠΈΡΠΊΠ°ΡΡ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, Ρ ΠΆΠ΅ ΠΏΠΎΡΡΠ°ΡΠ°ΡΡΡ ΠΎΡΡΠ°Π·ΠΈΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΡΠ΅ Π½Π° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄ ΠΌΠΎΠΌΠ΅Π½ΡΡ Π² ΠΎΠ±ΡΠΈΡ ΡΠ»ΠΎΠ²Π°Ρ :
Null safety
ΠΠΎΡΠ΅ΠΌΡ-ΡΠΎ ΠΈΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ°ΠΊ ΡΠ»ΠΎΠΆΠΈΠ»ΠΎΡΡ, ΡΡΠΎ ΡΡΠ° ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ ΠΊΠΎΡΠ»ΠΈΠ½Π° Π²ΡΠΏΠΎΠΌΠΈΠ½Π°Π΅ΡΡΡ ΠΏΠ΅ΡΠ²ΠΎΠΉ. Π Ρ ΠΎΡΡ ΠΎΠ½Π° Π±Π΅Π·ΡΡΠ»ΠΎΠ²Π½ΠΎ Π²Π°ΠΆΠ½Π°, Π½Π° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²Π°ΠΆΠ½Π΅ΠΉΡΠ΅ΠΉ. ΠΠ΄Π΅ΡΡ ΡΠ·ΡΠΊ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, ΠΏΠΎΠ»Ρ, ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ ΠΈ ΡΠ΄, ΡΠΊΠ°Π·Π°ΡΡ, ΠΌΠΎΠΆΠ΅Ρ Π»ΠΈ Π² Π½ΠΈΡ Ρ ΡΠ°Π½ΠΈΡΡΡΡ ΡΡΡΠ»ΠΊΠ° Π½Π° null. ΠΠΎΠ΄Π½ΠΈΠΌΠ°Π΅Ρ Π½Π° Π½ΠΎΠ²ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ ΠΈΠ΄Π΅Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ Π²ΡΠΎΠ΄Π΅ @Nullable ΠΈ NotNull, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΌΠ½ΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΊ Π½Π΅-nullable ΡΠΈΠΏΡ ΠΏΠΎΡΠ»Π΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π΅Ρ Π½Π° null. ΠΠ°Π΄ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π±ΡΠ²Π°ΡΡ ΡΠ»ΡΡΠ°ΠΈ, ΠΊΠΎΠ³Π΄Π° ΡΡΠ° ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ ΡΠ°ΡΡ ΠΎΠ΄ΠΈΡΡΡ Ρ ΠΌΠΎΠΈΠΌ Π·Π°ΠΊΠΎΡΡΠ΅Π½Π΅Π»ΡΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ Π½Π° Java ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΎ ΡΠΎΠΌ ΠΊΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠ΄Π΅Π»Π°Π½Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π΅ΡΠΈ, Π½ΠΎ ΠΏΠΎΡΠ»Π΅ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ°Π·Π΄ΡΠΌΡΡ Ρ ΠΎΡΠΎΡΠ΅Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅Π³Π΄Π° Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ.
ΠΡΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ²
ΠΠ°, ΠΊΠΎΡΠ»ΠΈΠ½ ΠΏΠΎΡΡΠΈ Π²Π΅Π·Π΄Π΅ Π³Π΄Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΠΌΠ΅Π΅Ρ Π²ΡΠ²Π΅ΡΡΠΈ ΡΠΈΠΏ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΠΈΠΏ Π²ΡΡ ΠΆΠ΅ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π΄Π»Ρ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΈ ΡΠ²ΠΎΠΉΡΡΠ², ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΡΠ°Π·ΡΠΌΠ½ΠΎ (ΠΌΠ½Π΅ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ, ΡΡΠΎ ΡΡΠΎ Π½Π΅ΠΏΡΠ°Π²Π΄Π° β Ρ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ Π²Π΅ΡΡΠΈΠΈ ΡΡΠΎ ΡΠ±ΡΠ°Π»ΠΈ):
Extension methods
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ, ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΠ½Π΅ ΠΎΡΡΡΠΎ Π½Π΅ Ρ Π²Π°ΡΠ°Π΅Ρ Π² Java Π΄Π»Ρ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ Π³ΠΈΠ±ΠΊΠΎΡΡΠΈ ΡΠ·ΡΠΊΠ° ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ. ΠΠ°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄ Π΄Π»Ρ ΡΠΈΠΏΠ° ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ ΠΎΡ Π΅Π³ΠΎ (ΡΠΈΠΏΠ°) ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ. Π’Π°ΠΊΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π½Π΅ Π±ΡΠ΄Π΅Ρ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΈ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΠΌΠ΅Π½ΡΠ΅Ρ ΠΊΠ»Π°ΡΡΠ°, ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΌΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊΠ°ΠΊ ΡΡΠΈΠ»ΠΈΡΠ°ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ Π΄Π»Ρ ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°, ΡΠ°ΠΊ ΠΈ ΡΠ°Π·Π³ΡΡΠ·ΠΈΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΎΡ ΡΡΠΈΡ ΠΆΠ΅ ΡΡΠΈΠ»ΠΈΡΠ°ΡΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ².
ΠΡΠΌΠ±Π΄Ρ
ΠΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΊΠ°ΠΊ Π»ΡΠ±ΠΎΠΉ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΡΠ·ΡΠΊ Ρ ΠΏΡΠ΅ΡΠ΅Π½Π·ΠΈΠ΅ΠΉ Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Ρ ΠΊΠΎΡΠ»ΠΈΠ½Π° ΡΡΠ½ΠΊΡΠΈΡ β ΡΡΠΎ ΡΡΡΠ½ΠΎΡΡΡ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°, Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡΡ Π΄ΠΎΡΠ»ΠΎΠ²Π½ΠΎ. Π’.Π΅. ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ±ΡΡΠ²Π»ΡΡΡ ΠΏΡΡΠΌΠΎ Π² ΠΏΠ°ΠΊΠ΅ΡΠ΅ (ΠΈΠ· Π΄ΠΆΠ°Π²Ρ ΠΎΠ½ΠΈ Π²ΠΈΠ΄Π½Ρ Π²ΡΡ ΡΠ°Π²Π½ΠΎ Π² ΠΊΠ»Π°ΡΡΠ°Ρ β ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΡΠ°ΠΉΠ»Π°), Π½ΠΎ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΈΠ· Π΄ΡΡΠ³ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΡΠ΄. Π ΡΠ΅ΠΉΡΠ°Ρ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π½ΠΈΠΊΠΎΠ³ΠΎ ΡΡΠΈΠΌ Π½Π΅ ΡΠ΄ΠΈΠ²ΠΈΡΡ, Π½ΠΎ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΈ Ρ Java, Π³Π΄Π΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΊΠ°ΠΊ ΡΠ°ΠΊΠΎΠ²ΡΡ Π½Π΅Ρ (Π° ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ), Π² ΠΊΠΎΡΠ»ΠΈΠ½Π΅ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π΄Π»Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ:
Extension-Π»ΡΠΌΠ±Π΄Ρ
ΠΠ°ΡΡΠ΄Ρ Ρ extension-ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ, ΡΡΠΎ Π΅ΡΠ΅ ΠΎΠ΄Π½Π° ΠΌΠΎΡ Π»ΡΠ±ΠΈΠΌΠ°Ρ ΡΠΈΡΠ°. ΠΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π»ΡΠΌΠ±Π΄Ρ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ Π΅ΡΠ΅ ΠΈ extension-ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ. ΠΠ²ΡΡΠΈΡ Π½Π΅ ΠΎΡΠ΅Π½Ρ, Π΄Π°. ΠΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅:
ΠΡΠ° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ ΡΠΌΠΎΡΡΠΈΡΡΡ Π² Π±ΠΈΠ»Π΄Π΅ΡΠ°Ρ , ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ Π²Π°ΠΌ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ β Π½Π° ΡΠ»ΡΡΠ°ΠΉ, Π΅ΡΠ»ΠΈ Π²Π°ΠΌ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡΡΠ°ΡΡΡΡ Π²ΠΎΡ ΡΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ:
Inline-ΡΡΠΊΠ½ΡΠΈΠΈ
ΠΠΎΠΌΠ΅ΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΊΠ°ΠΊ inline ΠΌΡ ΠΏΡΠΎΡΠΈΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ Π΅Ρ ΠΏΠΎ ΠΌΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ. Π§Π°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΡΠ°ΠΊΠΈΠΌΠΈ Π²Π΅ΡΠ°ΠΌΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΡΡ ΡΠ°Π½ΡΠ°ΠΉΠΌ, Π½ΠΎ Π΅ΡΡΡ ΠΊΠ΅ΠΉΠ·Ρ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΡΠΎΡΠ½ΠΎ Π·Π½Π°Π΅ΠΌ, ΡΡΠΎ ΡΡΠΊΠ½ΡΠΈΡ ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠΎΡΡΠΊΠ°Ρ Π΄Π»Ρ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-ΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ β ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΠΌΠΈ Π»ΡΠΌΠ±Π΄Π°ΠΌΠΈ:
ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π½Π° ΡΠ°ΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΡΡΡ ΡΠ΅ΡΠΈΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ, ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΡΠΌ. Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ.
ΠΠ΅Π»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
Π ΠΊΠΎΡΠ»ΠΈΠ½Π΅ Π΅ΡΡΡ Π΄Π²Π° ΡΠΈΠΏΠ° Π΄Π΅Π»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ΅ΡΠ²ΡΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄Π΅Π»Π΅Π³ΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡ-ΡΠΎ ΠΈΠ½ΡΡΠ°Π½ΡΡ ΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ°:
Π£ ΡΡΠΎΠ³ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° Π΅ΡΡΡ ΡΡΠ΄ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ½ΡΡΠ°Π½Ρ Π΄Π»Ρ Π΄Π΅Π»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ Π΄ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°.
ΠΡΠΎΡΠΎΠΉ ΡΠΈΠΏ Π΄Π΅Π»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ β ΡΡΠΎ delegated properties. ΠΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Ρ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ get (ΠΈ set Π΄Π»Ρ var), ΠΊ ΠΊΠΎΡΠΎΡΡΠΌ Π±ΡΠ΄Π΅Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡΡΡ Π΄Π΅Π»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΠΎΡΡΡΠΏΠ° ΠΏΡΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ ΠΊ ΡΠ²ΠΎΠΉΡΡΠ²Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
Generics
Π‘ΠΎΠ·Π΄Π°ΡΠ΅Π»ΠΈ ΠΊΠΎΡΠ»ΠΈΠ½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ»ΡΡΡΠΈΠ»ΠΈ Java-Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΈ. ΠΠ·-Π·Π° ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ Ρ Π΄ΠΆΠ°Π²ΠΎΠΉ Π½Π΅ Π²ΡΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ ΠΊΠ°ΠΊ Ρ ΠΎΡΠ΅Π»ΠΎΡΡ Π±Ρ, Π½ΠΎ ΠΈΠΌ ΡΠ΄Π°Π»ΠΎΡΡ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ΠΏΡΠΈΡΡΠ½ΡΡ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΡΠ»ΠΈ ΠΈΡ ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΈΠΊΠΈ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Π½Π°Π΄ Java 5.
ΠΠ΅ΡΡΡΡΠΊΡΡΡΠΈΠ·Π°ΡΠΈΡ
Π§ΡΠΎΠ±Ρ ΡΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ Π·Π°ΡΠ°Π±ΠΎΡΠ°Π», Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· someFunc() Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠΈΠΏΠ°, Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π΅ΡΡΡ (ΠΌΠΎΠΆΠ½ΠΎ extension) ΠΌΠ΅ΡΠΎΠ΄Ρ component1(), component2():
Data-ΠΊΠ»Π°ΡΡΡ
Π‘Π°Ρ Π°Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π±ΠΈΠ½ΠΎΠ²:
Π‘ΠΎΠ·Π΄Π°Π΅Ρ Π±ΠΈΠ½ Ρ ΠΏΠΎΠ»ΡΠΌΠΈ + Π°Π²ΡΠΎΠ³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ equals+hashCode+toString()+componentN ΠΈΠ· ΡΠ°Π·Π΄Π΅Π»Π° Π²ΡΡΠ΅, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄:
ΠΠΎΠ»Π΅Π·Π½Π°Ρ Π²Π΅ΡΡ, Π½ΠΎ ΠΎ Π½ΡΠ°Π½ΡΠ°Ρ ΡΠΌ. ΠΏΡΠ½ΠΊΡ Β«Π Π³ΡΡΡΡΠ½ΠΎΠΌΒ».
Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°
ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π½Π΅Π»ΡΠ·Ρ Π½Π΅ ΡΠΏΠΎΠΌΡΠ½ΡΡΡ ΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠΎΡΠ»ΠΈΠ½ Π½Π°ΡΠ΅Π»Π΅Π½ Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π½Π° ΡΠ°Π±ΠΎΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Java, ΡΠΎ ΠΈ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ ΡΠ²ΠΎΠ΅ΠΉ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Ρ Π½Π΅Π³ΠΎ Π½Π΅Ρ. ΠΠΎΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Kotlin Π½Π°ΡΠ΅Π»Π΅Π½Π° Π½Π° ΡΠ»ΡΡΡΠ΅Π½ΠΈΠ΅ ΠΈ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΡΠ°ΡΡΠ΅Π³ΠΎ Π±ΡΠ°ΡΠ° β Java. ΠΠ΄Π½Π°ΠΊΠΎ, ΡΡΠΎ ΡΠ΅ΠΌΠ° Π΄Π»Ρ Π΄ΡΡΠ³ΠΎΠΉ Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈ.
Π Π³ΡΡΡΡΠ½ΠΎΠΌ
ΠΡ ΠΌΠΎΠ³Π»ΠΈ ΠΏΠΎΠ΄ΡΠΌΠ°ΡΡ, ΡΡΠΎ ΡΡΠΎ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΡΠΉ ΠΏΡΠΎΠ΄ΡΠΊΡ, Π½ΠΎ Π½Π΅Ρ, Π΅ΡΡΡ ΠΈ Π½Π΅ΠΏΡΠΈΡΡΠ½ΡΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΡ:
ΠΠ°Π΄ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠΌ Π΅ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ, ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ΄Π°Π΅Ρ ΡΠΊΡΠ΅ΠΏΡΠ΅Π½Ρ, ΠΏΠ»ΠΎΡ ΠΎ ΡΠΌΠ΅Π΅Ρ Π² toString() Π² Π΄Π΅Π±Π°Π³Π΅, Π° ΡΠ°ΠΊ ΠΆΠ΅ Π»ΡΠ±ΠΈΡ ΠΏΡΠΎΠΌΠ°Ρ ΠΈΠ²Π°ΡΡΡΡ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅ Π½Π° ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊ, ΠΈΠ½ΠΎΠ³Π΄Π° (Π²ΠΈΠ΄ΠΈΠΌΠΎ ΠΈΠ· Π·Π° ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ ΠΈΠ½Π»Π°ΠΉΠ½Π°) ΠΏΡΡΠ°Π΅Ρ Π³Π΄Π΅ ΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ Π±ΡΡΠΊΠΏΠΎΠΈΠ½Ρ ΠΈ ΡΠΎΠΌΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΡΠΎ Π²ΡΡ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ Π½Π°Π²Π΅ΡΠ½ΡΠΊΠ° ΠΏΠΎΠΏΡΠ°Π²ΡΡ, Π½ΠΎ ΡΠ΅ΠΉΡΠ°Ρ ΠΌΡ ΠΈΠΌΠ΅Π΅ΠΌ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎ.
Data-ΠΊΠ»Π°ΡΡΡ
ΠΠ΅ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π΅ΡΡΡΠ»ΠΈΠ²ΠΎΡΡΡ
ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π½Π΅ΡΡΡΠ»ΠΈΠ²ΠΎΡΡΡ Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π² Π³ΠΎΠ»ΠΎΠ²Π°Ρ , Π½ΠΎ ΠΊΡΠ°ΡΠΊΠΎΡΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈΠ³ΡΠ°Π΅Ρ Π·Π»ΡΡ ΡΡΡΠΊΡ, ΠΈ ΠΌΠ΅ΡΡΠ°ΠΌΠΈ ΠΊΠΎΠ΄ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π½Π΅Π²Π°ΠΆΠ½ΠΎ. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΡΠ°ΠΉΠ»-Π³Π°ΠΉΠ΄Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΈΡΠΏΡΠ°Π²ΠΈΠ»ΠΎ Π±Ρ, Π½ΠΎ ΠΏΠΎΠΊΠ° ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΎΡΡΠ°ΡΠ°ΡΡΡΡ, ΡΡΠΎΠ±Ρ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΎΡΠΎΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ, Π½ΠΎ ΠΈ ΠΊΡΠ°ΡΠΈΠ²ΠΎ Π²ΡΠ³Π»ΡΠ΄Π΅Π»ΠΎ. ΠΡΠΎΠ±Π΅Π½Π½ΠΎ Π½Π° ΠΌΠΎΠΉ ΡΡΠ±ΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ Π²Π·Π³Π»ΡΠ΄ ΡΡΡΠ°ΡΠ½ΠΎ Π²ΡΠ³Π»ΡΠ΄ΡΡ get, set Π΄Π»Ρ ΡΠ²ΠΎΠΉΡΡΠ².
Kotlin
Kotlin β ΡΡΠΎ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ JetBrains. Π‘ ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π²ΡΡ ΠΎΠ΄Π° ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΡΠ·ΡΠΊΠ° Π² 2016 Π³ΠΎΠ΄Ρ, Π²ΡΠ΅Π³ΠΎ Π·Π° Π³ΠΎΠ΄ ΠΎΠ½ Π·Π°Π½ΡΠ» ΠΌΠ΅ΡΡΠΎ Π² ΡΠΎΠΏ-50 Π² ΡΠ΅ΠΉΡΠΈΠ½Π³Π΅ TIOBE (ΠΈΠ½Π΄Π΅ΠΊΡ, ΠΎΡΠ΅Π½ΠΈΠ²Π°ΡΡΠΈΠΉ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΡ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΏΠΎΠ΄ΡΡΠ΅ΡΠ° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΏΠΎΠΈΡΠΊΠΎΠ²ΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ², ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΠ·ΡΠΊΠ°) ΠΈ Π½Π΅ ΡΠ΄Π°Π΅Ρ ΠΏΠΎΠ·ΠΈΡΠΈΠΉ.
Kotlin β ΡΡΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ (ΡΠΈΠΏ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, ΡΠΎ Π΅ΡΡΡ Π΅ΡΠ΅ Π΄ΠΎ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ).
Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Java, Π³Π΄Π΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΡΡΠΎΡΡΡΡ Π½Π° ΠΊΠ»Π°ΡΡΠ°Ρ , ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ ΡΡΡΠΎΠΈΡΠ΅Π»ΡΠ½ΡΠΌ Π±Π»ΠΎΠΊΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° Kotlin ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ. ΠΠ΄Π½Π°ΠΊΠΎ Kotlin ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΠ»Ρ ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Kotlin?
ΠΠ±Π»Π°ΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Kotlin ΡΠΈΡΠΎΠΊΠ°Ρ:
Π‘Π΅Π³ΠΎΠ΄Π½Ρ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΎΠ½ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Android-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π 2017 Π³ΠΎΠ΄Ρ Kotlin ΠΏΠΎΠ»ΡΡΠΈΠ» ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ Google, Π° ΡΠΆΠ΅ Π² 2019 Π³ΠΎΠ΄Ρ Google ΠΎΠ±ΡΡΠ²ΠΈΠ» Kotlin ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ½ΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ΄ Android.
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ
ΠΠΎ ΠΌΠ½Π΅Π½ΠΈΡ ΡΠΎΠ·Π΄Π°ΡΠ΅Π»Π΅ΠΉ Kotlin, Java Π½Π°ΠΊΠΎΠΏΠΈΠ»Π° ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ΡΠ΄Π°ΡΠ½ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ Π·Π° Π³ΠΎΠ΄Ρ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ. ΠΠΎΡΡΠΎΠΌΡ Π² Π½ΠΎΠ²ΠΎΠΌ ΡΠ·ΡΠΊΠ΅ ΠΎΠ½ΠΈ ΠΏΠΎΡΡΠ°ΡΠ°Π»ΠΈΡΡ ΡΡΠ΅ΡΡΡ Π²ΡΠ΅ Π½Π΅Π΄ΠΎΡΠ΅ΡΡ Java ΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΡΠ·ΡΠΊΠ° Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½ΡΠΌ ΠΈ ΡΠ΄ΠΎΠ±Π½ΡΠΌ. ΠΠ»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΡΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΊΠΎΠ΄ Π½Π° Kotlin ΠΏΡΠΎΡΠ΅ ΡΠΈΡΠ°Π΅ΡΡΡ. Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»ΡΡΠ°ΡΡ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π° Π΄Π΅ΡΡΡΠΊΠΈ ΡΡΡΠΎΠΊ ΠΊΠΎΡΠΎΡΠ΅, ΡΠ΅ΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² Java.
ΠΠ»Π°Π²Π½Π°Ρ ΡΠΎΡΠΊΠ° Π²Ρ ΠΎΠ΄Π°
Π’Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ Π² Java, Π² Kotlin ΡΠΎΡΠΊΠΎΠΉ Π²Ρ ΠΎΠ΄Π° Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ main().
ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°
Kotlin ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌ Ρ Java. ΠΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π½ΡΠ΅ Π² Java-ΠΊΠΎΠ΄Π΅, ΠΏΡΡΠΌΠΎ ΠΈΠ· ΠΊΠΎΠ΄Π° Kotlin ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, ΠΈ Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π½Π° Java.
Π ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π½Π° Kotlin ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΡΠ±ΡΠ΅ Java-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ. Π Π΅ΡΠ΅ Kotlin ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ Ρ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ ΡΠ±ΠΎΡΠΊΠΈ, ΡΠ°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Maven ΠΈ Gradle.
ΠΠ°ΠΊΠΎΠ½ΠΈΡΠ½ΠΎΡΡΡ. ΠΡΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠ°ΠΊΡΠΎΡΠΎΠ², ΠΈΠ·-Π·Π° ΠΊΠΎΡΠΎΡΡΡ Π²ΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Π²ΡΠ±ΠΈΡΠ°Π΅Ρ ΠΈΠΌΠ΅Π½Π½ΠΎ Kotlin.
Kotlin null-Π±Π΅Π·ΠΎΠΏΠ°ΡΠ΅Π½. Π‘ΠΎΠ·Π΄Π°ΡΠ΅Π»ΠΈ ΡΠ·ΡΠΊΠ° ΡΠ΄Π΅Π»Π°Π»ΠΈ Π²ΡΡ, ΡΡΠΎΠ±Ρ NullPointerException ΠΎΡΡΠ°Π»ΠΈΡΡ Π² ΠΏΡΠΎΡΠ»ΠΎΠΌ. ΠΡΠΎ ΠΎΠ΄Π½ΠΈ ΠΈΠ· ΡΠ°ΠΌΡΡ ΡΠ°ΡΡΠΎ Π²ΡΡΡΠ΅ΡΠ°ΡΡΠΈΡ ΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ, ΠΈ ΠΈΡ ΠΏΠΎΡΡΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡΠ»Π΅Π΄ΠΈΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ. Π ΡΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΎΡΠΈΠ±ΠΊΠΈ Π±ΡΠ΄ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
NullPointerException Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π² ΡΠ»ΡΡΠ°Π΅, ΠΊΠΎΠ³Π΄Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΡΡΠ°Π΅ΡΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, ΡΠ°Π²Π½Π° null. ΠΠΎΡΡΠΎΠΌΡ Π² Kotlin ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π½Π΅Π»ΡΠ·Ρ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ null, ΡΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ ΡΡΠΎ Π½Π΅ ΡΠΊΠ°Π·Π°Π½ΠΎ ΡΠ²Π½ΠΎ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ΄ Π½ΠΈΠΆΠ΅ Π½Π΅ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ Β«β?Β»β ΠΏΠΎΡΠ»Π΅ ΡΠΈΠΏΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ:
val name: String = null
Π§ΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ name ΠΌΠΎΠ³Π»Π° Π±ΡΡΡ null, Π½ΡΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΡΡΠΎ ΡΠ²Π½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π·Π½Π°ΠΊΠ° Β«β?Β»:
val name: String? = null
Π ΠΊΠΎΠ΄Π΅ Π½ΠΈΠΆΠ΅ ΡΡΠ½ΠΊΡΠΈΡ hashCode() Π½Π΅ Π±ΡΠ΄Π΅Ρ Π²ΡΠ·Π²Π°Π½Π°, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ name Π² ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ°Π²Π½Π° null.
val name: String? = null
name?.hashCode()
Π€ΡΠ½ΠΊΡΠΈΠΈ-ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ. Kotlin ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ² Π±Π΅Π· Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ². ΠΡΠΎ ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ²ΡΡΠΈΡΡ ΡΠΈΡΠ°Π΅ΠΌΠΎΡΡΡ ΠΊΠΎΠ΄Π°. ΠΠ»Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ extension ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊ Π΅Π΅ ΠΈΠΌΠ΅Π½ΠΈ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΡΠ΅ΡΠΈΠΊΡ Π² Π²ΠΈΠ΄Π΅ ΡΠ°ΡΡΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
fun String.addGreeting(): String<
return βHello β + this
>
Π’ΠΎΠ³Π΄Π° Π²ΡΠ·ΠΎΠ² ΡΠ°ΠΊΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ:
val name = βSkillFactoryβ
println(name.addGreeting())
Kotlin ΠΈΠΌΠ΅Π΅Ρ ΠΎΡΠΊΡΡΡΡΠΉ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄. ΠΠΎΠ΄ Kotlin ΠΎΡΠΊΡΡΡ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ², ΠΈ Π΅Π³ΠΎ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π² ΠΏΡΠΎΠ΅ΠΊΡ ΡΠΎΠΆΠ΅ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ. ΠΡΠΊΡΡΡΡΠΉ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΠΏΠΎΠΈΡΠΊ ΠΏΡΠΎΠ±Π»Π΅ΠΌ. Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Kotlin ΠΏΡΠΈΡΠ»ΡΡΠΈΠ²Π°ΡΡΡΡ ΠΊ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΈ Π²Π½ΠΎΡΡΡ ΠΏΡΠ°Π²ΠΊΠΈ, ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΠΌΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎΠΌ.
ΠΠ΅Π³ΠΊΠΎ ΡΡΠΈΡΡ. ΠΠ½ΠΎΠ³ΠΈΠ΅ ΠΎΡΠΌΠ΅ΡΠ°ΡΡ, ΡΡΠΎ Kotlin ΠΏΡΠΎΡΡ Π² ΠΈΠ·ΡΡΠ΅Π½ΠΈΠΈ ΠΈ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ ΠΊΠ°ΠΊ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ .
ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ
Π‘ΠΊΠΎΡΠΎΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ. Π§Π°ΡΡΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠΎ ΡΠΊΠΎΡΠΎΡΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΊΠΎΠ΄Π°. ΠΡΠΎ Π½Π΅ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠ΅ ΡΠ²Π»Π΅Π½ΠΈΠ΅, ΠΈΠ½ΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π΄Π°ΠΆΠ΅ Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ ΠΊΠΎΠ΄Π° Π½Π° Java, Π½ΠΎ ΡΠ°ΠΊΠΈΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΡ ΡΠ°ΡΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ².
ΠΠ°Π»ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΡΠΎΡΠΈΠ°Π»ΠΎΠ². Π‘ΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Π½Π° ΡΠ·ΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Kotlin Π΅ΡΠ΅ ΠΌΠΎΠ»ΠΎΠ΄ΠΎΠ΅ ΠΈ ΡΡΠ°ΡΠ΅ΠΉ ΠΏΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ Π½Π΅ ΡΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π΄Π»Ρ Β«βΡΠ°ΠΉΠ½ΠΈΠΊΠΎΠ²Β»β. ΠΠΎΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΎΠ² Π½Π° ΡΡΡΡΠΊΠΎΠΌ ΡΠ·ΡΠΊΠ΅ Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ .
ΠΠ΅Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π½Π° Kotlin. ΠΡΠΈΡΠΈΠ½Π° ΡΠ° ΠΆΠ΅ β ΡΠ·ΡΠΊ Π΅ΡΠ΅ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΌΠΎΠ»ΠΎΠ΄ΠΎΠΉ. ΠΠΎ ΡΡΠΎΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ ΠΊΠΎΠΌΠΏΠ΅Π½ΡΠΈΡΡΠ΅ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡΡ Ρ Java β ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ Java-Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ.
ΠΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Ρ
Π‘Π΅ΠΉΡΠ°Ρ Kotlin ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Android-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π° Π·Π½Π°ΡΠΈΡ, Π² Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π»Π΅Ρ Android-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΡΠ°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠΎΠΈΡ Ρ Π½ΠΈΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ.
Π‘ Kotlin Π½Π°ΡΠΈΠ½Π°ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈ ΠΊΡΡΠΏΠ½ΡΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ β Uber, Netflix, Pinterest, Coursera, β ΠΏΠΎΡΡΠΎΠΌΡ Π² Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅ΠΌ Π±ΡΠ΄ΡΡΠ΅ΠΌ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Kotlin ΡΡΠ°Π½Π΅Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΈ Π² Π²Π΅Π±-, ΠΈ Π΄Π΅ΡΠΊΡΠΎΠΏΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ .
ΠΠΎΡΠ΅ΠΌΡ Π²Π°ΠΌ ΡΡΠΎΠΈΡ Π²ΡΡΡΠΈΡΡ Kotlin?
ΠΠ²ΡΠΎΡΠΈΠ·ΡΠΉΡΠ΅ΡΡ
ΠΠΎΡΠ΅ΠΌΡ Π²Π°ΠΌ ΡΡΠΎΠΈΡ Π²ΡΡΡΠΈΡΡ Kotlin?
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, ΡΠΆΠ΅ Π΄Π°Π²Π½ΠΎ Π°ΠΊΡΠΈΠ²Π½ΠΎ Π΅Π³ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ.
Π ΠΎΠ±ΡΠ΅ΠΌ, Π΅ΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ΅Π½: