{"id":16436,"date":"2023-07-12T12:37:40","date_gmt":"2023-07-12T10:37:40","guid":{"rendered":"https:\/\/vived.io\/?p=16436"},"modified":"2023-07-12T12:37:45","modified_gmt":"2023-07-12T10:37:45","slug":"the-great-kotlin-week-1-9-notebook-mongodb-driver-oraz-wsparcie-dla-edukacji-jvm-weekly-vol-142","status":"publish","type":"post","link":"https:\/\/vived.io\/pl\/the-great-kotlin-week-1-9-notebook-mongodb-driver-oraz-wsparcie-dla-edukacji-jvm-weekly-vol-142\/","title":{"rendered":"The Great Kotlin Week: 1.9, Notebook, MongoDB Driver oraz wsparcie dla edukacji &#8211; JVM Weekly vol. 142"},"content":{"rendered":"\n<h2 id=\"1-premiera-kotlin-1-9\" data-num=1>1. Premiera Kotlin 1.9<\/h2>\n\n\n\n<p>Zacznijmy od najwi\u0119kszego og\u0142oszenia &#8211; <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2023\/07\/kotlin-1-9-0-released\/\">ukaza\u0142 si\u0119 bowiem<\/a> Kotlin 1.9.0 oferuj\u0105cy poza nowymi funkcjami znaczne ulepszenia dla nowego kompilatora K2.<\/p>\n\n\n\n<p>Kompilator K2 dla JVM wyszd\u0142 z fazy alfa do fazy beta, wchodzi wi\u0119c w faz\u0119 finalnych test\u00f3w przed wersj\u0105 Kotlin 2.0 &#8211; tw\u00f3rcy zach\u0119caj\u0105 do testowania w\u0142asnych build\u00f3w Warto jednak zauwa\u017cy\u0107, \u017ce przy u\u017cyciu kompilatora K2 z wtyczk\u0105 procesora adnotacji <strong>kapt<\/strong>, mimo ustawienia <code>languageVersion<\/code> na 2.0, <strong>kapt<\/strong> b\u0119dzie nadal korzysta\u0107 ze starego kompilatora, automatycznie prze\u0142\u0105czaj\u0105c si\u0119 na 1.9 i wy\u0142\u0105czy niekt\u00f3re kontrole kompatybilno\u015bci wersji. Kontrole te s\u0105 wy\u0142\u0105czane tylko dla zada\u0144 <strong>kapt<\/strong>, podczas gdy wszystkie inne zadania kompilacji nadal korzystaj\u0105 z nowego kompilatora K2.<\/p>\n\n\n\n<p>Aby zacz\u0105\u0107 eksperymentowa\u0107 z kompilatorem K2 w swoim projekcie, najlepiej ustawi\u0107 properties Gradle <code>kotlin.experimental.tryK2=true<\/code>, a ca\u0142o\u015b\u0107 komendy <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.\/gradlew assemble -Pkotlin.experimental.tryK2=true<\/code><\/pre>\n\n\n\n<p>Ta nie tylko ustawia wersj\u0119 j\u0119zyka na 2.0, ale aktualizuje r\u00f3wnie\u017c dane wynikowe kompilacji, daj\u0105c dost\u0119p do informacji, gdzie realnie uda\u0142o si\u0119 u\u017cy\u0107 K2.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>Poza sam\u0105 K2, jedn\u0105 z najwa\u017cniejszych zmian jest znaczne zmniejszenie rozmiaru kompilacji WebAssembly; podstawowy przyk\u0142ad Hello World w WebAssembly zajmuje rzekomo dziesi\u0119\u0107 razy mniej miejsca ni\u017c w Kotlin 1.8.20. A jak ju\u017c mowa o WebAssembly, Kotlin 1.9.0 znacznie poprawia interoperacyjno\u015b\u0107 WASM JavaScript, zach\u0119caj\u0105c do przej\u015bcia z typu Dynamic na JsAny. Je\u015bli chcecie spr\u00f3bowa\u0107 jak to wszystko dzia\u0142a w praktyce, <a href=\"https:\/\/play.kotlinlang.org\/\">Kotlin Playground<\/a> umo\u017cliwia za\u015b teraz testowanie kompilacji WebAssembly r\u00f3wnie\u017c online.<\/p>\n\n\n\n<p>W samym j\u0119zyku pojawi\u0142o si\u0119 r\u00f3wnie\u017c kilka zmian, z kt\u00f3rych najwi\u0119ksza to chyba stabilizacja propertiesa <code>.entries<\/code> dost\u0119pnego teraz dla enum\u00f3w jako bardziej wydajna alternatywa dla metody <code>.values()<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>enum class Color(val colorName: String, val rgb: String) {\n    RED(&quot;Red&quot;, &quot;#FF0000&quot;),\n    ORANGE(&quot;Orange&quot;, &quot;#FF7F00&quot;),\n    YELLOW(&quot;Yellow&quot;, &quot;#FFFF00&quot;)\n}\n\nfun findByRgb(rgb: String): Color? = Color.entries.find { it.rgb == rgb }<\/code><\/pre>\n\n\n\n<p>Wszystkie zmiany jak zwykle znajdziecie <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2023\/07\/kotlin-1-9-0-released\/\">w oryginalnym og\u0142oszeniu<\/a> oraz towarzysz\u0105cym mu jak zawsze video:<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<div class=\"embed-responsive embed-responsive-16by9\"><iframe loading=\"lazy\" title=\"What&#039;s new in Kotlin 1.9.0\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/fvwTZc-dxsM?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/div>\n<\/div><\/figure>\n\n\n\n<h2 id=\"2-premiera-kotlin-notebook\" data-num=2>2. Premiera Kotlin Notebook<\/h2>\n\n\n\n<p>Na pocz\u0105tku odrobina teorii dla tych, co nie mieli okazji pracowa\u0107 z zespo\u0142ami DataScience, kt\u00f3re temat maj\u0105 zwykle najbardziej obcykany &#8211; Notatniki programistyczne s\u0105 narz\u0119dziami, kt\u00f3re pozwalaj\u0105 na \u0142\u0105czenie kodu, wizualizacji i opisowego tekstu w jednym, \u017cywym dokumencie. S\u0105 u\u017cywane g\u0142\u00f3wnie do eksploracji danych, notatniki tworz\u0105 interaktywne \u015brodowisko programowania, w kt\u00f3rym programi\u015bci mog\u0105 szybko prototypowa\u0107 sw\u00f3j kod i na bie\u017c\u0105co widzie\u0107 wyniki, przeplataj\u0105c go tekstowymi adnotacjami i wizualizacjami, aby dokumentowa\u0107 sw\u00f3j proces my\u015blowy. Najpopularniejszym rozwi\u0105zaniem tego typu jest Jupyter Notebook, ale z r\u00f3\u017cnych stron wyrasta mu konkurencja &#8211; r\u00f3wnie\u017c z tych nieco mniej oczekiwanych.<\/p>\n\n\n\n<p>KotlinConf przynios\u0142o bowiem og\u0142oszenie wtyczki Kotlin Notebook dla IntelliJ IDEA. W zesz\u0142ym tygodniu dosz\u0142o za\u015b do oficjalnej premiery. Zalet\u0105 nad Jupyterem (przynajmniej z perspektywy fan\u00f3w Intellij) jest bardzo mocna integracja z IDE, przy r\u00f3wnoczesnej kompatybilno\u015bci z \u015brodowiskiem Jupytera, dzi\u0119ki wsparciu dla standardowego dla niego formatu plik\u00f3w <code>.ipynb<\/code>, co umo\u017cliwia natywnym wsparciem renderowania na platformach takich jak GitHub czy Datalore JetBrains. Ponad standardowe mo\u017cliwo\u015bci jakie daj\u0105 Notebooki, wtyczka u\u0142atwia korzystanie z zale\u017cno\u015bci, oferuj\u0105c wiele sposob\u00f3w na do\u0142\u0105czanie zewn\u0119trznych bibliotek do projektu za pomoc\u0105 dyrektywy <code>%use<\/code>.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"360\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/07\/Untitled.gif\" alt=\"\" class=\"wp-image-16444\"\/><figcaption class=\"wp-element-caption\">Tak to mniej wi\u0119cej prezentuje si\u0119 w praktyce<\/figcaption><\/figure><\/div>\n\n\n<p>Sam bawi\u0142em si\u0119 rozwi\u0105zaniem wczoraj i musz\u0105 przyzna\u0107, \u017ce maj\u0105c historycznie do\u015bwiadczenie z Notebookami bardzo doceniam rozwi\u0105zanie Kotlina. Wszystko wydaje si\u0119 dzia\u0142a\u0107 out-of-the-box, a ca\u0142o\u015b\u0107 opiera si\u0119 na udost\u0119pniony otwarcie <a href=\"https:\/\/github.com\/Kotlin\/kotlin-jupyter\">Kotlin Kernel<\/a>, kt\u00f3rego mo\u017cna u\u017cywa\u0107 r\u00f3wnie\u017c ze zwyk\u0142ym Jupyterem. Nie mamy wi\u0119c do czynienia z niestety do\u015b\u0107 popularnym w \u015bwiecie Kotlina Vendor Lock-inem.<\/p>\n\n\n\n<p>Jak ca\u0142o\u015b\u0107 prezentuje si\u0119 w akcji dobrze pokazuje towarzysz\u0105ce premierze wideo:<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<div class=\"embed-responsive embed-responsive-16by9\"><iframe loading=\"lazy\" title=\"Introducing Kotlin Notebook\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/2PLYlDJPelQ?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/div>\n<\/div><\/figure>\n\n\n\n<h2 id=\"3-zestaw-oficjalnych-kotlinowych-edukacyjnych-materialow\" data-num=3>3. Zestaw oficjalnych Kotlinowych edukacyjnych materia\u0142\u00f3w<\/h2>\n\n\n\n<p>Edukacja jest wa\u017cna. Du\u017co m\u00f3wi si\u0119 o tym, \u017ce piractwo Windows pomog\u0142o Microsoftowi zdominowa\u0107 rynek komputer\u00f3w osobistych, uzale\u017cniaj\u0105c ludzi od swojego systemu ju\u017c na wczesnym etapie pracy z komputerami, a darmowe oprogramowanie Autodesk dla student\u00f3w studi\u00f3w in\u017cynierskich pomog\u0142o uczyni\u0107 z ich rozwi\u0105za\u0144 standard. Tak samo zesp\u00f3\u0142 Kotlina od samego pocz\u0105tku stawia na edukacj\u0119, dostarczaj\u0105c edukatorom odpowiednich narz\u0119dzi i zasob\u00f3w do kszta\u0142cenia nowej fali programist\u00f3w Kotlin, walcz\u0105c z wyzwaniem (nie problemem!) jajka i kury. <\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"364\" height=\"1024\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/07\/image-6-364x1024.png\" alt=\"\" class=\"wp-image-16447\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/07\/image-6-364x1024.png 364w, https:\/\/vived.io\/wp-content\/uploads\/2023\/07\/image-6-107x300.png 107w, https:\/\/vived.io\/wp-content\/uploads\/2023\/07\/image-6.png 500w\" sizes=\"auto, (max-width: 364px) 100vw, 364px\" \/><figcaption class=\"wp-element-caption\">Im wi\u0119cej bowiem programist\u00f3w na rynku (wi\u0119c te\u017c mo\u017cliwo\u015bci budowania zespo\u0142\u00f3w), tym wi\u0119ksza ch\u0119\u0107 na inwestowanie projekty w Kotlinie.<\/figcaption><\/figure><\/div>\n\n\n<p>Istotnym elementem tej inicjatywy jest zestaw materia\u0142\u00f3w zebranych w bezp\u0142atny, semestralny program nauczania <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2023\/07\/teach-kotlin-with-our-new-course\/\">&#8222;Programming in Kotlin&#8221;<\/a>, kt\u00f3ry jest prawdziwym skarbcem wiedzy i \u0107wicze\u0144, opracowany pono\u0107 przez zesp\u00f3\u0142 ekspert\u00f3w przez prawie rok. Kurs pokrywa wszystko, od podstaw Kotlin, po zaawansowane koncepcje takie jak programowanie r\u00f3wnoleg\u0142e, asynchroniczne i testowanie. Co wi\u0119cej, materia\u0142y maj\u0105 by\u0107 aktualizowane i dostosowywane do ewolucji Kotlin, odpada wi\u0119c potrzeba maintenance, a wi\u0119c i ryzyka, \u017ce kto\u015b b\u0119dzie uczy\u0107 jakiej\u015b prehistorycznej wersji j\u0119zyka.<\/p>\n\n\n\n<p>Przyznam, \u017ce w przesz\u0142o\u015bci sam kiedy\u015b chcia\u0142em stworzy\u0107 warsztat lub kurs na temat Kotlin na potrzeby ko\u0142a naukowego z mojej Alma Mater, ale b\u0105d\u017amy szczerzy, to jest du\u017co pracy i ca\u0142o\u015b\u0107 rozbi\u0142a si\u0119 o d\u0142ugo\u015b\u0107 doby &#8211; w ko\u0144cu kurs od JetBrains tworzony by\u0142 pono\u0107 przez rok. Teraz, z tymi oficjalnymi zasobami, mam wra\u017cenie, \u017ce ca\u0142a inicjatywa mog\u0142aby by\u0107 du\u017co prostsza.<\/p>\n\n\n\n<h2 id=\"oficjalny-kotlinowy-sterownik-do-mongodb\" data-num=4>Oficjalny Kotlinowy sterownik do MongoDB<\/h2>\n\n\n\n<p>Ale \u017ceby nie by\u0142o, \u017ce tylko przepisuje Feed JetBrains, na ko\u0144cu jeszcze jedna ma\u0142a pere\u0142ka spoza g\u0142\u00f3wnego offeringu tw\u00f3rc\u00f3w Kotlina. MongoDB og\u0142osi\u0142o bowiem wydanie ich <a href=\"https:\/\/www.mongodb.com\/blog\/post\/mongodb-releases-server-side-kotlin-driver\">w\u0142asnego, oficjalnego sterownika do Kotlina<\/a>.<\/p>\n\n\n\n<p>Z jednej strony to nie jest tak, \u017ce nowe rozwi\u0105zanie otwiera drzwi przed jakimi\u015b nowymi typami aplikacji, bo mo\u017cliwo\u015b\u0107 u\u017cywania MongoDB w Kotlinowych aplikacjach by\u0142o zawsze (o kilku alternatywach zreszt\u0105 za chwil\u0119). Jednocze\u015bnie jednak, Kotlin jest j\u0119zykiem na tyle odmiennym od Javy, \u017ce u\u017cywanie rozwi\u0105za\u0144 przygotowanych dla takowej zawsze wi\u0105\u017ce si\u0119 z poczuciem pewnego &#8222;efektu Frankensteina&#8221;.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"500\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/07\/download.png\" alt=\"\" class=\"wp-image-16452\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/07\/download.png 500w, https:\/\/vived.io\/wp-content\/uploads\/2023\/07\/download-300x300.png 300w, https:\/\/vived.io\/wp-content\/uploads\/2023\/07\/download-150x150.png 150w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/figure><\/div>\n\n\n<p>Sterownik dla Kotlina umo\u017cliwia bowiem np. u\u017cycie Data Class przy zwrotkach obiekt\u00f3w z MongoDB, kluczow\u0105 cech\u0105 nowego sterownika jest te\u017c kompleksowa obs\u0142uga <code>kotlinx.serialization<\/code> i serializera <code>bson-kotlinx<\/code>, a tak\u017ce Korutyn &#8211; w przypadku tych ostatnich jednak trzeba uwa\u017ca\u0107, bo jednak wsp\u00f3\u0142bie\u017cno\u015b\u0107 nie za bardzo lubi si\u0119 z bazami danych. Przegl\u0105daj\u0105c dokumentacje projektu, jest w nim ca\u0142kiem sporo asynchronicznych wywo\u0142a\u0144:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>wszelkie warianty <code>collect<\/code>,<\/li>\n\n\n\n<li>wszystkie operacje w klasie <code>MongoCollection<\/code>, wi\u0119c CRUDy oraz Bulk CRUDy<\/li>\n\n\n\n<li><code>startSession<\/code>, <code>abortTransaction()<\/code> i <code>commitTransaction()<\/code><\/li>\n<\/ul>\n\n\n\n<p>i kilka innych.<\/p>\n\n\n\n<p>Zanim zako\u0144czymy, dla por\u00f3wnania warto wspomnie\u0107 o alternatywnych rozwi\u0105zaniach, takich jak KMongo (do\u015b\u0107 popularny nieoficjalny kotlinowy wrapper nad javowy sterownik) oraz oczywi\u015bcie oficjalny sterownik Java MongoDB. KMongo zapewnia obs\u0142ug\u0119 korutyn oraz posiada DSL do obs\u0142ugi MongoDB idiomatyczny dla Kotlina, ale jako biblioteka third-party nie raz pozostawa\u0142 (i chyba nawet teraz pozostaje) w tyle za nowymi mo\u017cliwo\u015bciami MongoDB. Sterownik Java MongoDB oferuje obszern\u0105 dokumentacj\u0119 i wi\u0119ksz\u0105 baz\u0119 u\u017cytkownik\u00f3w, ale on znowu nie zapewnia API idiomatycznego dla Kotlin. Dlatego te\u017c nie zdziwi\u0119 si\u0119, je\u015bli migracja do oficjalnego sterownika wyl\u0105duje na niejednym backlogu tech-debtowym.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/07\/5qbo2ck1jd981.jpg\" alt=\"\" width=\"525\" height=\"525\"\/><figcaption class=\"wp-element-caption\">Oby nie na &#8222;wieczny backlog&#8221;<\/figcaption><\/figure><\/div>","protected":false},"excerpt":{"rendered":"<p>Obsypa\u0142o nam w zesz\u0142ym tygodniu Kotlinowymi nowo\u015bciami, dlatego w tym tygodniu mamy edycje po\u015bwi\u0119con\u0105 temu j\u0119zykowi.<\/p>\n","protected":false},"author":10,"featured_media":16438,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[23],"tags":[],"class_list":["post-16436","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-jvm"],"acf":{"estimated_reading_time":"6","feature_image_blog":false,"weekly_summary":true,"push_notification_image":"https:\/\/vived.io\/wp-content\/uploads\/2023\/07\/JVM-Weekly-1200x628_V2-4.png","feature_image_visible":false},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>The Great Kotlin Week: 1.9, Notebook, MongoDB Driver oraz wsparcie dla edukacji - JVM Weekly vol. 142 - Vived<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/vived.io\/pl\/the-great-kotlin-week-1-9-notebook-mongodb-driver-oraz-wsparcie-dla-edukacji-jvm-weekly-vol-142\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"The Great Kotlin Week: 1.9, Notebook, MongoDB Driver oraz wsparcie dla edukacji - JVM Weekly vol. 142 - Vived\" \/>\n<meta property=\"og:description\" content=\"Obsypa\u0142o nam w zesz\u0142ym tygodniu Kotlinowymi nowo\u015bciami, dlatego w tym tygodniu mamy edycje po\u015bwi\u0119con\u0105 temu j\u0119zykowi.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vived.io\/pl\/the-great-kotlin-week-1-9-notebook-mongodb-driver-oraz-wsparcie-dla-edukacji-jvm-weekly-vol-142\/\" \/>\n<meta property=\"og:site_name\" content=\"Vived\" \/>\n<meta property=\"article:published_time\" content=\"2023-07-12T10:37:40+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-07-12T10:37:45+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/07\/JVM-Weekly-1200x628_V2-3.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Artur Skowro\u0144ski\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/vived.io\/pl\/the-great-kotlin-week-1-9-notebook-mongodb-driver-oraz-wsparcie-dla-edukacji-jvm-weekly-vol-142\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/the-great-kotlin-week-1-9-notebook-mongodb-driver-oraz-wsparcie-dla-edukacji-jvm-weekly-vol-142\/\"},\"author\":{\"name\":\"Artur Skowro\u0144ski\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3\"},\"headline\":\"The Great Kotlin Week: 1.9, Notebook, MongoDB Driver oraz wsparcie dla edukacji &#8211; JVM Weekly vol. 142\",\"datePublished\":\"2023-07-12T10:37:40+00:00\",\"dateModified\":\"2023-07-12T10:37:45+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/the-great-kotlin-week-1-9-notebook-mongodb-driver-oraz-wsparcie-dla-edukacji-jvm-weekly-vol-142\/\"},\"wordCount\":1212,\"publisher\":{\"@id\":\"https:\/\/vived.io\/pl\/#organization\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/the-great-kotlin-week-1-9-notebook-mongodb-driver-oraz-wsparcie-dla-edukacji-jvm-weekly-vol-142\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2023\/07\/JVM-Weekly-1200x628_V2-3.png\",\"articleSection\":[\"JVM\"],\"inLanguage\":\"pl-PL\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/vived.io\/pl\/the-great-kotlin-week-1-9-notebook-mongodb-driver-oraz-wsparcie-dla-edukacji-jvm-weekly-vol-142\/\",\"url\":\"https:\/\/vived.io\/pl\/the-great-kotlin-week-1-9-notebook-mongodb-driver-oraz-wsparcie-dla-edukacji-jvm-weekly-vol-142\/\",\"name\":\"The Great Kotlin Week: 1.9, Notebook, MongoDB Driver oraz wsparcie dla edukacji - JVM Weekly vol. 142 - Vived\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/the-great-kotlin-week-1-9-notebook-mongodb-driver-oraz-wsparcie-dla-edukacji-jvm-weekly-vol-142\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/the-great-kotlin-week-1-9-notebook-mongodb-driver-oraz-wsparcie-dla-edukacji-jvm-weekly-vol-142\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2023\/07\/JVM-Weekly-1200x628_V2-3.png\",\"datePublished\":\"2023-07-12T10:37:40+00:00\",\"dateModified\":\"2023-07-12T10:37:45+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/vived.io\/pl\/the-great-kotlin-week-1-9-notebook-mongodb-driver-oraz-wsparcie-dla-edukacji-jvm-weekly-vol-142\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/vived.io\/pl\/the-great-kotlin-week-1-9-notebook-mongodb-driver-oraz-wsparcie-dla-edukacji-jvm-weekly-vol-142\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/the-great-kotlin-week-1-9-notebook-mongodb-driver-oraz-wsparcie-dla-edukacji-jvm-weekly-vol-142\/#primaryimage\",\"url\":\"https:\/\/vived.io\/wp-content\/uploads\/2023\/07\/JVM-Weekly-1200x628_V2-3.png\",\"contentUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2023\/07\/JVM-Weekly-1200x628_V2-3.png\",\"width\":1200,\"height\":628},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/vived.io\/pl\/the-great-kotlin-week-1-9-notebook-mongodb-driver-oraz-wsparcie-dla-edukacji-jvm-weekly-vol-142\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\/\/vived.io\/pl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"The Great Kotlin Week: 1.9, Notebook, MongoDB Driver oraz wsparcie dla edukacji &#8211; JVM Weekly vol. 142\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/vived.io\/pl\/#website\",\"url\":\"https:\/\/vived.io\/pl\/\",\"name\":\"Vived\",\"description\":\"platform empowering IT people and technology companies to synergic growth\",\"publisher\":{\"@id\":\"https:\/\/vived.io\/pl\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/vived.io\/pl\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pl-PL\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/vived.io\/pl\/#organization\",\"name\":\"Vived\",\"url\":\"https:\/\/vived.io\/pl\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png\",\"contentUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png\",\"width\":136,\"height\":45,\"caption\":\"Vived\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3\",\"name\":\"Artur Skowro\u0144ski\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/29055786486c8b9dc1507f2744221c5bdb8d7ef6e6217ced0326dd3296aea6ed?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/29055786486c8b9dc1507f2744221c5bdb8d7ef6e6217ced0326dd3296aea6ed?s=96&d=mm&r=g\",\"caption\":\"Artur Skowro\u0144ski\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"The Great Kotlin Week: 1.9, Notebook, MongoDB Driver oraz wsparcie dla edukacji - JVM Weekly vol. 142 - Vived","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/vived.io\/pl\/the-great-kotlin-week-1-9-notebook-mongodb-driver-oraz-wsparcie-dla-edukacji-jvm-weekly-vol-142\/","og_locale":"pl_PL","og_type":"article","og_title":"The Great Kotlin Week: 1.9, Notebook, MongoDB Driver oraz wsparcie dla edukacji - JVM Weekly vol. 142 - Vived","og_description":"Obsypa\u0142o nam w zesz\u0142ym tygodniu Kotlinowymi nowo\u015bciami, dlatego w tym tygodniu mamy edycje po\u015bwi\u0119con\u0105 temu j\u0119zykowi.","og_url":"https:\/\/vived.io\/pl\/the-great-kotlin-week-1-9-notebook-mongodb-driver-oraz-wsparcie-dla-edukacji-jvm-weekly-vol-142\/","og_site_name":"Vived","article_published_time":"2023-07-12T10:37:40+00:00","article_modified_time":"2023-07-12T10:37:45+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/vived.io\/wp-content\/uploads\/2023\/07\/JVM-Weekly-1200x628_V2-3.png","type":"image\/png"}],"author":"Artur Skowro\u0144ski","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/vived.io\/pl\/the-great-kotlin-week-1-9-notebook-mongodb-driver-oraz-wsparcie-dla-edukacji-jvm-weekly-vol-142\/#article","isPartOf":{"@id":"https:\/\/vived.io\/pl\/the-great-kotlin-week-1-9-notebook-mongodb-driver-oraz-wsparcie-dla-edukacji-jvm-weekly-vol-142\/"},"author":{"name":"Artur Skowro\u0144ski","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3"},"headline":"The Great Kotlin Week: 1.9, Notebook, MongoDB Driver oraz wsparcie dla edukacji &#8211; JVM Weekly vol. 142","datePublished":"2023-07-12T10:37:40+00:00","dateModified":"2023-07-12T10:37:45+00:00","mainEntityOfPage":{"@id":"https:\/\/vived.io\/pl\/the-great-kotlin-week-1-9-notebook-mongodb-driver-oraz-wsparcie-dla-edukacji-jvm-weekly-vol-142\/"},"wordCount":1212,"publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"image":{"@id":"https:\/\/vived.io\/pl\/the-great-kotlin-week-1-9-notebook-mongodb-driver-oraz-wsparcie-dla-edukacji-jvm-weekly-vol-142\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2023\/07\/JVM-Weekly-1200x628_V2-3.png","articleSection":["JVM"],"inLanguage":"pl-PL"},{"@type":"WebPage","@id":"https:\/\/vived.io\/pl\/the-great-kotlin-week-1-9-notebook-mongodb-driver-oraz-wsparcie-dla-edukacji-jvm-weekly-vol-142\/","url":"https:\/\/vived.io\/pl\/the-great-kotlin-week-1-9-notebook-mongodb-driver-oraz-wsparcie-dla-edukacji-jvm-weekly-vol-142\/","name":"The Great Kotlin Week: 1.9, Notebook, MongoDB Driver oraz wsparcie dla edukacji - JVM Weekly vol. 142 - Vived","isPartOf":{"@id":"https:\/\/vived.io\/pl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vived.io\/pl\/the-great-kotlin-week-1-9-notebook-mongodb-driver-oraz-wsparcie-dla-edukacji-jvm-weekly-vol-142\/#primaryimage"},"image":{"@id":"https:\/\/vived.io\/pl\/the-great-kotlin-week-1-9-notebook-mongodb-driver-oraz-wsparcie-dla-edukacji-jvm-weekly-vol-142\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2023\/07\/JVM-Weekly-1200x628_V2-3.png","datePublished":"2023-07-12T10:37:40+00:00","dateModified":"2023-07-12T10:37:45+00:00","breadcrumb":{"@id":"https:\/\/vived.io\/pl\/the-great-kotlin-week-1-9-notebook-mongodb-driver-oraz-wsparcie-dla-edukacji-jvm-weekly-vol-142\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vived.io\/pl\/the-great-kotlin-week-1-9-notebook-mongodb-driver-oraz-wsparcie-dla-edukacji-jvm-weekly-vol-142\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/the-great-kotlin-week-1-9-notebook-mongodb-driver-oraz-wsparcie-dla-edukacji-jvm-weekly-vol-142\/#primaryimage","url":"https:\/\/vived.io\/wp-content\/uploads\/2023\/07\/JVM-Weekly-1200x628_V2-3.png","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2023\/07\/JVM-Weekly-1200x628_V2-3.png","width":1200,"height":628},{"@type":"BreadcrumbList","@id":"https:\/\/vived.io\/pl\/the-great-kotlin-week-1-9-notebook-mongodb-driver-oraz-wsparcie-dla-edukacji-jvm-weekly-vol-142\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/vived.io\/pl\/"},{"@type":"ListItem","position":2,"name":"The Great Kotlin Week: 1.9, Notebook, MongoDB Driver oraz wsparcie dla edukacji &#8211; JVM Weekly vol. 142"}]},{"@type":"WebSite","@id":"https:\/\/vived.io\/pl\/#website","url":"https:\/\/vived.io\/pl\/","name":"Vived","description":"platform empowering IT people and technology companies to synergic growth","publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vived.io\/pl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pl-PL"},{"@type":"Organization","@id":"https:\/\/vived.io\/pl\/#organization","name":"Vived","url":"https:\/\/vived.io\/pl\/","logo":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/","url":"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png","width":136,"height":45,"caption":"Vived"},"image":{"@id":"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3","name":"Artur Skowro\u0144ski","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/29055786486c8b9dc1507f2744221c5bdb8d7ef6e6217ced0326dd3296aea6ed?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/29055786486c8b9dc1507f2744221c5bdb8d7ef6e6217ced0326dd3296aea6ed?s=96&d=mm&r=g","caption":"Artur Skowro\u0144ski"}}]}},"blocks_vived":[{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2 class=\"wp-block-heading\">1. Premiera Kotlin 1.9<\/h2>\n","innerContent":["\n<h2 class=\"wp-block-heading\">1. Premiera Kotlin 1.9<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Zacznijmy od najwi\u0119kszego og\u0142oszenia - <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2023\/07\/kotlin-1-9-0-released\/\">ukaza\u0142 si\u0119 bowiem<\/a> Kotlin 1.9.0 oferuj\u0105cy poza nowymi funkcjami znaczne ulepszenia dla nowego kompilatora K2.<\/p>\n","innerContent":["\n<p>Zacznijmy od najwi\u0119kszego og\u0142oszenia - <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2023\/07\/kotlin-1-9-0-released\/\">ukaza\u0142 si\u0119 bowiem<\/a> Kotlin 1.9.0 oferuj\u0105cy poza nowymi funkcjami znaczne ulepszenia dla nowego kompilatora K2.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Kompilator K2 dla JVM wyszd\u0142 z fazy alfa do fazy beta, wchodzi wi\u0119c w faz\u0119 finalnych test\u00f3w przed wersj\u0105 Kotlin 2.0 - tw\u00f3rcy zach\u0119caj\u0105 do testowania w\u0142asnych build\u00f3w Warto jednak zauwa\u017cy\u0107, \u017ce przy u\u017cyciu kompilatora K2 z wtyczk\u0105 procesora adnotacji <strong>kapt<\/strong>, mimo ustawienia <code>languageVersion<\/code> na 2.0, <strong>kapt<\/strong> b\u0119dzie nadal korzysta\u0107 ze starego kompilatora, automatycznie prze\u0142\u0105czaj\u0105c si\u0119 na 1.9 i wy\u0142\u0105czy niekt\u00f3re kontrole kompatybilno\u015bci wersji. Kontrole te s\u0105 wy\u0142\u0105czane tylko dla zada\u0144 <strong>kapt<\/strong>, podczas gdy wszystkie inne zadania kompilacji nadal korzystaj\u0105 z nowego kompilatora K2.<\/p>\n","innerContent":["\n<p>Kompilator K2 dla JVM wyszd\u0142 z fazy alfa do fazy beta, wchodzi wi\u0119c w faz\u0119 finalnych test\u00f3w przed wersj\u0105 Kotlin 2.0 - tw\u00f3rcy zach\u0119caj\u0105 do testowania w\u0142asnych build\u00f3w Warto jednak zauwa\u017cy\u0107, \u017ce przy u\u017cyciu kompilatora K2 z wtyczk\u0105 procesora adnotacji <strong>kapt<\/strong>, mimo ustawienia <code>languageVersion<\/code> na 2.0, <strong>kapt<\/strong> b\u0119dzie nadal korzysta\u0107 ze starego kompilatora, automatycznie prze\u0142\u0105czaj\u0105c si\u0119 na 1.9 i wy\u0142\u0105czy niekt\u00f3re kontrole kompatybilno\u015bci wersji. Kontrole te s\u0105 wy\u0142\u0105czane tylko dla zada\u0144 <strong>kapt<\/strong>, podczas gdy wszystkie inne zadania kompilacji nadal korzystaj\u0105 z nowego kompilatora K2.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Aby zacz\u0105\u0107 eksperymentowa\u0107 z kompilatorem K2 w swoim projekcie, najlepiej ustawi\u0107 properties Gradle <code>kotlin.experimental.tryK2=true<\/code>, a ca\u0142o\u015b\u0107 komendy <\/p>\n","innerContent":["\n<p>Aby zacz\u0105\u0107 eksperymentowa\u0107 z kompilatorem K2 w swoim projekcie, najlepiej ustawi\u0107 properties Gradle <code>kotlin.experimental.tryK2=true<\/code>, a ca\u0142o\u015b\u0107 komendy <\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/code","attrs":[],"innerBlocks":[],"innerHTML":"\n<pre class=\"wp-block-code\"><code>.\/gradlew assemble -Pkotlin.experimental.tryK2=true<\/code><\/pre>\n","innerContent":["\n<pre class=\"wp-block-code\"><code>.\/gradlew assemble -Pkotlin.experimental.tryK2=true<\/code><\/pre>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Ta nie tylko ustawia wersj\u0119 j\u0119zyka na 2.0, ale aktualizuje r\u00f3wnie\u017c dane wynikowe kompilacji, daj\u0105c dost\u0119p do informacji, gdzie realnie uda\u0142o si\u0119 u\u017cy\u0107 K2.<\/p>\n","innerContent":["\n<p>Ta nie tylko ustawia wersj\u0119 j\u0119zyka na 2.0, ale aktualizuje r\u00f3wnie\u017c dane wynikowe kompilacji, daj\u0105c dost\u0119p do informacji, gdzie realnie uda\u0142o si\u0119 u\u017cy\u0107 K2.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p><\/p>\n","innerContent":["\n<p><\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Poza sam\u0105 K2, jedn\u0105 z najwa\u017cniejszych zmian jest znaczne zmniejszenie rozmiaru kompilacji WebAssembly; podstawowy przyk\u0142ad Hello World w WebAssembly zajmuje rzekomo dziesi\u0119\u0107 razy mniej miejsca ni\u017c w Kotlin 1.8.20. A jak ju\u017c mowa o WebAssembly, Kotlin 1.9.0 znacznie poprawia interoperacyjno\u015b\u0107 WASM JavaScript, zach\u0119caj\u0105c do przej\u015bcia z typu Dynamic na JsAny. Je\u015bli chcecie spr\u00f3bowa\u0107 jak to wszystko dzia\u0142a w praktyce, <a href=\"https:\/\/play.kotlinlang.org\/\">Kotlin Playground<\/a> umo\u017cliwia za\u015b teraz testowanie kompilacji WebAssembly r\u00f3wnie\u017c online.<\/p>\n","innerContent":["\n<p>Poza sam\u0105 K2, jedn\u0105 z najwa\u017cniejszych zmian jest znaczne zmniejszenie rozmiaru kompilacji WebAssembly; podstawowy przyk\u0142ad Hello World w WebAssembly zajmuje rzekomo dziesi\u0119\u0107 razy mniej miejsca ni\u017c w Kotlin 1.8.20. A jak ju\u017c mowa o WebAssembly, Kotlin 1.9.0 znacznie poprawia interoperacyjno\u015b\u0107 WASM JavaScript, zach\u0119caj\u0105c do przej\u015bcia z typu Dynamic na JsAny. Je\u015bli chcecie spr\u00f3bowa\u0107 jak to wszystko dzia\u0142a w praktyce, <a href=\"https:\/\/play.kotlinlang.org\/\">Kotlin Playground<\/a> umo\u017cliwia za\u015b teraz testowanie kompilacji WebAssembly r\u00f3wnie\u017c online.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>W samym j\u0119zyku pojawi\u0142o si\u0119 r\u00f3wnie\u017c kilka zmian, z kt\u00f3rych najwi\u0119ksza to chyba stabilizacja propertiesa <code>.entries<\/code> dost\u0119pnego teraz dla enum\u00f3w jako bardziej wydajna alternatywa dla metody <code>.values()<\/code>:<\/p>\n","innerContent":["\n<p>W samym j\u0119zyku pojawi\u0142o si\u0119 r\u00f3wnie\u017c kilka zmian, z kt\u00f3rych najwi\u0119ksza to chyba stabilizacja propertiesa <code>.entries<\/code> dost\u0119pnego teraz dla enum\u00f3w jako bardziej wydajna alternatywa dla metody <code>.values()<\/code>:<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/code","attrs":[],"innerBlocks":[],"innerHTML":"\n<pre class=\"wp-block-code\"><code>enum class Color(val colorName: String, val rgb: String) {\n    RED(\"Red\", \"#FF0000\"),\n    ORANGE(\"Orange\", \"#FF7F00\"),\n    YELLOW(\"Yellow\", \"#FFFF00\")\n}\n\nfun findByRgb(rgb: String): Color? = Color.entries.find { it.rgb == rgb }<\/code><\/pre>\n","innerContent":["\n<pre class=\"wp-block-code\"><code>enum class Color(val colorName: String, val rgb: String) {\n    RED(\"Red\", \"#FF0000\"),\n    ORANGE(\"Orange\", \"#FF7F00\"),\n    YELLOW(\"Yellow\", \"#FFFF00\")\n}\n\nfun findByRgb(rgb: String): Color? = Color.entries.find { it.rgb == rgb }<\/code><\/pre>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Wszystkie zmiany jak zwykle znajdziecie <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2023\/07\/kotlin-1-9-0-released\/\">w oryginalnym og\u0142oszeniu<\/a> oraz towarzysz\u0105cym mu jak zawsze video:<\/p>\n","innerContent":["\n<p>Wszystkie zmiany jak zwykle znajdziecie <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2023\/07\/kotlin-1-9-0-released\/\">w oryginalnym og\u0142oszeniu<\/a> oraz towarzysz\u0105cym mu jak zawsze video:<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/embed","attrs":{"url":"https:\/\/www.youtube.com\/watch?v=fvwTZc-dxsM","type":"video","providerNameSlug":"youtube","responsive":true,"className":"wp-embed-aspect-16-9 wp-has-aspect-ratio"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\nhttps:\/\/www.youtube.com\/watch?v=fvwTZc-dxsM\n<\/div><\/figure>\n","innerContent":["\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\nhttps:\/\/www.youtube.com\/watch?v=fvwTZc-dxsM\n<\/div><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2 class=\"wp-block-heading\">2. Premiera Kotlin Notebook<\/h2>\n","innerContent":["\n<h2 class=\"wp-block-heading\">2. Premiera Kotlin Notebook<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Na pocz\u0105tku odrobina teorii dla tych, co nie mieli okazji pracowa\u0107 z zespo\u0142ami DataScience, kt\u00f3re temat maj\u0105 zwykle najbardziej obcykany - Notatniki programistyczne s\u0105 narz\u0119dziami, kt\u00f3re pozwalaj\u0105 na \u0142\u0105czenie kodu, wizualizacji i opisowego tekstu w jednym, \u017cywym dokumencie. S\u0105 u\u017cywane g\u0142\u00f3wnie do eksploracji danych, notatniki tworz\u0105 interaktywne \u015brodowisko programowania, w kt\u00f3rym programi\u015bci mog\u0105 szybko prototypowa\u0107 sw\u00f3j kod i na bie\u017c\u0105co widzie\u0107 wyniki, przeplataj\u0105c go tekstowymi adnotacjami i wizualizacjami, aby dokumentowa\u0107 sw\u00f3j proces my\u015blowy. Najpopularniejszym rozwi\u0105zaniem tego typu jest Jupyter Notebook, ale z r\u00f3\u017cnych stron wyrasta mu konkurencja - r\u00f3wnie\u017c z tych nieco mniej oczekiwanych.<\/p>\n","innerContent":["\n<p>Na pocz\u0105tku odrobina teorii dla tych, co nie mieli okazji pracowa\u0107 z zespo\u0142ami DataScience, kt\u00f3re temat maj\u0105 zwykle najbardziej obcykany - Notatniki programistyczne s\u0105 narz\u0119dziami, kt\u00f3re pozwalaj\u0105 na \u0142\u0105czenie kodu, wizualizacji i opisowego tekstu w jednym, \u017cywym dokumencie. S\u0105 u\u017cywane g\u0142\u00f3wnie do eksploracji danych, notatniki tworz\u0105 interaktywne \u015brodowisko programowania, w kt\u00f3rym programi\u015bci mog\u0105 szybko prototypowa\u0107 sw\u00f3j kod i na bie\u017c\u0105co widzie\u0107 wyniki, przeplataj\u0105c go tekstowymi adnotacjami i wizualizacjami, aby dokumentowa\u0107 sw\u00f3j proces my\u015blowy. Najpopularniejszym rozwi\u0105zaniem tego typu jest Jupyter Notebook, ale z r\u00f3\u017cnych stron wyrasta mu konkurencja - r\u00f3wnie\u017c z tych nieco mniej oczekiwanych.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>KotlinConf przynios\u0142o bowiem og\u0142oszenie wtyczki Kotlin Notebook dla IntelliJ IDEA. W zesz\u0142ym tygodniu dosz\u0142o za\u015b do oficjalnej premiery. Zalet\u0105 nad Jupyterem (przynajmniej z perspektywy fan\u00f3w Intellij) jest bardzo mocna integracja z IDE, przy r\u00f3wnoczesnej kompatybilno\u015bci z \u015brodowiskiem Jupytera, dzi\u0119ki wsparciu dla standardowego dla niego formatu plik\u00f3w <code>.ipynb<\/code>, co umo\u017cliwia natywnym wsparciem renderowania na platformach takich jak GitHub czy Datalore JetBrains. Ponad standardowe mo\u017cliwo\u015bci jakie daj\u0105 Notebooki, wtyczka u\u0142atwia korzystanie z zale\u017cno\u015bci, oferuj\u0105c wiele sposob\u00f3w na do\u0142\u0105czanie zewn\u0119trznych bibliotek do projektu za pomoc\u0105 dyrektywy <code>%use<\/code>.<\/p>\n","innerContent":["\n<p>KotlinConf przynios\u0142o bowiem og\u0142oszenie wtyczki Kotlin Notebook dla IntelliJ IDEA. W zesz\u0142ym tygodniu dosz\u0142o za\u015b do oficjalnej premiery. Zalet\u0105 nad Jupyterem (przynajmniej z perspektywy fan\u00f3w Intellij) jest bardzo mocna integracja z IDE, przy r\u00f3wnoczesnej kompatybilno\u015bci z \u015brodowiskiem Jupytera, dzi\u0119ki wsparciu dla standardowego dla niego formatu plik\u00f3w <code>.ipynb<\/code>, co umo\u017cliwia natywnym wsparciem renderowania na platformach takich jak GitHub czy Datalore JetBrains. Ponad standardowe mo\u017cliwo\u015bci jakie daj\u0105 Notebooki, wtyczka u\u0142atwia korzystanie z zale\u017cno\u015bci, oferuj\u0105c wiele sposob\u00f3w na do\u0142\u0105czanie zewn\u0119trznych bibliotek do projektu za pomoc\u0105 dyrektywy <code>%use<\/code>.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":16444,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/07\/Untitled.gif\" alt=\"\" class=\"wp-image-16444\"\/><figcaption class=\"wp-element-caption\">Tak to mniej wi\u0119cej prezentuje si\u0119 w praktyce<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/07\/Untitled.gif\" alt=\"\" class=\"wp-image-16444\"\/><figcaption class=\"wp-element-caption\">Tak to mniej wi\u0119cej prezentuje si\u0119 w praktyce<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Sam bawi\u0142em si\u0119 rozwi\u0105zaniem wczoraj i musz\u0105 przyzna\u0107, \u017ce maj\u0105c historycznie do\u015bwiadczenie z Notebookami bardzo doceniam rozwi\u0105zanie Kotlina. Wszystko wydaje si\u0119 dzia\u0142a\u0107 out-of-the-box, a ca\u0142o\u015b\u0107 opiera si\u0119 na udost\u0119pniony otwarcie <a href=\"https:\/\/github.com\/Kotlin\/kotlin-jupyter\">Kotlin Kernel<\/a>, kt\u00f3rego mo\u017cna u\u017cywa\u0107 r\u00f3wnie\u017c ze zwyk\u0142ym Jupyterem. Nie mamy wi\u0119c do czynienia z niestety do\u015b\u0107 popularnym w \u015bwiecie Kotlina Vendor Lock-inem.<\/p>\n","innerContent":["\n<p>Sam bawi\u0142em si\u0119 rozwi\u0105zaniem wczoraj i musz\u0105 przyzna\u0107, \u017ce maj\u0105c historycznie do\u015bwiadczenie z Notebookami bardzo doceniam rozwi\u0105zanie Kotlina. Wszystko wydaje si\u0119 dzia\u0142a\u0107 out-of-the-box, a ca\u0142o\u015b\u0107 opiera si\u0119 na udost\u0119pniony otwarcie <a href=\"https:\/\/github.com\/Kotlin\/kotlin-jupyter\">Kotlin Kernel<\/a>, kt\u00f3rego mo\u017cna u\u017cywa\u0107 r\u00f3wnie\u017c ze zwyk\u0142ym Jupyterem. Nie mamy wi\u0119c do czynienia z niestety do\u015b\u0107 popularnym w \u015bwiecie Kotlina Vendor Lock-inem.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Jak ca\u0142o\u015b\u0107 prezentuje si\u0119 w akcji dobrze pokazuje towarzysz\u0105ce premierze wideo:<\/p>\n","innerContent":["\n<p>Jak ca\u0142o\u015b\u0107 prezentuje si\u0119 w akcji dobrze pokazuje towarzysz\u0105ce premierze wideo:<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/embed","attrs":{"url":"https:\/\/www.youtube.com\/watch?v=2PLYlDJPelQ","type":"video","providerNameSlug":"youtube","responsive":true,"className":"wp-embed-aspect-16-9 wp-has-aspect-ratio"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\nhttps:\/\/www.youtube.com\/watch?v=2PLYlDJPelQ\n<\/div><\/figure>\n","innerContent":["\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\nhttps:\/\/www.youtube.com\/watch?v=2PLYlDJPelQ\n<\/div><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2 class=\"wp-block-heading\">3. Zestaw oficjalnych Kotlinowych edukacyjnych materia\u0142\u00f3w<\/h2>\n","innerContent":["\n<h2 class=\"wp-block-heading\">3. Zestaw oficjalnych Kotlinowych edukacyjnych materia\u0142\u00f3w<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Edukacja jest wa\u017cna. Du\u017co m\u00f3wi si\u0119 o tym, \u017ce piractwo Windows pomog\u0142o Microsoftowi zdominowa\u0107 rynek komputer\u00f3w osobistych, uzale\u017cniaj\u0105c ludzi od swojego systemu ju\u017c na wczesnym etapie pracy z komputerami, a darmowe oprogramowanie Autodesk dla student\u00f3w studi\u00f3w in\u017cynierskich pomog\u0142o uczyni\u0107 z ich rozwi\u0105za\u0144 standard. Tak samo zesp\u00f3\u0142 Kotlina od samego pocz\u0105tku stawia na edukacj\u0119, dostarczaj\u0105c edukatorom odpowiednich narz\u0119dzi i zasob\u00f3w do kszta\u0142cenia nowej fali programist\u00f3w Kotlin, walcz\u0105c z wyzwaniem (nie problemem!) jajka i kury. <\/p>\n","innerContent":["\n<p>Edukacja jest wa\u017cna. Du\u017co m\u00f3wi si\u0119 o tym, \u017ce piractwo Windows pomog\u0142o Microsoftowi zdominowa\u0107 rynek komputer\u00f3w osobistych, uzale\u017cniaj\u0105c ludzi od swojego systemu ju\u017c na wczesnym etapie pracy z komputerami, a darmowe oprogramowanie Autodesk dla student\u00f3w studi\u00f3w in\u017cynierskich pomog\u0142o uczyni\u0107 z ich rozwi\u0105za\u0144 standard. Tak samo zesp\u00f3\u0142 Kotlina od samego pocz\u0105tku stawia na edukacj\u0119, dostarczaj\u0105c edukatorom odpowiednich narz\u0119dzi i zasob\u00f3w do kszta\u0142cenia nowej fali programist\u00f3w Kotlin, walcz\u0105c z wyzwaniem (nie problemem!) jajka i kury. <\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":16447,"sizeSlug":"large","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-large\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/07\/image-6-364x1024.png\" alt=\"\" class=\"wp-image-16447\"\/><figcaption class=\"wp-element-caption\">Im wi\u0119cej bowiem programist\u00f3w na rynku (wi\u0119c te\u017c mo\u017cliwo\u015bci budowania zespo\u0142\u00f3w), tym wi\u0119ksza ch\u0119\u0107 na inwestowanie projekty w Kotlinie.<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-large\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/07\/image-6-364x1024.png\" alt=\"\" class=\"wp-image-16447\"\/><figcaption class=\"wp-element-caption\">Im wi\u0119cej bowiem programist\u00f3w na rynku (wi\u0119c te\u017c mo\u017cliwo\u015bci budowania zespo\u0142\u00f3w), tym wi\u0119ksza ch\u0119\u0107 na inwestowanie projekty w Kotlinie.<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Istotnym elementem tej inicjatywy jest zestaw materia\u0142\u00f3w zebranych w bezp\u0142atny, semestralny program nauczania <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2023\/07\/teach-kotlin-with-our-new-course\/\">\"Programming in Kotlin\"<\/a>, kt\u00f3ry jest prawdziwym skarbcem wiedzy i \u0107wicze\u0144, opracowany pono\u0107 przez zesp\u00f3\u0142 ekspert\u00f3w przez prawie rok. Kurs pokrywa wszystko, od podstaw Kotlin, po zaawansowane koncepcje takie jak programowanie r\u00f3wnoleg\u0142e, asynchroniczne i testowanie. Co wi\u0119cej, materia\u0142y maj\u0105 by\u0107 aktualizowane i dostosowywane do ewolucji Kotlin, odpada wi\u0119c potrzeba maintenance, a wi\u0119c i ryzyka, \u017ce kto\u015b b\u0119dzie uczy\u0107 jakiej\u015b prehistorycznej wersji j\u0119zyka.<\/p>\n","innerContent":["\n<p>Istotnym elementem tej inicjatywy jest zestaw materia\u0142\u00f3w zebranych w bezp\u0142atny, semestralny program nauczania <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2023\/07\/teach-kotlin-with-our-new-course\/\">\"Programming in Kotlin\"<\/a>, kt\u00f3ry jest prawdziwym skarbcem wiedzy i \u0107wicze\u0144, opracowany pono\u0107 przez zesp\u00f3\u0142 ekspert\u00f3w przez prawie rok. Kurs pokrywa wszystko, od podstaw Kotlin, po zaawansowane koncepcje takie jak programowanie r\u00f3wnoleg\u0142e, asynchroniczne i testowanie. Co wi\u0119cej, materia\u0142y maj\u0105 by\u0107 aktualizowane i dostosowywane do ewolucji Kotlin, odpada wi\u0119c potrzeba maintenance, a wi\u0119c i ryzyka, \u017ce kto\u015b b\u0119dzie uczy\u0107 jakiej\u015b prehistorycznej wersji j\u0119zyka.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Przyznam, \u017ce w przesz\u0142o\u015bci sam kiedy\u015b chcia\u0142em stworzy\u0107 warsztat lub kurs na temat Kotlin na potrzeby ko\u0142a naukowego z mojej Alma Mater, ale b\u0105d\u017amy szczerzy, to jest du\u017co pracy i ca\u0142o\u015b\u0107 rozbi\u0142a si\u0119 o d\u0142ugo\u015b\u0107 doby - w ko\u0144cu kurs od JetBrains tworzony by\u0142 pono\u0107 przez rok. Teraz, z tymi oficjalnymi zasobami, mam wra\u017cenie, \u017ce ca\u0142a inicjatywa mog\u0142aby by\u0107 du\u017co prostsza.<\/p>\n","innerContent":["\n<p>Przyznam, \u017ce w przesz\u0142o\u015bci sam kiedy\u015b chcia\u0142em stworzy\u0107 warsztat lub kurs na temat Kotlin na potrzeby ko\u0142a naukowego z mojej Alma Mater, ale b\u0105d\u017amy szczerzy, to jest du\u017co pracy i ca\u0142o\u015b\u0107 rozbi\u0142a si\u0119 o d\u0142ugo\u015b\u0107 doby - w ko\u0144cu kurs od JetBrains tworzony by\u0142 pono\u0107 przez rok. Teraz, z tymi oficjalnymi zasobami, mam wra\u017cenie, \u017ce ca\u0142a inicjatywa mog\u0142aby by\u0107 du\u017co prostsza.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2 class=\"wp-block-heading\">Oficjalny Kotlinowy sterownik do MongoDB<\/h2>\n","innerContent":["\n<h2 class=\"wp-block-heading\">Oficjalny Kotlinowy sterownik do MongoDB<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Ale \u017ceby nie by\u0142o, \u017ce tylko przepisuje Feed JetBrains, na ko\u0144cu jeszcze jedna ma\u0142a pere\u0142ka spoza g\u0142\u00f3wnego offeringu tw\u00f3rc\u00f3w Kotlina. MongoDB og\u0142osi\u0142o bowiem wydanie ich <a href=\"https:\/\/www.mongodb.com\/blog\/post\/mongodb-releases-server-side-kotlin-driver\">w\u0142asnego, oficjalnego sterownika do Kotlina<\/a>.<\/p>\n","innerContent":["\n<p>Ale \u017ceby nie by\u0142o, \u017ce tylko przepisuje Feed JetBrains, na ko\u0144cu jeszcze jedna ma\u0142a pere\u0142ka spoza g\u0142\u00f3wnego offeringu tw\u00f3rc\u00f3w Kotlina. MongoDB og\u0142osi\u0142o bowiem wydanie ich <a href=\"https:\/\/www.mongodb.com\/blog\/post\/mongodb-releases-server-side-kotlin-driver\">w\u0142asnego, oficjalnego sterownika do Kotlina<\/a>.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Z jednej strony to nie jest tak, \u017ce nowe rozwi\u0105zanie otwiera drzwi przed jakimi\u015b nowymi typami aplikacji, bo mo\u017cliwo\u015b\u0107 u\u017cywania MongoDB w Kotlinowych aplikacjach by\u0142o zawsze (o kilku alternatywach zreszt\u0105 za chwil\u0119). Jednocze\u015bnie jednak, Kotlin jest j\u0119zykiem na tyle odmiennym od Javy, \u017ce u\u017cywanie rozwi\u0105za\u0144 przygotowanych dla takowej zawsze wi\u0105\u017ce si\u0119 z poczuciem pewnego \"efektu Frankensteina\".<\/p>\n","innerContent":["\n<p>Z jednej strony to nie jest tak, \u017ce nowe rozwi\u0105zanie otwiera drzwi przed jakimi\u015b nowymi typami aplikacji, bo mo\u017cliwo\u015b\u0107 u\u017cywania MongoDB w Kotlinowych aplikacjach by\u0142o zawsze (o kilku alternatywach zreszt\u0105 za chwil\u0119). Jednocze\u015bnie jednak, Kotlin jest j\u0119zykiem na tyle odmiennym od Javy, \u017ce u\u017cywanie rozwi\u0105za\u0144 przygotowanych dla takowej zawsze wi\u0105\u017ce si\u0119 z poczuciem pewnego \"efektu Frankensteina\".<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":16452,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/07\/download.png\" alt=\"\" class=\"wp-image-16452\"\/><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/07\/download.png\" alt=\"\" class=\"wp-image-16452\"\/><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Sterownik dla Kotlina umo\u017cliwia bowiem np. u\u017cycie Data Class przy zwrotkach obiekt\u00f3w z MongoDB, kluczow\u0105 cech\u0105 nowego sterownika jest te\u017c kompleksowa obs\u0142uga <code>kotlinx.serialization<\/code> i serializera <code>bson-kotlinx<\/code>, a tak\u017ce Korutyn - w przypadku tych ostatnich jednak trzeba uwa\u017ca\u0107, bo jednak wsp\u00f3\u0142bie\u017cno\u015b\u0107 nie za bardzo lubi si\u0119 z bazami danych. Przegl\u0105daj\u0105c dokumentacje projektu, jest w nim ca\u0142kiem sporo asynchronicznych wywo\u0142a\u0144:<\/p>\n","innerContent":["\n<p>Sterownik dla Kotlina umo\u017cliwia bowiem np. u\u017cycie Data Class przy zwrotkach obiekt\u00f3w z MongoDB, kluczow\u0105 cech\u0105 nowego sterownika jest te\u017c kompleksowa obs\u0142uga <code>kotlinx.serialization<\/code> i serializera <code>bson-kotlinx<\/code>, a tak\u017ce Korutyn - w przypadku tych ostatnich jednak trzeba uwa\u017ca\u0107, bo jednak wsp\u00f3\u0142bie\u017cno\u015b\u0107 nie za bardzo lubi si\u0119 z bazami danych. Przegl\u0105daj\u0105c dokumentacje projektu, jest w nim ca\u0142kiem sporo asynchronicznych wywo\u0142a\u0144:<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/list","attrs":[],"innerBlocks":[{"blockName":"core\/list-item","attrs":[],"innerBlocks":[],"innerHTML":"\n<li>wszelkie warianty <code>collect<\/code>,<\/li>\n","innerContent":["\n<li>wszelkie warianty <code>collect<\/code>,<\/li>\n"]},{"blockName":"core\/list-item","attrs":[],"innerBlocks":[],"innerHTML":"\n<li>wszystkie operacje w klasie <code>MongoCollection<\/code>, wi\u0119c CRUDy oraz Bulk CRUDy<\/li>\n","innerContent":["\n<li>wszystkie operacje w klasie <code>MongoCollection<\/code>, wi\u0119c CRUDy oraz Bulk CRUDy<\/li>\n"]},{"blockName":"core\/list-item","attrs":[],"innerBlocks":[],"innerHTML":"\n<li><code>startSession<\/code>, <code>abortTransaction()<\/code> i <code>commitTransaction()<\/code><\/li>\n","innerContent":["\n<li><code>startSession<\/code>, <code>abortTransaction()<\/code> i <code>commitTransaction()<\/code><\/li>\n"]}],"innerHTML":"\n<ul>\n\n\n\n<\/ul>\n","innerContent":["\n<ul>",null,"\n\n",null,"\n\n",null,"<\/ul>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>i kilka innych.<\/p>\n","innerContent":["\n<p>i kilka innych.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Zanim zako\u0144czymy, dla por\u00f3wnania warto wspomnie\u0107 o alternatywnych rozwi\u0105zaniach, takich jak KMongo (do\u015b\u0107 popularny nieoficjalny kotlinowy wrapper nad javowy sterownik) oraz oczywi\u015bcie oficjalny sterownik Java MongoDB. KMongo zapewnia obs\u0142ug\u0119 korutyn oraz posiada DSL do obs\u0142ugi MongoDB idiomatyczny dla Kotlina, ale jako biblioteka third-party nie raz pozostawa\u0142 (i chyba nawet teraz pozostaje) w tyle za nowymi mo\u017cliwo\u015bciami MongoDB. Sterownik Java MongoDB oferuje obszern\u0105 dokumentacj\u0119 i wi\u0119ksz\u0105 baz\u0119 u\u017cytkownik\u00f3w, ale on znowu nie zapewnia API idiomatycznego dla Kotlin. Dlatego te\u017c nie zdziwi\u0119 si\u0119, je\u015bli migracja do oficjalnego sterownika wyl\u0105duje na niejednym backlogu tech-debtowym.<\/p>\n","innerContent":["\n<p>Zanim zako\u0144czymy, dla por\u00f3wnania warto wspomnie\u0107 o alternatywnych rozwi\u0105zaniach, takich jak KMongo (do\u015b\u0107 popularny nieoficjalny kotlinowy wrapper nad javowy sterownik) oraz oczywi\u015bcie oficjalny sterownik Java MongoDB. KMongo zapewnia obs\u0142ug\u0119 korutyn oraz posiada DSL do obs\u0142ugi MongoDB idiomatyczny dla Kotlina, ale jako biblioteka third-party nie raz pozostawa\u0142 (i chyba nawet teraz pozostaje) w tyle za nowymi mo\u017cliwo\u015bciami MongoDB. Sterownik Java MongoDB oferuje obszern\u0105 dokumentacj\u0119 i wi\u0119ksz\u0105 baz\u0119 u\u017cytkownik\u00f3w, ale on znowu nie zapewnia API idiomatycznego dla Kotlin. Dlatego te\u017c nie zdziwi\u0119 si\u0119, je\u015bli migracja do oficjalnego sterownika wyl\u0105duje na niejednym backlogu tech-debtowym.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","width":525,"height":525},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/07\/5qbo2ck1jd981.jpg\" alt=\"\" width=\"525\" height=\"525\"\/><figcaption class=\"wp-element-caption\">Oby nie na \"wieczny backlog\"<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/07\/5qbo2ck1jd981.jpg\" alt=\"\" width=\"525\" height=\"525\"\/><figcaption class=\"wp-element-caption\">Oby nie na \"wieczny backlog\"<\/figcaption><\/figure>\n"]}],"_links":{"self":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/16436","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/comments?post=16436"}],"version-history":[{"count":9,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/16436\/revisions"}],"predecessor-version":[{"id":16457,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/16436\/revisions\/16457"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media\/16438"}],"wp:attachment":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media?parent=16436"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/categories?post=16436"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/tags?post=16436"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}