Встреча JUG.ru c Романом Елизаровым - Kotlin: Асинхронное программирование с корутинами (часть 2)
ฝัง
- เผยแพร่เมื่อ 26 ธ.ค. 2017
- Ближайшая конференция - Joker 2024, 9 октября (Online), 15-16 октября (Санкт-Петербург + трансляция).
Подробности и билеты: jrg.su/Ypf1HW
- -
. . . . Первая часть: • Встреча JUG.ru c Роман...
Kotlin революционизирует асинхронное программирование. В версии 1.1 в языке появились корутины - это свежий, отличный от других языков подход к проблеме написания асинхронного кода. Мы посмотрим на этот механизм как сверху (чем он отличается от традиционных подходов таких как callbacks, futures, и async/await), так и изнутри - как всё это устроено.
Кроме того, код на Kotlin можно компилировать под JVM и запускать бок о бок с Java кодом. Несмотря на то, что в Java не предполагается ничего для работы с асинхронностью на уровне языка, а все решения сосередоточены в библиотеках и подразумевают превращение любой нетривиальной асинхронной бизнес-логики в месиво замыкаканий и вызовов различных комбинаторов, корутины Котлина можно интегрировать и с асинхронным кодом на Java, что мы увидим на примерах. - วิทยาศาสตร์และเทคโนโลยี
Такой шаблон очень просто позволяет нам с любым сторонним фьюче заинтегрироваться.
То есть просто поэтому у нас в самой библиотеке есть какие то интеграции из коробки.
Ну как из стандартной библиотеки… в коде у нас есть модули которые интегрируют интегрируют её с популярными фьючерсами, а с компьютерами с jdk8, c guava’ой с project reactor’ом 1 и 2 версии более популярными библиотеками интеграцию мы сделали, а вот. При этом библиотека Open source поэтому есть какая-то библиотека про которую мы забыли, а вы её очень любите, поэтому А) вы её можете сами написать интеграцию, поэтому здесь 10 строчек кода, эта ваша приватная библиотека, а если какая то sorce библиотека там учат чат вы её видите то можете подключать в эту библиотеку и другие люди смогут воспользоваться, да. Хоть и десять строчек кода, но удобно написали dependence и всё, и оно работает. К тому же, там, эта интеграция легко пишется к плюс интеграция с какой нибудь другой библиотекой guava поэтому получается библиотека получается с вашей любимой фьючей, которой вы пользуетесь в своей legacy коде, вот. А ещё у нас, собственно, кроме усройств рутины всё это интегрировать осталось рутиной контекст. Мы видели его, вот в прошлой части что я могу сказать что ланчу ай, а что такое coroutine и что он в «кортюэйшене» cortiation в параметрах рутиный контекст.
Крутиный контекст это такая штука которая позволяет нам в первую очередь, но не в последнию очередь контролировать на какой среде краутина посыпается потому что вот ка мы сделали пост например после этого у нас идёт локальный процессинг, я об этом уже говорил. И этот локальный процесс где будет вызван? А не понятно где потому что это будет зависить от того где call back будет вызван где-то там внутри. Потому что что у нас с салли происходит. Мы вот там где то внутри мы на самом деле ретрофитно делали вызов и сделали вейт на этом вызове, а ретрофит он свой call back вызвал на каком то потоке, который одному ретрофиту известен, что за потом который вызывает call back.
Хахах.
про "кишочки" всего этого дела?
поток сознания.
да, поток сознания у вас знатный получился.