ΠšΠΎΡ‚Π»ΠΈΠ½ язык программирования для Ρ‡Π΅Π³ΠΎ

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ 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 для свойств.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *