Size: a a a

2019 January 20

DP

Dumitru Preguza in Kotlin Moscow
Ⓢⓔⓡⓖ
Если предложишь способ написания на TornadoFX для Web (HTML 5), это будет очень круто
Посмотри KVision там тоже красивые билдеры для построения UI
источник

Ⓢⓔⓡⓖ in Kotlin Moscow
Dumitru Preguza
Посмотри KVision там тоже красивые билдеры для построения UI
Не хочу смотреть. Хочу чтобы кто-нибудь рассказал о нём на митапе
источник

DP

Dumitru Preguza in Kotlin Moscow
Я никогда не видел его в широком обсуждении но очень бы хотел
источник

DP

Dumitru Preguza in Kotlin Moscow
Автор сказал что сделает фичи под Ktor, ему понравилось то что он на корутинах.
Пока там есть Jooby, spring-boot фичи из коробки
источник

AN

Alexander Nozik in Kotlin Moscow
В последний раз, когда я смотрел KVision он был довольно кривой. Может с тех пор починился.
источник

DP

Dumitru Preguza in Kotlin Moscow
Да я видел ваши комментарии про билдеры
источник

AN

Alexander Nozik in Kotlin Moscow
А я даже не помню, чего я там писал
источник

DP

Dumitru Preguza in Kotlin Moscow
Типо посмотрите на tornadoFx :v
источник

AN

Alexander Nozik in Kotlin Moscow
а
источник

AN

Alexander Nozik in Kotlin Moscow
Скорее на торнаду
источник

AN

Alexander Nozik in Kotlin Moscow
Вообще торнадовские билдеры теоретически можно оторавать от javafx. Другое дело, надо ли это кому. Вот Грифон не взлетел, насколько я понял
источник
2019 January 21

I

Ilmir in Kotlin Moscow
> Несколько вопросов по корутинам. Обсудим?

> Q1. Как связаны понятия - нативный поток (поток операционной системы), легковесный поток и корутины?
Сразу с козырей зашли.
Сразу из головы я могу вспомнить несколько схожих понятий: корутина, копрограмма, лекговесный поток, зеленый поток, файбер, горутина, горрутина и т.д. Я их для себя никак не разграничиваю и называю одним словом - "корутина". Ее отличие от тредов в том, что корутиновый шедулер находится за пределами ядра ОС.
Корутины делятся на тех, что имеют стек и тех, кто его не имеет - stackful & stackless coroutines. В котлине корутины stackless, а в loom - stackful.
Все "зеленые" и "легкие" треды - stackful корутины. ЕМНИП, файберы тоже относятся к ним.
Еще одно отличие корутин от тредов в том, что у них _обычно_ многозадачность кооперативная, то есть они сами говорят шедулеру, что можно запустить на этом же потоке другую корутину (например, через функцию yield()), тогда как у тредов она вытесняющая.

> Q2. Могут ли несколько корутин выполняться внутри одного нативного потока?
Только если по очереди.
Корутины соотносятся с тредами так же, как и потоки с ядрами процессора (без гипертрединга). В один момент времени на одном треде может быть запущена только одна корутина.

> Q3. Могут ли несколько корутин выполняться в разных нативных потоках?
Да.

> Q4. Как правильно называется, когда корутина останавливает свою работу - сон, остановка, пауза (sleeping, suspending, pause)?
Я привык придерживаться suspend/resume. Вики со мной согласна: https://en.wikipedia.org/wiki/Coroutine

> Q5. Как корутина понимает, что сейчас время её для остановки/для возобновления?
Для suspend'а надо ей явно об этом сказать (suspendCoroutine), а resume делается рантаймом/шедулером.

> Q6. Чем отличаются диспетчеры для IO и для UI , и каковы рекомендации или противопоказания для их использования?
Из документации:
IO: The [CoroutineDispatcher] that is designed for offloading blocking IO tasks to a shared pool of threads.
Main (UI): A coroutine dispatcher that is confined to the Main thread operating with UI objects. Usually such dispatcher is single-threaded.

Если надо что-то отрисовать, то без IO вы получите ошибку. С другой стороны, блокировать UI тред - не очень хорошая идея. Поэтому блокирующие IO операции (типа чтения из БД) лучше вынести в IO.

> Q7. Каковы отличия корутин от аналогичных понятий в других языках программирования (C#, JS-генераторы)?
Принципиальных отличий котлиновских suspend функций от async функций в других языках нет. Про генераторы я отошлю к вики: https://en.wikipedia.org/wiki/Coroutine#Comparison_with_generators

> Q8. Поддерживат ли Kotlin Native корутины?
Да.
источник

N

Nikolay in Kotlin Moscow
Можно пример корутины ?
источник

I

Ilmir in Kotlin Moscow
suspend fun main() {}
источник

N

Nikolay in Kotlin Moscow
А когда она проснется ? Сразу после начала выполнения она заснёт ?
источник

I

Ilmir in Kotlin Moscow
Она запустится и сразу завершится и спать не будет.
источник

N

Nikolay in Kotlin Moscow
А в чем тогда корутиность тут ?
источник

VS

Vladimir Sitnikov in Kotlin Moscow
Nikolay
Можно пример корутины ?
https://github.com/Kotlin/kotlinx.coroutines/blob/master/docs/basics.md#your-first-coroutine

Нормальные примеры там.

fun main() {
   GlobalScope.launch { // launch new coroutine in background and continue
    // Вот она, корутина моей мечты!!! Корутина!! КО-РУ-ТИ-НА!
       delay(1000L) // non-blocking delay for 1 second (default time unit is ms)
       println("World!") // print after delay
   }
   println("Hello,") // main thread continues while coroutine is delayed
   Thread.sleep(2000L) // block main thread for 2 seconds to keep JVM alive
}


И смысл в том, что delay(1000L) не блокирует поток — в этот момент он переключается на другую корутину (если она есть)
источник
2019 January 23

AN

Alexander Nozik in Kotlin Moscow
Я еще сюда не кидал http://npm.mipt.ru/pages/kotlin.html ?
источник

AL

Alexander Larin in Kotlin Moscow
а можете продублировать ссылку, которую на митапе приводили. она была на одном из последних сайтов, тоже c mipt
источник