JVM BloggersJVM Bloggers aggregated feed. You can customize your rss results by using parameters `limit` and 'excludedAuthors` (comma delimited names) parameters. Example: http://jvm-bloggers.com/pl/rss?limit=5&excludedAuthors=Tomasz Dziurko Adam WarskiJVM Bloggers2024-03-19T05:45:21Z2024-03-19T05:45:21ZJava 22 i najlepsza zmiana: współbieżne zbieracze w strumieniachPiotr Przybyłqy82aay2024-03-18T14:00:00Z2024-03-18T14:00:00Z<p>Java 22 zostanie wydana jutro. W tej wersji jest wiele super rzeczy. Podejrzewam, że korzystanie z wywołań rodzimych/zewnętrznych w projekcie Panama sprawi, że życie wielu osób stanie się łatwiejsze, jak również trwające zmiany we współbieżności, szablonach napisów i wreszcie możliwość wywołania czegoś przed <code>super</code>. Super! Jednak jest jedna rzecz, która podejrzewam stanie się moim (prawie) ukrytym bohaterem Javy 22. Ludziska, przedstawiam wam <code>Gatherers.mapConcurrent</code>!</p>
<h3 id="strumienie-są-bohaterem-javy-8-ale-nie-w-świecie-równoległym">Strumienie są bohaterem Javy 8 (ale nie w świecie równoległym)</h3>
<p>Java 8 była dużym kamieniem milowym w rewolucji Javy w swoim czasie. Pamiętam atmosferę po stosunkowo niewielkim wydaniu Javy 7, wersja 8 była NAPRAWDĘ WIELKA. Wprowadzenie lambd pozwoliło Stream API na istnienie w Javie 8 (bez krwawiących oczu, oczywiście). Moim zdaniem skierowało to Javę w stronę deklaratywnego i funkcyjnego sposobu myślenia o przetwarzaniu danych: zamiast pętli z pośrednimi wywołaniami i pakowania wyników w pojedynczy obiekt, mogliśmy wreszcie wyrazić intencję w bardziej deklaratywny sposób.</p>
<p>API strumieni miało moim zdaniem co najmniej dwie większe wady w momencie wprowadzenia, skutecznie uniemożliwiając jego użycie w wielu krytycznych scenariuszach przetwarzania danych.</p>
<h4 id="rozszerzaj-ale-tylko-raz">Rozszerzaj, ale tylko raz</h4>
<p>W bardzo uproszczony sposób cykl życia strumienia można było streścić w ten sposób:</p>
<ul>
<li>utworzenie strumienia</li>
<li>szereg operacji pośrednich, takich jak <code>filter</code>, <code>map</code> lub <code>flatMap</code> (lub <code>peek</code>, ale to było tylko do debugowania, prawda? PRAWDA???)</li>
<li>pojedyncze wywołanie, aby zebrać wyniki.</li>
</ul>
<p>Zacznijmy od końca: kolektory (ang. <em>collectors</em>). Jeśli nie byliśmy zadowoleni z prostego <code>joining</code>, <code>reduce</code> czy podobnych, można było sięgnąć po jeszcze prostsze <code>toList</code> (od Javy 16, jeśli dobrze pamiętam), lub <code>teeing</code> (od Javy 12), jeśli trzeba było przekazać obiekty do dwóch lub więcej kolektorów. Lub jeśli istniały naprawdę wymyślne potrzeby, można było ujawnić wszystkie mroczne moce, które zdobyliśmy na “Wprowadzeniu do SQLa” i skomponować kolektory za pomocą <code>mapping</code>, <code>filtering</code>, <code>groupingBy</code>, <code>partitioningBy</code>, <code>collectingAndThen</code>, itp., itp.</p>
<p>Jeśli to ciągle nie wystarczało, mogliśmy napisać swój własny kolektor. I to pierwsze ograniczenie: to było, o ile mi wiadomo, jedyne miejsce rozszerzeń w StreamAPI. Jeśli potrzebowaliśmy czegoś specjalnego, musieliśmy albo wprowadzić dziwne struktury danych pośrednich do obsługi tego w operacjach pośrednich (szukaj “ciekawych” przykładów w <a href="https://openjdk.org/jeps/461">JEP 461</a>), albo de facto odkładać to do fazy zbierania. Co było dość dziwne, ponieważ niweczyło to cały cel wyrażania kroków przetwarzania danych za pomocą operacji pośrednich przed krokiem kolekcji. Lub mogliśmy to zrobić w pętli, w dobrym, starym stylu imperatywnym.</p>
<h4 id="gdzie-są-moje-rdzenie">Gdzie są moje rdzenie?</h4>
<p>Masz więc 8 rdzeni w swoim komputerze. I, powiedzmy, 64 elementy w swoim strumieniu. Zatem dochodzisz do wniosku, że ustawienie strumienia jako <code>.parallel()</code> może sprawić, że cała operacja na strumieniu będzie w niektórych przypadkach około 8 razy szybsza. Nawet zweryfikowałeś/aś to w <code>jshell</code>, i tak, 8 razy szybsza, więc szybko kopiuj-wklej w wielu miejscach, i możemy <code>git push --force</code> ;-)</p>
<p>A potem wszyscy odkryliśmy, że (prawie) wszystkie wątki w strumieniach równoległych pochodzą z tej samego puli. A co gorsza, że są blokowane przez IO. (A tutaj pomijamy całą historię stosu reaktywnego i świętych wojen między reakcjonistami a wyznawcami wątków wirtualnych. Dziś nie mam nastroju na świętą wojnę, przepraszam.)</p>
<p>Z tych i innych powodów w przeszłości zwykliśmy przełączać się na stos reaktywny, aby mieć nieblokujące przetwar...Piotr Przybył2024-03-18T14:00:00ZPrzepisujemy moduł w systemie. Odc. 5. Twórz język, nie słownikMichał Bartyzel3hMejf42024-03-17T06:00:00Z2024-03-17T06:00:00Z<p>This is post 5 of 5 in the series “Przepisujemy moduł w systemie” Przepisujemy moduł w systemie odc. 1 Przepisujemy moduł w systemie odc. 2 Przepisujemy moduł w systemie odc. 3 Przepisujemy moduł w systemie. Odc. 4.: porządkowanie Przepisujemy moduł w systemie. Odc. 5. Twórz język, nie słownik Przypominam, że prowadzisz warsztat Event Storming i […]</p>
<p>Artykuł <a href="https://www.michalbartyzel.pl/przepisujemy-modul-w-systemie-odc-5-tworz-jezyk-nie-slownik/">Przepisujemy moduł w systemie. Odc. 5. Twórz język, nie słownik</a> pochodzi z serwisu <a href="https://www.michalbartyzel.pl">IT spotyka klienta</a>.</p>Michał Bartyzel2024-03-17T06:00:00ZJava Development with Odo on Podman, Kubernetes and OpenShiftPiotr MińkowskiFlXAh9h2024-03-15T10:11:57Z2024-03-15T10:11:57Z<p>In this article, you will learn how to develop and deploy Java apps on Podman, Kubernetes, and OpenShift with odo. Odo is a fast and iterative CLI tool for developers who want to write, build, and deploy applications on Kubernetes-native environments. Thanks to odo you can focus on the most important aspect of programming – […]</p>
<p>The post <a href="https://piotrminkowski.com/2024/03/15/java-development-with-odo-on-podman-kubernetes-and-openshift/">Java Development with Odo on Podman, Kubernetes and OpenShift</a> appeared first on <a href="https://piotrminkowski.com">Piotr's TechBlog</a>.</p>Piotr Mińkowski2024-03-15T10:11:57ZLink Dump #130Sebastian Malaca06aDyn42024-03-15T09:00:00Z2024-03-15T09:00:00ZSebastian Malaca2024-03-15T09:00:00Z216. W kierunku blokujących strumieni - Adam WarskiWrocław JUGSIgrSdJ2024-03-14T17:00:44Z2024-03-14T17:00:44ZWrocław JUG2024-03-14T17:00:44Z216. Mikrousługi w praktyce: sukcesy i porażki - Rafał MaciakWrocław JUGScV5yZg2024-03-14T17:00:20Z2024-03-14T17:00:20ZWrocław JUG2024-03-14T17:00:20ZImplementing cloud VPN solution using AWS, Linux and WireGuardScalaCIXZRmT92024-03-14T16:55:09Z2024-03-14T16:55:09Z<p>What is a VPN, and why is it important? A Virtual Private Network, or VPN in short, is a tunnel which handles all the internet data sent and received between Point A (typically an end-user) and Point B (application, server, or another end-user). This is done with security and privacy in mind, because it effectively […]</p>
<p>The post <a href="https://scalac.io/blog/implementing-cloud-vpn-solution-using-aws-linux-and-wireguard/">Implementing cloud VPN solution using AWS, Linux and WireGuard</a> appeared first on <a href="https://scalac.io">Scalac - Software Development Company - Akka, Kafka, Spark, ZIO</a>.</p>ScalaC2024-03-14T16:55:09ZMonica McGuigan - My Scala StorySoftwareMillklQ2zwI2024-03-14T16:30:00Z2024-03-14T16:30:00Z<img alt="" src="https://softwaremill.com/images/k/m/o/6/y/kmo6ym5oqfki3he-eec27cfb.jpg?g-b993ddb9" />
<p>Scala experts share their Scala Stories to celebrate the 20th anniversary of Scala in 2024. Meet Monica McGuigan, and follow her on <a href="https://www.linkedin.com/in/monica-mcguigan/">LinkedIn</a>.</p>
<h2>How did you first get introduced to Scala, and what did you think about it?</h2>
<p>I started properly learning Scala in 2022 when I joined my current team for my first developer job out of university. My experience in software before this was C#, C++, and some front-end technologies. So, switching to the world of functional programming was <em>not</em> without its challenges.</p>
<p>Initially, I found the learning curve pretty steep; there was a huge amount to understand and a lot of confusing concepts to take on board pretty quickly. Slowly but surely, I started to get my head around writing Scala code, and haven’t looked back since!</p>
<h2>How has Scala influenced your approach to solving programming problems?</h2>
<p>I would say the main influence on how I problem-solve would have to be Scalas’ type system. Being able to rely on it so consistently, in my experience, has been great. For example, when you’re pattern matching, you know with its exhaustivity that you are covering all bases. This is in stark contrast to my front-end experience in JavaScript, where you just had to hope what you were writing was correct, and you’d find out at runtime whether or not that's true. Having compile-time confidence in your code is far more enjoyable.</p>
<p>Learning Scala has been my first interaction with FP, so I can definitely see where the influence of this paradigm on how I write code comes from. It feels very natural to decompose problems into discrete functions you chain together, with an emphasis on what the input and output types are. </p>
<p>I also like how Scala isn’t strictly a pure functional language, and when you need to use imperative techniques, it’s flexible enough to allow you to, e.g., using local mutability when it makes the most sense to do so. </p>
<h2>What is your favourite programming meme?</h2>
<p><img title="Zrzut%20ekranu%202024-03-14%20o%2016.27.35" alt="Zrzut%20ekranu%202024-03-14%20o%2016.27.35" src="/user/pages/blog/132.monica-mcguigan-my-scala-story/Zrzut%20ekranu%202024-03-14%20o%2016.27.35.png?g-b993ddb9"></p>
<h4><a href="https://9gag.com">Image source</a></h4>
<p>I mean, this really says it all...</p>
<h2>What are your go-to tools and libraries when working as a software developer?</h2>
<p>For development, I use IntelliJ with SBT. </p>
<p>Something so simple yet so helpful that I’ve come to rely on are the context actions. The two I use the most are the <em>type hints</em> and the <em>collection inspections</em>.</p>
<p>Specifically, when I’m working with chaining lots of functions together, getting type hints helps to keep me sane and focused on the problem. Then, I find it incredibly helpful getting suggestions for writing more readable and idiomatic code from the collection inspections, especially as I’m refactoring code that is a little messy from the process of being written. </p>
<p>And then for libraries, my team mostly uses the Typelevel ecosystem: including Cats, Cats-Effect and Http4s.</p>
<h2>How has the Scala community impacted your programming journey? Any standout interactions or support stories to share?</h2>
<p>The impact of the Scala community on my learning journey so far cannot be overstated. From the very first few...</p>SoftwareMill2024-03-14T16:30:00ZWhite House recommends using memory-secure languages, including Java - JVM Weekly vol. 75VivedtZRcCom2024-03-14T14:01:21Z2024-03-14T14:01:21ZToday we have security themes native to the US, a continuation (and probably already a summary) of the 1BRC theme and an interesting case from Netflix.Vived2024-03-14T14:01:21ZGeeCON Prague 2023: Bogomil Shopov - Where Did All the Fun Go?GeeCON0TTRQem2024-03-14T10:52:33Z2024-03-14T10:52:33ZGeeCON2024-03-14T10:52:33Z