Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΊΠΎΡΠ»ΠΈΠ½ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ 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
Π Π·Π°ΡΠ΅ΠΌ ΠΎΠ½ Π°Π½Π΄ΡΠΎΠΈΠ΄-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ.
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 Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ ΠΈ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΎ ΡΠ²Π΅ΠΆΠΈΡ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΡ Π±Π°Π³Π°Ρ .
ΠΠ°Π»Π΅Π½ΡΠΊΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ ΠΈ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ Π²Π»Π°Π΄Π΅Π»Π΅Ρ ΡΠ·ΡΠΊΠ°. Kotlin Π²ΡΡ Π΅ΡΡ Π½Π΅ ΡΠ°ΠΊΠΎΠΉ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΉ, ΠΊΠ°ΠΊ Java. ΠΡΠΈΡΠΈΠ½Π° Π² ΡΠΎΠΌ, ΡΡΠΎ Kotlin β ΡΡΠΎ Π½Π΅ ΠΏΡΠΎΠ΄ΡΠΊΡ ΠΡΠ³Π». Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π±ΠΎΡΡΡΡ, ΡΡΠΎ ΡΠ΅ΡΠ΅Π· ΠΊΠ°ΠΊΠΎΠ΅-ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΡΠ³Π» ΠΎΡΠΊΠ°ΠΆΠ΅ΡΡΡ ΠΎΡ Π½Π΅Π³ΠΎ, ΠΏΡΠΈΠ΄ΡΠΌΠ°Π΅Ρ ΠΊΠ°ΠΊΡΡ-ΡΠΎ ΡΠ²ΠΎΡ Π²Π΅ΡΡΠΈΡ ΡΠ·ΡΠΊΠ° ΠΈΠ»ΠΈ ΠΏΠΎΡΡΠΎΡΠΈΡΡΡ Ρ JetBrains.
ΠΠ°Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ ΡΠΎΡΠΌΠΎΠ·ΠΈΡ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ Kotlin: ΠΏΠΎΠ΄ Π½Π΅Π³ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π²ΡΠΏΡΡΠΊΠ°ΡΡΡΡ Π½ΠΎΠ²ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ, Π° Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ Π² Π±Π°Π³-ΡΡΠ΅ΠΊΠ΅Ρ β Π½Π°ΠΏΠΈΡΠ°ΡΡ Π² ΡΠ΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ JetBrains, Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ²ΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π·Π°Π΄Π°Ρ, ΠΆΠ΄Π°ΡΡ ΠΈ Π½Π°Π΄Π΅ΡΡΡΡΡ Π½Π° Π΅Ρ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅.
Π ΡΠ΅Π½ΡΡΠ±ΡΠ΅ 2020 Π² Π±Π°Π³-ΡΡΠ΅ΠΊΠ΅ΡΠ΅ Kotlin ΠΎΠΊΠΎΠ»ΠΎ 40 000 Π·Π°Π΄Π°Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°ΠΊΡΡΠ²Π°ΡΡΡΡ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ ΠΊΡΠΈΡΠΈΡΠ½ΠΎΡΡΠΈ. ΠΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π·Π°Π΄Π°Ρ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π΄ΠΎΡ ΠΎΠ΄ΠΈΡ ΡΠ΅ΡΠ΅Π· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π»Π΅Ρ, Π½ΠΎ Π΅ΡΡΡ ΠΈ ΡΠ΅, ΡΡΠΎ ΠΎΡΡΠ°ΡΡΡΡ Π½Π΅ΡΠ΅ΡΡΠ½Π½ΡΠΌΠΈ β Π² ΡΠ°ΠΊΠΈΡ ΡΡΠ»ΠΎΠ²ΠΈΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π²ΡΠ½ΡΠΆΠ΄Π΅Π½Ρ ΠΈΡΠΊΠ°ΡΡ ΠΊΠΎΡΡΡΠ»ΡΠ½ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡΡ Π½Π° Π΄ΡΡΠ³ΠΎΠΉ ΡΠ·ΡΠΊ Ρ ΡΠ°Π·Π²ΠΈΡΡΠΌ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎΠΌ.
ΠΠ»Ρ ΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ
Kotlin ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π²Π΅Π±-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, Π±ΡΠΊΠ΅Π½Π΄Π° ΠΈ ΠΌΡΠ»ΡΡΠΈΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ:
ΠΠ»Ρ ΠΌΡΠ»ΡΡΠΈΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Ρ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² Π² 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. ΠΡΠ»ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ Ρ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΎΠΌ β ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π½Π΅ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΡΡΡΠΊΠΎΡΠ·ΡΡΠ½ΡΡ Π²Π΅ΡΡΠΈΡ.
Π§Π°ΡΡΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Kotlin?
ΠΠ°ΠΊΠΎΠ²Π° ΡΠ΅ΠΊΡΡΠ°Ρ Π²Π΅ΡΡΠΈΡ Kotlin?
Π‘Π²ΠΎΠ±ΠΎΠ΄Π΅Π½ Π»ΠΈ Kotlin?
ΠΠ°. Kotlin Π±ΡΠ», Π΅ΡΡΡ ΠΈ Π±ΡΠ΄Π΅Ρ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΠΌ. ΠΠ½ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ Apache 2.0, Π° ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π½Π° GitHub.
Π―Π²Π»ΡΠ΅ΡΡΡ Π»ΠΈ Kotlin ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΠΈΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΌ?
ΠΠ°ΠΊΠΈΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° Π΅ΡΡΡ Ρ Kotlin ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ Java?
Kotlin Π±ΠΎΠ»Π΅Π΅ Π»Π°ΠΊΠΎΠ½ΠΈΡΠ΅Π½. ΠΠΎΠ΄ Π½Π° Kotlin ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π½Π° 40% ΠΊΠΎΡΠΎΡΠ΅. Π’Π°ΠΊΠΆΠ΅ Kotlin ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΈΠΏΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΌ. ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ null-Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ΅Π½Π΅Π΅ ΡΡΠ·Π²ΠΈΠΌΡ ΠΊ NullPointerException. Π ΡΠΏΠΈΡΠΊΠ΅ Π΄ΡΡΠ³ΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ: ΡΠΌΠ½ΠΎΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ², ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ°, ΡΡΠ½ΠΊΡΠΈΠΈ-ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΠΈ Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»ΡΠΌΠΈ. ΠΠ½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΏΠΈΡΠ°ΡΡ Π²ΡΡΠ°Π·ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ΄ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ DSL.
Π‘ΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌ Π»ΠΈ Kotlin Ρ Java?
ΠΠ°, Kotlin Π½Π° 100% ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌ Ρ Java. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π²Π°ΡΠ΅Π³ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° Π½Π° Java ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ Kotlin ΡΠ΄Π΅Π»Π΅Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π½Π° Kotlin ΠΈΠ· Java ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ. ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΡΠΎΠΌΡ, Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Kotlin Π² ΠΏΡΠΎΠ΅ΠΊΡ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π΅ΠΉ. Π’Π°ΠΊΠΆΠ΅ ΡΡΠΎΠΈΡ ΠΎΡΠΌΠ΅ΡΠΈΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΊΠΎΠ½Π²Π΅ΡΡΠ΅Ρ ΠΊΠΎΠ΄Π° ΠΈΠ· Java Π² Kotlin. ΠΠ½ Π²ΡΡΡΠΎΠ΅Π½ Π² IDE ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΏΡΠΎΡΡΠΈΡΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° Π½Π° Kotlin.
ΠΠ»Ρ ΡΠ΅Π³ΠΎ Ρ ΠΌΠΎΠ³Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Kotlin?
Kotlin ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄Π»Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌ, Π±ΡΠ΄Ρ ΡΠΎ ΡΠ΅ΡΠ²Π΅Ρ, ΠΊΠ»ΠΈΠ΅Π½Ρ, Π²Π΅Π± ΠΈΠ»ΠΈ Android. C ΡΠ΅Π»ΠΈΠ·ΠΎΠΌ Kotlin/Native (ΠΊΠΎΡΠΎΡΡΠΉ Π½Π° ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅) ΠΏΠΎΡΠ²ΠΈΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ°ΠΊΠΈΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌ, ΠΊΠ°ΠΊ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ, macOS ΠΈ iOS. ΠΡΠ΄ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Kotlin Π΄Π»Ρ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ JavaScript ΠΈΠ»ΠΈ JavaFX, Π² data science ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅.
ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Kotlin Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄Π»Ρ Android?
ΠΠΎΠΆΠ½ΠΎ. Kotlin ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠ·ΡΠΊ Π΄Π»Ρ Android, Π½Π°ΡΠ°Π²Π½Π΅ Ρ Java. Π‘ΠΎΡΠ½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π΄Π»Ρ Android ΡΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Kotlin, ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ Basecamp, Pinterest ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. Π§ΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅, ΡΠΌΠΎΡΡΠΈΡΠ΅ ΡΡΠ°ΡΡΡ ΠΏΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ Π΄Π»Ρ Android.
ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Kotlin Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ?
ΠΠΎΠΆΠ½ΠΎ. Kotlin Π½Π° 100% ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌ Ρ JVM, Π° Π·Π½Π°ΡΠΈΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΡΠ±ΡΠ΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ Π΄Π»Ρ Java, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Spring Boot, vert.x ΠΈΠ»ΠΈ JSF. Π’Π°ΠΊΠΆΠ΅ Π΅ΡΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ Π΄Π»Ρ Kotlin, ΠΊΠ°ΠΊ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Ktor. Π‘ΠΌΠΎΡΡΠΈΡΠ΅ ΡΡΠ°ΡΡΡ ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Kotlin Π΄Π»Ρ Π²Π΅Π±-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ?
ΠΠ°. ΠΡΠΎΠΌΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² Π±ΡΠΊΡΠ½Π΄Π΅, Π²Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Kotlin/JS Π΄Π»Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ. Kotlin ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΈΠ· DefinitelyTyped Π΄Π»Ρ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ Π΄Π»Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π½Π° JavaScript. Π’Π°ΠΊΠΆΠ΅ Kotlin ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌ Ρ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ, ΡΠ°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ AMD ΠΈ CommonJS. Π‘ΠΌΠΎΡΡΠΈΡΠ΅ ΡΡΠ°ΡΡΡ ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ Π΄Π»Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ.
ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Kotlin Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Desktop-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ?
ΠΠ°. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΡΠ±ΠΎΠΉ UI-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ JavaFx, Swing ΠΈ Ρ.Π΄. Π Π΄ΠΎΠ±Π°Π²ΠΎΠΊ, ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ Π΄Π»Ρ Kotlin, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ TornadoFX.
ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Kotlin Π΄Π»Ρ Π½Π°ΡΠΈΠ²Π½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ?
Kotlin/Native Π² ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅. Kotlin/Native ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π² Π½Π°ΡΠΈΠ²Π½ΡΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π±Π΅Π· Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ. ΠΠ° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π³ΠΎΡΠΎΠ²Π° ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠ°Ρ Π΄Π΅ΠΌΠΎ-Π²Π΅ΡΡΠΈΡ, Π½ΠΎ ΠΎΠ½Π° Π΅ΡΠ΅ Π½Π΅ Π³ΠΎΡΠΎΠ²Π° ΠΊ ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½Ρ ΠΈ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½Ρ ΠΊ Π²Π΅ΡΡΠΈΠΈ 1.0. Π‘ΠΌΠΎΡΡΠΈΡΠ΅ ΠΏΠΎΡΡ, Π°Π½ΠΎΠ½ΡΠΈΡΡΡΡΠΈΠΉ Kotlin/Native.
ΠΠ°ΠΊΠΈΠ΅ IDE ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Kotlin?
Kotlin ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Π²ΡΠ΅ΠΌΠΈ ΠΊΡΡΠΏΠ½ΡΠΌΠΈ IDE Π΄Π»Ρ Java, Π²ΠΊΠ»ΡΡΠ°Ρ IntelliJ IDEA, Android Studio, Eclipse ΠΈ NetBeans. Π’Π°ΠΊΠΆΠ΅ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ, ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠΈΠΉ Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΈ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
ΠΠ°ΠΊΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Kotlin?
ΠΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΈ ΡΡΠ°Π½ΡΠ»ΠΈΡΠΎΠ²Π°ΡΡΡΡ Kotlin?
Π Java-Π±Π°ΠΉΡΠΊΠΎΠ΄ ΠΈ ES5.1, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠΉ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ AMD and CommonJS. Π‘ΠΊΠΎΡΠΎ ΠΏΠΎΡΠ²ΠΈΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π² ΠΊΠΎΠ΄ Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Ρ LLVM.
Kotlin ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π»ΠΈΡΡ Java 6?
ΠΠ΅ ΡΠΎΠ»ΡΠΊΠΎ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ±ΠΈΡΠ°ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π±Π°ΠΉΡΠΊΠΎΠ΄ΠΎΠΌ 6 ΠΈΠ»ΠΈ 8 Π²Π΅ΡΡΠΈΠΈ. Π§Π΅ΠΌ Π½ΠΎΠ²Π΅Π΅ Π²Π΅ΡΡΠΈΡ Java, ΡΠ΅ΠΌ Π»ΡΡΡΠ΅ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Π΅Π΅ Π±Π°ΠΉΡΠΊΠΎΠ΄.
Π‘Π»ΠΎΠΆΠ΅Π½ Π»ΠΈ Kotlin?
Kotlin ΠΏΠΎΡ ΠΎΠΆ Π½Π° Java, C#, JavaScript, Scala ΠΈ Groovy. ΠΡ ΠΏΡΡΠ°Π»ΠΈΡΡ ΡΠ΄Π΅Π»Π°ΡΡ Kotlin ΠΏΡΠΎΡΡΡΠΌ Π΄Π»Ρ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ, ΡΡΠΎΠ±Ρ Π½Π° Π½Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π²ΡΠ΅Π³ΠΎ Π·Π° Π½Π΅ΠΊΠΎΠ»ΡΠΊΠΎ Π΄Π½Π΅ΠΉ. ΠΠΎΠ»Π΅Π΅ Π΄Π΅ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΈΠ·ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ·ΡΠΊΠ° Π·Π°ΠΉΠΌΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π½ΠΎ Π² ΠΎΠ±ΡΠ΅ΠΌ ΡΡΠΎ Π½Π΅ΡΠ»ΠΎΠΆΠ½ΡΠΉ ΡΠ·ΡΠΊ.
ΠΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Kotlin?
Kotlin ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ. ΠΠ· ΡΠΈΡΠ»Π° ΡΠ΅Ρ , ΡΡΠΎ ΠΎΠ±ΡΡΠ²ΠΈΠ»ΠΈ ΠΎΠ± ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ·ΡΠΊΠ°: Square, Pinterest, Basecamp ΠΈ Corda.
ΠΡΠΎ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Kotlin?
ΠΠ΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ·Π½Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΡΠΎ ΡΠ·ΡΠΊ?
ΠΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π½Π°ΡΠ°ΡΡ ΠΏΡΡΠΌΠΎ Π½Π° ΡΡΠΎΠΌ ΡΠ°ΠΉΡΠ΅ ΠΈΠ»ΠΈ Π½Π° https://kotlinlang.org. ΠΠ° kotlinlang.org ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°ΡΠ°ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΈΠ»ΠΈ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ ΠΎΠ½Π»Π°ΠΉΠ½ ΠΠΎΡΡΡΠΏΠ½Ρ ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊ ΠΈ ΡΡΡΠΎΡΠΈΠ°Π»Ρ.
Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡ Π»ΠΈ ΠΊΠ½ΠΈΠ³ΠΈ ΠΏΡΠΎ Kotlin?
Π‘ΠΏΠΈΡΠΎΠΊ ΠΊΠ½ΠΈΠ³ Π΅ΡΡΡ Π·Π΄Π΅ΡΡ. ΠΠ· ΡΠ°ΠΌΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ : Kotlin Π² ΠΠ΅ΠΉΡΡΠ²ΠΈΠΈ, Π½Π°ΠΏΠΈΡΠ°Π½Π½Π°Ρ ΡΠ»Π΅Π½Π°ΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΠΌΠΈΡΡΠΈΠ΅ΠΌ ΠΠΆΠ΅ΠΌΠ΅ΡΠΎΠ²ΡΠΌ ΠΈ Π‘Π²Π΅ΡΠ»Π°Π½ΠΎΠΉ ΠΡΠ°ΠΊΠΎΠ²ΠΎΠΉ, Π° ΡΠ°ΠΊΠΆΠ΅ Kotlin for Android Developers.
ΠΡΡΡ Π»ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΊΡΡΡΡ Π΄Π»Ρ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ Kotlin?
Pluralsight Kotlin Course ΠΎΡ ΠΠ΅Π²ΠΈΠ½Π° ΠΠΆΠΎΠ½ΡΠ°, ΠΊΡΡΡ OβReilly ΠΎΡ Π₯Π°Π΄ΠΈ Π₯Π°ΡΠΈΡΠΈ ΠΈ ΠΊΡΡΡ Udemy ΠΎΡ ΠΠ΅ΡΡΠ° Π‘ΠΎΠΌΠΌΠ΅ΡΡ ΠΎΡΡΠ°.
Π’Π°ΠΊΠΆΠ΅ Π΅ΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Kotlin talks, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π½Π° YouTube ΠΈ Vimeo.
ΠΡΡΡ Π»ΠΈ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ Ρ Kotlin?
ΠΠ°. Π£ Kotlin ΠΎΡΠ΅Π½Ρ ΠΎΡΠ·ΡΠ²ΡΠΈΠ²ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ Π½Π° ΡΠΎΡΡΠΌΠ°Ρ Kotlin, StackOverflow ΠΈ, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π°ΠΊΡΠΈΠ²Π½ΠΎ, Kotlin Slack (ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ 7000 ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΎΠ² Π² ΠΌΠ°Π΅ 2017).
ΠΡΠΎΡ ΠΎΠ΄ΡΡ Π»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΠΌΠ΅ΡΠΎΠΏΡΠΈΡΡΠΈΡ ΠΏΠΎ Kotlin?
ΠΡΠΎΡ ΠΎΠ΄ΡΡ Π»ΠΈ ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ, ΠΏΠΎΡΠ²ΡΡΡΠ½Π½ΡΠ΅ Kotlin?
ΠΡΡΡ Π»ΠΈ Kotlin Π² ΡΠΎΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΠ΅ΡΡΡ ?
ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π°ΠΊΡΠΈΠ²Π½ΡΠΉ Π°ΠΊΠΊΠ°ΡΠ½Ρ Π½Π° Twitter. Π’Π°ΠΊΠΆΠ΅ Π΅ΡΡΡ Π³ΡΡΠΏΠΏΠ° Google+.
ΠΡΡΡ Π»ΠΈ Π΅ΡΡ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΠΎΠ½Π»Π°ΠΉΠ½-ΡΠ΅ΡΡΡΡΡ ΠΏΠΎ Kotlin?
Π ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π΅ Kotlin Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ΅ΡΡΡΡΠΎΠ², Π²ΠΊΠ»ΡΡΠ°Ρ ΠΠ°ΠΉΠ΄ΠΆΠ΅ΡΡΡ Kotlin, ΠΎΡΠ³Π°Π½ΠΈΠ·ΡΠ΅ΠΌΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎΠΌ, Π½ΠΎΠ²ΠΎΡΡΠ½ΡΡ ΡΠ°ΡΡΡΠ»ΠΊΡ, ΠΏΠΎΠ΄ΠΊΠ°ΡΡ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅.
ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎ Kotlin
ΠΠ° Π΄Π½ΡΡ JetBrains ΠΏΠΎΡΠ»Π΅ ΠΏΡΡΠΈΠ»Π΅ΡΠ½Π΅ΠΉ ΡΠ°Π±ΠΎΡΡ Π²ΡΠΏΡΡΡΠΈΠ»Π° ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ΅Π»ΠΈΠ· ΡΠ·ΡΠΊΠ° Kotlin. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΡΡΠΎ ΠΆΠ΅ ΡΡΠΎ Π·Π° ΡΠ·ΡΠΊ, ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Π·Π°ΡΠ΅ΠΌ ΠΈ Π΄Π»Ρ ΠΊΠΎΠ³ΠΎ ΠΎΠ½, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ. Π‘ΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ Π² ΡΡΠ°ΡΡΡ Π·Π°ΡΠ΅ΡΠ°Π»ΠΈΡΡ ΠΈ Π»ΠΈΡΠ½ΡΠ΅ Π²ΠΏΠ΅ΡΠ°ΡΠ»Π΅Π½ΠΈΡ ΠΎΡ ΡΠ·ΡΠΊΠ°, Π½ΠΎ Ρ ΡΡΠ°ΡΠ°Π»ΡΡ, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ Π½Π΅ Π²Π»ΠΈΡΠ»ΠΈ Π½Π° ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ. ΠΡΠ»ΠΈ Π²Ρ Π΅ΡΠ΅ Π½ΠΈΡΠ΅Π³ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΡΡΠΈ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π·Π½Π°Π΅ΡΠ΅ ΠΎ Kotlin, ΡΠΎ Ρ Π·Π°Π²ΠΈΠ΄ΡΡ Π²Π°ΠΌ, ΠΈΠ±ΠΎ ΠΏΠΎ ΠΌΠΎΠ΅ΠΌΡ ΠΎΡΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΠΈΡΠ°ΡΡ ΠΏΡΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡ Π΄ΠΎΠ»Π³ΠΎ ΠΆΠ΄Π°Π», ΡΡΠΎΠ΄Π½ΠΈ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎΠ΄Π½Π΅Π³ΠΎ ΠΏΠΎΠ΄Π°ΡΠΊΠ°. ΠΠΏΡΠΎΡΠ΅ΠΌ ΡΡΠ΄ΠΈΡΠ΅ ΡΠ°ΠΌΠΈ.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΠΎΡΠ»ΠΈΠ½
ΠΠΎΡΠ»ΠΈΠ½ β ΡΡΠΎ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΎΡΡΡΠΎΠ² Π² Π€ΠΈΠ½ΡΠΊΠΎΠΌ Π·Π°Π»ΠΈΠ²Π΅ Π½Π΅Π΄Π°Π»Π΅ΠΊΠΎ ΠΎΡ Π‘Π°Π½ΠΊΡ-ΠΠ΅ΡΠ΅ΡΠ±ΡΡΠ³Π°. ΠΠΈΠ΄ΠΈΠΌΠΎ, ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ ΡΠΎΠ·Π΄Π°ΡΠ΅Π»ΠΈ Π΄Π°ΡΡ ΠΎΡΡΡΠ»ΠΊΡ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ Π½ΠΎΠ²ΡΠΉ ΡΠ·ΡΠΊ, ΠΊΠ°ΠΊ ΠΎΡΡΡΠΎΠ² ΠΠΎΡΠ»ΠΈΠ½ β ΠΌΠ»Π°Π΄ΡΠΈΠΉ ΡΡΡΡΠΊΠΈΠΉ Π±ΡΠ°Ρ Π΄Π°Π»Π΅ΠΊΠΎΠ³ΠΎ ΠΎΡΡΡΠΎΠ²Π° Π―Π²Π°.
ΠΠ»Ρ ΠΊΠΎΠ³ΠΎ ΡΡΠΎΡ ΡΠ·ΡΠΊ
ΠΠ΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ, Π½ΠΎΠ²ΡΠΉ ΡΠ·ΡΠΊ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Π² JVM Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ (Π΅ΡΡΡ Π΅ΡΠ΅ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ Π² JavaScript, Π½ΠΎ ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠ΅Π»ΠΈΠ· ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΈΠΌΠ΅Π½Π½ΠΎ Π² JVM, ΡΡΡ ΡΠ΅ΠΌΡ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΎΠΏΡΡΡ ΠΎΡΠ»ΠΎΠΆΠΈΡΡ). Π ΡΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅Ρ , ΠΊΡΠΎ ΠΈΠΌΠ΅Π΅Ρ Π΄Π΅Π»ΠΎ Ρ Java-ΠΌΠ°ΡΠΈΠ½ΠΎΠΉ ΠΈ Π² ΡΠ΅Π»ΠΎΠΌ Ρ ΡΠ·ΡΠΊΠ°ΠΌΠΈ ΡΠΎ ΡΠ±ΠΎΡΡΠΈΠΊΠΎΠΌ ΠΌΡΡΠΎΡΠ° (Π° Ρ Π²ΡΡ ΠΎΠ΄ΠΎΠΌ ΡΠ΅Π»ΠΈΠ·Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π² JavaScript ΠΏΠΎΠΊΡΡΡΠΈΠ΅ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π±ΡΠ΄ΡΡ Π΅ΡΠ΅ ΡΠΈΡΠ΅).
ΠΡΠΎΡΡΠΎΠΉ ΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠΉ
ΠΠ²Π΅ Π³Π»Π°Π²Π½ΡΡ
ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΊΠΎΡΠ»ΠΈΠ½Π°, Π½Π° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄, ΡΡΠΎ Π΅Π³ΠΎ ΠΏΡΠΎΡΡΠΎΡΠ° ΠΈ ΠΏΠΎΠ»Π½Π°Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ Ρ Java. ΠΠΎΡΠ»ΠΈΠ½ ΡΠΎΠ·Π΄Π°Π²Π°Π»ΡΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄Π΅Π»Π°Π΅Ρ ΠΎΡΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ² Π½Π° Java ΠΈ ΠΊΠΎΡΠΎΡΠ°Ρ Ρ
ΠΎΡΠΎΡΠΎ ΡΠ°Π·Π±ΠΈΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°Ρ
ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. ΠΠ°ΠΏΡΠΎΡ Π½Π° Π½ΠΎΠ²ΡΠΉ ΡΠ·ΡΠΊ Π²ΠΈΡΠ°Π΅Ρ Π² Π²ΠΎΠ·Π΄ΡΡ
Π΅ Π΄Π°Π²Π½ΠΎ, Π½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΠΊΠΎΠΉ ΡΠ·ΡΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ Π±Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» Π²Π·ΡΡΡ (ΠΎΠ³ΡΠΎΠΌΠ½ΡΡ) Π³ΠΎΡΠΎΠ²ΡΡ ΠΊΠΎΠ΄ΠΎΠ²ΡΡ Π±Π°Π·Ρ Java, ΠΎΠ±ΡΡΠ½ΡΡ
Java-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², Π΄Π°ΡΡ ΠΈΠΌ Π½ΠΎΠ²ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΈ Π±Π΅ΡΡΠΎΠ²Π½ΠΎ (Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ) ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ β ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° Π΄ΠΎ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΠΊΠΎΡΠ»ΠΈΠ½Π° Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π»ΠΎ. Π‘ΠΎΠ·Π΄Π°ΡΠ΅Π»ΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ°, Π½Π° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄, ΠΎΡΠ΅Π½Ρ Ρ
ΠΎΡΠΎΡΠΎ ΠΏΠΎΡΡΠ²ΡΡΠ²ΠΎΠ²Π°Π»ΠΈ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΠΈ Π±ΠΈΠ·Π½Π΅ΡΠ° ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ²: Π±ΠΈΠ·Π½Π΅ΡΡ Π΄Π°Π»ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ Π΄Π°ΡΡ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. Π ΠΊΠΎΠ³Π΄Π° Ρ Π³ΠΎΠ²ΠΎΡΡ ΠΎ Β«ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ΅Β», Ρ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΈΠΌΠ΅Ρ Π²Π²ΠΈΠ΄Ρ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ, Π½ΠΎ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ Π² IDE, Π±Π΅Π· ΠΊΠΎΡΠΎΡΠΎΠΉ Π»ΠΈΡΠ½ΠΎ ΠΌΠΎΡ Π΄Π΅ΡΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΌΠ½Π΅ Π²ΠΈΠ΄ΠΈΡΡΡ ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅ΠΌΡΡΠ»ΠΈΠΌΠΎΠΉ.
Π ΠΈΡΠΎΠ³Π΅: ΠΏΡΠΎΡΡΠΎΡΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ·ΡΠΊ ΠΏΠΎΡΡΠΈ Π»ΡΠ±ΠΎΠΌΡ Java-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π³ΠΎΡΠΎΠ² ΠΏΠΎΡΡΠ°ΡΠΈΡΡ ΠΏΠΎΠ»ΡΠ°ΡΠ° Π½Π° ΡΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΡΡΠΎΡΠΈΠ°Π» ΠΈΠ»ΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΠ·ΡΠΊΠ°, ΠΎΠ±ΡΠ°ΡΠ½Π°Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ ΠΆΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ·ΡΠΊ Π² ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅.
Production-ready
ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, Π·Π°ΠΏΡΠΎΡ Π½Π° ΡΡΠΎΡ ΡΠ·ΡΠΊ Π±ΡΠ» Ρ ΡΠ°ΠΌΠΎΠΉ JetBrains, ΠΎΡΡΡΠ΄Π° ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, JetBrains ΠΆΠ΅ Π²Π½ΡΡΡΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Π΅Π³ΠΎ ΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π»Π°: ΠΊ ΠΌΠΎΠΌΠ΅Π½ΡΡ Π²ΡΡ ΠΎΠ΄Π° ΡΡΠΎΠ³ΠΎ ΡΠ΅Π»ΠΈΠ·Π° Ρ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΡΠΆΠ΅ Π΅ΡΡΡ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΠΎΠ΄ΠΈΠ½ ΠΊΡΡΠΏΠ½ΡΠΉ ΠΏΡΠΎΠ΄ΡΠΊΡ ΡΠ΄Π΅Π»Π°Π½Π½ΡΠΉ ΡΠΈΡΡΠΎ Π½Π° ΠΊΠΎΡΠ»ΠΈΠ½Π΅ (Π΄Π°, Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, ΡΡΠΎ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° ΠΏΠΎ ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π½Π°ΠΏΠΈΡΠ°Π½Π° Π½Π° Java). ΠΡΡΡΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ, ΡΡΠΎ Π·Π°ΡΠ²Π»Π΅Π½ΠΈΡ ΠΎ Π³ΠΎΡΠΎΠ²Π½ΠΎΡΡΠΈ ΡΠ·ΡΠΊΠ° ΠΊ ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½Ρ Π½Π΅ Π³ΠΎΠ»ΠΎΡΠ»ΠΎΠ²Π½Ρ. Π ΠΈΠ· ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΆΠ΅ ΠΎΠΏΡΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΡΠ»ΠΈΠ½Π° Ρ 2012 Π³ΠΎΠ΄Π° ΠΌΠΎΠ³Ρ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΠΈΠ· ΡΠ΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ Ρ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π»ΡΡ Π² Π΄ΠΎΡΠ΅Π»ΠΈΠ·Π½ΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π°, Π΄ΠΎ ΡΠ΅Π»ΠΈΠ·Π° Π½ΠΈ ΠΎΠ΄Π½Π° Π½Π΅ Π΄ΠΎΠΆΠΈΠ»Π°. ΠΡΡΡ Π΅ΡΠ΅ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠΌ Π΄Π»Ρ IDEA, Π½ΠΎ ΡΠ°ΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΊΠ°ΠΊ ΡΠ°ΡΡ.
Π‘ΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌ Ρ Java 1.6
ΠΡΠΎ ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ, Π²Π΅Π΄Ρ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠ° Π²Π΅ΡΡΠΈΡ Java ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π²ΠΎ Π²ΡΠ΅Ρ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π²Π΅ΡΡΠΈΡΡ Android, ΠΈ, Π½Π΅ ΡΠΌΠΎΡΡΡ Π½Π° Π·Π°ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ Π½Π° OpenJDK, Π²ΠΎΡΡΠΌΠ°Ρ Π²Π΅ΡΡΠΈΡ ΠΏΠΎΠΏΠ°Π΄Π΅Ρ Π² ΡΡΠΊΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΏΠΎΠ΄ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Π½Π΅ ΡΠ°ΠΊ ΡΠΊΠΎΡΠΎ ΠΊΠ°ΠΊ Ρ ΠΎΡΠ΅Π»ΠΎΡΡ Π±Ρ. ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π΅ΡΡΡ Π²ΡΡΠΊΠΈΠ΅ ΡΠ΅ΡΡΠΎΠ»ΡΠΌΠ±Π΄Ρ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΡ ΠΈΡΡΠ΅Π½ΠΈΡ, Π½ΠΎ ΠΊΠΎΡΠ»ΠΈΠ½ β ΡΡΠΎ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π»ΡΠΌΠ±Π΄Ρ Π΄Π»Ρ Π°Π½Π΄ΡΠΎΠΈΠ΄, Π½ΠΎ ΠΈ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΡΠ·ΡΠΊ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΠΏΠΎΠ΄ Π°Π½Π΄ΡΠΎΠΈΠ΄ ΠΏΡΠΎΡΠ΅ ΠΈ ΠΏΡΠΈΡΡΠ½Π΅ΠΉ Π±Π΅Π· ΠΎΡΠΎΠ±ΡΡ Π·Π°ΡΡΠ°Ρ. Π ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° apk ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎ Π½ΡΠ½Π΅ΡΠ½ΠΈΠΌ Π²ΡΠ΅ΠΌΠ΅Π½Π°ΠΌ: 823KB (Π΄Π»Ρ Π²Π΅ΡΡΠΈΠΈ 1.0.0)
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ
ΠΠΎΠ»Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π»ΡΡΡΠ΅ ΠΈΡΠΊΠ°ΡΡ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, Ρ ΠΆΠ΅ ΠΏΠΎΡΡΠ°ΡΠ°ΡΡΡ ΠΎΡΡΠ°Π·ΠΈΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΡΠ΅ Π½Π° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄ ΠΌΠΎΠΌΠ΅Π½ΡΡ Π² ΠΎΠ±ΡΠΈΡ ΡΠ»ΠΎΠ²Π°Ρ :
Null safety
ΠΠΎΡΠ΅ΠΌΡ-ΡΠΎ ΠΈΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ°ΠΊ ΡΠ»ΠΎΠΆΠΈΠ»ΠΎΡΡ, ΡΡΠΎ ΡΡΠ° ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ ΠΊΠΎΡΠ»ΠΈΠ½Π° Π²ΡΠΏΠΎΠΌΠΈΠ½Π°Π΅ΡΡΡ ΠΏΠ΅ΡΠ²ΠΎΠΉ. Π Ρ ΠΎΡΡ ΠΎΠ½Π° Π±Π΅Π·ΡΡΠ»ΠΎΠ²Π½ΠΎ Π²Π°ΠΆΠ½Π°, Π½Π° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²Π°ΠΆΠ½Π΅ΠΉΡΠ΅ΠΉ. ΠΠ΄Π΅ΡΡ ΡΠ·ΡΠΊ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, ΠΏΠΎΠ»Ρ, ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ ΠΈ ΡΠ΄, ΡΠΊΠ°Π·Π°ΡΡ, ΠΌΠΎΠΆΠ΅Ρ Π»ΠΈ Π² Π½ΠΈΡ Ρ ΡΠ°Π½ΠΈΡΡΡΡ ΡΡΡΠ»ΠΊΠ° Π½Π° null. ΠΠΎΠ΄Π½ΠΈΠΌΠ°Π΅Ρ Π½Π° Π½ΠΎΠ²ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ ΠΈΠ΄Π΅Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ Π²ΡΠΎΠ΄Π΅ @Nullable ΠΈ NotNull, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΌΠ½ΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΊ Π½Π΅-nullable ΡΠΈΠΏΡ ΠΏΠΎΡΠ»Π΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π΅Ρ Π½Π° null. ΠΠ°Π΄ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π±ΡΠ²Π°ΡΡ ΡΠ»ΡΡΠ°ΠΈ, ΠΊΠΎΠ³Π΄Π° ΡΡΠ° ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ ΡΠ°ΡΡ ΠΎΠ΄ΠΈΡΡΡ Ρ ΠΌΠΎΠΈΠΌ Π·Π°ΠΊΠΎΡΡΠ΅Π½Π΅Π»ΡΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ Π½Π° Java ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΎ ΡΠΎΠΌ ΠΊΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠ΄Π΅Π»Π°Π½Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π΅ΡΠΈ, Π½ΠΎ ΠΏΠΎΡΠ»Π΅ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ°Π·Π΄ΡΠΌΡΡ Ρ ΠΎΡΠΎΡΠ΅Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅Π³Π΄Π° Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ.
ΠΡΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ²
ΠΠ°, ΠΊΠΎΡΠ»ΠΈΠ½ ΠΏΠΎΡΡΠΈ Π²Π΅Π·Π΄Π΅ Π³Π΄Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΠΌΠ΅Π΅Ρ Π²ΡΠ²Π΅ΡΡΠΈ ΡΠΈΠΏ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΠΈΠΏ Π²ΡΡ ΠΆΠ΅ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π΄Π»Ρ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΈ ΡΠ²ΠΎΠΉΡΡΠ², ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΡΠ°Π·ΡΠΌΠ½ΠΎ (ΠΌΠ½Π΅ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ, ΡΡΠΎ ΡΡΠΎ Π½Π΅ΠΏΡΠ°Π²Π΄Π° β Ρ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ Π²Π΅ΡΡΠΈΠΈ ΡΡΠΎ ΡΠ±ΡΠ°Π»ΠΈ):
Extension methods
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ, ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΠ½Π΅ ΠΎΡΡΡΠΎ Π½Π΅ Ρ Π²Π°ΡΠ°Π΅Ρ Π² Java Π΄Π»Ρ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ Π³ΠΈΠ±ΠΊΠΎΡΡΠΈ ΡΠ·ΡΠΊΠ° ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ. ΠΠ°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄ Π΄Π»Ρ ΡΠΈΠΏΠ° ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ ΠΎΡ Π΅Π³ΠΎ (ΡΠΈΠΏΠ°) ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ. Π’Π°ΠΊΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π½Π΅ Π±ΡΠ΄Π΅Ρ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΈ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΠΌΠ΅Π½ΡΠ΅Ρ ΠΊΠ»Π°ΡΡΠ°, ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΌΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊΠ°ΠΊ ΡΡΠΈΠ»ΠΈΡΠ°ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ Π΄Π»Ρ ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°, ΡΠ°ΠΊ ΠΈ ΡΠ°Π·Π³ΡΡΠ·ΠΈΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΎΡ ΡΡΠΈΡ ΠΆΠ΅ ΡΡΠΈΠ»ΠΈΡΠ°ΡΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ².
ΠΡΠΌΠ±Π΄Ρ
ΠΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΊΠ°ΠΊ Π»ΡΠ±ΠΎΠΉ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΡΠ·ΡΠΊ Ρ ΠΏΡΠ΅ΡΠ΅Π½Π·ΠΈΠ΅ΠΉ Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Ρ ΠΊΠΎΡΠ»ΠΈΠ½Π° ΡΡΠ½ΠΊΡΠΈΡ β ΡΡΠΎ ΡΡΡΠ½ΠΎΡΡΡ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°, Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡΡ Π΄ΠΎΡΠ»ΠΎΠ²Π½ΠΎ. Π’.Π΅. ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ±ΡΡΠ²Π»ΡΡΡ ΠΏΡΡΠΌΠΎ Π² ΠΏΠ°ΠΊΠ΅ΡΠ΅ (ΠΈΠ· Π΄ΠΆΠ°Π²Ρ ΠΎΠ½ΠΈ Π²ΠΈΠ΄Π½Ρ Π²ΡΡ ΡΠ°Π²Π½ΠΎ Π² ΠΊΠ»Π°ΡΡΠ°Ρ β ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΡΠ°ΠΉΠ»Π°), Π½ΠΎ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΈΠ· Π΄ΡΡΠ³ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΡΠ΄. Π ΡΠ΅ΠΉΡΠ°Ρ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π½ΠΈΠΊΠΎΠ³ΠΎ ΡΡΠΈΠΌ Π½Π΅ ΡΠ΄ΠΈΠ²ΠΈΡΡ, Π½ΠΎ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΈ Ρ Java, Π³Π΄Π΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΊΠ°ΠΊ ΡΠ°ΠΊΠΎΠ²ΡΡ Π½Π΅Ρ (Π° ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ), Π² ΠΊΠΎΡΠ»ΠΈΠ½Π΅ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π΄Π»Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ:
Extension-Π»ΡΠΌΠ±Π΄Ρ
ΠΠ°ΡΡΠ΄Ρ Ρ extension-ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ, ΡΡΠΎ Π΅ΡΠ΅ ΠΎΠ΄Π½Π° ΠΌΠΎΡ Π»ΡΠ±ΠΈΠΌΠ°Ρ ΡΠΈΡΠ°. ΠΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π»ΡΠΌΠ±Π΄Ρ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ Π΅ΡΠ΅ ΠΈ extension-ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ. ΠΠ²ΡΡΠΈΡ Π½Π΅ ΠΎΡΠ΅Π½Ρ, Π΄Π°. ΠΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅:
ΠΡΠ° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ ΡΠΌΠΎΡΡΠΈΡΡΡ Π² Π±ΠΈΠ»Π΄Π΅ΡΠ°Ρ , ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ Π²Π°ΠΌ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ β Π½Π° ΡΠ»ΡΡΠ°ΠΉ, Π΅ΡΠ»ΠΈ Π²Π°ΠΌ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡΡΠ°ΡΡΡΡ Π²ΠΎΡ ΡΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ:
Inline-ΡΡΠΊΠ½ΡΠΈΠΈ
ΠΠΎΠΌΠ΅ΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΊΠ°ΠΊ inline ΠΌΡ ΠΏΡΠΎΡΠΈΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ Π΅Ρ ΠΏΠΎ ΠΌΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ. Π§Π°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΡΠ°ΠΊΠΈΠΌΠΈ Π²Π΅ΡΠ°ΠΌΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΡΡ ΡΠ°Π½ΡΠ°ΠΉΠΌ, Π½ΠΎ Π΅ΡΡΡ ΠΊΠ΅ΠΉΠ·Ρ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΡΠΎΡΠ½ΠΎ Π·Π½Π°Π΅ΠΌ, ΡΡΠΎ ΡΡΠΊΠ½ΡΠΈΡ ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠΎΡΡΠΊΠ°Ρ Π΄Π»Ρ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-ΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ β ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΠΌΠΈ Π»ΡΠΌΠ±Π΄Π°ΠΌΠΈ:
ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π½Π° ΡΠ°ΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΡΡΡ ΡΠ΅ΡΠΈΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ, ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΡΠΌ. Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ.
ΠΠ΅Π»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
Π ΠΊΠΎΡΠ»ΠΈΠ½Π΅ Π΅ΡΡΡ Π΄Π²Π° ΡΠΈΠΏΠ° Π΄Π΅Π»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ΅ΡΠ²ΡΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄Π΅Π»Π΅Π³ΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡ-ΡΠΎ ΠΈΠ½ΡΡΠ°Π½ΡΡ ΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ°:
Π£ ΡΡΠΎΠ³ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° Π΅ΡΡΡ ΡΡΠ΄ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ½ΡΡΠ°Π½Ρ Π΄Π»Ρ Π΄Π΅Π»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ Π΄ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°.
ΠΡΠΎΡΠΎΠΉ ΡΠΈΠΏ Π΄Π΅Π»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ β ΡΡΠΎ delegated properties. ΠΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Ρ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ get (ΠΈ set Π΄Π»Ρ var), ΠΊ ΠΊΠΎΡΠΎΡΡΠΌ Π±ΡΠ΄Π΅Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡΡΡ Π΄Π΅Π»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΠΎΡΡΡΠΏΠ° ΠΏΡΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ ΠΊ ΡΠ²ΠΎΠΉΡΡΠ²Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
Generics
Π‘ΠΎΠ·Π΄Π°ΡΠ΅Π»ΠΈ ΠΊΠΎΡΠ»ΠΈΠ½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ»ΡΡΡΠΈΠ»ΠΈ Java-Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΈ. ΠΠ·-Π·Π° ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ Ρ Π΄ΠΆΠ°Π²ΠΎΠΉ Π½Π΅ Π²ΡΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ ΠΊΠ°ΠΊ Ρ ΠΎΡΠ΅Π»ΠΎΡΡ Π±Ρ, Π½ΠΎ ΠΈΠΌ ΡΠ΄Π°Π»ΠΎΡΡ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ΠΏΡΠΈΡΡΠ½ΡΡ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΡΠ»ΠΈ ΠΈΡ ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΈΠΊΠΈ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Π½Π°Π΄ Java 5.
ΠΠ΅ΡΡΡΡΠΊΡΡΡΠΈΠ·Π°ΡΠΈΡ
Π§ΡΠΎΠ±Ρ ΡΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ Π·Π°ΡΠ°Π±ΠΎΡΠ°Π», Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· someFunc() Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠΈΠΏΠ°, Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π΅ΡΡΡ (ΠΌΠΎΠΆΠ½ΠΎ extension) ΠΌΠ΅ΡΠΎΠ΄Ρ component1(), component2():
Data-ΠΊΠ»Π°ΡΡΡ
Π‘Π°Ρ Π°Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π±ΠΈΠ½ΠΎΠ²:
Π‘ΠΎΠ·Π΄Π°Π΅Ρ Π±ΠΈΠ½ Ρ ΠΏΠΎΠ»ΡΠΌΠΈ + Π°Π²ΡΠΎΠ³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ equals+hashCode+toString()+componentN ΠΈΠ· ΡΠ°Π·Π΄Π΅Π»Π° Π²ΡΡΠ΅, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄:
ΠΠΎΠ»Π΅Π·Π½Π°Ρ Π²Π΅ΡΡ, Π½ΠΎ ΠΎ Π½ΡΠ°Π½ΡΠ°Ρ ΡΠΌ. ΠΏΡΠ½ΠΊΡ Β«Π Π³ΡΡΡΡΠ½ΠΎΠΌΒ».
Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°
ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π½Π΅Π»ΡΠ·Ρ Π½Π΅ ΡΠΏΠΎΠΌΡΠ½ΡΡΡ ΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠΎΡΠ»ΠΈΠ½ Π½Π°ΡΠ΅Π»Π΅Π½ Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π½Π° ΡΠ°Π±ΠΎΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Java, ΡΠΎ ΠΈ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ ΡΠ²ΠΎΠ΅ΠΉ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Ρ Π½Π΅Π³ΠΎ Π½Π΅Ρ. ΠΠΎΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Kotlin Π½Π°ΡΠ΅Π»Π΅Π½Π° Π½Π° ΡΠ»ΡΡΡΠ΅Π½ΠΈΠ΅ ΠΈ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΡΠ°ΡΡΠ΅Π³ΠΎ Π±ΡΠ°ΡΠ° β Java. ΠΠ΄Π½Π°ΠΊΠΎ, ΡΡΠΎ ΡΠ΅ΠΌΠ° Π΄Π»Ρ Π΄ΡΡΠ³ΠΎΠΉ Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈ.
Π Π³ΡΡΡΡΠ½ΠΎΠΌ
ΠΡ ΠΌΠΎΠ³Π»ΠΈ ΠΏΠΎΠ΄ΡΠΌΠ°ΡΡ, ΡΡΠΎ ΡΡΠΎ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΡΠΉ ΠΏΡΠΎΠ΄ΡΠΊΡ, Π½ΠΎ Π½Π΅Ρ, Π΅ΡΡΡ ΠΈ Π½Π΅ΠΏΡΠΈΡΡΠ½ΡΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΡ:
ΠΠ°Π΄ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠΌ Π΅ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ, ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ΄Π°Π΅Ρ ΡΠΊΡΠ΅ΠΏΡΠ΅Π½Ρ, ΠΏΠ»ΠΎΡ ΠΎ ΡΠΌΠ΅Π΅Ρ Π² toString() Π² Π΄Π΅Π±Π°Π³Π΅, Π° ΡΠ°ΠΊ ΠΆΠ΅ Π»ΡΠ±ΠΈΡ ΠΏΡΠΎΠΌΠ°Ρ ΠΈΠ²Π°ΡΡΡΡ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅ Π½Π° ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊ, ΠΈΠ½ΠΎΠ³Π΄Π° (Π²ΠΈΠ΄ΠΈΠΌΠΎ ΠΈΠ· Π·Π° ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ ΠΈΠ½Π»Π°ΠΉΠ½Π°) ΠΏΡΡΠ°Π΅Ρ Π³Π΄Π΅ ΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ Π±ΡΡΠΊΠΏΠΎΠΈΠ½Ρ ΠΈ ΡΠΎΠΌΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΡΠΎ Π²ΡΡ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ Π½Π°Π²Π΅ΡΠ½ΡΠΊΠ° ΠΏΠΎΠΏΡΠ°Π²ΡΡ, Π½ΠΎ ΡΠ΅ΠΉΡΠ°Ρ ΠΌΡ ΠΈΠΌΠ΅Π΅ΠΌ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎ.
Data-ΠΊΠ»Π°ΡΡΡ
ΠΠ΅ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π΅ΡΡΡΠ»ΠΈΠ²ΠΎΡΡΡ
ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π½Π΅ΡΡΡΠ»ΠΈΠ²ΠΎΡΡΡ Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π² Π³ΠΎΠ»ΠΎΠ²Π°Ρ , Π½ΠΎ ΠΊΡΠ°ΡΠΊΠΎΡΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈΠ³ΡΠ°Π΅Ρ Π·Π»ΡΡ ΡΡΡΠΊΡ, ΠΈ ΠΌΠ΅ΡΡΠ°ΠΌΠΈ ΠΊΠΎΠ΄ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π½Π΅Π²Π°ΠΆΠ½ΠΎ. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΡΠ°ΠΉΠ»-Π³Π°ΠΉΠ΄Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΈΡΠΏΡΠ°Π²ΠΈΠ»ΠΎ Π±Ρ, Π½ΠΎ ΠΏΠΎΠΊΠ° ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΎΡΡΠ°ΡΠ°ΡΡΡΡ, ΡΡΠΎΠ±Ρ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΎΡΠΎΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ, Π½ΠΎ ΠΈ ΠΊΡΠ°ΡΠΈΠ²ΠΎ Π²ΡΠ³Π»ΡΠ΄Π΅Π»ΠΎ. ΠΡΠΎΠ±Π΅Π½Π½ΠΎ Π½Π° ΠΌΠΎΠΉ ΡΡΠ±ΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ Π²Π·Π³Π»ΡΠ΄ ΡΡΡΠ°ΡΠ½ΠΎ Π²ΡΠ³Π»ΡΠ΄ΡΡ get, set Π΄Π»Ρ ΡΠ²ΠΎΠΉΡΡΠ².
1) Π£ΡΠ΅Π±Π½ΠΈΠΊ ΠΏΠΎ ΠΠΎΡΠ»ΠΈΠ½Ρ
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΠΎΡΠ»ΠΈΠ½?
Kotlin β ΡΡΠΎ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π° Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅ Java (JVM). ΠΡΠΎ ΡΠ·ΡΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΡΠ΅ΡΠ°Π΅Ρ Π² ΡΠ΅Π±Π΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ (ΠΠΠ) ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Π½Π΅ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠΉ, ΡΠ°ΠΌΠΎΠ΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎΠΉ ΠΈ ΡΠ°ΠΌΠΎΠ±ΡΡΠ½ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅.
Kotlin β ΡΡΠΎ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ JetBrains. ΠΠ½ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°Ρ . ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΠΎ ΠΌΠΈΠ½ΠΈΠ°ΡΡΡΠ½ΡΠΌ ΠΊΠΎΠ΄Π°ΠΌ Π² Kotlin.
ΠΠ· ΡΡΠΎΠ³ΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π° Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ Kotlin Π²Ρ ΡΠ·Π½Π°Π΅ΡΠ΅:
ΠΡΡΠΎΡΠΈΡ ΠΠΎΡΠ»ΠΈΠ½Π°
ΠΠ΄Π΅ΡΡ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π²Π°ΠΆΠ½ΡΠ΅ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΡ ΠΈΠ· ΠΈΡΡΠΎΡΠΈΠΈ ΠΠΎΡΠ»ΠΈΠ½Π°:
ΠΠΎΠ΄ | Π‘ΠΎΠ±ΡΡΠΈΠ΅ |
2016 | Kotlin v1.0 Π±ΡΠ» Π·Π°ΠΏΡΡΠ΅Π½ |
2017 | ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Google ΠΎ ΠΏΠ΅ΡΠ²ΠΎΠΊΠ»Π°ΡΡΠ½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ΅ kotlin Π² android |
2018 | Kotlin v1.2 ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Ρ Π½Π°Π΄ΡΡΡΠΎΠΉΠΊΠΎΠΉ ΠΏΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ΄ΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρ JVM ΠΈ JavaScript |
2019 | Google ΠΎΠ±ΡΡΠ²ΠΈΠ» Kotlin ΡΠ²ΠΎΠΈΠΌ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π΄Π»Ρ Android |
ΠΡΠΈΡΠΈΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Kotlin
ΠΠΎΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π°ΠΆΠ½ΡΡ ΠΏΡΠΈΡΠΈΠ½, ΠΏΠΎ ΠΊΠΎΡΠΎΡΡΠΌ ΠΠΎΡΠ»ΠΈΠ½ ΡΠΈΡΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ:
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΠΎΡΠ»ΠΈΠ½Π°
ΠΠΎΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ Kotlin, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ Π²Π°ΠΌ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ Π² ΠΏΡΠΎΠ³ΡΠ΅ΡΡΠ΅ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
Π£ΡΠ΅Π·Π°Π½Π½Π°Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ°:
Kotlin β ΡΡΠΎ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΠΠ, Π³Π΄Π΅ ΡΡΡΠΎΠΊΠ° ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΠ΅Π·Π°Π½Π° Π΄ΠΎ 40%, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Kotlin ΠΈΠ΄Π΅Π°Π»ΡΠ½ΡΠΌ Π²ΡΠ±ΠΎΡΠΎΠΌ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π²Π΅Π±-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ.
ΠΡΠΊΡΡΡΡΠΉ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄:
Kotlin ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ JVM ΠΈ ΡΠΎΡΠ΅ΡΠ°Π΅Ρ Π² ΡΠ΅Π±Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΠΠ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΡΡΡΡΠ°Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ:
ΠΊΠΎΠ΄ Π»Π΅Π³ΠΊΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Kotlin, ΡΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠΎΠ΄ Android, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±ΡΡΡΠ½ΡΠ΅Ρ, ΠΊΠ°ΠΊΠΎΠΉ ΡΠΈΠΏ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π°Π½Π½ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅.
Π€ΡΠ½ΠΊΡΠΈΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ:
Kotlin ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ, Π½Π΅ Π²Π½ΠΎΡΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΊΠΎΠ΄. ΡΡΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΈΠ²Π»Π΅ΠΊΠ°ΡΠ΅Π»ΡΠ½ΡΠΌ ΠΈ Π²Π΅Π»ΠΈΠΊΠΎΠ»Π΅ΠΏΠ½ΡΠΌ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ².
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΡΠΎΡ ΠΊΠΎΠ΄ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±ΡΠ΅Π·Π°ΡΡ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠΈΠΌΠ²ΠΎΠ» ΡΡΡΠΎΠΊΠΈ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ Π΅Π³ΠΎ ΠΊΠ°ΠΊ:
ΠΡΠ»Π΅Π²Π°Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ:
Π Kotlin ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠ°Π·Π»ΠΈΡΠ°Π΅Ρ ΠΏΡΡΡΡΠ΅ ΡΡΡΠ»ΠΊΠΈ ΠΈ Π½Π΅Π½ΡΠ»Π΅Π²ΡΠ΅ ΡΡΡΠ»ΠΊΠΈ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ String Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π½ΠΎΠ»Ρ:
Interoperable:
ΠΠΎΠ΄ Kotlin ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Java, Π° ΠΊΠΎΠ΄Ρ Java ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Ρ Kotlin. ΠΡΠ°ΠΊ, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ Π·Π½Π°Π½ΠΈΡ ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ OOPS, Π»Π΅Π³ΠΊΠΎ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ Kotlin. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π΅ΡΠ»ΠΈ Π΅ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π½Π° Java, ΡΠΎ ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΡΡΠ΅Π΄Π΅ Kotlin.
ΠΠ°Π΄Π΅ΠΆΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ:
ΠΠ°ΠΊ ΠΈ Java, ΠΊΠΎΠ΄ Kotlin ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ IDE ΠΈΠ»ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ. Π‘ IDE Π»Π΅Π³ΠΊΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ, ΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΡΠ°ΠΊΠΆΠ΅ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΠΊΡΠ°ΡΠ°ΡΡΡΡ. Π ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, ΡΠ½Π°ΡΠ°Π»Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄.
Smart Cast:
ΠΠ½ΡΠ΅Π»Π»Π΅ΠΊΡΡΠ°Π»ΡΠ½ΠΎΠ΅ Π»ΠΈΡΡΠ΅ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΠΎΠΊΡΠ°ΡΠΈΡΡ ΡΠ°ΡΡ ΠΎΠ΄Ρ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΠ²ΡΡΠ°Π΅Ρ Π΅Π³ΠΎ ΡΠΊΠΎΡΠΎΡΡΡ ΠΈΠ»ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ. ΠΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π°Π΄ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡΡ ΠΊΠΎΠ΄Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ² ΠΈΠ»ΠΈ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΡΡΡΠΎΠΊΠ° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π°, ΡΠΎ Π΅Π΅ Π΄Π»ΠΈΠ½Π° ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π½Π°ΠΉΠ΄Π΅Π½Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Smart Cast:
ΠΠΈΠ·ΠΊΠ°Ρ ΡΡΠΎΠΈΠΌΠΎΡΡΡ ΡΡΡΠ½ΠΎΠ²Π»Π΅Π½ΠΈΡ:
ΠΡΠ΅Π΄ΠΏΡΠΈΡΡΠΈΡ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°ΡΡ Kotlin ΠΈΠ·-Π·Π° ΠΏΠΎΡΠ΅ΡΠΈ Π·Π°ΡΡΠ°Ρ Π½Π° ΡΡΡΠ½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅. Π‘Π°ΠΌΠΎΠ΅ Π³Π»Π°Π²Π½ΠΎΠ΅, ΡΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π»Π΅Π³ΠΊΠΎ ΡΡΠ°ΡΡΡ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΈΠΌΠ΅Ρ ΠΎΠΏΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
Kotlin Environment Setup
ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ ΡΠ°Π³ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΌΠΎΠ³ΡΡ Π²Π°ΠΌ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ ΡΠ°Π±ΠΎΡΠ΅ΠΉ ΡΡΠ΅Π΄Ρ ΠΏΡΡΠ΅ΠΌ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Kotlin.
Π¨Π°Π³ 1) Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Java
Π¨Π°Π³ 2) Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Java IDE
Π ΡΡΠ°ΡΡΡΡ, Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Java IDE Π½Π° Π²ΡΠ±ΠΎΡ. ΠΠ΄Π΅ΡΡ ΠΌΡ Π΄Π°Π»ΠΈ ΡΡΡΠ»ΠΊΠΈ Π΄Π»Ρ ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΡ, ΡΡΠΎΠ±Ρ Π²Π°ΠΌ Π±ΡΠ»ΠΎ Π»Π΅Π³ΡΠ΅.
Π ΡΡΠΎΠΌ ΡΡΠΎΠΊΠ΅ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Eclipse.
Π¨Π°Π³ 3) Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Kotlin
ΠΠ»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Kotlin Π² Eclipse ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π² ΡΠ°Π·Π΄Π΅Π» ΡΠΏΡΠ°Π²ΠΊΠΈ Π² Eclipse ΠΈ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ ΠΎΠΏΡΠΈΡ Eclipse Marketplace.
Π’Π΅ΠΏΠ΅ΡΡ Π²Π²Π΅Π΄ΠΈΡΠ΅ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ Kotlin Π² ΠΏΠΎΠ»Π΅ ΠΏΠΎΠΈΡΠΊΠ°. ΠΠ°ΠΆΠΌΠΈΡΠ΅ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ Go, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ². ΠΠ½ Π΄Π°ΡΡ Π²Π°ΠΌ ΡΡΡΠ»ΠΊΡ Π½Π° ΠΏΠ»Π°Π³ΠΈΠ½ Kotlin, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΠ»Π°Π³ΠΈΠ½ ΠΏΠΎ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΡΡΡΠ»ΠΊΠ΅.
ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΡΠ΅ Eclipse IDE ΠΏΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ ΡΡΠ»ΡΠΊ Π² ΠΏΡΠ°Π²ΠΎΠΌ Π²Π΅ΡΡ Π½Π΅ΠΌ ΡΠ³Π»Ρ Eclipse IDE. ΠΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ Π±ΡΡΡΡΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ°.
ΠΡΡΠ³ΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Kotlin Π² Eclipse IDE β ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π² Windows, Β«ΠΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²ΡΒ», Β«ΠΡΠΊΡΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΈΠΈΒ», Π° Π·Π°ΡΠ΅ΠΌ Π²ΡΠ±ΡΠ°ΡΡ Β«ΠΡΡΠ³ΠΈΠ΅Β». ΠΠ΄Π΅ΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ², ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΡ ΠΏΠΎΠ·ΠΆΠ΅, ΠΊΠ°ΠΊ ΡΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅.
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΠ»ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ Kotlin, Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΏΠ΅ΡΠ²ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Kotlin Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΠ°Π³Π΅.
Π¨Π°Π³ 4) ΠΠ΅ΡΠ²Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Kotlin
ΠΠ°ΡΠ½ΠΈΡΠ΅ Ρ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° Kotlin. Π ΠΌΠ΅Π½Ρ File Π²ΡΠ±Π΅ΡΠΈΡΠ΅ ΠΎΠΏΡΠΈΡ New, Π·Π°ΡΠ΅ΠΌ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΠΈ Π½Π°ΡΠ½ΠΈΡΠ΅ Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° Kotlin ΠΈΠ· ΡΠΏΠΈΡΠΊΠ°.
Π’Π΅ΠΏΠ΅ΡΡ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΈΠΌΡ Π΄Π»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΈ Π²Ρ Π³ΠΎΡΠΎΠ²Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Kotlin.
ΠΡΠΈΠΌΠΈ ΠΏΡΠΎΡΡΡΠΌΠΈ ΡΠ°Π³Π°ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ Π·Π°Π³ΡΡΠ·ΠΈΡΡ Eclipse ΠΈ Kotlin Π² ΡΠ²ΠΎΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ ΡΡΠ°Π·Ρ ΠΆΠ΅ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ²ΠΎΡ ΠΏΠ΅ΡΠ²ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Kotlin.
ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΠΎΡΠ»ΠΈΠ½Π°
Π₯ΠΎΡΠΎΡΠΎ ΠΏΡΠΎΠ΄ΡΠΌΠ°Π½Π½Π°Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Π²Π°ΠΆΠ½Π° Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΡΡΠΈΡΡΠ»ΠΎ ΡΠ²ΠΎΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°Π»ΠΎ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡΠΌ ΠΊΠΎΠ½Π΅ΡΠ½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ. Kotlin ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΡ ΠΎΡΠΎΠ±ΡΡ ΠΈ ΠΎΡΠ»ΠΈΡΠΈΡΠ΅Π»ΡΠ½ΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ Π΄Π»Ρ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΈ ΠΊΠΎΠ½Π΅ΡΠ½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ.
Π‘ΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ ΠΊΠ»Π°ΡΡΡ Kotlin ΡΡΡΠΎΡΡ ΡΠ΄ΡΠΎ ββΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ ΠΌΠ΅Π½ΡΡΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΏΠΎΠ²ΡΡΠ°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈ ΠΏΠΎΠ²ΡΡΠ°ΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π², Π² ΠΊΠΎΡΠΎΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ kotlin ΠΌΠΎΠΆΠ΅Ρ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ Π²ΡΠ΄Π΅Π»ΡΠ΅Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠ·ΡΠΊΠΈ.
ΠΠ° Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ΅ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΡΡΠ½ΠΎ, ΡΡΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π² ΡΡΠΈ ΠΏΡΠΎΡΡΡΡ ΡΠ°Π³Π°.
ΠΠΎΠ³Π΄Π° Π² JVM ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΎΠ½ΠΈ ΡΠ°Π·ΠΆΠΈΠ³Π°ΡΡ Π²Π·Π°ΠΈΠΌΠ½ΠΎΠ΅ ΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ Π² Kotlin, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠ°Ρ ΠΈΠ½ΡΠ΅ΡΠΎΠΏΠ΅ΡΠ°Π±Π΅Π»ΡΠ½ΠΎΡΡΡΡ Π΄Π»Ρ ΡΠΎΠΆΠ΄Π΅Π½ΠΈΡ java ook
Π’ΡΠ°Π½ΡΠΏΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° Kotlin Π² JavaScript ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, ΠΊΠΎΠ³Π΄Π° Kotlin Π½Π°ΡΠ΅Π»Π΅Π½ Π½Π° JavaScript.
ΠΠΎΠ³Π΄Π° ΡΠ΅Π»Ρ JavaScript Π²ΡΠ±ΡΠ°Π½Π°, Π»ΡΠ±ΠΎΠΉ ΠΊΠΎΠ΄ Kotlin, Π²Ρ ΠΎΠ΄ΡΡΠΈΠΉ Π² ΡΠΎΡΡΠ°Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Kotlin, Π·Π°ΡΠ΅ΠΌ Π·Π°Π»ΠΈΠ²Π°Π΅ΡΡΡ JavaScript. ΠΠ΄Π½Π°ΠΊΠΎ Java Development Kit (JDK) ΠΈΠ»ΠΈ Π»ΡΠ±Π°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠ°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Java ΠΈΡΠΊΠ»ΡΡΠ°ΡΡΡΡ.
ΠΠ· ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΡΠ½ΠΎ, ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ Kotlin ΠΌΠΎΠ³ΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ, ΠΊΠΎΠΌΠΏΠ΅ΡΠ΅Π½ΡΠ½ΡΠΉ ΠΈ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π²ΡΡΠΎΠΊΠΎΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°.
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΠΎΡΠ»ΠΈΠ½Π°
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ Π½ΠΈΠΌ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅. ΠΠΎ ΡΡΡΠΈ, ΡΡΠΎ Π΅Π΄ΠΈΠ½ΠΈΡΠ° Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΈΡ ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²ΠΊΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΆΠ΄Π΅Ρ ΠΎΠ±ΡΡΡΠ½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠ°, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠΎΡΡΠ° Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΠΈ ΠΏΠΎΠ½ΡΡΠ½Π°. ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠ²Π»ΡΡΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌΠΈ Π΄Π»Ρ ΡΠ±ΠΎΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ.
Π Kotlin Π²ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Ρ. ΠΠ΄Π½Π°ΠΊΠΎ, Π΅ΡΠ»ΠΈ ΠΊΠ°ΠΊΠ°Ρ-Π»ΠΈΠ±ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π½Π΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π°, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΎΡΠΈΠ±ΠΊΠ°. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΡΠ°Π·ΡΠ΅ΡΠ°Π΅ΠΌ Ρ ΡΠ°Π½ΠΈΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π Kotlin ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΡΠ»ΠΎΠ² val ΠΈ var. ΠΠΎΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π² Kotlin:
ΠΠ΄Π΅ΡΡ ΠΌΡ ΠΎΠ±ΡΡΠ²ΠΈΠ»ΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ day ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ Β«MondayΒ» ΠΈ ΡΠΈΠΏΠΎΠΌ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ String, Π° ΡΠ°ΠΊΠΆΠ΅ Π΄ΡΡΠ³ΠΎΠΉ Π½ΠΎΠΌΠ΅Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ 3 ΠΈ Ρ ΡΠΈΠΏΠΎΠΌ Int, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π·Π΄Π΅ΡΡ Π»ΠΈΡΠ΅ΡΠ°Π» ΠΈΠΌΠ΅Π΅Ρ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° 3.
ΠΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠ±ΡΡΠ½ΠΎ ΠΎΠ±ΡΡΠ²Π»ΡΡΡΡΡ ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ. ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Kotlin.
ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠΈΠΏΠ° Π΄Π°Π½Π½ΡΡ , ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π·Π΄Π΅ΡΡ num1 ΠΈ num2 ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΉ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ Int, Π° day β ΡΡΡΠΎΠΊΠΎΠ²ΡΠΉ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ . Ergo, ΠΎΠ½ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ ΠΎΡΠΈΠ±ΠΊΡ. ΠΠΎΡ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΌΠ΅ΡΠΎΠ΄, ΠΊΠ°ΠΊ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π² Kotlin.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΠ»ΠΎΠ²Π° var ΠΈ val ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ Π΄ΡΡΠ³ ΠΎΡ Π΄ΡΡΠ³Π°.
Var ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΉ Π² Π»ΡΠ±ΠΎΠΌ ΡΠ·ΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π· Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² Π»ΡΠ±ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅. ΠΠΎΡΡΠΎΠΌΡ ΠΎΠ½ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠ°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ.
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² Kotlin:
ΠΠ΄Π΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ num1, ΡΠ°Π²Π½ΠΎΠ΅ 20, ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ num1, ΡΠ°Π²Π½ΡΠΌ 10. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π²ΡΠ²ΠΎΠ΄ num1 + num2 ΡΠ°Π²Π΅Π½ 40 Π²ΠΌΠ΅ΡΡΠΎ 30.
Val ΠΏΠΎΡ ΠΎΠΆΠ° Π½Π° ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ, ΠΈ Π²Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ·ΠΆΠ΅ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅, ΠΊΠΎΡΠΎΡΡΡ Π½Π΅Π»ΡΠ·Ρ Π½Π°Π·Π½Π°ΡΠ°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π· Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· Π² ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅. Ergo, ΡΡΠΎ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ ΠΊΠ°ΠΊ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠ°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ.
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π² Kotlin:
Here, the value of num1 that is 10 cannot be overwritten by the new value of num1 that is 20, as it is of val type that is constant. Therefore, the output is 30 instead of 40.
Note: In Kotlin, immutable variables are preferred over mutable variables.
Data Types in Kotlin
Data types are set of relatable values and describe the operations that can be operated on them. Similar to other programming languages, Kotlin also has its predefined set of data types like Int, Boolean, Char, Double, etc.
In Kotlin, every data type is considered as an object.
Now, letβs dive deeper into the predefined data types used in Kotlin.
Numbers :
Kotlin serves a set of built-in data types known as numbers, which are sub-categorize as Integers and Floating-Point Numbers.
Integers :
Integers are the category of numbers that has four types:
Type | Size (bits) | Min value | Max value |
Byte | 8 | -128 | 127 |
Short | 16 | -32768 | 32767 |
Int | 32 | -2,147,483,648 (-231) | 2,147,483,647 (231 β 1) |
Long | 64 | -9,223,372,036,854,775,808 (-263) | 9,223,372,036,854,775,807 (263 β 1) |
Floating Point Numbers :
Floating Point Numbers are the non-Integer numbers that carry some decimal values.
Float: Float is a 32- bit single-precision floating-point value.
Example: var: Float x = 3.25600
Double: Double is a 64- bit double β precision floating point value.
Example: var: Double y = 2456.345587
Booleans :
Booleans data type in Kotlin is significant to represent the logical values. There are only two possible values in Boolean that is either true or false.
For Example : val day = true
Character :
Characters in Kotlin are represented with the help of the keyword called char. In Kotlin, single quotes represent the declaration of char. In java, char are sometimes used as numbers that is not possible in kotlin.
Kotlin Type Conversion or Kotlin Type Casting
Type Conversion is a procedure of converting one type of data variable into another data type variable. It is enormously, also known as Type Casting.