Wybór języka

Value Based Classes

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:

  • Pattern Matching for switch,
  • Record Patterns,
  • Virtual Threads,
  • Simple Web server,
  • co wyleciało i wyleci,
  • i innych.

Dużo rzeczy pokazane w kodzie, nie tylko na slajdach.

Java jest naprawdę świetna, gdy trzeba napisać program “Hello, World!” Jest również genialna dla wyrafinowanych systemów i algorytmów, pod warunkiem, że ich autorzy piszą kod, który przestrzega kilku dość prostych umów i unika oczywistych pułapek.

Istnieje kilka mantr dotyczących najnowszych cech współczesnej Javy, takich jak:

  • rekordy mogą wszędzie zastąpić JavaBeans
  • nigdy nie musisz pisać hashCode() dla rekordów
  • dopasowanie wzorca za pomocą instanceof jest najlepszym narzędziem dla equals()
  • po prostu zignoruj --illegal-access lub ustaw go na permit
  • synchronize (new Long(42)) jest najlepsze dla monitorowania i tak dalej.

Do tej pory prezentacja pojawiła się w trakcie jLove, Doing Java Better oraz Java Day Lviv.

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. Była mowa o:

  • –illegal-access=deny,
  • Sealed Classes,
  • dopasowaniu wzorców w switch,
  • z czym się żegnamy i z czym będziemy się żegnać,
  • i innych.

Dużo rzeczy pokazane w kodzie, nie tylko na slajdach.

Wiele zmian, które obserwujemy w kolejnych wydaniach Javy (jeśli nie większość z nich), powstaje w ramach projektów grupujących / parasolowych. Często widzimy usprawnienia składni z projektu Amber, projekt Jigsaw przyniósł nam moduły, projekt Loom (uwaga, niespodzianka!) zajmuje się wątkami, projekt Panama, gerenalnie rzecz biorąc, jest o wydajnym i bezpiecznym wykorzystaniu metalu pod spodem. Spośród tych najbardziej znanych, projekt Valhalla też zaczyna do nas docierać, dzięki wydaniu JEPa-390 w ramach Javy 16.

Minęło kolejne pół roku, kolejne wydanie nowej wersji Javy™ za nami. 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:

  • Rekordach: gdzie i jak ich użyć (poza DTO/VO)
  • dopasowaniu do wzorca z instanceof (zwane również smart casting)
  • klasach zapieczętowanych (czyli nowym wymiarze widoczności typów)
  • ostrzeżeniach z projektu Jigsaw (–illegal-access kontratakuje!)
  • i Valhalla (przy złym wykorzystaniu value-based classes)
  • komunikacji z pamięcią natywną z projektu Panama
  • i innych.

Dużo rzeczy pokazane w kodzie, nie tylko na slajdach.

Wybór języka