Wybór języka

Java 21

Poprzednio umieściłem na moim blogu dwa wpisy. Jeden dotyczył Java skryptów, drugi możliwości ich przenoszenia poprzez wykorzystanie shebang. O ile mogę stwierdzić, wszystko w tych dwóch częściach nadal jest aktualne, jednak teraz, w Javie 21, dzięki JEP-445, poprzednie dwa wpisy mogłyby być jeszcze bardziej zwięzłe. W tym wpisie spróbuję opisać najpierw zmiany wprowadzone przez ten JEP, a następnie zajmę się bardziej szczegółowo tym, w jaki sposób mają się do “skryptów w Javie”.
Jak napisałem w moim poprzednim wpisie, miałem problemy z uruchomieniem kodu wykorzystującego JEP 443 przy użyciu narzędzi takich jak Maven, Gradle czy IntelliJ IDEA. Dzięki jedynemu i niezastąpionemu Tagirowi Waljejewowi, rozwiązanie jest dość proste. Zaktualizuj JDK do 21.0.1. I to by było na tyle ;-) Nie ma potrzeby tykania niczego innego. Jeśli masz ochotę na więcej wyjaśnień, proszę rzuć okiem na ten wątek na Twitterze. I wszyscy będziemy pamiętać, że aktualizacja to dobra rzecz, bo przecież nie zostaniemy na zawsze przy Javie 8, prawda?
Update Sprawa została rozwiązana, polecam przeczytać wpis z rozwiązaniem. Notatka: Poniżej pozostawiam oryginalny wpis na wypadek, gdyby ktoś jednak napotkał w przyszłości podobny problem. Czasem łatwiej szukać po problemie ;-) Podczas przygotowywania demek do wykładu co tam w Javie 21 piszczy dla zaprzyjaźnionych JUGów, natknąłem się na ciekawy przypadek JEP 443: Unnamed Patterns and Variables (Preview). Udało się go wydestylować i zreplikować. Przygotowywałem prosty przykład dla tego JEPa. Jest on oczywiście bardzo przydatny (JEP, przykład mniej) i na pewno poprawi możliwości Javy do wyróżniania się w scenariuszach programowania zorientowanych na przetważanie na danych.
Java™ 21 is real now. And so are virtual threads. Everyone got excited about them, yet you prefer to keep your Java 8 job forever, and you already have a nice plan to “accidentally” derail the migration to 21 by using virtual threads in a very, very unfortunate way. What a pity… So you decided to come for this talk to look for some inspiration ;-) Okay, please join us to learn how NOT to use virtual threads, and see the potential performance pitfalls of using them the wrong way.
Minęło kolejne pół roku, pora na wdrożenie kolejnej wersji Javy™ na produkcji. Tym razem na pewno, bo to w końcu LTS. ;-) Zdaniem wielu “Java jest wolna”. Okazuje się, że rozwój Javy jest tak “wolny”, że kolejne wydania nie są tylko podbiciem wersji, bo mogą znacząco zmieniać reguły gry. To dobry powód na kolejny deep dive w Javie. Będzie mowa o: Virtual Threads, Pattern Matching for switch, Record Patterns, Structured Concurrency, String Templates, korzystaniu z rzeczy natywnych, co wyleciało i wyleci, i innych.
Pozwólcie mi rozpocząć ten wpis od suchara. Jedzie sobie elektron na motorze. Nagle zatrzymuje go policjant i mówi: “Musiałem Pana zatrzymać, bo przekroczył Pan znacznie prędkość, jadąc dokładnie 178 i pół kilometra na godzinę.” “No WIELKIE DZIĘKI, panie policjancie. To teraz kompletnie nie wiem, gdzie jestem!” Niektóre suchary są niesamowicie słabe, więc nie martw się, jeśli ten Cię nie rozbawił. Ten sprowadza się to do zasady nieoznaczoności. W niezwykle uproszczonym ujęciu: niektóre rzeczy we wszechświecie nie mogą być obserwowane we wszystkich swoich aspektach.

Wybór języka