ููุชุญุฏุซ ุงูููู
ุนู ุฃุฏุงุก Kotlin ุนูู Android ูู ุงูุฅูุชุงุฌ. ูููู ูุธุฑุฉ ุชุญุช ุบุทุงุก ุงูู
ุญุฑู ููููู
ุจุชุญุณููุงุช ุตุนุจุฉ ูููุงุฑู ููุฏ ุงูุจุงูุช. ุฃุฎูุฑูุง ุ ุณูุชูุงูู ุจุฌุฏูุฉ ุงูู
ูุงุฑูุฉ ููููุณ ุงูู
ุนุงููุฑ.
ุชุณุชูุฏ ูุฐู ุงูู
ูุงูุฉ ุฅูู ุชูุฑูุฑ
ุฃููุณูุฏุฑ ุณู
ูุฑููู ูู AppsConf 2017 ูุณูุณุงุนุฏ ุนูู ู
ุนุฑูุฉ ู
ุง ุฅุฐุง ูุงู ู
ู ุงูู
ู
ูู ูุชุงุจุฉ ุงูุชุนููู
ุงุช ุงูุจุฑู
ุฌูุฉ ูู Kotlin ุ ูุงูุชู ูู ุชููู ุฃูู ุดุฃูุงู ู
ู Java ูู ุงูุณุฑุนุฉ.
ุญูู ุงูู
ุชุญุฏุซ: ุฃููุณูุฏุฑ ุณู
ูุฑููู CTO ูู PapaJobs ุ ูุฏูุฑ ู
ุฏููุฉ ุงูููุฏูู
Android in Faces ุ ููู ุฃูุถูุง ุฃุญุฏ ู
ูุธู
ู ู
ุฌุชู
ุน Mosdroid.
ููุจุฏุฃ ุจุชููุนุงุชู.
ูู ุชุนุชูุฏ ุฃู Kotlin ูู ููุช ุงูุชุดุบูู ุฃุจุทุฃ ู
ู Javaุ ุฃู ุฃุณุฑุนุ ุฃู ุฑุจู
ุง ูุง ููุฌุฏ ูุฑู ูุจูุฑุ ุจุนุฏ ูู ุดูุก ุ ูุนู
ู ููุงูู
ุง ุนูู ุงูุฑู
ุฒ ุงูุซุงููู ุงูุฐู ุชููุฑู ููุง ุงูุขูุฉ ุงูุงูุชุฑุงุถูุฉ.
ุฏุนูุง ูุญุตู ุนูู ุญู. ุชูููุฏูุง ุ ุนูุฏู
ุง ูุทุฑุญ ุณุคุงู ู
ูุงุฑูุฉ ุงูุฃุฏุงุก ุ ูุฑูุฏ ุงูุฌู
ูุน ุฑุคูุฉ ู
ุนุงููุฑ ูุฃุฑูุงู
ู
ุญุฏุฏุฉ. ูุณูุก ุงูุญุธ ุ ุจุงููุณุจุฉ ุฅูู Android ุ ูุง ููุฌุฏ JMH (
Java Microbenchmark Harness ) ุ ูุฐูู ูุง ูู
ูููุง ููุท ููุงุณ ู
ุฏู
ุฑูุนุฉ ู
ุง ูู
ูู ุงูููุงู
ุจู ูู Java. ุฅุฐู ู
ุง ุงูุฐู ูู
ูููุง ูุนูู ูุฅุฌุฑุงุก ุงูููุงุณ ุ ูู
ุง ูู ู
ูุถุญ ุฃุฏูุงูุ
fun measure() : Long { val startTime = System.nanoTime() work() return System.nanoTime() - startTime } adb shell dumpsys gfxinfo %package_name%
ุฅุฐุง ุญุงููุช ููุงุณ ุงูููุฏ ุงูุฎุงุต ุจู ุจูุฐู ุงูุทุฑููุฉ ุ ูุณูููู ุญุฒููุง ู
ู ู
ุทูุฑู JMH ููุจูู ููุฃุชู ุฅููู ูู ุงูู
ูุงู
- ูุง ุชูุนู ุฐูู ุฃุจุฏูุง.
ุนูู Android ุ ูู
ููู ูุถุน ู
ุนุงููุฑ ุ ุนูู ูุฌู ุงูุฎุตูุต ุ ุนุฑุถุช Google ุฐูู ูู ู
ุคุชู
ุฑ I / O ุงูุนุงู
ุงูู
ุงุถู. ูุงููุง ุฅููู
ูุงู
ูุง ุจุชุญุณูู ุงูุฌูุงุฒ ุงูุธุงูุฑู ุจุดูู ูุจูุฑ ุ ูู ูุฐู ุงูุญุงูุฉ ART ุ ูุฅุฐุง ูุงู ุนูู Android 4.1 ุชุฎุตูุต ูุงุญุฏ ููุงุฆู ุงุณุชุบุฑู ุญูุงูู 600-700 ูุงูู ุซุงููุฉ ุ ุซู
ูู ุงูุฅุตุฏุงุฑ ุงูุซุงู
ู ุณูุณุชุบุฑู ุญูุงูู 60 ูุงูู ุซุงููุฉ. ุนูู ุณุจูู ุงูู
ุซุงู ูุงููุง ูุงุฏุฑูู ุนูู ููุงุณู ุจูุฐู ุงูุฏูุฉ ูู ุฌูุงุฒ ุงูุชุฑุงุถู. ูู
ุงุฐุง ูุง ูุณุชุทูุน ุงูููุงู
ุจุฐูู ุฃูุถูุง - ููุณ ูุฏููุง ู
ุซู ูุฐู ุงูุฃุฏูุงุช.
ุฅุฐุง ูุธุฑูุง ุฅูู ุฌู
ูุน ุงููุซุงุฆู ุ ูุฅู ุงูุดูุก ุงููุญูุฏ ุงูุฐู ูู
ูููุง ุงูุนุซูุฑ ุนููู ูู ุงูุชูุตูุฉ ุฃุนูุงู ุ ูููููุฉ ููุงุณ ูุงุฌูุฉ ุงูู
ุณุชุฎุฏู
:
ู
ูุงูุจ adb shell gfxinfoูช package_nameูชูู ุงููุงูุน ุ ุฏุนููุง ููุนู ุฐูู ุจูุฐู ุงูุทุฑููุฉ ููุฑู ูู ุงูููุงูุฉ ู
ุง ุณูุนุทูู. ููู ุฃููุงู ุ ุณูุญุฏุฏ ู
ุง ุณูููุณู ูู
ุง ูู
ูููุง ูุนูู ุฃูุถูุง.
ุงูุณุคุงู ุงูุชุงูู. ุฃูู ุชุนุชูุฏ ุฃู ุงูุฃุฏุงุก ู
ูู
ุนูุฏ ุฅูุดุงุก ุชุทุจูู ู
ู ุงูุฏุฑุฌุฉ ุงูุฃูููุ
- ุจุงูุชุฃููุฏ ูู ูู ู
ูุงู.
- ู
ูุถูุน ูุงุฌูุฉ ุงูู
ุณุชุฎุฏู
.
- ุนุฑุถ ู
ุฎุตุต + ุฑุณูู
ู
ุชุญุฑูุฉ.

