Mentionsy
Stacja.IT Podcast 057 Mateusz Kamiński - Czy Java może być wydajna?
W nowym odcinku podcastu Stacji.IT rozmawiamy o języku Java, który jest jednym z najpopularniejszych języków programowania.
Gościem odcinka jest Mateusz Kamiński - Head of Product Team & Technology Evangelist w Sages.
Podczas naszej dyskusji poruszamy następujące tematy:
Jakie zagadnienia najbardziej Cię interesują w IT?
Dlaczego programujesz w Javie?
Kiedy Java jest wydajna, a kiedy nie?
W jaki sposób można optymalizować działanie aplikacji w Javie?
Czy są do tego jakieś narzędzia, biblioteki, dobre praktyki?
Czy kolejne wersje Javy są szybsze / bardziej efektywne?
Jakie są najważniejsze zmiany w Javie od wersji 8 od strony programisty?
Czy Java nadal szybko się zmienia? Kiedy warto skorzystać z innych języków programowania działających w ramach JVM?
Jakie są najczęstsze błędy popełniane przez programistów JVM?
Zapraszamy do oglądania i subskrybowania naszego kanału, aby być na bieżąco z najnowszymi odcinkami!
________________________________________________________
Posłuchaj rozmów z prowadzącymi na Stacji i dowiedz się, jakie są ciekawe trendy w IT, jaką ścieżkę rozwoju wybrać i jakimi tematami warto się zainteresować. Rozmawiamy o programowaniu, data science i budowaniu własnej kariery w IT. 😉 🌏 Więcej o nas przeczytasz na stronie: www.stacja.it
Rozdziały (12)
Podstawowe informacje o rozmówcach i tematyka rozmowy.
Mateusz opisuje swoje doświadczenie z Javą i jej rozwój w ostatnich latach.
Rozmowa na temat zmian w wirtualnej maszynie Java (JVM) i ich wpływ na wydajność.
Szczegóły dotyczące garbage collectorów i kompilacji do kodu natywnego w JVM.
Mateusz opisuje wprowadzone w Java 8 funkcje funkcyjne i ich wpływ na wydajność.
Rozmowa na temat nowych funkcji w JDK i zmian w paradygramaty programowania w Java.
Mateusz omawia zastosowania, w których Java może być niewydajna, oraz migrację na nowsze wersje Javy.
Podsumowanie i perspektywy rozwoju języka Java.
Rozmowa skupia się na optymalizacji kodu w Javie, profilowaniu i wyborze odpowiedniego garbage collectora w zależności od specyfiki aplikacji.
Rozmowa o różnych opcjach optymalizacji JVM, takich jak CRAC, GraalVM, oraz alternatywne wersje Javy, takie jak Torneido VM.
Porównanie Clojure, Groovy i Kotlin, w tym ich zalety i wady, z podkreśleniem stabilności i wydajności Java.
Podsumowanie rozmowy i zaproszenie do kolejnej rozmowy na temat nowych funkcji Javy.
Szukaj w treści odcinka
No więc ogólnie u mnie sytuacja wygląda tak, że od ponad już 10 lat mam do czynienia z Javą, albo z językami wokół Javy, czyli czy to Scala, czy Kotlin, czy kiedyś był Groovy, albo Clojure, ale ogólnie wciąż właśnie ciekawą rzeczą jest to, że ta Java zawsze zostaje gdzieś na przodzie, więc tak, tutaj u mnie tak wygląda.
Jakby takim głównym motywem tej rozmowy, no to ma być właśnie Java versus ten cały hype, który jest wokół jakichś innych języków.
Natomiast ta Java gdzieś tam cały czas w tle jest od wielu lat.
No to Java właśnie wbrew pozorom, mimo że już ma 25 lat, ponieważ właśnie ogólnie rok 1995 to początek Javy, wtedy wyszła pierwsza wersja.
No i teraz widzimy, że w ostatnich latach mamy duży rozwój, w sensie był taki czas, kiedy była Java 8 mniej więcej, kiedy powiedzmy trochę to przystopowało, nie wychodziły nowe wersje Javy przez dłuższy czas.
W sensie Java, bazując być może na takim języku jak Groovy, jak Scala, wybiera z nich najlepsze rzeczy i je standaryzuje właśnie w obrębie Java.
Dlaczego Java?
Właśnie jak ja zaczynałem w ogóle pracować przy Javie, to niestety wiele źródeł mówiło o tym, że Java to jest interpretowany język, co ciekawe, a to jest absolutnie
I to oznacza, że w trakcie jak nasza aplikacja działa, Java cały czas bada, ile razy pewne metody się wykonują.
Tutaj, co ciekawe, interfejsy w Java zostały rozwinięte, że możemy mieć oczywiście domyślne metody, czyli metody z jakąś implementacją.
Takie już ciekawostki można by powiedzieć, ale wbrew pozorom to pewnie jest odpowiedź na wymagania dzisiejszego właśnie świata, więc Java nadal jakby się rozwija.
Tylko właśnie bardziej funkcyjne switche, gdzie możemy rozebrać na pierwsze części taki rekord, o którym mówiłem już i od razu się dostać do pojedynczych pól, czyli to jest tak zwany, w Javascriptie to nazywają destrukturyzacją.
Więc ostatecznie oni się zdecydowali na wycofanie, co ciekawe, tej zmiany i ma wyjść jakaś nowa propozycja chyba w Java 25.
A oprócz tego tutaj też warto powiedzieć o tym, że Java od samego początku jest wielowątkowa, czyli tutaj bardzo łatwo możemy doprowadzić do tego, że nasz system
Ja o tym mówię na szkoleniach, propaguję to nowość, ponieważ to jest bardzo ważne, ponieważ trzeba zakładać, że Java jest używana głównie do tworzenia systemów, które muszą
To sama Java wewnętrznie jakby ogarnia i tego może być miliony, podczas gdy tak naprawdę tych standardowych wątków to powiedzmy aplikacja nie powinna zwykle przekraczać tysięcy, ale to już nawet przy wielkich aplikacjach, a zwykle powiedzmy zostajemy na poziomie do stu.
Czy to jest tak, że większość zatrzymała się na tym poziomie Java 8 i w ten sposób programuje?
Java 8 właśnie wprowadziła funkcyjność i myślę, że obecnie jest to standardem.
Ja pamiętam w 2015 roku tak naprawdę wychodziła Java 8, zaczęła być stosowana powiedzmy w praktyce.
I tutaj znowu trzeba wrócić do tego, że Java właśnie jest standardem, w sensie zmiany, które zachodzą są wstecznie kompatybilne, czyli tak naprawdę jak mamy coś, co jest napisane nawet w Javie pierwszej, to tak naprawdę to nadal jest skompilowalne
Wróćmy może do kwestii wydajności, bo trochę powiedzieliśmy o zmianach w języku, ale jakby wracając do tego głównego wątku, czy jest rzeczywiście jakiś taki obszar zastosowań, w których Java z założenia będzie niewydajna, albo jakieś takie...
Jeżeli mamy restrykcje na wykonanie czasowe pewnych funkcji systemu, czyli to są tak zwane systemy czasu rzeczywistego, to wtedy na pewno Java tutaj nie powinna być używana.
To wtedy zakładamy, że Java nigdy nie zatrzyma się, żeby coś tam odśmiecić z tej pamięci.
I to jest projekt, który dopiero jest w trakcie rozwoju, więc być może za rok, za dwa byśmy się spotkali, byśmy mogli wtedy porozmawiać, że jednak to, o czym ja teraz mówię, już jest nieprawda, ponieważ możemy na karcie graficznej przy pomocy Java również programować rzeczy.
Natomiast możemy oczywiście weryfikować, czy wirtualna maszyna Java, czy ten JIT potrafi skompilować nasz kod.
Metoda w Java nie powinna przekraczać 10 linii kodu, ale myślę, że obecnie to już nie jest prawda.
Kiedyś w poprzednich wersjach powiedzmy przed Java 8 to nie było w ramach sterty tylko to się działo poza stertą, można było tym zarządzać.
Obecnie od Java 11 mamy już właśnie inny standard dostępny i to są tak zwane asynchroniczne profilery.
No i najłatwiej z tego skorzystać przy pomocy Java Mission Control.
Pierwsza wersja, która już zaczęła to wspierać to była Java 8, ale tam jeszcze nie było to na tyle rozwinięte, jak właśnie zostało to rozwinięte od Javy 11.
A tu jeszcze powiem, że jest taka ciekawostka, dlaczego warto przejść Java 8 i wzwyż, ponieważ w ogóle ciągi znaków zostały zoptymalizowane pod względem tego, że obecnie już nie są definiowane przez tablice typu char czy char, jak kto woli.
Jeżeli przesadzimy znowu, no to Java to zauważy, w sensie ten garbage collector to zauważy, no i nie będzie odśmiecał pamięci, bo w sumie po co ma to robić, skoro jeszcze wolnego jest, nie wiem, 60% tego
Czyli nawet Microsoft, który walczył powiedzmy z Java, obecnie wypuszcza swoją własną wersję wirtualnej maszyny Java, bo co ciekawe na poziomie powiedzmy kodu zwykle to się niczym nie różni, ale o tym może za chwilę powiemy.
Natomiast tutaj jeszcze warto w takim razie rozszerzyć to, że czasami możemy wybrać inną wirtualną maszynę Java, żeby mieć
Czyli na przykład uruchamia się tam kilka minut, bo nawet nie chodzi o to, że sama Java wtedy się uruchamia kilka minut, tylko inicjalizacja wszystkich rzeczy tyle zajmuje.
To jest też taka alternatywna wirtualna maszyna Java, tylko tu się koncentrujemy na tym, że od razu cały kod w Javie sprowadzamy do kodu natywnego.
I co ciekawe, nie był aż tak statycznie kompilowany jak Java, chociaż obecnie Java też już nie jest, bo możemy na przykład stosować Wary w ramach funkcji.
Ma wiele takich funkcyjnych gotowców, które bardzo sprawnie pozwalają przeprocesować dane, więc w tym miejscu skala pewnie jest ok, chociaż trzeba powiedzieć, że Java właśnie coraz więcej rzeczy przejmuje ze skali też,
Skala jest pod tym względem podobna i właśnie dlatego dla mnie Java, mimo że przez pewien czas odstawała, jeżeli chodzi o te aspekty dotyczące Syntax Sugar, to obecnie już to nadrobili.
Oczywiście ja tu nie mówię o świecie Androida, bo tam Kotlin jest podstawą, ale to wynika z polityki, że Google się pokłócił z Oracle, a nie z tego, że, nie wiem, Java tam nie mogła dalej być stosowana.
Ostatnie odcinki
-
Stacja.IT Podcast 064 Maks Piechota - Dlaczego ...
21.01.2026 13:35
-
Stacja.IT Podcast 063 Krzysztof Kozioł - Confit...
16.09.2025 06:00
-
Stacja.IT Podcast 062 Marcin Wierzbiński - Vibe...
02.09.2025 06:00
-
Stacja.IT Podcast 061 Ewelina Kurtys - Komputer...
31.07.2025 12:21
-
Stacja.IT Podcast 060 Magdalena Therkildsen - K...
18.07.2025 08:20
-
Stacja.IT Podcast 059 Bartłomiej Schmidt - Czym...
19.02.2025 10:14
-
Stacja.IT Podcast 058 Patryk Palej - Nie tylko ...
17.12.2024 10:06
-
Stacja.IT Podcast 057 Mateusz Kamiński - Czy Ja...
06.12.2024 10:49
-
Stacja.IT Podcast 056 Aleksandra Tomaszewska, P...
04.07.2024 07:31
-
Stacja.IT Podcast 055 Maciej Brzeziński - Błędy...
09.05.2024 09:09