Jeśli poważnie myślisz o karierze programisty, to pamiętaj, że dziś programiści tworzą przede wszystkim aplikacje webowe
i ogólnie systemy pracujące w sieci.
Aplikacja webowa to taki zbiór stron w internecie (lub intranecie), które pozwalają na interakcję z użytkownikiem.
Użytkownik przegląda dane, może je tworzyć, aktualizować i usuwać.
Tak samo jak każda strona, którą przeglądasz, tak i aplikacja webowa znajduje się pod adresem
URL.
To ten adres, który wpisujesz w przeglądarce. To, że w odpowiedzi na niego otrzymujesz widok strony, jest możliwe dzięki pracy
protokołu
HTTP (albo jego szyfrowanej wersji
HTTPS). To, czego nie widzisz jawnie w pasku
URL, to sposób,
w jaki Twoje żądanie zostaje obsłużone. Mówimy tutaj o zastosowaniu odpowiedniej metody.
Standardowo, gdy wpisujesz w przeglądarce
adres strony, uruchamiana jest metoda typu
GET, co oznacza "pobierz". Ten rodzaj metody jest najbardziej popularny i służy do pobierania stron lub innych zasobów z serwera,
który znajduje się w zupełnie innym miejscu niż Ty i Twoja przeglądarka. To jednak nie jest jedyna metoda protokołu
HTTP.
Protokół korzysta z innych metod (na przykład
POST,
PUT), aby wysyłać dane na serwer z Twojej przeglądarki.
To właśnie dzięki nim możesz modyfikować dane w aplikacjach webowych.
Tworzy to ruch w drugą stronę. To nie przeglądarka otrzymuje dane, ale
sama je wysyła, co pozwala na "złapanie ich" na serwerze. Kod Java, który jest tam uruchomiony, odbiera te dane i może je
zapisać w bazie. Następnie inny użytkownik, otwierając właściwą stronę w przeglądarce, pobiera dane za pomocą metody
GET.
Taka wymiana danych pomiędzy interfejsem użytkownika w przeglądarce a programem Java na serwerze odbywa się regularnie.
Aplikację webową tworzy wówczas część kodu, który jest w przeglądarce i zwykle jest napisany w jakimś frameworku Javascript oraz
gruba warstwa kodu Java znajdująca się na serwerze, wykorzystująca najczęściej Springa do przetwarzania danych oraz Hibernate'a w celu zapisu/odczytu danych do/z bazy.
REST to tak naprawdę zbiór praktyk, styl podejścia do tworzenia aplikacji webowej. Opiera się na wysyłaniu żądań i odbieraniu odpowiedzi przez protokół
HTTP.
Pojęcie jest ukierunkowane na konkretne zasoby w aplikacji webowej. Zasobem jest podmiot, na którym pracuje aplikacja.
W naszej przykładowej aplikacji
StartAPPa takim zasobem jest
item, ale w aplikacji rezerwującej bilety do kina będzie to
ticket,
movie i tym podobne.
I tak na przykład zapisując obiekt nowego filmu (lub item, czy dowolny inny obiekt), wysyłamy z przeglądarki zestaw danych (z formularza), po czym
na serwerze kod Java otrzymuje te dane i tworzy na ich podstawie obiekt filmu. Dalej obiekt transportuje dane do bazy za pośrednictwem Hibernate'a.
Ostatecznie do przeglądarki wraca identyfikator zapisanego rekordu w bazie.
Odczyt danych odbywa się poprzez wysłanie z przeglądarki identyfikatora metodą
GET.
Na serwerze, po otrzymaniu identyfikatora, kod Java wykonuje pobranie filmu o tym id z bazy (przy pomocy Hibernate'a).
Następnie dla danych pobranych z bazy tworzony jest obiekt, który ostatecznie zmieniany jest na formę rozumianą przez przeglądarkę i w tej formie jest do niej wysyłany.
REST opisuje wiele reguł i tylko częściowo je tu przedstawiliśmy (dowiesz się więcej, klikając w cyfrę 5 w kółeczku).
Zagadnienie to jest zaawansowane i nie musisz dokładnie znać wszystkich jego składowych,
zanim nie nauczysz się Javy, Mavena i Hibernate'a.
Z tego powodu znajduje się dopiero na piątym miejscu na drodze do kariery. Pamiętaj jednak, że warto rozumieć podstawy. Wtedy łatwiej będziesz się orientował(a),
do czego potrzebne są kolejno zdobywane umiejętności i jak to wszystko działa.
Do tej pory kilka razy napisaliśmy w tym artykule o serwerze i wykonywanym na nim kodzie Java.
Pisaliśmy to zarówno w kontekście Hibernate'a, jak i prezentując REST-a. Za tym wszystkim stoi framework,
który podobnie jak Hibernate stał się już legendą. Mowa oczywiście o frameworku Spring.
To w nim będziesz wykorzystywać zdobytą dotychczas wiedzę w programowaniu Javie. Bez tej wiedzy ani rusz.
Bardzo ważne jest doskonałe opanowanie umiejętności programowania w samej Javie przede wszystkim z tego powodu, że
od tego momentu będziesz się uczył(a) dodatkowych reguł i nowych rozwiązań bazując na całym potencjale Javy.
Spring-a można uruchomić także bez udziału przeglądarki i wysyłania żądań oraz bez wiedzy z zakresu Hibernate'a, ale po pierwsze
stracisz wiele z jego potencjału, a po drugie nie nauczysz się tworzyć nowoczesnych aplikacji webowych w Javie,
a to powinno być Twoim celem.
Wracając do ścieżki kariery. Pisząc kod w ramach Springa, będziesz korzystać z wielu rozwiązań wspomagających
odbieranie żądań przychodzących z przeglądarki i wysyłanie odpowiedzi z powrotem do niej. Przy okazji dane
będą automatycznie zamieniane na obiekty Java, a obiekty Java na odpowiedzi rozumiane przez protokół HTTP i przeglądarkę.
Spring będzie wiele obiektów tworzył za Ciebie, a Ty skupisz się na kodzie samego procesu, jaki ma zostać wykonany.
Appa Notka.
Po zdobyciu wiedzy i umiejętności z kroków 1-6 staniesz się nie tylko programist(k)ą Javy, ale również
zostaniesz tak zwanym backend deweloperem z umiejętnością budowy aplikacji webowych. Od tego momentu możesz albo skupić się na szlifowaniu swoich
umiejętności backendowych, albo na dalszym zdobywaniu nowej wiedzy backendowej w postaci programowania webserwisów. Możesz też uznać, że interesuje Cię
poznanie całego procesu budowy aplikacji webowej, a więc również frontendu. Decydując się na to, zmierzasz w kierunku pozycji fullstack dewelopera.
Na tym etapie potrafisz już tworzyć backend aplikacji webowej w Javie. To, że nie programujesz we frontendzie (w skrócie HTML plus Javascript po stronie przeglądarki),
nie stanowi problemu, ponieważ najczęściej pracujesz w zespole, w którym istnieje również ktoś, kto specjalizuje się w takich rzeczach.
Będziesz z nim współpracować. On powie, czego oczekuje od Ciebie, a Ty, co chcesz dostać od niego.
Przykładowo, jeśli zadanie dotyczy stworzenia
formularza w aplikacji do obsługi filmów, frontendowiec przygotuje formularz i przycisk do wysyłania danych, a Ty napiszesz kod w Javie (z pomocą Springa), który przechwyci
te dane oraz kod, który zapisze je do bazy.
Znajdując się w tym miejscu, jesteś już naprawdę daleko.
Jeśli wcześniej dobrze wykonałe(a)ś swoją pracę nad zdobyciem umiejętności i doświadczenia to z pewnością masz już pracę,
która Cię satysfakcjonuje i możesz sobie pozwolić na poszerzanie horyzontów.
Na tym etapie różnie układają się kariery programistów.
Dużo zależy od projektów i zapotrzebowania na konkretne umiejętności w firmie, w której pracujesz,
ale pamiętaj, że to przede wszystkim Ty szukasz dalszej drogi odpowiedniej dla Twoich zainteresowań i zgodnych z Twoją naturą.
Na tym etapie już wiesz, czy interesuje Cię mistrzostwo w pracy z backendem, czy
też bardziej chcesz pójść w stronę bardzo dobrej szerokiej wiedzy obejmującej cały proces tworzenia aplikacji webowej.
Mikroserwisy w takim bardzo prostym, wrecz banalnym ujęciu to taki podzielony backend aplikacji. Czyli zamiast tworzyć jeden duży projekt,
który obsługuje wszystkie funkcjonalności aplikacji, tworzony jest zestaw projektów dedykowanych określonym elementom aplikacji.
Projekty te są budowane jako niezależne artefakty i "nie widzą" nawzajem swojego kodu. Temat jest bardzo szeroki.
Jeśli chcesz wiedzieć więcej, kliknij liczbę 8 w kółeczku.
Nie chcemy przedłużać, ponieważ kolejne punkty dotyczą już zagadnień mniej związanych z samą Javą i
raczej służą poznaniu możliwości rozwoju w obszarze frontendu.
Każdy z nich ma wystarczająco dużo informacji ukrytych na stronach pod kolejnymi cyframi.
Zapraszamy Cię później do przejrzenia treści z tych stron.
Appa Notka.
Zdobycie umiejętności z kroków 1-13 pozwoli Ci własnoręcznie stworzyć aplikację webową, którą pokazujemy na łamach naszego portalu.
Pamiętaj jednak, że nikt raczej nikt nie będzie wymagał od Ciebie zbudowania takiej aplikacji tylko Twoimi rękami.
Nad każdym projektem pracuje zwykle kilkuosobowy zespół programistów, z których każdy ma swoje mniejsze lub większe umiejętności i doświadczenie.
Liczy się współpraca. Potrzebny jest czas.
Do tego coraz popularniejszym rozwiązaniem jest zatrudnianie backendowców (tych od Javy, kroki 1-6)
oraz frontendowców, którzy nie znają się na Javie, ale mają świetnie opanowane umiejętności z kroków 9-13.
Zespół może liczyć na przykład dwóch frontendowców, którzy dbają o to, co się dzieje po stronie przeglądarki i tworzą komponenty takie jak tabelki, listy,
czy wykresy oraz dwóch backendowców zajmujących się tworzeniem tabel w bazie, oraz kodu przy pomocy Springa i Hibernate'a.
Istnieje jeszcze trzecia możliwość. W mniejszych firmach, z mniejszym budżetem czasami stosuje się rozwiązania hybrydowe.
Wtedy backendowiec może tworzyć widoki aplikacji po stronie backendu, które później są przesyłane do przeglądarki.
Rozwiązanie takie jest opisane na stronie Thymeleaf / JSP + JSTL.
Takie podejście oczywiście nie jest wydajne, ponieważ całość widoku ze wszystkimi wygenerowanymi znacznikami musi być wysłana przez sieć,
ale bywa stosowane, jeśli firma tworzy oprogramowanie dla klienta w sieci wewnętrznej (intranet). Nie da się ukryć, że w otwartym internecie, jak również
dla dużych klientów, szczególnie zagranicznych, aplikacje webowe nie są tworzone w ten sposób. Duże korporacje, dla których będziesz chciał(a) pracować
(nie ukrywajmy - z powodów finansowych) stawiają na jakość, elastyczność oraz możliwość dalszej rozbudowy swoich aplikacji.
Wtedy bardzo ważne jest, aby kod backendu i frontendu był odseparowany i tworzony za pomocą dedykowanych rozwiązań.