ุฃูุง ุฃุญุจ ุงูุฎูุงุฑ ุงูุฃูู ุฃูุซุฑ ู
ู ุฃู ุดูุก ุขุฎุฑ ุ ูููู ุนูู ุงูุฃุฑุฌุญ ูุนุชูุฏ ุฃูู ู
ู ุงูู
ุณุชุญูู ุฌุนู ุฌู
ูุน ุงูุชุนููู
ุงุช ุงูุจุฑู
ุฌูุฉ ุชุนู
ู ุจุณุฑุนุฉ ูุจูุฑุฉ ุฌุฏูุง ูู
ู ุงูู
ูู
ุฃูู ูุง ููุฌุฏ ุนูู ุงูุฃูู UiThread ุฃู ุทุฑููุฉ ุนุฑุถ ู
ุฎุตุตุฉ. ูู
ุง ุฃูุงูู ุนูู ุฐูู - ุฅูู ู
ูู
ููุบุงูุฉ. ุญูููุฉ ุฃูู ุณูุชู
ุฅูุบุงุก ุชุณูุณู ุชุฏูู JSON ุงูู
ููุตู ูู
ุฏุฉ 10 ู
ููู ุซุงููุฉ ุฃุทูู ูู ููุงุญุธู ุฃุญุฏ.
ูููู ุนูู
ุงูููุณ ุงูุฌุดุทุงูุช ุฃูู ุนูุฏู
ุง ูุบู
ุถ ุ ูุญูุงูู 150-300 ู
ููู ุซุงููุฉ ุ ุชููู ุงูุนูู ุงูุจุดุฑูุฉ ุฎุงุฑุฌ ุงูุชุฑููุฒ ููุง ุชุฑู ู
ุง ูุญุฏุซ ุจุงููุนู ููุงู. ูู
ู ุซู
ูุฐู ุงูุนุดุฑ ู
ููู ุซุงููุฉ ู
ู ุงูุทูุณ ูุง ุชูุนู ุฐูู. ูููู ุฅุฐุง ุนุฏูุง ุฅูู ุนูู
ููุณ ุงูุฌุดุทุงูุช ุ ูู
ู ุงูู
ูู
ููุณ ู
ุง ุฃุฑุงู ุญููุง ูู
ุง ูุญุฏุซ ุญููุง ุ ูููู ู
ุง ุฃููู
ู ูู
ุณุชุฎุฏู
ู
ูู
.
ุนูู ุณุจูู ุงูู
ุซุงู ุฅุฐุง ุฌุนููุง ุงูู
ุณุชุฎุฏู
ูุนุชูุฏ ุฃู ูุฏูู ูู ุดูุก ุจุณุฑุนุฉ ูุจูุฑุฉ ุฌุฏูุง ุ ูููู ูู ุงููุงูุน ุณูุชู
ุถุฑุจู ุจุดูู ุฌู
ูู ุ ุนูู ุณุจูู ุงูู
ุซุงู ุ ุจู
ุณุงุนุฏุฉ ุงูุฑุณูู
ุงูู
ุชุญุฑูุฉ ุงูุฌู
ููุฉ ุ ูุณูููู ุฑุงุถูุงู ุ ุญุชู ูู ูู
ููู ูุฐูู ูู ุงููุงูุน.
ูุงูุช ุฒุฎุงุฑู ุนูู
ุงูููุณ ุงูุฌุดุทุงูุช ูู iOS ุชุชุญุฑู ูุจุนุถ ุงูููุช. ูุฐูู ุ ุฅุฐุง ููุช ุชุฃุฎุฐ ุชุทุจูููู ูู ููุณ ููุช ุงูู
ุนุงูุฌุฉ ุ ูููู ุนูู ู
ูุตุงุช ู
ุฎุชููุฉ ุ ููุถุนุชูู
ุง ุฌูุจูุง ุฅูู ุฌูุจ ุ ูุณูุจุฏู ุฃู ูู ุดูุก ุนูู iOS ุฃุณุฑุน. ุชุนู
ู ุงูุฑุณูู
ุงูู
ุชุญุฑูุฉ ูู iOS ุจุดูู ุฃุณุฑุน ููููุงู ุ ุชุจุฏุฃ ุงูุฑุณูู
ุงูู
ุชุญุฑูุฉ ุงูุณุงุจูุฉ ุนูุฏ ุจุฏุก ุงูุชุดุบูู ูุงูุนุฏูุฏ ู
ู ุงูุฑุณูู
ุงูู
ุชุญุฑูุฉ ุงูุฃุฎุฑู ุ ุจุญูุซ ุชููู ุฌู
ููุฉ.
ูุฐุง
ุงููุงุนุฏุฉ ุงูุฃููู ูู ุงูุชูููุฑ ูู ุงูู
ุณุชุฎุฏู
.ููููุงุนุฏุฉ ุงูุซุงููุฉ ุ ุชุญุชุงุฌ ุฅูู ุงูุงูุบู
ุงุณ ูู ุงูู
ุชุดุฏุฏูู.
ูู
ุท ููุชูู
ูุชูููู
ุฃุฏุงุก Kotlin ุจุตุฏู ุ ุณููุงุฑูู ุจู Java. ูุฐูู ุ ุงุชุถุญ ุฃูู ู
ู ุงูู
ุณุชุญูู ููุงุณ ุจุนุถ ุงูุฃุดูุงุก ุงูู
ูุฌูุฏุฉ ููุท ูู Kotlin ุ ุนูู ุณุจูู ุงูู
ุซุงู:
- ู
ุฌู
ูุนุฉ Api.
- ู
ุนูู
ุงุช ุงูุทุฑููุฉ ุงูุงูุชุฑุงุถูุฉ.
- ูุฆุงุช ุงูุจูุงูุงุช.
- ุฃููุงุน Reified.
- Coroutines.
ูุงุฌูุฉ ุจุฑู
ุฌุฉ ุชุทุจููุงุช ุงูู
ุฌู
ูุนุฉ ุงูุชู ูููุฑูุง ููุง Kotlin ุฑุงุฆุนุฉ ุฌุฏูุง ูุณุฑูุนุฉ ุฌุฏูุง. ูู Java ุ ูุฐุง ุจุจุณุงุทุฉ ุบูุฑ ู
ูุฌูุฏ ุ ููุงู ููุท ุชุทุจููุงุช ู
ุฎุชููุฉ. ุนูู ุณุจูู ุงูู
ุซุงู ุ ุณุชููู ู
ูุชุจุฉ Liteweight Stream API ุฃุจุทุฃ ูุฃููุง ุชูุนู ูู ุดูุก ู
ุซู Kotlin ุ ูููู ู
ุน ุชุฎุตูุต ูุงุญุฏ ุฃู ุงุซููู ู
ู ุงูุนู
ููุงุช ุงูุฅุถุงููุฉ ุ ุญูุซ ูุชุญูู ูู ุดูุก ุฅูู ูุงุฆู ุฅุถุงูู.
ุฅุฐุง ุฃุฎุฐูุง Stream API ู
ู Java 8 ุ ูุณุชุนู
ู ุจุดูู ุฃุจุทุฃ ู
ู Kotlin Collection API ุ ูููู ุจุดุฑุท ูุงุญุฏ - ูุง ููุฌุฏ ู
ุซู ูุฐุง ุงูุดูู ูู Collection API ุ ุฅุฐุง ูู
ูุง ุจุชุถู
ูู ู
ูุงุฒู ุ ุนูู ูู
ูุงุช ูุจูุฑุฉ ู
ู ุจูุงูุงุช Stream API ุ ุณุชุชุฌุงูุฒ Java ูุงุฌูุฉ ุจุฑู
ุฌุฉ ุชุทุจููุงุช ู
ุฌู
ูุนุฉ Kotlin. ูุฐูู ุ ูุง ูู
ูููุง ู
ูุงุฑูุฉ ู
ุซู ูุฐู ุงูุฃุดูุงุก ุ ูุฃููุง ูุฌุฑู ุงูู
ูุงุฑูุฉ ุจุฏูุฉ ู
ู ูุฌูุฉ ูุธุฑ Android.
ุงูุดูุก ุงูุซุงูู ุ ุงูุฐู ุ ูู
ุง ูุจุฏู ูู ุ ูุง ูู
ูู ู
ูุงุฑูุชู ุ ูู
ู
ุนูู
ุงุช Method ุงูุงูุชุฑุงุถูุฉ - ููู ู
ูุฒุฉ ุฑุงุฆุนุฉ ุฌุฏูุง ุ ุจุงูู
ูุงุณุจุฉ ุ ูู Dart. ุนูุฏ ุงุณุชุฏุนุงุก ุจุนุถ ุงูุทุฑู ุ ูุฏ ูููู ููุง ุจุนุถ ุงูู
ุนูู
ุงุช ุงูุชู ูุฏ ุชุฃุฎุฐ ุจุนุถ ุงูููู
ุฉ ุ ูููู ูุฏ ุชููู ูุงุฑุบุฉ. ูุจุงูุชุงูู ุ ูุง ุชููู
ุจุนู
ู 10 ุทุฑู ู
ุฎุชููุฉ ุ ูููู ูู
ุจุฃุณููุจ ูุงุญุฏ ูุชููู ุฃู ุฅุญุฏู ุงูู
ุนูู
ุงุช ูู
ูู ุฃู ุชููู ูุงุฑุบุฉ ุ ููู ุงูู
ุณุชูุจู ุงุณุชุฎุฏุงู
ูุง ุจุฏูู ุฃู ู
ุนูู
ุฉ. ุนูู ุณุจูู ุงูู
ุซุงู ุณููุธุฑ ุ ูุฏ ุญุงู ุงูู
ุนูู
ุฉ ุ ุฃู ูู
ูุฃุช. ู
ู ุงูู
ูุงุฆู
ุฌุฏูุง ุฃูู ูู
ููู ูุชุงุจุฉ ุฑู
ุฒ ุฃูู ูุซูุฑูุง ุ ูููู ุงูุฅุฒุนุงุฌ ูู ุฃูู ูุฌุจ ุนููู ุงูุฏูุน ู
ูุงุจูู. ูุฐุง ูู ุงูุณูุฑ ุงููุญูู: ุฃูุช ุ ูู
ุทูุฑ ุ ุชุนุชูุฏ ุฃู ูุฐู ุทุฑููุฉ ูุงุญุฏุฉ ููุงุฌูุฉ ุจุฑู
ุฌุฉ ุงูุชุทุจููุงุช ุ ูููู ูู ุงููุงูุน ุ ุชุญุช ุบุทุงุก ุงูู
ุญุฑู ุ ูุชู
ุฅูุดุงุก ูู ุดูู ู
ู ุฃุดูุงู ุงูุทุฑููุฉ ู
ุน ุงูู
ุนูู
ุงุช ุงูู
ูููุฏุฉ ูู ุงูุฑู
ุฒ ุงูุซุงููู. ูุชููู
ูู ุทุฑููุฉ ู
ู ูุฐู ุงูุทุฑู ุฃูุถูุง ุจุงูุชุญูู ุชุฏุฑูุฌููุง ู
ู ูุตูู ูุฐู ุงูู
ุนูู
ุฉ. ุฅุฐุง ุฌุงุก ุ ุซู
ุญุณููุง ุ ุฅุฐุง ูู
ูุญุฏุซ ุฐูู ุ ูุฅููุง ูุตูุน ููุงุนูุง ุตุบูุฑูุง ุ ูุงุนุชู
ุงุฏูุง ุนูู ููุงุน ุงูุจุช ูุฐุง ุ ูุฅู ุงูุทุฑููุฉ ุงูุฃุตููุฉ ุงูุชู ูุชุจุชูุง ุชุณู
ู ูุนูุงู. ุนู
ููุงุช Bitwise ุ ูู ุฐูู
ุฅุฐุง ูุงู / ุขุฎุฑ ูููู ุงููููู ู
ู ุงูู
ุงู ุ ูููู ุงููููู ุฌุฏูุง ุ ูู
ู ุงูุทุจูุนู ุฃู ุชุฏูุน ู
ูุงุจู ุงูุฑุงุญุฉ. ูุจุฏู ูู ุฃู ูุฐุง ุฃู
ุฑ ุทุจูุนู ุชู
ุงู
ูุง.
ุงูุนูุตุฑ ุงูุชุงูู ุงูุฐู ูุง ูู
ูู ู
ูุงุฑูุชู ูู
ูุฆุงุช ุงูุจูุงูุงุช .
ุงููู ูุจูู ูู ุฌุงูุง ุฃู ููุงู ู
ุนูู
ุงุช ููุง ูุฆุงุช ูู
ูุฐุฌูุฉ. ุนูู ุณุจูู ุงูู
ุซุงู ุฃูุช ุชุฃุฎุฐ ุงูู
ุนูู
ุงุช ูุชูุนู ุงูู
ุฒูุฏ ู
ู ุงูุฃุณุงููุจ ูุงูุฑุณูู
ุงุช ูุงูู
ุณุงูู ูุฌู
ูุน ูุฐู ุงูู
ุนูู
ุงุช. ุงุชุถุญ ุฃูู ุจุงููุณุจุฉ ูููุตู ุงูุฐู ูุญุชูู ุนูู ุนุดุฑุฉ ู
ุนูู
ุงุช ุ ู
ุง ุฒูุช ุจุญุงุฌุฉ ุฅูู ู
ุณูุฏ ูุฏู
ูุงู
ู ู
ู ุงูุญุฑูู ูุงูู
ุณุชูุทููู ูู
ุฌู
ูุนุฉ ูุงู
ูุฉ ุฃุฎุฑู. ุนูุงูุฉ ุนูู ุฐูู ุ ุฅุฐุง ููุช ูุง ุชุณุชุฎุฏู
ุงูู
ููุฏุงุช ุ ูุนููู ุฃู ุชูุชุจ ุจูุฏูู ุ ููู ุฃู
ุฑ ุฑููุจ ุจุดูู ุนุงู
.
ูุชูุญ ูู Kotlin ุงูุงุจุชุนุงุฏ ุนู ูู ุดูุก. ุฃููุงู ุ ูุธุฑูุง ููุฌูุฏ ุนูุงุฑุงุช ูู Kotlin ุ ูุง ุชุญุชุงุฌ ุฅูู ูุชุงุจุฉ ุงูุฑุณุงุฆู ูุงูู
ุณุชูุทููู.
ููุณ ูุฏููุง
ู
ุนูู
ุงุช ุงููุฆุฉ ุ ุฌู
ูุน ุงูุฎุตุงุฆุต . ุนูู ุฃู ุญุงู ุ ูุนุชูุฏ ุฐูู. ุซุงูููุง ุ ุฅุฐุง ูุชุจุช ุฃู ูุฐู ูู ูุฆุงุช ุงูุจูุงูุงุช ุ ูุณูุชู
ุฅูุดุงุก ู
ุฌู
ูุนุฉ ูุงู
ูุฉ ู
ู ูู ุดูุก ุขุฎุฑ. ุนูู ุณุจูู ุงูู
ุซุงู ุ ูุณุงูู () ุ toStrung () / hasCode () ุ ุฅูุฎ.
ุจุงูุทุจุน ุ ูุฐุง ูู ุฃูุถูุง ุนููุจ. ุนูู ุณุจูู ุงูู
ุซุงู ุ ูู
ุฃูู ุจุญุงุฌุฉ ุฅูู ู
ูุงุฑูุฉ ุฌู
ูุน 20 ู
ุนูู
ุฉ ููุฆุงุช ุงูุจูุงูุงุช ุงูุฎุงุตุฉ ุจู ูู ููุณ ุงูููุช ูู ู
ุชุณุงููุฉ () ุ ููุช ุจุญุงุฌุฉ ููุท ููู
ูุงุฑูุฉ 3. ูู
ูุนุฌุจ ุดุฎุต ู
ุง ูู ูุฐุง ุจุณุจุจ ููุฏ ุงูุฃุฏุงุก ุนูู ูุฐุง ุ ุจุงูุฅุถุงูุฉ ุฅูู ุฐูู ุ ูุชู
ุฅูุดุงุก ุงููุซูุฑ ูุธุงุฆู ุงูุฎุฏู
ุฉ ุ ูุงูุดูุฑุฉ ุงูู
ุชุฑุฌู
ุฉ ุถุฎู
ุฉ ููุบุงูุฉ. ุจู
ุนูู ุ ุฅุฐุง ูุชุจุช ูู ุดูุก ูุฏูููุง ุ ุณูููู ููุงู ุฑู
ุฒ ุฃูู ู
ู
ุง ูู ููุช ุชุณุชุฎุฏู
ูุฆุงุช ุงูุจูุงูุงุช.
ูุง ุฃุณุชุฎุฏู
ูุฆุงุช ุงูุจูุงูุงุช ูุณุจุจ ุขุฎุฑ. ูู ุงูุณุงุจู ุ ูุงูุช ููุงู ูููุฏ ุนูู ุชูุณูุน ูุฐู ุงููุฆุงุช ูุดูุก ุขุฎุฑ. ุงูุขู ุงูุฌู
ูุน ุฃูุถู ู
ุน ูุฐุง ุ ููู ูุฐู ุงูุนุงุฏุฉ ุจุงููุฉ.
ู
ุง ูู ุฑุงุฆุน ุฌุฏูุง ูู Kotlin ุ ูู
ุงุฐุง ุณูููู ุฏุงุฆู
ูุง ุฃุณุฑุน ู
ู Java ููุ ูุฐุง ูู
ููุน Reified ุ ูุงูุฐู ุ ุจุงูู
ูุงุณุจุฉ ุ ู
ูุฌูุฏ ุฃูุถูุง ูู Dart.
ุฃูุช ุชุนูู
ุฃูู ุนูุฏ ุงุณุชุฎุฏุงู
ุงูุฃุฏููุฉ ุงูุฌููุณุฉ ุ ูุชู
ู
ุญู ููุน ุงูู
ุญู ูู ู
ุฑุญูุฉ ุงูุชุฌู
ูุน ููู ููุช ุงูุชุดุบูู ูู
ุชุนุฏ ุชุนุฑู ู
ุง ูู ูุงุฆู ูุฐุง ุงูุนุงู
ุงูู
ุณุชุฎุฏู
ุจุงููุนู.
ู
ุน ุฃููุงุน Reified ุ ูุง ุชุญุชุงุฌ ุฅูู ุงุณุชุฎุฏุงู
ุงูุงูุนูุงุณ ูู ุงูุนุฏูุฏ ู
ู ุงูุฃู
ุงูู ุนูุฏู
ุง ุชุญุชุงุฌ ุฅููู ูู Java ุ ูุฃูู ู
ู ุฎูุงู ุงูุฃุณุงููุจ ุงูู
ุถู
ูุฉ ุ ู
ุน Reified ุ ุชุนุฑู ุนู ุงูููุน ุ ูุจุงูุชุงูู ูุชุจูู ุฃูู ูุง ุชุณุชุฎุฏู
ุงูุงูุนูุงุณ ููุนู
ู ุงูุฑู
ุฒ ุงูุฎุงุต ุจู ุจุดูู ุฃุณุฑุน. ุงูุณุญุฑ.
ูููุงู
Coroutines . ุฅููู
ุฑุงุฆุนูู ููุบุงูุฉ ุ ูุฃูุง ุฃุญุจูู
ูุซูุฑูุง ุ ูููู ูู ููุช ุงูุฃุฏุงุก ุชู
ุชุถู
ูููู
ููุท ูู ุฅุตุฏุงุฑ ุฃููุง ุ ูุฐูู ูู
ููู ู
ู ุงูู
ู
ูู ุฅุฌุฑุงุก ู
ูุงุฑูุงุช ุตุญูุญุฉ ู
ุนูู
.
ุงูุญููู
ูุฐูู ุฏุนููุง ูู
ุถู ูุฏู
ูุง ุ ููุชูู ุฅูู ู
ุง ูู
ูููุง ู
ูุงุฑูุชู ุจู Java ูู
ุง ูู
ูููุง ุงูุชุฃุซูุฑ ุนููู ุจุดูู ุนุงู
.
class Test { var a = 5 var b = 6 val c = B() fun work () { val d = a + b val e = ca + cb } } class B (@JvmField var a: Int = 5,var b: Int = 6)
ูู
ุง ููุช ุ ููุณ ูุฏููุง ู
ุนูู
ุงุช ูููุฆุฉ ุ ูุฏููุง ุฎุตุงุฆุต.
ูุฏููุง var ุ ููุฏููุง val ุ ููุฏููุง ูุฆุฉ ุฎุงุฑุฌูุฉ ุ ูุงุญุฏุฉ ู
ู ุฎุตุงุฆุตูุง ููJvmField ุ ูุณููุธุฑ ูู ู
ุง ูุญุฏุซ ุจุงููุนู ู
ุน ูุธููุฉ ุงูุนู
ู (): ูุฌู
ุน ููู
ุฉ ุงูุญูู a ูุงูุญูู b ููุฆุชูุง ุงูุฎุงุตุฉ ู ููู
ุงูุญูู ุฃ ูุงูุญูู ุจ ูููุฆุฉ ุงูุฎุงุฑุฌูุฉ ุ ูุงูุชู ุชุชู
ูุชุงุจุชูุง ูู ุงูุญูู ุงูุซุงุจุช.
ุงูุณุคุงู ูู ู
ุง ุงูุฐู ุณูุชู
ุงุณุชุฏุนุงุคู ูู ุงููุงูุน d = a + b. ูุนูู
ุฌู
ูุนูุง ุฃู ูุฐู ุงูุฎุงุตูุฉ ู
ุฑุฉ ูุงุญุฏุฉ ุ ุณูุชู
ุงุณุชุฏุนุงุก getter ููุฐู ุงููุฆุฉ ููุฐู ุงูู
ุนูู
ุฉ.
L0 LINENUMBER 10 L0 ALOAD 0 GETFIELD kotlin/Test.a : I ALOAD 0 GETFIELD kotlin/Test.b : I IADD ISTORE 1
ูููู ุฅุฐุง ูุธุฑูุง ุฅูู ุงูุฑู
ุฒ ุงูุซุงููู ุ ูุณูู ูุฑู ุฃูู ูุชู
ุงููุตูู ุฅูู getfield ุจุงููุนู. ุฃู ุฃู ูุฐุง ูู ุงูุฑู
ุฒ ุงูุซุงููู ููุณ ุงุณุชุฏุนุงุก ููุธููุฉ InvokeVirtual ุ ุจู ูู ูุตูู ู
ุจุงุดุฑ ุฅูู ุงูุญูู. ูุง ููุฌุฏ ุดูุก ูุนุฏูุง ุจู ูู ุงูุจุฏุงูุฉ ุ ุฃู ูุฏููุง ูู ุงูุฎุตุงุฆุต ุ ูููุณ ุงูุญููู. ุงุชุถุญ ุฃู Kotlin ูุฎุฏุนูุง ุ ููุงู ุฌุงุฐุจูุฉ ู
ุจุงุดุฑุฉ.
ู
ุงุฐุง ูุญุฏุซ ุฅุฐุง ุฑุฃููุง ู
ุง ูู ุงูุฑู
ุฒ ุงูุซุงููู ุงูุฐู ุชู
ุฅูุดุงุคู ูุฎุท ุขุฎุฑ: val e = ca + cbุ
L1 LINENUMBER 11 L1 ALOAD 0 GETFIELD kotlin/Test.c : Lkotlin/B; GETFIELD kotlin/Ba : I ALOAD 0 GETFIELD kotlin/Test.c : Lkotlin/B; INVOKEVIRTUAL kotlin/B.getB ()I IADD ISTORE 2
ูู ุงูุณุงุจู ุ ุฅุฐุง ููุช ุชููู
ุจุงููุตูู ุฅูู ู
ูููุฉ ุฎุงุตุฉ ุ ููุงู ูุฏูู ุฏุงุฆู
ูุง ู
ูุงูู
ุฉ InvokeVirtual. ุฅุฐุง ูุงูุช ูุฐู ู
ูููุฉ ุฎุงุตุฉ ุ ูุฅู ุงููุตูู ุฅูููุง ูุงู ู
ู ุฎูุงู GetField. GetField ุฃุณุฑุน ุจูุซูุฑ ู
ู InvokeVirtual ุ ูุชุฒุนู
ุงูู
ูุงุตูุงุช ุงููุงุฑุฏุฉ ู
ู Android ุฃู ุงููุตูู ุฅูู ุญูู ู
ุจุงุดุฑ ุฃุณุฑุน 3-7 ู
ุฑุงุช. ูุฐูู ุ ูููุตุญ ุฏุงุฆู
ูุง ุจุงูุฑุฌูุน ุฅูู ุงูุญูู ุ ูููุณ ู
ู ุฎูุงู ุงูุฑุณุงุฆู ุฃู ุงูู
ุณุชูุทููู. ุงูุขู ุ ุฎุงุตุฉ ูู ุงูุฌูุงุฒ ุงูุธุงูุฑู ART ุงูุซุงู
ู ุ ุณูููู ููุงู ุจุงููุนู ุฃุฑูุงู
ู
ุฎุชููุฉ ุ ูููู ุฅุฐุง ููุช ูุง ุชุฒุงู ุชุฏุนู
4.1 ุ ูุณูููู ูุฐุง ุตุญูุญูุง.
ูุฐูู ุ ุงุชุถุญ ุฃูู ูุง ูุฒุงู ู
ู ุงูู
ููุฏ ุจุงููุณุจุฉ ููุง ุงูุญุตูู ุนูู GetField ุ ูููุณ InvokeVirtual.
ุงูุขู ุ ูู
ููู ุชุญููู GetField ุฅุฐุง ููุช ุชููู
ุจุงููุตูู ุฅูู ุฎุงุตูุฉ ู
ู ูุฆุชู ุงูุฎุงุตุฉ ุ ุฃู ุฅุฐุง ูุงูุช ูุฐู ู
ูููุฉ ุนุงู
ุฉ ุ ูุฌุจ ุนููู ุชุนูููJvmField. ุจุนุฏ ุฐูู ุ ุณูููู ููุณ ุงูุดูุก ุจุงูุถุจุท ูู ุงูุฑู
ุฒ ุงูุจุงูุช ูู ุงุณุชุฏุนุงุก GetField ุ ููู ุฃุณุฑุน 3-7 ู
ุฑุงุช.
ู
ู ุงููุงุถุญ ุฃููุง ููุง ูุชุญุฏุซ ุจุงูุซูุงูู ุงููุงูููุฉ ุ ูู
ุน ุนุฑุด ูุงุญุฏ ุ ููู ุตุบูุฑุฉ ุฌุฏูุง. ูููู ุ ู
ู ูุงุญูุฉ ุฃุฎุฑู ุ ุฅุฐุง ูู
ุช ุจุฐูู ูู ู
ุคุดุฑ ุชุฑุงุจุท ูุงุฌูุฉ ุงูู
ุณุชุฎุฏู
ุ ุนูู ุณุจูู ุงูู
ุซุงู ุ ูู ุทุฑููุฉ ุงูุณุญุจ ูู
ููู ุงููุตูู ุฅูู ููุน ู
ุง ู
ู ุงูุนุฑุถ ุ ูุฅู ุฐูู ุณูุคุซุฑ ุนูู ุนุฑุถ ูู ุฅุทุงุฑ ุ ููู
ููู ุงูููุงู
ุจุฐูู ุจุดูู ุฃุณุฑุน ููููุงู.
ุฅุฐุง ูู
ูุง ุจุฌู
ุน ูู ุงูุชุญุณููุงุช ุ ูุจุฅุฌู
ุงููุง ูู
ูู ุฃู ุชุนุทู ุดูุฆูุง.ุซุงุจุช!ุ
ู
ุงุฐุง ุนู ุงูุงุณุชุงุชููุงุ ูุนูู
ุฌู
ูุนูุง ุฃู ุซุงุจุช Kotlin ูู ูุงุฆู ู
ุตุงุญุจ. ูู ุงูุณุงุจู ุ ุฑุจู
ุง ุฃุถูุช ููุนูุง ู
ู ุงูุนูุงู
ุงุช ุ ุนูู ุณุจูู ุงูู
ุซุงู ุ ุซุงุจุช ุนุงู
ุ ุซุงุจุช ููุงุฆู ุ ูู
ุง ุฅูู ุฐูู ุ ุฅุฐุง ูู
ุช ุจุชุญููู ูุฐุง ุฅูู ููุฏ Kotlin ุ ูุณุชุญุตู ุนูู ูุงุฆู ู
ุตุงุญุจ ุ ูุงูุฐู ุณููุชุจ ุดูุฆูุง ู
ุซู ู
ุง ููู:
companion object { var k = 5 fun work2() : Int = 42 }
ูู ุชุนุชูุฏ ุฃู ูุฐุง ุงูุฅุฏุฎุงู ู
ุทุงุจู ููุฅุนูุงู ุงูููุงุฆู ุงูููุงุณู ุงูุซุงุจุช ูู Javaุ ูู ูู ุซุงุจุช ุนูู ุงูุฅุทูุงู ุฃู
ูุงุ
ูุนู
ุ ูู ุงููุงูุน ุ ูุนูู Kotlin ุฃูู ููุง ูู Kotlin - ุซุงุจุช ุ ูููู ูุฐุง ุงููุงุฆู ุฃูู ุซุงุจุช. ูู ุงููุงูุน ุ ูุฐุง ููุณ ุซุงุจุชูุง.
ุฅุฐุง ูุธุฑูุง ุฅูู ุงูุฑู
ุฒ ุงูุฐู ุชู
ุฅูุดุงุคู ุ ูุณูู ูุฑู ู
ุง ููู:
L2 LINENUMBER 21 L2 GETSTATIC kotlin/Test.Companion : Lkotlin/Test$Companion; INVOKEVIRTUAL kotlin/Test$Companion.getK ()I GETSTATIC kotlin/Test.Companion : Lkotlin/Test$Companion; INVOKEVIRTUAL kotlin/Test$Companion.work2 ()I IADD ISTORE 3
ูุชู
ุฅูุดุงุก Test.Companion ุ ูุงุฆู ู
ูุฑุฏ ูุชู
ุฅูุดุงุก ุงูู
ุซูู ู
ู ุฃุฌูู ุ ุชุชู
ูุชุงุจุฉ ูุฐุง ุงูู
ุซูู ูู ุงูุญูู ุงูุฎุงุต ุจู. ุจุนุฏ ุฐูู ุ ูุชู
ุงููุตูู ุฅูู ุฃุญุฏ ุงูุนูุงุตุฑ ุงูู
ุตุงุญุจุฉ ู
ู ุฎูุงู ูุฐุง ุงููุงุฆู. ูุฃุฎุฐ getstatic ุ ุฃู ุ ูุณุฎุฉ ุซุงุจุชุฉ ู
ู ูุฐู ุงููุฆุฉ ุ ููุณุชุฏุนู ูุธููุฉ getK invokevirtual ุนูููุง ุ ูุงูุดูุก ููุณู ุชู
ุงู
ูุง ููุธููุฉ work2. ูุฐูู ูุญุตู ุนูู ุฃููุง ููุณุช ุซุงุจุชุฉ.
ูุฐุง ู
ูู
ุ ูุฃูู ูู JVMs ุงูุฃูุฏู
ุ ูุงู ุงูุงุณุชููุงูู ุฃุณุฑุน ุจูุณุจุฉ 30 ูช ู
ู Invokevirtual. ุงูุขู ุ ุจุงูุทุจุน ุ ูู HotSpot ุ ุฃุตุจุญุช ุงูู
ุญุงูุงุฉ ุงูุงูุชุฑุงุถูุฉ ุงูู
ุญุณูุฉ ุฑุงุฆุนุฉ ุญููุง ุ ููู ุบูุฑ ู
ุฑุฆูุฉ ุชูุฑูุจูุง. ูู
ุน ุฐูู ุ ุนููู ุฃู ุชุถุน ุฐูู ูู ุงูุงุนุชุจุงุฑ ุ ุฎุงุตุฉ ูุฃู ููุงู ุชุฎุตูุตูุง ุฅุถุงูููุง ูุงุญุฏูุง ุ ูุงูู
ููุน ุงูุฅุถุงูู ุนูู 4ST1 ูู 700 ูุงูู ุซุงููุฉ ุ ูุซูุฑูุง.
ุฏุนูุง ูููู ูุธุฑุฉ ุนูู ููุฏ Java ุงูุฐู ูุธูุฑ ุฅุฐุง ูู
ุช ุจูุดุฑ ุงูุฑู
ุฒ ุงูุจุงูุช ุงูุนูุณู:
private static int k = 5; public static final Test.Companion Companion = new Test.Companion((DefaultConstructorMarker)null); public static final class Companion { public final int getK() { return Test.k;} public final void setK(int var1) { Test.k = var1; } public final int work2() { return 42; } private Companion() { }
ูุชู
ุฅูุดุงุก ุญูู ุซุงุจุช ุ ูุชูููุฐ ููุงุฆู ุซุงุจุช ูููุงุฆู ุงูู
ุฑุงูู ุ ูุชู
ุฅูุดุงุก ุงูุญุฑูู ูุงูู
ุณุชูุทููู ุ ููู
ุง ุชุฑู ุ ุจุงูุฅุดุงุฑุฉ ุฅูู ุงูุญูู ุงูุซุงุจุช ุจุงูุฏุงุฎู ุ ุชุธูุฑ ุทุฑููุฉ ุซุงุจุชุฉ ุฅุถุงููุฉ. ูู ุดูุก ุญุฒูู ุจู
ุง ููู ุงูููุงูุฉ.
ู
ุงุฐุง ูู
ูููุง ุฃู ููุนู ุ ู
ุน ุงูุชุฃูุฏ ู
ู ุฃููุง ููุณุช ุซุงุจุชุฉุ ูู
ูููุง ู
ุญุงููุฉ ุฅุถุงูุฉJvmField ู @ JvmStatic ููุฑู ู
ุง ุณูุญุฏุซ.
val i = k + work2() companion object { @JvmField var k = 5 JvmStatic fun work2() : Int = 42 }
ุณุฃููู ุนูู ุงูููุฑ ุฃูู ูู ุชูุฑุจ ู
ูJvmStatic ุ ุณูููู ููุณ ุงููุงุฆู ุ ูุธุฑูุง ูุฃู ูุฐุง ูุงุฆู ู
ุตุงุญุจ ุ ุณูููู ููุงู ุชุฎุตูุต ุฅุถุงูู ููุฐุง ุงููุงุฆู ูุณูููู ููุงู ู
ูุงูู
ุฉ ุฅุถุงููุฉ.
private static int k = 5; public static final Test.Companion Companion = new Test.Companion((DefaultConstructorMarker)null); public static final class Companion { @JvmStatic public final int work2() { return 42; } private Companion() {}
ููู ุงูู
ูุงูู
ุฉ ุณุชุชุบูุฑ ููุท ูู k ุ ูุฃููุง ุณุชูููJvmField ุ ุณูุชู
ุงุนุชุจุงุฑูุง ู
ุจุงุดุฑุฉ ุนูู ุฃููุง getstatic ุ ูู ูุชู
ุฅูุดุงุก ุงูุญุฑูู ูุงูู
ุณุชูุทููู. ูููู ุจุงููุณุจุฉ ูููุธููุฉ work2 ูู ูุชุบูุฑ ุดูุก.
L2 LINENUMBER 21 L2 GETSTATIC kotlin/Test.k : I GETSTATIC kotlin/Test.Companion : Lkotlin/Test$Companion; INVOKEVIRTUAL kotlin/Test$Companion.work2 ()I IADD ISTORE 3
ูุชู
ุงูุชุฑุงุญ ุงูุฎูุงุฑ ุงูุซุงูู ุญูู ููููุฉ ุฅูุดุงุก ุซุงุจุช ูู ูุซุงุฆู Kotlin ุ ูุฐูู ููุงู ุฃูู ูู
ูููุง ููุท ุฅูุดุงุก ูุงุฆู ุ ูุณูููู ูุฐุง ุฑู
ุฒ ุซุงุจุช.
object A { fun test() = 53 }
ูู ุงููุงูุน ุ ุงูุฃู
ุฑ ููุณ ูุฐูู.
L3 LINENUMBER 23 L3 GETSTATIC kotlin/A.INSTANCE : Lkotlin/A; INVOKEVIRTUAL kotlin/A.test ()I POP
ุงุชุถุญ ุฃููุง ูุฌุฑู ู
ูุงูู
ุฉ ู
ุซูู getstatic ู
ู singletone ุ ูุงูุชู ูุชู
ุฅูุดุงุคูุง ุ ููุฏุนู ููุณ ุงูุฃุณุงููุจ ุงูุงูุชุฑุงุถูุฉ ุจุงูุถุจุท.
ุงูุทุฑููุฉ ุงููุญูุฏุฉ ุงูุชู ูู
ูููุง ู
ู ุฎูุงููุง ุชุญููู Invokestatic ูู ูุธุงุฆู ุนุงููุฉ ุงูุชุฑุชูุจ. ุนูุฏู
ุง ููุชุจ ููุท ุจุนุถ ุงููุธุงุฆู ุฎุงุฑุฌ ุงููุตู ุ ุนูู ุณุจูู ุงูู
ุซุงู ุ ุณูุชู
ุงุณุชุฏุนุงุก ุงุฎุชุจุงุฑ test2 ุงูู
ู
ุชุน ุนูู ุฃูู ุซุงุจุช.
fun test2() = 99 L4 LINENUMBER 24 L4 INVOKESTATIC kotlin/TestKt.test2 ()I POP
ุนูุงูุฉ ุนูู ุฐูู ุ ูุฅู ุงูุดูุก ุงูุฃูุซุฑ ุฅุซุงุฑุฉ ููุงูุชู
ุงู
ูู ุฃูู ุณูุชู
ุฅูุดุงุก ูุฆุฉ ุ ูุงุฆู ุ ูู ูุฐู ุงูุญุงูุฉ testKt ุ ูุฅูู ุณูููุฏ ูุงุฆููุง ูููุณู ุ ูุณูู ูููุฏ ูุธููุฉ ูุถุนูุง ูู ูุฐุง ุงููุงุฆู ุ ูุงูุขู ุณูุชู
ุชุณู
ูุชู ุจุงุณู
Invokestatic.
ูู
ุงุฐุง ุชู
ุฐูู ุบูุฑ ู
ูููู
. ูุซูุฑูู ุบูุฑ ุฑุงุถูู ุนู ุฐูู ุ ูููู ููุงู ู
ู ูุนุชุจุฑูู ุฃู ู
ุซู ูุฐุง ุงูุชุทุจูู ุฃู
ุฑ ุทุจูุนู ุชู
ุงู
ูุง. ู
ูุฐ ุงูุฌูุงุฒ ุงูุธุงูุฑู ุ ู
ุฏููุน. ุงููู ูุชุญุณู ุ ุงูุขู ููุณ ุญุฑุฌูุง. ูู ุงูุฅุตุฏุงุฑ ุงูุซุงู
ู ู
ู Android ุ ุชู
ุงู
ูุง ู
ุซู HotSpot ุ ุชู
ุชุญุณูู ูู ุดูุก ุ ูููู ูุง ุชุฒุงู ูุฐู ุงูุฃุดูุงุก ุงูุตุบูุฑุฉ ุชุคุซุฑ ููููุงู ุนูู ุงูุฃุฏุงุก ุงูุนุงู
.
ุจุทูุงู
fun test(first: String, second: String?) : String { second ?: return first return "$first $second" }
ูุฐุง ูู ุงูู
ุซุงู ุงูุชุงูู ุงูู
ุซูุฑ ููุงูุชู
ุงู
. ูุจุฏู ุฃููุง ูุงุญุธูุง ุฃู ุงูุซุงููุฉ ูู
ูู ุฃู ุชููู ูุงุบูุฉ ุ ููุฌุจ ุงูุชุญูู ู
ููุง ูุจู ุงูููุงู
ุจุฃู ุดูุก ู
ุนูุง. ูู ูุฐู ุงูุญุงูุฉ ุ ุฃุชููุน ุฃู ูุฏููุง ูุงุญุฏ ุฅุฐุง. ุนูุฏู
ุง ูุชู
ูุดุฑ ูุฐุง ุงูุฑู
ุฒ ุฅุฐุง ูุงู ุงูุซุงูู ูุง ูุณุงูู ุงูุตูุฑ ุ ูุฃุนุชูุฏ ุฃู ุงูุชูููุฐ ุณูุฐูุจ ุฅูู ุฃุจุนุฏ ู
ู ุฐูู ููุฎุฑุฌ ููุท ุฃููุงู.
ููู ูุชูุดู ูู ูุฐุง ูู ููุฏ ุฌุงูุงุ ูู ุงููุงูุน ุณูููู ููุงู ุดูู.
@NotNull public final String test(@NotNull String first,@Nullable String second) { Intrinsics.checkParameterIsNotNull(first, "first"); return second != null ? (first + " " + second) : first; }
ุณูุญุตู ุนูู ุงูุฌููุฑุฉ ูู ุงูุจุฏุงูุฉ. ุฏุนูุง ูููู ุฃู ุฃููู ูุฐุง
ุฅุฐุง ูุงู ุณูุชู
ุชูุณูุนู ุฅูู ุนุงู
ู ุซูุงุซู. ูููู ุจุงูุฅุถุงูุฉ ุฅูู ุฐูู ุ ุนูู ุงูุฑุบู
ู
ู ุฃููุง ุฃุตูุญูุง ุฃู ุงูู
ุนูู
ุฉ ุงูุฃููู ูุง ูู
ูู ุฃู ุชููู ูุงุจูุฉ ููุฅูุบุงุก ุ ูุณูุชู
ุงูุชุญูู ู
ููุง ู
ู ุฎูุงู Intrinsics.
Intrinsics ูู ูุฆุฉ ุฏุงุฎููุฉ ูู Kotlin ุชุญุชูู ุนูู ู
ุฌู
ูุนุฉ ู
ุนููุฉ ู
ู ุงูู
ุนูู
ุงุช ูุงูุดููุงุช. ููู ูู ู
ุฑุฉ ุชุฌุนู ู
ุนูู
ุฉ ุงูุฃุณููุจ ุบูุฑ ูุงุจูุฉ ููุฅูุบุงุก ุ ูุฅููุง ุชุชุญูู ู
ู ุฐูู ุนูู ุฃู ุญุงู. ูู
ุงุฐุงุ ุจุนุฏ ุฐูู ุ ูุนู
ู ูู Interop Java ุ ููุฏ ูุญุฏุซ ุฃูู ุชุชููุน ุฃูู ูู ูููู ูุงุบูุงู ููุง ุ ูููู ู
ุน Java ุณูุฃุชู ู
ู ู
ูุงู ู
ุง.
ุฅุฐุง ูู
ุช ุจุงูุชุญูู ู
ู ุฐูู ุ ูุณูู ูุฐูุจ ุฃุจุนุฏ ู
ู ุฐูู ุนูู ุทูู ุงูููุฏ ุ ุซู
ุจุนุฏ 10-20 ู
ูุงูู
ุงุช ุงูุฃุณููุจ ุ ุณุชูุนู ุดูุฆูุง ู
ุน ู
ุนูู
ุฉ ุ ุนูู ุงูุฑุบู
ู
ู ุฃููุง ูุฏ ูุง ุชููู ูุงุจูุฉ ููุฅูุบุงุก ุ ูููู ูุณุจุจ ู
ุง ุชุจูู ุฃููุง. ูู ุดูุก ุณูุณูุท ุนููู ุ ููู ุชููู ูุงุฏุฑูุง ุนูู ููู
ู
ุง ุญุฏุซ ุจุงููุนู. ูุชุฌูุจ ูุฐุง ุงูู
ููู ุ ูู ูู ู
ุฑุฉ ุชุฌุชุงุฒ ูููุง ุงูู
ุนูู
ุฉ ุงููุงุฑุบุฉ ุ ุณูุธู ุนููู ุงูุชุญูู ู
ููุง. ูุฅุฐุง ูุงูุช ูุงุบูุฉ ุ ูุณูููู ููุงู ุงุณุชุซูุงุก.
ูุฐุง ุงููุญุต ูุณุชุญู ุดูุฆูุง ุฃูุถูุง ุ ูุฅุฐุง ูุงู ููุงู ุงููุซูุฑ ู
ููู
ุ ููู ูููู ุฌูุฏูุง ุฌุฏูุง.
ูููู ูู ุงููุงูุน ุ ุฅุฐุง ุชุญุฏุซูุง ุนู HotSpot ุ ูุณุชุณุชุบุฑู 10 ู
ูุงูู
ุงุช ู
ู ูุฐู ุงูุฌููุฑ ุญูุงูู ุฃุฑุจุนุฉ ูุงูู ุซุงููุฉ. ูุฐุง ุตุบูุฑ ุฌุฏูุง ุฌุฏูุง ุ ููุง ุฏุงุนู ููููู ุจุดุฃู ูุฐุง ุ ูููู ูุฐุง ุนุงู
ู ู
ุซูุฑ ููุงูุชู
ุงู
.
ุงูุจุฏุงุฆู
ููุฌุฏ ูู ุฌุงูุง ุดูุก ู
ุซู ุงูุจุฏุงุฆููู. ูู Kotlin ุ ูู
ุง ูุนูู
ุฌู
ูุนูุง ุ ูุง ุชูุฌุฏ ุจุฏุงุฆูุฉ ุ ูุนู
ู ุฏุงุฆู
ูุง ู
ุน ุงูุฃุดูุงุก. ูู Java ุ ูุชู
ุงุณุชุฎุฏุงู
ูุง ูุชูููุฑ ุฃุฏุงุก ุฃุนูู ูููุงุฆูุงุช ูู ุจุนุถ ุงูุนู
ููุงุช ุงูุญุณุงุจูุฉ ุงูุตุบูุฑุฉ. ุฅู ุฅุถุงูุฉ ุดูุฆูู ุฃุบูู ุจูุซูุฑ ู
ู ุฅุถุงูุฉ ุจุฏุงุฆููู. ุชุฃู
ู ูู ู
ุซุงู.
var a = 5 var b = 6 var bOption : Int? = 6
ููุงู ุซูุงุซุฉ ุฃุฑูุงู
ุ ูู ูุชู
ุงุณุชูุชุงุฌ ุงูููุนูู ุงูุฃูููู ุบูุฑ ุงููุงุฑุบูู ุ ูููุณู
ุงูุฑูู
ุงูุซุงูุซ ุฅูู ุฃูู ูู
ูู ุฃู ูููู ูุงุบูุงู.
private int a = 5; private int b = 6; @Nullable private Integer bOption = Integer.valueOf(6);
ุฅุฐุง ูุธุฑุช ุฅูู ุงูุฑู
ุฒ ุงูุซุงููู ูุฑุฃูุช ุฑู
ุฒ Java ุงูุฐู ุชู
ุฅูุดุงุคู ุ ููู ูููู ุงูุฑูู
ุงู ุงูุฃููุงู ุฎุงูููู ุ ูุจุงูุชุงูู ูู
ูู ุฃู ููููุง ุจุฏุงุฆููู. ููู ุงูุจุฏุงุฆู ูุง ูู
ูู ุฃู ูุญุชูู ุนูู Null ุ ููุท ูุงุฆู ูู
ูู ุฃู ููุนู ุฐูู ุ ูุฐูู ุณูุชู
ุฅูุดุงุก ูุงุฆู ููุฑูู
ุงูุซุงูุซ.
AUTOBOXING
ุนูุฏู
ุง ุชุนู
ู ู
ุน ุจุฏุงุฆููู ูุชุฌุฑู ุนู
ููุฉ ุจุฏุงุฆูุฉ ูุบูุฑ ุจุฏุงุฆูุฉ ุ ุณุชุญุชุงุฌ ุฅู
ุง ุฅูู ุชุฑุฌู
ุฉ ุฃุญุฏูู
ุฅูู ุจุฏุงุฆู ุฃู ุฅูู ูุงุฆู.
ููุจุฏู ุ ุฃูู ููุณ ู
ู ุงูู
ุณุชุบุฑุจ ุฃูู ุฅุฐุง ูู
ุช ุจุฅุฌุฑุงุก ุนู
ููุงุช ูุงุบูุฉ ููุง ูู
ูู ุฅุจุทุงููุง ูู Kotlin ุ ูุณุชููุฏ ุงููููู ู
ู ุงูุฃุฏุงุก. ุนูุงูุฉ ุนูู ุฐูู ุ ุฅุฐุง ูุงู ููุงู ุงูุนุฏูุฏ ู
ู ูุฐู ุงูุนู
ููุงุช ุ ูุณุชุฎุณุฑ ุงููุซูุฑ.
val a: String? = null var b = a?.isBlank() == true
ุชุฑู ุฃูู ุณุชููู ุงูู
ูุงูู
ุฉ / ุฃููุจููุณููุบ ููุงุ ูู
ุง ุฃููู ูู
ุฃุฑ ุญุชู ูุธุฑุช ุฅูู ุงูุฑู
ุฒ ุงููุฑุนู.
if (a != null && a.isBlank()) true else false
ูู ุงููุงูุน ุ ุชููุนุช ุฃูู ุณูููู ููุงู ุดูุก ู
ุซู ูุฐู ุงูู
ูุงุฑูุฉ: ุฅุฐุง ูู
ุชูู ุงูุณูุณูุฉ ูุงุฑุบุฉ ูุฅุฐุง ูุงูุช ูุงุฑุบุฉ ุ ููู
ุจุชุนููููุง ุนูู true ุ ูุฅูุง ุชู
ุชุนููููุง ุนูู false. ูุจุฏู ุฃู ูู ุดูุก ุจุณูุท ุ ูููู ูู ุงููุงูุน ูุชู
ุฅูุดุงุก ุงูุชุนููู
ุงุช ุงูุจุฑู
ุฌูุฉ ุงูุชุงููุฉ:
String a = (String)null; boolean b = Intrinsics.areEqual(a != null ? Boolean.valueOf(StringsKt.isBlank((CharSequence)a)) : null, Boolean.valueOf(true));
ุฏุนููุง ููุธุฑ ูู ุงูุฏุงุฎู.
ูุชู
ุฃุฎุฐ ุงูู
ุชุบูุฑ
a ุ ููุชู
ุทุฑุญู ูู CharSequence ุ ุจุนุฏ ุทุฑุญู ุ ูุงูุฐู ุชู
ุฅููุงูู ุฃูุถูุง ูุจุนุถ ุงูููุช ุ ููุณู
ู ุงูุงุฎุชูุงุฑ ุงูุขุฎุฑ - StringsKt.isBlank - ูุฐู ูู ุงูุทุฑููุฉ ุงูุชู ุชุชู
ุจูุง ูุชุงุจุฉ ูุธููุฉ ุงูุชู
ุฏูุฏ ูู CharSequence ุ ูุฐูู ูุชู
ุฅุฑุณุงููุง ูุฅุฑุณุงููุง. ูุธุฑูุง ูุฃู ุงูุชุนุจูุฑ ุงูุฃูู ูู
ูู ุฃู ูููู ูุงุบูุงู ุ ูุฅูู ูุฃุฎุฐู ููููู
ุจุงูู
ูุงูู
ุฉ ุ ูููููุง ูููุง ูู Boolean.valueOf. ูุฐูู ุ ูุตุจุญ ุงูุจุฏุงุฆู ุงูุญูููู ุฃูุถูุง ูุงุฆููุง ุ ูููุท ุจุนุฏ ุฐูู ูุชู
ุงูุชุญูู ุจุงููุนู ููุชู
ุงุณุชุฏุนุงุก Intrinsics.areEqual.
ูุฏ ุชุจุฏู ูุฐู ุงูุนู
ููุฉ ุจุณูุทุฉ ุ ูููู ูุฐู ูุชูุฌุฉ ุบูุฑ ู
ุชููุนุฉ. ูู ุงููุงูุน ุ ููุงู ุนุฏุฏ ูููู ุฌุฏุง ู
ู ูุฐู ุงูุฃุดูุงุก. ูููู ุนูุฏู
ุง ูููู ูุฏูู ุฅุจุทุงู / ูุง ุฅุจุทุงู ุ ูู
ููู ุฅูุดุงุก ุงููุซูุฑ ู
ู ูุฐู ุงูุฃุดูุงุก ุ ูุฃุฎุฑู ูู
ุชูู ูุชุชููุนูุง ุฃุจุฏูุง. ูุฐูู ุ ุฃูุตูู ุจุงูุงุจุชุนุงุฏ ุนู ุงูุบู
ูุถ ูู ุฃูุฑุจ ููุช ู
ู
ูู. ุนูู ุณุจูู ุงูู
ุซุงู
ุชุฃุชู ุฅูู ุญุตุงูุฉ ุงูููู
ูู ุฃูุฑุจ ููุช ู
ู
ูู ูุงูุงุจุชุนุงุฏ ุนู ุงูุฅุจุทุงู ุญุชู ูุง ุชุนู
ู ูู ุฃุณุฑุน ููุช ู
ู
ูู.
ุญููุงุช
ุงูุดูุก ุงูุชุงูู ุงูู
ุซูุฑ ููุงูุชู
ุงู
.
ูู
ููู ุงุณุชุฎุฏุงู
ุงูู
ุนุชุงุฏ ูู ุ ููู ูู Java ุ ูููู ูู
ููู ุฃูุถูุง ุงุณุชุฎุฏุงู
ูุงุฌูุฉ ุจุฑู
ุฌุฉ ุงูุชุทุจููุงุช ุงูู
ูุงุณุจุฉ ุงูุฌุฏูุฏุฉ - ูุชุงุจุฉ ุชุนุฏุงุฏ ุงูุนูุงุตุฑ ูู ุงููุงุฆู
ุฉ ุนูู ุงูููุฑ. , work, it - .
list.forEach { work(it * 2) }
. , . , Google, , ArrayList for 3 , . .
, ArrayList, โ foreach.
inline fun <reified T> List<T>.foreach(crossinline action: (T) -> Unit): Unit { val size = size var i = 0 while (i < size) { action(get(i)) i++ } } list.foreach { }
API, - . , Kotlin: extension , ยซยป, reified, .. , , , crossinline. , , . 3 , Android Google.
RANGES
Ranges.
inline fun <reified T> List<T>.foreach(crossinline action: (T) -> Unit): Unit { val size = size for(i in 0..size) { work(i * 2) } }
: Unit -. โ1, until , , . , , ranges. ุนูู ุณุจูู ุงูู
ุซุงู , . step. .
INTRINSICS
- Intrinsics, :
class Test { fun concat(first: String, second: String) = "$first $second" }
Intrinsics โ second, first.
public final class Test { @NotNull public final String concat(@NotNull String first, @NotNull String second) { Intrinsics.checkParameterIsNotNull(first, "first"); Intrinsics.checkParameterIsNotNull(second, "second"); return first + " " + second; } }
, gradle. , - 4 , . Kotlin UI, , nullable, Kotlin :
kotlinc -Xno-call-assertions -Xno-param-assertions Test.ktIntrinsics, , .
, , . โ Xno-param-assertions โ Intrinsics, .
, , , , , . , , , .
REDEX
, , , Proguard. , 99% , , . Android 8.0 , . , .
, Proguard, Facebook,
Redex . -, , . , Jvm Fields , .
, Redex . , , , Proguard, , . Redex 7% APK. , .
BENCHMARKS
. , , .
, . , dumpsys gfxinfo , . github
github.com/smred .
, Huawei.

. โ , . , , 0,04 . , , โ , .

Kotlin, . , , . - , Kotlin , Java. , , , , . .

, , , , Kotlin Java. , - , , , , , .

, : - Kotlin , .. . , . - - โ 2 , Galaxy S6, .

Google Pixel. , 0,1 .
, , ,
- UI custom view.
- onmeasure-onlayout-ondraw. autoboxing, not null ..
- Kotlin, Java , .
- โ .
, , . , , , , Kotlin, . , Kotlin .
, .
brand new AppsConf , Android . , . , 8 9 .