Wybór języka

Java 16

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.
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!
W zeszłym roku poczyniłem dwa wpisy o torturowaniu rekordów w Javie Lombokiem. Na nasze (nie)szczęście (zależy, jak to widzisz), zespół Lomboka zdecydował się ukrócić nasze niecne zabawy. Jednakże nie składamy broni i tym razem idziemy po wzorzec budowniczego!
W dawnych mrocznych czasach musieliśmy czekać 3-4 lata, by zobaczyć nową wersję Javy ze zmianami w API, składni i JVM. Obecnie mamy dwa duże wydania każdego roku! Czy możemy korzystać z tych wydań przed pojawieniem się kolejnego LTSa? Chcesz wiedzieć, co się wydarzyło od czasu Javy 11? Rekordy? Wyrażenia switch? Pattern matching? Jakieś zmiany w NullPointerException? Nowe funkcje w API? O co chodzi z Shenandoah i ZGC? AppCDS, żeby przyspieszyć start?

Wybór języka