W tym artykule spróbuję odpowiedzieć na pytanie: czego warto się uczyć w 2020-tym roku? To, że Java nadal jest jednym z najpopularniejszych języków jest jasne chyba dla wszystkich moich czytelników. Ale Java to nie tylko język, to cały ekosystem, w którym znajduje się wiele technologii, frameworków i cała masa bibliotek. Przyjrzyjmy się teraz rzeczom, które moim zdaniem w ostatnich latach stają się coraz popularniejsze.
Technologie
Artificial Intelligence
Coraz więcej mówi się o tym co „potrafi” sztuczna inteligencja. Od kilku lat widzę, że ten trend rośnie coraz dynamiczniej. Chociaż niektóre firmy pracują już od bardzo dawana nad swoimi rozwiązaniami (Tesla jest na dobrej drodze, żeby ukończyć swojego autopilota, który będzie korzystał z ich Self Driving Computer). Temat staje się coraz bardziej powszechny. Co oznacza, że będzie potrzeba coraz więcej programistów, którzy znają tematykę sztucznej inteligencji i będą chcieli się jej uczyć i z nią eksperymentować.
Także coraz więcej producentów samochodów ma w swojej ofercie samochody z jakimś rodzajem wspomagania jazdy opartego na systemie kamer i przetwarzaniu danych w czasie rzeczywistym. Myślę, że w najbliższym czasie powstanie coraz więcej zastosowań sztucznej inteligencji także w innych sektorach.
Big Data
Dane to waluta przyszłości. Różne firmy i instytucje zbierają coraz więcej danych. Coraz więcej danych jest analizowane i coraz częściej wykorzystuje się te dane do przeróżnych celów. Przetwarzanie danych ma bardzo duże zastosowanie w marketingu i reklamie. Sam prowadząc firmę staram się mieć jak najwięcej danych analitycznych i ciągle uczę się jak mogę te dane wykorzystywać. Jak mogą mi pomóc w rozwijaniu mojego biznesu. Ja oczywiście zbieram te dane w bardzo małej skali i zwykle korzystam z różnych narzędzi do ich gromadzenia, więc nie przechowuję ich sam w surowej formie. Korzystam z takich narzędzi jak chociażby Google Analitics czy Facebooka pixel. Dzięki nim mogę sprawdzić, czy jakaś kampania zadziałała, czy jakiś kanał działa lepiej niż inny, czy tylko tracę pieniądze. Dzięki tym narzędziom mogę zoptymalizować wydatki na marketing. Do tego dochodzą, różnego rodzaju integracje, które pomagają wymieniać dane pomiędzy systemami różnego przeznaczenia. Całość składa się w potężne narzędzie marketingowe, którego jeszcze kilka lat temu nie było. A to wszystko dzięki zbieraniu danych.
Im większa skala, tym wykorzystanie danych może być jeszcze lepsze i może dawać lepsze efekty. Coraz częściej analizuje się dane w medycynie, tutaj też także coraz częściej stosuje się AI do wykrywania np. raka piersi. Do tego wszystkiego potrzebne są dane i programiści, którzy będą umieli te dane przetwarzać.
Cloud Computing
Trudno jest mi sobie wyobrazić nowoczesne projekty, które żyją gdzieś indziej niż w chmurze. I nie ma znaczenia, czy jest to chmura prywatna, czy publiczna. Chmura zapewnia u standaryzowane podejście do tworzenia środowisk, czy to produkcyjnych, czy developerskich. Wystarczy, że nauczysz się obchodzić z danym rozwiązaniem chmurowym i dalej korzystanie z chmury jest prawie bezobsługowe dla developera.
Jest wielu dostawców rozwiązań chmurowych i na pewno warto chociaż pobieżnie zapoznać się z chmurą Amazona, Microsoft Azure, czy z takimi rozwiązaniami jak OpenShift i Kubernetes.
GraalVm
To technologia, która jest opisywana jako „High-performance polyglot VM”. Jest to uniwersalna maszyna wirtualna, która powstała z myślą tworzenia aplikacji o jak najwyższej wydajności. GraalVm pozwala także na kompilowanie aplikacji do obrazu natywnego, czyli do zwykłej binarki. Dzięki czemu aplikacja zajmuje jeszcze mniej miejsca i zużywa mniej pamięci. Technologia wygląda bardzo obiecująco, ale potrzeba jeszcze czasu, żeby działała na tyle stabilnie, by można było jej używać produkcyjnie.
Frameworki
Spring
Oczywiście Spring niepodzielnie króluje w tej kategorii. Coraz trudniej jest znaleźć pracę nie znając tego narzędzia, więc naturalne jest, że każdy programista Javy powinien go znać. Nie oznacza to jednak, że nie trzeba uczyć się innych narzędzi tego typu. Wręcz przeciwnie, warto zawsze poznawać alternatywne rozwiązani i podpatrywać w jakich sytuacjach inne frameworki mogły by sprawdzić się lepiej od Springa.
Hibernate
Hibernate, jest prawie tak samo popularny jak Spring. Ta para stała się ostatnio standardowym zestawem do pisania aplikacji w Javie. Chociaż pracowałem w wielu projektach, w których Hibernate nie sprawdziłby się i w kilku, w których się faktycznie nie sprawdzał (mimo to uparcie go używaliśmy), to nadal uważam, że warto się z tym narzędziem zaprzyjaźnić, bo może to pomóc nam oszczędzić wiele czasu. Zwłaszcza w klasycznych aplikacjach crudowych.
Micronaut
To framework który powstał stosunkowo niedawno, ale widzę, że wielu ludzi patrzy na niego z nadzieją. Głównie z tego powodu, że z jednej strony jest bardzo podobny w użyciu do Springa, a z drugiej strony jest zbudowany zupełnie inaczej. Micronaut powstał z myślą o mikroserwisach. Developerzy skupili się tutaj na jak najszybszym uruchomieniu aplikacji i niskiej konsumpcji pamięci. W Micronaucie takie rzeczy jak wstrzykiwanie zależności, czy AOP jest realizowane podczas kompilacji, a nie tak jak w Springu, przy użyciu refleksji w runtimie. Co bezpośrednio przyczynia się do poprawy wydajności.
Micronauta można także uruchomić na GraalVm.
Quarkus
Jest to tak samo młody framework jak Micronaut i też powstał z myślą o mikroserwisach. Dodatkowo Quarkus powstał z myślą o uruchamianiu go na GraalVm. Podobnie jak Micronaut nie korzysta on z refleksji i ma bardzo krótki czas startu oraz bardzo niskie zużycie pamięci.
Bazuje na standardzie JAX-RS, więc korzystanie z niego jest stosunkowo intuicyjne, podobnie jak w przypadku Springa i Micronauta.
Biblioteki
Lombok
We wpisie Lombok dobre i słabe strony pisałem o tym, że biblioteka ta jest wykorzystywana przez 257 tys. innych projektów (pokazuje to metryka „Used by” na Githubie). Dzisiaj jest to już 372 tys. a minęło niecałe 6 miesięcy. Być może większość tych projektów to proste dema, ale tak czy inaczej nie zmienia to faktu, że Lombok jest coraz popularniejszy w świecie Javy. Pokazuje to dużą potrzebę redukcji powtarzalnego kodu (boilerplate code) w Javie.
Jest jeszcze wiele ciekawych bibliotek, ale Lombok jak widać jest bardzo przydatną i potrzebną biblioteką. I jego wpływ na redukcję boilerplate code jest znaczący.
Podsumowanie
Zawsze zastanawiam się, czego jeszcze powinienem się nauczyć i w którą stronę skierować swoją uwagę tak, żeby nie tracić czasu na technologie i tematy, które mogą okazać się bezprzyszłościowe. Mam nadzieję, że tym wpisem chociaż trochę, pomogłem odkryć czym warto się interesować w 2020 roku. Oczywiście nie traktuj mojego wpisu jako „prawdy objawionej”. To tylko wskazówki, które być może pomogą Ci w obraniu odpowiedniego kierunku.