Java – tools for IT Recruiters

Masz opis stanowiska, widzisz Spring, JBoss, Maven i myślisz “dzizzz”, what??? Może nawet nie wiesz, jak to się wymawia i mówi Ci to tyle co méishénme, czyli nic.  Za chwilę dzwonisz do kandydata, trochę się denerwujesz, bo przecież może zadać jakieś pytania, w których czujesz się swobodnie…. nie bardzo. 
Jeżeli chcesz wiedzieć o czym mówisz i intryguje Cię, co kuchnia ma z tym wspólnego, przychodzę z krótkim wyjaśnieniem.

W pierwszej kolejności pochylmy się nad pojęciami takimi, jak: Apache, Tomcat, JBoss, WebSphere, WebLogic, Jetty, Glassfish – to są serwery. 

Może pamiętasz jedno z moich porównań frontend vs. backend, gdzie zastosowałam metaforę restauracji? Frontend – sala, backend – kuchnia, miejsce, gdzie dzieją się ważne rzeczy, ale pojęcia o nich nie mamy, jako osoby “z zewnątrz”. Danie dostajemy gotowe na talerzu, więc rajcuje nas jego smak bardziej, niż to w jaki sposób zostało zrobione. 

Dobrze, wyobraź sobie teraz, że ta kuchnia to serwer. Jako główny kucharz musisz zdecydować, jakie miejsce będzie wystarczające dla twojej pracy. Serwujesz tylko gotowce z mrożonek, to pewnie małe zaplecze stanie się idealnym wyborem albo planujesz mieć mobilną pizza hoot i nie zamierzasz robić dań na miejscu, tylko co pół godziny dowozić z klasycznej restauracji (Apache). Myślisz, aby mieć niewielką knajpkę z kuchnią meksykańską, to pewnie i jakaś średniej wielkości przestrzeń byłaby okay (Tomcat). W sytuacji, gdy twoja restauracja to gigant gastronomii, do tego wykorzystujący techniki kuchni molekularnej, musisz mieć kuchnię „na wypasie”. Kuchnię dużą, która jednocześnie umożliwia przygotowanie posiłków w zaawansowanej technologii i jest wyposażona w różne, niecodzienne urządzenia, jak chociażby aromatyzer, bądź “miotacz ciekłego azotu” (pozostałe serwery). Także w zależności na co się decydujesz, tak sprawna i pełna możliwości twoja kuchnia będzie.

Wracamy do rzeczywistości na moment. Od czego zależy wybór serwera? Programista (a może raczej architekt, projektant) wybiera ten, który jest adekwatny do warunków (wymagania aplikacji, funkcjonalność serwera, wydajność, finanse etc.). Zatem, Apache będzie wystarczający dla prostych rozwiązań na przykład prosta stronka internetowa napisana w PHP, czy HTML. Z drugiej strony pomimo, że sam nie jest w stanie “udźwignąć” wielu rzeczy, to ma możliwość przekazywania żądań dalej, po uprzednim ich opracowaniu. “Dalej” to znaczy do innego serwera (także uwaga (!) osoba, która ma w swoich skillach Apache niekoniecznie robi proste rzeczy). Generalnie przy bardziej wymagającej aplikacji, zasadne jest wybranie  Tomcat, JBoss, WebSphere czy WebLogic. 

Idziemy dalej – samo miejsce do gotowania nie wystarczy. Musisz mieć przecież jakieś garnki, miski, formy do ciasta, noże, deski, chochle, nom… wszystkie niezbędne rzeczy, aby przygotowywać dania. 

Ta metafora w programowaniu będzie odnosić się do Springa – framework (szablon projektowy). Dostarcza on programiście gotowe elementy, komponenty, mechanizmy, narzędzia, które wymuszają jednocześnie rozwiązywanie znanych zagadnień i problemów w pewien konkretny sposób. Dzięki temu praca jest łatwiejsza i szybsza, a co najważniejsze zachowuje wspólne rozwiązania, dzięki czemu nowy programista sprawniej wdroży się w projekt. W bardzo prostych słowach można powiedzieć, że to taka skrzynka z narzędziami, taki zestaw typu “zrób to sam”, gdzie niekoniecznie wszystkie elementy będą wykorzystane, poza tymi, których potrzebujemy.  

Jaka zatem będzie różnica między Springiem a Spring Boot`em? Ha! Spring Boot to również taka skrzynka z narzędziami, która… wait for it… dodatkowo zawiera w sobie Tomcat. Serwer jest poniekąd “narzucony” w tym zestawieniu, ale wzbogacony pakiet, pozwala zaoszczędzić jeszcze więcej czasu. Działa to tak, że serwer mamy już pod ręką, zatem po stworzeniu podstaw projektu w naszym środowisku programistycznym możemy go wstępnie uruchomić. Wśród software inżynierów, Spring Boot, uważa się za zestaw do szybkiego developmentu. Aktualnie Spring i Spring Boot to jedne z najbardziej popularnych frameworków, które dzięki swoim możliwościom, zaczęły wypierać wcześniej wykorzystywane narzędzia, jak Maverick, Struts 1, Struts 2, Webwork, JSF.

Mamy już miejsce, narzędzia, jednak może przydałby się ktoś jeszcze? Ależ owszem! Do pomocy dobrze mieć kogoś, kto odciążyłby nieco nas w pracy na przykład jakiś podkuchenny (Hibernate). Jego zadaniem byłoby przynoszenie potrzebnych produktów ze spiżarni (w oparciu o przeróżne, wymyślne nasze kryteria), a może i jeszcze część z nich mógłby już przygotować do obróbki, na przykład przebrałby za nas marchewkę, która powiedzmy nie nadaje się do spożycia i dajmy na to nie spełnia unijnych norm krzywizny korzenia.

Czym jest Hibernate w pracy programisty? To framework, który służy do komunikacji z bazą danych. Przed pojawieniem się tego toola, aby połączyć się z bazą danych i wyciągnąć z niej to, co chcemy, trzeba było pisać niemiłosiernie długie ciągi w SQL. Robota uciążliwa, a i o błąd było łatwo. Bolączka ta została rozwiązana wraz z pojawieniem się Hibernate, który tak naprawdę “odwala” tę całą pracę za specjalistę. 

Oprócz miejsca, narzędzi, pomocy kuchennej przydałby się zaopatrzeniowiec. Dobrze byłoby mieć speca, który przywiezie określone produkty z miasta (wedle wskazówek, parametrów). Przeszuka dostępne magazyny i dostarczy poproszone towary. Tadam… i tu wkracza nam Maven – narzędzie do zarządzania projektem. Upraszczając, jeżeli sobie wyobrazimy, że nasza aplikacja zbudowana jest z wielu cegiełek, to Maven pomoże nam nimi wszystkimi zarządzać i w wygodny sposób je dostarczać. Hmm…. dobrze może jeszcze łatwiej: wyobraź sobie, że przygotowujesz obiad (zupa, danie główne i coś słodkiego)  i potrzebujesz określonego składnika do deseru, niech będzie to owoc granatu, który znajduje się w jednej ze znanych hurtowni i jest on zamarynowany przez Pana Stanisława ze Strzegomia. Maven Ci to znajdzie i dostarczy. W świecie programistycznym komponenty, z których korzystają deweloperzy znajdują się w repozytoriach. Podobnym do Maven narzędziem jest Gradle. 

Mam nadzieję, że Java toole w metaforze kuchennej wpisały się w Wasze kubki smakowe i pomogły lepiej zrozumieć ten magic programming world. 

Photo by Hemant Latawa (source: Unplash.com)

Your email address will not be published. Required fields are marked *

*