Na rynku wciąż widać stabilną pozycję języka Java. Jaka będzie przyszłość Javy?
– Nie wydaje mi się, z tego, co obserwuję rynek, aby ogólna ilość języka Java w oprogramowaniu komercyjnym się zmniejszała. Doświadczenia podpowiadają mi, że jest dokładnie odwrotnie. – powiedział nam Paweł Ryszawa, Senior IT Architect oraz Java Developer w Capgemini.
Paweł wraz z Olgą Kichewko 16.11 podzielą się doświadczeniami związanymi z Javą podczas wydarzenia Tech Talk. Mieliśmy okazję porozmawiać z nimi już dziś m.in. o tym, jaka jest przyszłość Javy.
Spis treści
Podczas najbliższego wydarzenia Tech Talk poruszycie tematykę związaną z Javą. Co Waszym zdaniem sprawia, że nadal jest to warty uwagi język programowania?
Olga Kichewko: Cieszę się, że już w pytaniu podkreśliłeś znaczenie Javy. Dlaczego? Pierwsze co przyszło mi na myśl, to jej szerokie zastosowanie w kluczowych dziedzinach biznesowych, takich jak bankowość, handel, FinTech czy Big Data. Dodatkowo warto zauważyć, że jest to język stosunkowo prosty do opanowania. Nie mając wcześniejszego doświadczenia w programowaniu szybko się go nauczyłam. Za Javą przemawiają np. rozwinięte narzędzia, frameworki oraz środowiska programistyczne związane z Javą, które istotnie ułatwiają nam pracę.
Paweł Ryszawa: Java, a właściwie cały ekosystem wokół niej, to obok .NET jedna z najważniejszych technologii w tworzonym współcześnie oprogramowaniu biznesowym. Celowo używam tutaj słowa “technologii”, bo chodzi nie o samą Javę jako język programowania, ale cały stos technologiczny, który się wokół niej wytworzył. W początkowych założeniach Java miała być prostym językiem programowania i dlatego przez wiele lat się nie zmieniała. Aż do teraz… Ostatnio wprowadzono pewne ulepszenia i chciałbym o nich nieco opowiedzieć.
Myślę, że rozwój Javy jako języka musi pójść naprzód, bo obecnie wyrosła jej konkurencja na jej własnym “podwórku”; wspomnijmy tutaj choćby Scalę, Kotlina, czy Clojure. Dzięki tym nowym językom korzystanie ze stosu technologicznego jest łatwiejsze, ale wprowadza też nowe trudności – trzeba znać więcej niż jeden język, aby sprawnie poruszać się w tym świecie. Taka wieża Babel. Java jest oczywiście wciąż ważna jako “lingua franca” tego ekosystemu. Trzeba znać najpierw Javę, żeby rozumieć, co robią pod spodem pozostałe wspomniane, konkurencyjne języki.
Kiedy zaczynaliście korzystać z języka Java? Dziś naukę tego języka zaczęlibyście tak samo?
Olga Kichewko: Zdecydowanie zaczęłabym inaczej. Moje pierwsze kroki w świecie Javy miały miejsce w 2012 roku, gdy studiowałam fizykę medyczną. Programowanie było dla nas narzędziem wspierającym naukę przedmiotów takich jak “Analiza i przetwarzanie obrazów”. Po rozpoczęciu pracy w Capgemini w 2015 roku śmiałam się, że moje umiejętności sprowadzały się do pisania zagnieżdżonych pętli służących do iteracji przez obrazy.
Gdybym mogła zacząć od nowa, to skupiłabym się na poznaniu aspektów programowania obiektowego, nauki struktur danych, zrozumienia działania JVM, tworzenia prostych aplikacji i ich uruchamiania na serwerach. Warto byłoby także zapoznać się z narzędziami i frameworkami ułatwiającymi pisanie aplikacji, takimi jak Spring czy Hibernate. Może dla wielu osób te tematy są oczywiste, ale dla mnie były to obszary, których najbardziej brakowało mi na początku mojej drogi zawodowej.
Paweł Ryszawa: Z Javy zacząłem korzystać około 2006 roku (choć nie pamiętam, kiedy dokładnie). Język sam w sobie bardzo prosty o składni wywodzącej się z rodziny C/C++, z którą już byłem wcześniej zapoznany. Właściwie składnia Javy jest bardzo dużym uproszczeniem C++, a uproszczenie to miało na celu ułatwienie korzystanie z nowego języka. Chodziło o to, żeby skupić się na implementowaniu logiki biznesowej, a nie gimnastykować ze wskaźnikami, zarządzaniem pamięcią, i innymi tego typu niskopoziomowymi problemami. Te niskopoziomowe problemy zostały rozwiązane albo przez samą konstrukcję języka (wskaźniki, alokacja i dealokacja pamięci) albo przez bibliotekę standardową (implementacje list, zbiorów, i wiele innych).
Tutaj jest pewna pułapka: jeśli od razu wejdzie się na poziom abstrakcji oferowany przez Javę, to można pogubić się w tym, co ona tak naprawdę robi pod spodem. Dlatego polecam pobawić się wcześniej z tradycyjnymi językami (np. C++) i z algorytmiką. Potem Javę złapie się w mig! Gdy już zna się Javę, trzeba zapoznać się z jej olbrzymią biblioteką standardową. Ona się ciągle rozwija i nie sposób oczywiście poznać jej na wylot, ale choćby ogólny ogląd i dobra znajomość najważniejszych elementów jest wskazana. Na samym końcu uczyłbym się stosu technologicznego. Wybrałbym albo Spring i SpringBoota, albo Javę EE (obecnie zwaną Jakartą EE). Do tego wszystkiego Hibernate i trochę SQL. W sumie tak uczyłem się Javy. Może tylko pewne elementy w nieco innej kolejności.
O czym za mało mówi się w kontekście Javy? Co warto wiedzieć na jej temat?
Olga Kichewko: Moim zdaniem nowe funkcje w Javie przechodzą bez większego echa, a to one są dowodem na ciągły rozwój tego języka. Od września 2021 roku możemy korzystać z takich elementów jak records, sealed classes czy pattern matching. Wszystkie te funkcje sprawiają, że korzystanie z Javy staje się wygodniejsze, a kod bardziej czytelny. Jest to ważne, zwłaszcza biorąc pod uwagę częsty zarzut dotyczący rozbudowanej składni Javy. Warto również podkreślić, że Java nie ogranicza nas w stosowaniu nowych technologii, a nowe technologie również nie wykluczają Javy. Java jest kompatybilna z platformami chmurowymi takimi jak AWS czy Azure. Popularnością ustępuje jedynie Python’owi i JavaScript’owi – temu pierwszemu pewnie ze względu na niższy próg wejścia.
Paweł Ryszawa: Sama Java, a szczególnie jej biblioteka standardowa, jest olbrzymia, a jej stosy technologiczne to już istne monstrum. Progi wejścia naturalnie są wysokie. Dobrze by było opracować mapę drogową wchodzenia w te technologie. Inaczej, skończy się coraz większą liczbą technologii odkrywających koło na nowo. Czasem łatwiej jest stworzyć coś nowego, niż próbować zrozumieć coś, co już jest. Celem mapy drogowej miałoby być ułatwienie zrozumienia tego, co już jest.
Na co wskazuje rynek (choćby index trendów ze Stack Overflow)? Java ustępuje innym językom programowania?
Olga Kichewko: Oczywiście nie jest to obecnie najpopularniejszy język programowania, co odzwierciedla choćby wspomniany indeks trendów na Stack Overflow. Warto jednak zwrócić uwagę na jej stałą popularność, która utrzymuje się od dłuższego czasu. Może to wynikać z faktu, że istnieje mnóstwo aplikacji biznesowych, które zostały napisane w okresie, gdy Java cieszyła się największym zainteresowaniem i teraz wymagają one utrzymania. Ponadto ciągły rozwój aplikacji mobilnych, zwłaszcza na platformie Android, oraz migracja aplikacji biznesowych do platform chmurowych, przyczynia się do trwającej popularności Javy. Uważam, że programiści mający wiedzę z zakresu Javy, będą pożądani na rynku pracy przez długi czas.
Paweł Ryszawa: Po pierwsze zauważmy, że te wykresy trendu są wyrażone procentowo “udziałem w rynku”, a dokładniej udziałem w częstości pytań stawianych w portalu Stack Overflow na temat danego języka. Trend opadający może oznaczać albo rosnącą liczbę alternatywnych technologii i tylko spadek udziału względnego w tym torcie, albo rzeczywiście spadek bezwzględny. Trudno zinterpretować podany wykres.
Z drugiej strony, gdyby rozpatrywać wielkości bezwzględne to trend zwyżkowy mógłby oznaczać, że albo dany język jest niedojrzały i nieudokumentowany do tego stopnia, że trzeba zadawać dużo pytań, albo jest tak popularny, że ludzie o nim dużo mówią. Java jest niewątpliwie popularna, ale też dość dojrzała po tylu latach na rynku oprogramowania biznesowego – a to są czynniki ciągnące trend w przeciwstawnych kierunkach. Jest jednak obszar, w którym Java utraciła na rzecz JavaScriptu: frontend w aplikacjach biznesowych.
Nie wydaje mi się jednak, z tego, co obserwuję rynek, aby ogólna ilość Javy w oprogramowaniu komercyjnym się zmniejszała. Doświadczenia podpowiadają mi, że jest dokładnie odwrotnie. Python, choć powstał w tym samym czasie, co Java, rozkwit przeżywa od niedawna – przede wszystkim w nowych dziedzinach jak AI, czy Data Science. Choć i tu JavaScript zaczyna go gdzieniegdzie “podgryzać”.
Olga Kichewko. Moja pasja do programowania rozpoczęła się dość nietypowo, bo w trakcie studiów… fizyki medycznej. Obecnie jestem inżynierem i architektem oprogramowania w Capgemini, a moja przygoda tu trwa już osiem lat. W swojej pracy lubię poznawać nowych ludzi i pracować nad ambitnymi projektami, a to ostatnie pomaga mi śledzić nieustannie zmieniający się świat technologii. W wolnym czasie pływam/jeżdżę na rowerze/biegam/czytam/gotuję.
Paweł Ryszawa. Programować zacząłem w wieku 8 lat w BASIC-u, nigdy w Logo. Pierwszym moim komputerem był 8-bitowy Atari 65 XE. A potem to już z górki: Assembler 6502, Turbo Pascal na PC/AT, Assembler 8086/80286, C, C++, Java, Scala, Kotlin, i pewnie kilka innych, których nawet nie pamiętam. Zawodowo oprogramowaniem zajmuję się od prawie 20 lat.