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
Tam się bardzo dużo dzieje i to ma największy wpływ właśnie na wydajność. To, że przechodząc na nowsze wersje Javy oczekujemy większej wydajności, ponieważ właśnie są stosowane, nie wiem, lepsze algorytmy odśmiecania pamięci albo po prostu nawet sama kompilacja kodu do poziomu natywnego. Może jeszcze o tym za chwilę powiemy. Ok, a jak to się w ogóle u Ciebie zaczęło? Dlaczego Java? Czy to był przypadek? Czy właśnie wiedziałeś, że tutaj jakby większość takich aplikacji korporacyjnych jest właśnie w Javie pisana i tutaj jest największy rynek i największa przyszłość? Czy coś innego zadecydowało? Właśnie to jest ciekawe, ponieważ ja w 2014 roku powiedzmy zacząłem od praktyk, a w ogóle miałem takie dwie opcje na samym początku, w sensie mogłem wybrać C++, a jedna firma w C++ pisała, na szczęście tam nie poszedłem, wybrałem drugą firmę, która robiła w Javie i to był właśnie, okazało się, że to był lepszy
I to oznacza, że w trakcie jak nasza aplikacja działa, Java cały czas bada, ile razy pewne metody się wykonują. Tam może to nawet dochodzić na poziom gałęzi, czyli powiedzmy ifów. No i dzięki temu kod może zostać zoptymalizowany w trakcie działania systemu w takich gorących miejscach. To są tak zwane hotspoty. No i wtedy to jest skompilowane do poziomu tak naprawdę takiego samego, jakbyśmy to skompilowali przy pomocy C++. Ale no niestety tutaj jest jedna drobna różnica, że właśnie wciąż mamy odśmiecanie pamięci. To jest dla naszej wygody. Przede wszystkim, żeby błędów głupich nie robić w kodzie, tylko zająć się faktycznie Natomiast odśmiecanie pamięci troszkę kosztuje i trzeba tutaj na to przede wszystkim uważać, bo najwięcej problemów jakie się pojawiają to zwykle właśnie dotyczą odśmiecania pamięci.
Oprócz tego mamy mnóstwo innych opcji na tworzenie lepszego kodu. Teraz mamy takie nowe switche, powiedzmy, nie te stare, które znamy z języka C. 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ą. W Javie akurat takiego słowa nie ma, bo w Javie te rekordy składają się z komponentów, co ciekawe. Więc po prostu mówimy o tak zwanych patternach, czyli możemy programować na wzorcach, tak można byłoby to nazwać, więc to jest taka nowość.
Do tego po prostu trzeba zastosować albo profilera, albo włączyć logowanie informacji o tym, jak przebiega kompilacja. Tutaj ta kompilacja przebiega na czterech poziomach. Ten najwyższy to odpowiada temu, co w C++ można osiągnąć przy "-o3", czy coś w tym stylu. Chodzi o to, że wtedy kod się kompiluje dość długo, ponieważ taka metoda może nad się kompilować przez jedną milisekundę. Co by oczywiście blokowało wykonanie tego kodu na jedną milisekundę. Więc w praktyce jak to działa, to się dzieje właśnie na wielu po pierwszych poziomach. Te pierwsze poziomy prowadzą najprostsze optymalizacje, ale są ok dla takich metod, które rzadziej się wykonują.
Pokazano wszystkie 4 dopasowania. Transkrypcja generowana automatycznie i niesprawdzana ręcznie — może zawierać błędy.
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.
Rozdziały i streszczenia generowane automatycznie. Pełna transkrypcja nie jest publikowana — wyszukaj frazę, aby zobaczyć dopasowane fragmenty.
Kliknij, aby znaleźć fragmenty, w których pada.
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