ΠΠΎΡΠ»ΠΈΠ½ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΡΠ΅Π³ΠΎ
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ 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?
Π―Π·ΡΠΊ Π½Π°ΡΠ°Π» Π½Π°Π±ΠΈΡΠ°ΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ JavaOne 2015 Hans Dockter, CEO of Gradle, Π·Π°ΡΠ²ΠΈΠ», ΡΡΠΎ ΠΠΎΡΠ»ΠΈΠ½ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ Gradle Π±ΠΈΠ»Π΄-ΡΠΊΡΠΈΠΏΡΠΎΠ². Π’ΠΎΠ³Π΄Π° ΠΎΠ½ Π²ΡΠ΅ Π΅ΡΠ΅ Π±ΡΠ» Π² Π±Π΅ΡΠ΅, Π½ΠΎ Π½ΠΎΠ²ΠΎΡΡΡ Π²ΡΠΊΠΎΠ»ΡΡ Π½ΡΠ»Π° Π²ΡΠ΅Ρ Π½Π΅ΡΠ°Π²Π½ΠΎΠ΄ΡΡΠ½ΡΡ . ΠΠΎΠ»Π½Π° Ρ Π°ΠΉΠΏΠ° Π½Π°ΡΠ°Π»Π° ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°ΡΡΡΡ ΡΠΆΠ΅ Π² ΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ. ΠΠ° ΠΏΠΈΠΊΠ΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΠΈ ΡΠ·ΡΠΊ ΠΎΠΊΠ°Π·Π°Π»ΡΡ Π² ΠΌΠ°Π΅ ΡΡΠΎΠ³ΠΎ Π³ΠΎΠ΄Π° Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ Google I/O, Π³Π΄Π΅ Π±ΡΠ»ΠΎ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΎ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΠΎΡΠ»ΠΈΠ½ Π½Π°ΡΡΠ΄Ρ Ρ Java ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠΎΠ΄ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Android. Π‘ΡΠ°Π·Ρ ΠΆΠ΅ ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π²Π΅ΡΡ Twitter Π±ΡΠ» Π² ΠΏΠΎΡΡΠ°Ρ ΠΎ Π½ΠΎΠ²ΠΎΠΌ ΡΠ·ΡΠΊΠ΅, ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ ΠΊΡΡΠ° Π±Π»ΠΎΠ³-ΠΏΠΎΡΡΠΎΠ² Ρ ΠΏΡΠΈΠ·Π½Π°Π½ΠΈΡΠΌΠΈ Π² Π»ΡΠ±Π²ΠΈ Π΅ΠΌΡ. ΠΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΠ΅Π»ΠΈ JetBrains Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°Ρ ΡΡΠ°Π»ΠΈ Π·Π°ΡΠ²Π»ΡΡΡ, ΡΡΠΎ Kotlin β ΡΡΠΎ Π±ΡΠ΄ΡΡΠ΅Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π° JVM.
Π ΡΠ΅Π»ΠΎΠΌ Π΅ΡΠ»ΠΈ ΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π° ΡΠΈΡΡΠ°ΡΠΈΡ Π·Π΄ΡΠ°Π²ΠΎ, ΡΠΎ ΠΏΡΠΈΡΠΈΠ½Ρ Ρ Π°ΠΉΠΏΠ° Π²ΠΏΠΎΠ»Π½Π΅ ΠΏΠΎΠ½ΡΡΠ½Ρ. ΠΠΆΠ°Π²Π° ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΡΡΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ. Java 8 ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ Π°ΠΆ Π² 2014 Π³ΠΎΠ΄Ρ, Java 9 Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ ΡΠΆΠ΅ Π²ΡΡΠ»Π°, Π½ΠΎ Π² ΡΠ°ΠΌΠΎΠΌ ΡΠ·ΡΠΊΠ΅ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ°Π»ΠΎ Π½ΠΎΠ²ΡΡ ΡΠΈΡΠ΅ΠΊ. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, Ρ Java 9 Ρ ΠΌΠ½ΠΎΠ³ΠΈΡ Π²ΡΠ΅ Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π»ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ. Π ΡΡΡ Π»ΡΠ΄ΡΠΌ Π΄Π°ΡΡ ΡΠ·ΡΠΊ, Π½Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΡΠΉ ΡΠΈΡΠ°ΠΌΠΈ, ΡΠ°ΡΡΡ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΡΠ²ΠΈΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² 10-ΠΊΠ΅.
Π§Π΅ΠΌ ΡΡΠΎΡ Π²Π°Ρ Kotlin ΠΊΡΡΡΠ΅?
ΠΠ²ΡΠΎΡΡ ΡΠ·ΡΠΊΠ° ΠΏΡΠΈΠ·Π½Π°ΡΡΡΡ, ΡΡΠΎ Π½Π΅ ΠΏΡΡΠ°Π»ΠΈΡΡ ΠΏΡΠΈΠ΄ΡΠΌΠ°ΡΡ ΡΡΠΎ-ΡΠΎ ΠΊΠ°ΡΠ΄ΠΈΠ½Π°Π»ΡΠ½ΠΎ Π½ΠΎΠ²ΠΎΠ΅. Π―Π·ΡΠΊ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ Π·Π°Π΄ΡΠΌΡΠ²Π°Π»ΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΏΡΠ°Π³ΠΌΠ°ΡΠΈΡΠ½ΡΠΌ ΠΈ ΡΠ΄ΠΎΠ±Π½ΡΠΌ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ². ΠΠΎΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠΏΠΈΡΠΎΠΊ ΡΠΈΡΠ΅ΠΊ, ΠΊΠΎΡΠΎΡΡΠ΅ Π² Π½ΡΠΌ Π΅ΡΡΡ:
C Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π½ΡΠΌ ΡΠΏΠΈΡΠΊΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅.
ΠΠ°ΠΊ ΠΎΠ½ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΆΠΈΡΡ?
Null safety β ΡΡΠΎ selling point Kotlin. ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° nullable type ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π΅ΡΠ΅ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.
ΠΡΠΎ ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΌΠ½ΠΎΠ³ΠΈΡ Π±Π°Π³ΠΎΠ².
Extension functions β ΡΡΠΎ ΡΠΈΡΠ°, ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΡΠ°ΡΡΠΎ ΠΎΡΠ΅Π½Ρ Π½Π΅ Ρ Π²Π°ΡΠ°Π΅Ρ Π² Java. ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ°ΠΊ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²ΡΠ΅Π³ΠΎ ΠΏΠ°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ»ΡΡΡΠΈΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ Selenium API
ΠΠΎ ΠΈΡΠΎΠ³Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°ΡΡ ΡΠ΅ΡΡΡ Π² ΡΠ°ΠΊΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅:
String template β ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΠΎΠΊΠΈ, ΡΡΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΡΠ΅ΡΡΠ°Ρ .
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, SQL Π·Π°ΠΏΡΠΎΡ Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΠΎΠ΄Π»ΠΈΠ²ΡΡ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΎΠ² ΡΡΡΠΎΠΊ ΠΈ ΠΊΠΎΠ½ΠΊΠ°ΡΠ΅Π½Π°ΡΠΈΠΉ. ΠΠ³ΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠΈΡΠ°ΡΡ, ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ.
Reified type β ΡΠΈΡΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π²Π°Ρ ΠΊΠΎΠ΄ ΠΎΡΠ΅Π½Ρ ΠΊΡΠ°ΡΠΈΠ²ΡΠΌ ΠΈ Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½ΡΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Apache DBUtils ΠΊΠΎΠ΄ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΡΠ°ΠΊΠΈΠΌ:
ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄:
Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠΈΠΏ, Π² ΠΊΠΎΡΠΎΡΡΠΉ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΡΠ΅ΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π·Π°ΠΏΡΠΎΡΠ°, Π±ΡΠ΄Π΅Ρ Π±ΡΠ°ΡΡΡΡ ΠΈΠ· ΡΠΈΠΏΠ° ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ. ΠΡΠΎ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΡΠ΄ΠΎΠ±Π½Π΅Π΅, ΡΠ΅ΠΌ Java Generics.
Π‘ΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ Ρ Java
ΠΠ· ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ, ΡΡΠΎ Kotlin ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π»ΡΡ Ρ ΠΎΠ³Π»ΡΠ΄ΠΊΠΎΠΉ Π½Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ Ρ Java. Java Interop ΠΏΠΎΠ΄Π°Π΅ΡΡΡ ΠΏΠΎΠ΄ ΡΠΎΡΡΠΎΠΌ, ΡΡΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²Π·ΡΡΡ Π»ΡΠ±ΠΎΠΉ ΠΊΠΎΠ΄, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ ΡΠ°Π½ΡΡΠ΅, ΠΈ Π²ΡΠ·Π²Π°ΡΡ Π² Kotlin. ΠΠΈΠ±ΠΎ ΠΆΠ΅ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ β Π½ΡΡΠ½ΡΠΉ Kotlin-ΠΊΠΎΠ΄ Π²ΡΠ·Π²Π°ΡΡ Π² ΡΠ½ΡΠ»ΠΎΠΉ Π΄ΠΆΠ°Π²ΠΊΠ΅.
Π’Π°ΠΊ Π»ΠΈ ΡΡΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅? ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π±ΠΈΡΠ°ΡΡΡΡ.
Kotlin vs Rest Assured
ΠΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° β Rest Assured Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² Kotlin.
Π’Π°ΠΊ ΡΠ°ΠΊ, when Π·Π°ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ. ΠΠ±ΠΎΠΉΡΠΈ ΡΠ°ΠΊΠΎΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ, ΠΎΠ±Π΅ΡΠ½ΡΠ² Π΅Π³ΠΎ Π² ΡΠ°ΠΊΠΈΠ΅ Π²ΠΎΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ ΠΊΠ°Π²ΡΡΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ»ΠΎΠΆΠ½ΠΎ Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠ°Π·Π° Π½Π°ΠΉΡΠΈ Π½Π° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ΅.
Kotlin + Selenide
ΠΠ»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ UI ΡΠ΅ΡΡΠΎΠ² ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Selenide. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ.
Kotlin + Hamcrest (AssertJ)
ΠΡΠ΅ ΠΌΡ ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΡΠ΅ΡΡΠΎΠ² Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠ°ΠΊΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΊΠ°ΠΊ Hamcrest ΠΈ AssertJ. Π§ΡΠΎ Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡΡ?
ΠΠ΄Π΅ΡΡ Π½Π°Ρ ΡΠΎΠΆΠ΅ ΠΆΠ΄ΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ.
ΠΡΠ΅ ΡΠ΅ΡΠ΅Π· ΠΊΠΎΡΡΡΠ»ΠΈ
ΠΠΎΠ³Π΄Π° Π½Π°ΡΠΈΠ½Π°Π΅ΡΡ Π½Π°ΡΡΠΊΠ°ΡΡΡΡ Π½Π° ΡΠ°ΠΊΠΈΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ, ΡΠΎ Π½Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΡΡΡ Π²ΠΏΠΎΠ»Π½Π΅ Π»ΠΎΠ³ΠΈΡΠ½Π°Ρ ΠΌΡΡΠ»Ρ.
Π§ΠΈΠ½ΠΈΠΌ Kotlin ΠΈ Rest Assured
ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π²ΡΠ΅ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π² ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ ΠΏΠΎΡΠΈΠ½ΠΈΡΡ. Π‘ΠΌΠΎΡΡΠΈΠΌ Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ Ρ Rest Assured:
Π§ΠΈΠ½ΠΈΠΌ Kotlin vs Selenide
Π§ΠΈΠ½ΠΈΠΌ Kotlin + Hamcrest (AssertJ)
Π£Π²Ρ, ΠΏΠΎ ΡΡΠΎΠΌΡ ΠΏΡΠ½ΠΊΡΡ Π½Π°Ρ ΠΆΠ΄Π΅Ρ ΡΠ°Π·ΠΎΡΠ°ΡΠΎΠ²Π°Π½ΠΈΠ΅. ΠΡΠ»ΠΈ Hamcrest Π΅ΡΠ΅ ΠΊΠ°ΠΊ-ΡΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌ Ρ Kotlin, ΡΠΎ AssertJ ΠΏΠΎΡΠΈΠ½ΠΈΡΡ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ ΠΈΠ·-Π·Π° Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ Π² Generic types. ΠΠ΄Π΅ΡΡ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ Π²Π·ΡΡΡ ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ. ΠΠ»Π°Π³ΠΎ, Π½Π° GitHub ΡΠΆΠ΅ Π΅ΡΡΡ ΡΠ½ΡΡΠ·ΠΈΠ°ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ ΠΏΠΎΡΡ β assertk.
Π‘Π»Π΅Π΄ΡΠ΅Ρ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ assertk ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π½ΡΠΌ API ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠ° Ρ Kotlin.
ΠΡΠΎΠ΄Π΅ Π±Ρ Π²ΡΠ΅ Π½Π°ΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΌΡ Β«ΠΏΠΎΠ΄Π»Π΅ΡΠΈΠ»ΠΈΒ», Π½Ρ ΠΈΠ»ΠΈ Ρ ΠΎΡΡ Π±Ρ ΠΏΠΎΠ΄ΡΡΠ°Π²ΠΈΠ»ΠΈ ΠΊΠΎΡΡΡΠ»ΠΈ. ΠΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π΅ Π½Π°ΡΠΎΠ»ΠΊΠ½ΡΡΡΡΡ Π½Π° ΡΡΡΠ΄Π½ΠΎΡΡΠΈ, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠ΅ Π²ΡΡΠ΅, Π΅ΡΠ»ΠΈ Π½Π° ΡΡΠ°ΡΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π±ΡΠ΄Π΅ΡΠ΅ Π²ΡΠ±ΠΈΡΠ°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠ΅ Ρ Kotlin.
Π§Π΅ΠΌ ΠΆΠ΅ Π²ΡΠ΅-ΡΠ°ΠΊΠΈ Ρ ΠΎΡΠΎΡ Kotlin?
Π Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ ΡΠ·ΡΠΊΠΎΠ²ΡΠΌ ΡΠΈΡΠ°ΠΌ ΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡΠΌ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΡΠ·ΡΠΊ ΠΎΡΠ΅Π½Ρ Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½ΡΠΉ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΡΠΎΠΈΡΡ ΡΠ΄ΠΎΠ±Π½ΡΠ΅ DSL. Π ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½ΠΈΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅ΡΡΠ°, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Kirk, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ·Π²Π°Π½Π° Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Selenide Π΄Π»Ρ Kotlin.
ΠΡΠΈΠΌΠ΅Ρ ΡΠ΅ΡΠΊΠΎ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ, ΠΊΠ°ΠΊΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°ΡΠ° DSL ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°ΡΡ. ΠΠΎ ΡΡΡΠΈ β ΡΡΠΎ BDD, ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΊΠΎΠ΄Π΅, ΡΠΎ Π²ΡΠ΅ΠΌΠΈ ΠΏΠ»ΡΡΠΊΠ°ΠΌΠΈ Π² Π²ΠΈΠ΄Π΅ ΡΡΡΠΎΠ³ΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ, Π°Π²ΡΠΎΠ΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡΠΌΠΈ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³Π°.
Π§ΡΠΎ ΠΈΠΌΠ΅Π΅ΠΌ Π² ΠΈΡΠΎΠ³Π΅?
Kotlin β ΠΎΡΠ΅Π½Ρ ΠΏΡΠΈΡΡΠ½ΡΠΉ ΡΠ·ΡΠΊ. ΠΡΠ΅, ΡΡΠΎ ΡΠΆΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Ρ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠΎΠ² Java, Π² Π½Π΅ΠΌ Π΅ΡΡΡ. ΠΠΎΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ Π½Π° Java Π² Kotlin Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΡΠΈΡΠ½ΠΎ. ΠΠ΅Ρ Π΅ΡΠ΅ ΠΏΠΎΠΊΠ° ΠΏΠΎΠ»Π½ΠΎΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ ΡΠΎ Π²ΡΠ΅ΠΌΠΈ ΡΠ°ΠΌΡΠΌΠΈ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΌΠΈ Java-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°ΠΌΠΈ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ. ΠΡΠ±ΠΈΡΠ°ΡΡ Kotlin ΠΈΠ»ΠΈ Ρ Π΅ΠΉΡΠΈΡΡ Π΅Π³ΠΎ ΠΈ ΠΈΠ΄ΡΠΈ ΡΡΠΈΡΡ JS β ΡΡΠΎ ΠΠ°ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. ΠΠΎ Π²Ρ ΠΏΡΠΎΡΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΏΠΎ ΡΡΡΠ»ΠΎΡΠΊΠ΅ Π½Π° ΡΠ²Π΅ΠΆΠΈΠΉ ΡΠ΅ΠΏΠΎΡΡ ΠΎΡ Rebel Labs ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ Java-ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Kotlin Π½Π°Π·Π²Π°Π½ ΡΠ°ΠΌΡΠΌ Π»ΡΠ±ΠΈΠΌΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ c ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠΎΠΌ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΠ΅Π½Π½ΠΎΡΡΠΈ 9.1 ΠΈΠ· 10.
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
ΠΠ° Π΄Π½ΡΡ 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 Π΄Π»Ρ ΡΠ²ΠΎΠΉΡΡΠ².